加固Linux系统的三种方法总结

加固Linux系统的三种方法总结

Linux命令行历史加固

通过配置系统环境变量实现记录用户在命令行执行的命令。

vim /etc/profile.d/system_monitor.sh
# 添加下面代码
export TMOUT=600
readonly TMOUT
#history
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]; then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]; then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]; then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
chmod 600 $HISTFILE/${LOGNAME}/*.history* 2>/dev/null

重新加载环境变量

source /etc/profile.d/system_monitor.sh

效果:每个帐号每次的登录IP以及运行命令都会记录在该目录如下:

[root@localhost ~]# ll /usr/share/.history/root/
total 8
-rw-------. 1 root root 236 Apr 23 21:49 1.180.212.137.history.20170423_214918
-rw-------. 1 root root 564 Apr 23 21:54 1.180.212.137.history.20170423_214957

crond调用黑白名单

Cron有它自己内建的特性,这特性允许定义哪些人能哪些人不能跑任务。 这是通过两个文件/etc/cron.allow 和 /etc/cron.deny控制的。要锁定在用Cron的用户时可以简单的将其名字写到corn.deny里,而要允许用户跑cron时将其名字加到cron.allow即可。如果你要禁止所有用户,仅允许root用户。如下:

# echo 'root' >> /etc/cron.allow
# echo 'ALL' >> /etc/cron.deny

ssh服务禁止root登录

1、不要使用默认端口,修改方式;

Port 3714

2、不要使用第一版协议;

Protocol 2

3、限制可登录的用户;

AllowUsers user1 user2 #仅允许user1和user2用户登录

4、设定空闲会话超时时长;

5、利用防火墙设置ssh的远程访问策略;仅允许来自于指定网络中的主机访问;

6、仅监听于指定的IP地址;

ListenAddress

7、基于口令认证时,要使用强密码策略;

# 使用mkpasswd命令生成密码;
mkpasswd -l 15 -s 3 -d 3 -C 3

8、最后使用基于密钥进行认证

9、禁止使用空密码,默认启用;

PermitEmptyPasswords no:是否允许空密码登录;

10、禁止管理员直接登录;

PermitRootLogin yes # 是否允许管理员直接登录;安全起见,建议为no;

11、限制ssh访问频度和并发在线;

12、做好日志分析;

(0)

相关推荐

  • 最新Linux系统下安装MySql 5.7.17全过程及注意事项

    1.cd /usr/local/ ##进入local目录 2.cp /home/soft/MySQL-5.7.15-Linux-glibc2.5-x86_64.tar.gz /usr/local/ ##拷贝mysql压缩到local目录 3.cd /usr/local/ ##进入local目录 4.tar -xzvf mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz ##解压mysql压缩包 5.mv mysql-5.7.15-linux-glibc2.5-x8

  • Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容

    前言 想要做全文搜索引擎,则需要将word/pdf等文档内容提取出来.对于pdf有xpdf等一些开源方案. 但Word文档的情况则会复杂一些. 提取PDF文本内容 XPDF是一个免费开源的软件,用于显示PDF文件,并可将pdf转换成文字图片等,同样支持Windows版.在Debian Linux上安装非常简单: apt-get install xpdf 我们这里只使用pdftotext这个功能,直接输入可查看帮助: root@raspberrypi:/var/www# pdftotext pdf

  • 解决Linux系统中python matplotlib画图的中文显示问题

    最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些初步的数据挖掘和分析. 在使用matplotlib画图时,横坐标为中文,但是画出的条形图横坐标总是显示"框框",就去查资料解决.感觉这应该是个比较常见的问题,网上的中文资料也确实很多,但是没有任何一个彻底解决了我遇到的问题.零零碎碎用了快3个小时的时间,才终于搞定.特此分享,希望能帮到有同

  • Linux系统下安装android sdk的方法步骤

    本文阐述的是如何在Linux系统中安装Android SDK 环境,下面话不多说,来看看详细的介绍吧. 直接下载解压: wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz 修改对应的版本号即可. 关于后续的sdk更新,可以使用命令行版本的sdkmanager 直接更新到最新的sdk: tools/android update sdk --no-ui 显示所有的sdk版本 android list sdk --all 会得

  • Linux系统下实现远程连接MySQL数据库的方法教程

    前言 最近在工作中遇到了这个需求,估计搞了一个多小时才把这个远程连接搞好.一台本地电脑,一台云服务器,都是linux系统.下面来看看详细的介绍: 步骤 1.在服务器端开启远程访问 首先进入mysql数据库,然后输入下面两个命令: grant all privileges on *.* to 'root'@'%' identified by 'password'; flush privileges; 第一个*是数据库,可以改成允许访问的数据库名称 第二个 是数据库的表名称,代表允许访问任意的表 r

  • 虚拟机安装linux系统无法上网的解决方法

    周末闲来无事,用虚拟机安装了centos6.5系统,安装成功后发现不能连接网络,然后我就一脸蒙蔽了,无奈之下,只能百度查找问题,幸运的是,我还真找到了解决的方法,根据教程一步步操作,成功了!为了避免以后蒙蔽,我打算记录下来,同时如果有其他工程师遇到和我一样的问题,可以考虑一下我下面介绍的方法 1.打开虚拟机,如果[网络适配器]选择的不是NAT模式,我们需要改成NAT模式,并进行保存 2.打开cmd,输入命令:services.msc,回车后会弹出服务和应用程序页面,我们需要找到VMware DH

  • 加固Linux系统的三种方法总结

    加固Linux系统的三种方法总结 Linux命令行历史加固 通过配置系统环境变量实现记录用户在命令行执行的命令. vim /etc/profile.d/system_monitor.sh # 添加下面代码 export TMOUT=600 readonly TMOUT #history USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` HISTDIR=/usr/share/.history if

  • python获取linux系统信息的三种方法

    方法一:psutil模块 #!usr/bin/env python # -*- coding: utf-8 -*- import socket import psutil class NodeResource(object): def get_host_info(self): host_name = socket.gethostname() return {'host_name':host_name} def get_cpu_state(self): cpu_count = psutil.cpu

  • 查看远程 Linux 系统中某个端口是否开启的三种方法

    这是一个很重要的话题,不仅对 Linux 管理员而言,对于我们大家而言也非常有帮助.我的意思是说对于工作在 IT 基础设施行业的用户来说,了解这个话题也是非常有用的.他们需要在执行下一步操作前,检查 Linux 服务器上某个端口是否开启. 假如这个端口没有被开启,则他们会直接找 Linux 管理员去开启它.如果这个端口已经开启了,则我们需要和应用团队来商量下一步要做的事. 在本篇文章中,我们将向你展示如何检查某个端口是否开启的 3 种方法. 这个目标可以使用下面的 Linux 命令来达成: nc

  • linux 远程控制windows系统下的程序(三种方法)

    有时候我们需要通过在linux上远程运行windows系统上的程序. 方法一: 通过python中的 winrm模块,前提条件,先提前设置好winrm服务.如何设置请自行百度,winRM服务是windows server下PowerShell的远程管理服务.Python脚本通过连接winRM模块操作windows命令行. import winrm def cmd_views(ip,cmd_comand): win = winrm.Session('http://'+ip+':5985/wsman

  • linux下配置jdk环境变量的三种方法总结

    一.修改/etc/profile文件当本机仅仅作为开发使用时推荐使用这种方法,因为此种配置时所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题.用文本编辑器打开/etc/profile,在profile文件末尾加入:JAVA_HOME=/usr/share/jdk1.5.0_05 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HO

  • Linux 中锁定和解锁用户帐户的三种方法

    如果你已经在你的组织中实施了某种密码策略,你无需看这篇文章了.但是在这种情况下,如果你给账户设置了 24 小时的锁定期,你需要手动解锁用户帐户. 本教程将帮助你在 Linux 中手动锁定和解锁用户帐户. 这可以通过三种方式使用以下两个 Linux 命令来完成. passwd usermod 为了说明这一点,我们选择 daygeek 用户帐户.让我们看看,怎么一步步来实现的. 请注意,你必须使用你需要锁定或解锁的用户的帐户,而不是我们的帐户.你可以使用 id 命令检查给定的用户帐户在系统中是否可用

  • 新技巧:Linux系统常见6种紧急情况处理方法

    Linux系统常见几种紧急情况的处理方法 1.使用急救盘组进行维护 急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具.用它可以独立地启动和运行一个完整的Linux系统.实际 上,急救盘组中的第2张盘上就有一个完整的Linux系统,包括root文件系统:而第1张盘则存放了可启动的内核. 使用急救盘组维护系统很简单.只需用这两张盘启动系统后,进入急救模式,这时使用的是root账户.为了能访问硬盘上的文件,需要手工安装硬盘文件系统.例如,用下面的命令可在/mnt目录中安装/dev/

  • Java 获取当前系统时间的三种方法

    准备工作: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; 方式一: /**  * 获取系统当前时间之方式一  * @explain 使用Calendar实现  * @param format  * @return  */ public static String getSysdateStr(String format) {     Date sysdate = Calend

  • Linux添加Python path方法及修改环境变量的三种方法

    目录 一:用于当前终端: 二:用于当前用户: 三:用于所有用户: 在用Linux(OS:Centos 7.2)时看到有一行代码是: export PYTHONPATH=$PYTHONPATH:/home/usrname/models:/home/usrname/models/one 意思是将models以及其目录下的one文件夹加入系统环境中. 百度了发现环境变量有三种修改方式. 以上属于下述中的第一种. Linux 下设置环境变量有三种方法,一种用于当前终端,一种用于当前用户,一种用于所有用户

  • 详解linux下批量替换文件内容的三种方法(perl,sed,shell)

    在建设本网站的时候,发现新建了很多的网页,突然发现,每个文件都需要进行修改一样的内容,一个一个打开很是麻烦,所以,总结了一下如何快速修改一个目录下多个文件进行内容替换.第三种方法用的不多 方法一 使用perl ,命令如下: 复制代码 代码如下: find -name '要查找的文件名' | xargs perl -pi -e 's|被替换的字符串|替换后的字符串|g' 方法二 使用sed命令如下: 复制代码 代码如下: sed -i "s/原字符串/新字符串/g" `grep 原字符串

随机推荐