Linux安全合规检查

身份鉴别策略组检

口令周期检测

安装一个PAM模块来启用cracklib支持,这可以提供额外的密码检查功能。
在Debian,Ubuntu或者Linux Mint使用命令:
sudo apt-get install libpam-cracklib

这个模块在CentOS,Fedora或者RHEL默认安装了。所以在这些系统上就没有必要安装了。

直接编辑/etc/login.defs文件

  • 最长使用周期小于等于90天

linux01.png

  • 最短更换周期大于等于2天

linux02.png

  • 距失效提示天数大于等于5天

linux03.png

密码复杂度检测

  • 在Debian,Ubuntu或者Linux Mint使用命令:
    sudo vi /etc/pam.d/common-password

linux07.png

  • 新增加部分依次表示:一个大写字母、两个小写字母、一个数字和一个符号,其中密码中包含其中2个或2个以上规则即可。
    在Fedora,CentOS或RHEL使用命令:

sudo vi /etc/pam.d/system-auth

linux08.png

登录锁定检测

普通用户触发锁定次数小于等于5

普通用户锁定时间大于等于5分钟

Root用户触发锁定次数小于等于5

Root用户锁定时间大于等于5分钟

修改如下配置文件:
/etc/pam.d/sshd(远程ssh)
/etc/pam.d/login(终端)
添加如下行:
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root=5 root_unlock_time=1200
各参数解释:
even_deny_root:也限制root用户
deny:设置普通和root用户连续错误登录的最大次数,超过最大次数,则锁定该用户
unlock_time:设定普通用户锁定后,多少时间后解锁,单位是秒
root_unlock_time:设定root用户锁定后,多少时间后解锁,单位是秒
配置示例:

linux09.png

注意auth要放在第二行,否则,用户登录失败3次以后,也可以认证成功。配置即可生效,不需要重启服务。

root权限用户

  • root权限用户检测

检查配置文件/etc/passwd中,是否包含用户标识号为0,或者组标识号为0的用户。

linux10.png

以第一行为例,从左至右,分别表示:
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

wheel组

  • wheel组检测:

cat /etc/group

linux11.png

检查文件/etc/group中,wheel后面是否有用户名,如果有,将其修改成与上述划线部分相同。

相同ID用户

  • 相同ID用户检测

linux12.png

检查配置/etc/passwd中,是否包含用户标识号相同的帐号,用户标识号位置如下:
以第一行为例,从左至右,依次为:
帐号名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell

访问控制策略组

空口令检测

如果检测出有空口令账户,可以做以下处理:
A. 删除该用户,命令如下
userdel 用户名
rm -rf /home/用户名(可选,表示删除该用户的主目录)
B.给该用户设置密码
passwd 用户名

linux13.png

弱口令检测

如果检测出有弱口令账户,建议设置符合密码复杂度要求的密码
passwd 用户名

linux13.png

安全审计策略组检测

日志守护进程

开启日志守护进程,当rsyslog没有在运行,则检测失败,操作命令如下:

  • CentOS系列操作如下:
    systemctl status rsyslog(查看状态)

systemctl stop rsyslog(停止)
systemctl start rsyslog(启动)

启动成功后状态

linux3_1_1.png

查看进程有没有启动

linux3_1_2.png

  • Ubuntu系列操作如下:
    service rsyslog status(查看状态)

service rsyslog stop(停止)
service rsyslog start(启动)

启动成功后状态

linux3_1_1.png

查看进程有没有启动

linux3_1_2.png

SSH策略检测

SSH检测

执行如下命令,修改配置文件:(systemctl restart sshd.service重启sshd生效)
sudo vi /etc/ssh/sshd_config

  • 使用协议版本大于等于2.

linux15.png

  • 使用端口不为22.

linux16.png

  • 最大失败尝试登录次数小于等于5.

linux17.png

  • 禁止root登录
    no表示禁止root登录,yes表示允许root登录.

linux18.png

  • 关闭密码认证登录
    yes为开启密码认证,no为关闭密码认证登录.

linux19.png

  • 开启RSA认证登录
    yes为开启RSA认证登录,no为关闭RSA认证登录.

linux20.png

  • 开启公钥验证登录
    yes为开启公钥验证登录,no为关闭公钥验证登录.

linux21.png

  • 设置允许登录用户
    在Fedora,CentOS或RHEL使用命令:

默认不配置的情况下,是允许所有用户登录.

linux22.png

入侵防范策略组检测

开启防火墙

iptables(各Linux系统共有)

  • 删除现有规则
    iptables -F

(or)
iptables --flush
警告:当前命令执行后,会放开屏蔽的端口

  • 设置默认链策略
    默认的iptables策略是ACCEPT。将此更改为如下所示。

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
当将INPUT和OUTPUT默认策略作为DROP时,对于每一个防火墙规则要求都应该定义两条规则。即一个INPUT和一个OUTPUT。
如果信任内部用户,则可以忽略上面OUTPUT的设置。默认情况下,不要丢弃所有OUTPUT的数据包。在这种情况下,对于每一个防火墙规则的要求,你只需要定义一个规则。即定义规则传入,因为传出是接受所有数据包。

  • 阻止一个特定的IP地址
    在我们做其他规则前,如果你想阻止一个特定的IP地址,你应该先做如下所示。当您在日志文件中找到特定的IP地址时发现一些奇怪的活动,并希望在进一步研究时暂时阻止该IP地址,这将很有帮助。

BLOCK_THIS_IP='192.168.1.108
iptables -A INPUT -s '$BLOCK_THIS_IP' -j DROP
你也可以使用下面的一种规则。
iptables -A INPUT -i eth0 -s '$BLOCK_THIS_IP' -j DROP //规则禁止这个IP地址对我们服务器eth0网卡的所有连接
iptables -A INPUT -i eth0 -p tcp -s '$BLOCK_THIS_IP' -j DROP //规则只禁止这个IP地址对我们服务器eth0网卡的tcp协议的连接

配置ufw:(Ubuntu)
安装:sudo apt-get install ufw
启用:sudo ufw enable
禁用:sudo ufw disable
查看状态:sudo ufw status

配置:firewalld(CentOS)
查看状态
systemctl status firewalld.service
启动防火墙
systemctl start firewalld.service
关闭防火墙
systemctl stop firewalld.service
重新启动防火墙
systemctl restart firewalld.service

添加新评论