11、等保2.0 Linux加固手册
Categories:
3 分钟阅读
一、身份鉴别
1)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
建议操作系统对登录的用户进行身份标识和鉴别,身份鉴别信息配置复杂度要求开启定期更换策略,避免使用弱口令,至少包含字母和数字,密码长度至少8位。密码最长使用90天,5次内不重复。整改方案如下:
1.修改 /etc/login.defs 文件内容即可,加入如下
密码最大有效期
PASS_MAX_DAYS 90
两次修改密码的最小间隔时间
PASS_MIN_DAYS 1
密码最小长度,对于root无效
PASS_MIN_LEN 8
密码过期前 7 天开始提示
PASS_WARN_AGE 7
2.对于密码的强度要求可以修改system-auth文件,vim /etc/pam.d/system-auth,修改如下:
添加以下内容
password requisite pam_cracklib.so retry=5 difok=3 minlen=10 ucredit=-1 lcredit=-3 dcredit=-3 dictpath=/usr/share/cracklib/pw_dict
remember=5 5次内密码不重复
retry=3 输入错误重试3次
difok=3
minlen=10表示最小密码长度为 10 类型数量
ucredit=-1表示密码必须至少包含1个大写字母
lcredit=-3表示密码必须至少包含3个小写字母
dcredit=-3表示密码必须至少包含3个数字
2)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
1.登录失败 建议操作系统开启登录失败处理功能配置登录失败5次及锁定时间30分钟;输入命令vim /etc/pam.d/system-auth
添加以下内容
auth required pam_tally2.so onerr=fail deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800
参数含义: 密码错误 5 次锁定 1800 秒
2.会话过期,修改 /etc/profile 文件,输入命令vim /etc/profile
单位秒 1800秒
export TMOUT=1800
source /etc/profile
二、访问控制
1)应对登录的用户分配账户和权限;
建议操作系统对登录的用户分配账户和权限;整改方案:组 系统表示 作用 数据库 db 只负责管理数据库的用户 服务 server 负责业务服务或其他组件的用户 安全 security 负责系统安全,日志审计登的用户,命令如下:
#列出所有组
cat /etc/group
删除组
groupdel xulei
添加组
groupadd db
groupadd server
groupadd security
查看所有用户
cat /etc/passwd
查看用户所属组
groups db
删除用户
userdel -rf xulei
添加用户到某个组,并指定用户的所属目录
useradd xulei -d /home/users/xulei –N
改变用户组
usermod -g db xulei
修改文件属性只能某个组的成员操作
chown :server /home/server
修改密码
passwd xulei
用户名 所属组 密码
dbuser db Dbuser@2021
secuser security Secuser@2021
serveruser server Serveruser@2021
2.2 修改root的默认账户信息
修改用户名,这种修改不能修改root
usermod -l 新用户 旧用户
如下可以修改root账号
01、vim /etc/passwd 将第一行的第一个root替换为重命名的用户
02、vim /etc/shadow 将这一行中的root 替换为重命名
密码为:SuperAdmin@2021
三、安全审计
1)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
建议操作系统启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计;
整改方案:
service auditd start
查看是否开启,只要enable=1即可,这个 – 有问题 需要在命令行自己重新打
auditctl –s
同时根据需求可以添加新规则
vim /etc/audit/audit.rules
监控 /etc/my.cnf 文件,只要在文件加入以下内容
-w /etc/my.cnf -p wa
-w 路径
-p 权限 如果没有 -p 选项,则默认监视所有动作 rwxa(读、写、执行、修改文件属性)
-k 关键字
监控系统调用行为,监视文件权限变化,因为改变权限必须调用umask
-a entry,always -S umask -S chown
-a always 总是记录审计;none 不记录;exit 行为完成后记录审计;entry 行为刚刚开始 时记录审计
-S 系统调用名称
-F 字段=值
-k 关键字
2)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
建议操作系统启用安全审计功能审计记录包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息;
整改方案:
包含了以上所有条件
cat /var/log/audit/audit.log
3) 应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
建议操作系统启用安全审计功能并部署日志审计系统并对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
整改方案:
输入以下脚本,并添加到定时器中
#!/bin/bash
日志位置
FILE=/var/log/audit/audit.log
current_time=date +%y%m%d
cat $FILE |while read LINE
do
Udate=`echo $LINE|awk -F'[(.]+' '{print $2}'`
#Udate=`echo $LINE|awk -F. '{print $1}' | awk -F'(' '{print $2}'`
Cdate=`date -d @$Udate`
echo $LINE|sed "s/[0-9]\{10\}/$Cdate/" >> /home/sh/log/audit${current_time}.log
done
4)应对审计进程进行保护,防止未经授权的中断。
建议操作系统启用安全审计功能对审计进程进行保护,防止未经授权的中断,限制除审计员外的审计控制权限。
整改方案:
给输出的日志只允许 security 组可读即可。
其他日志方式
vi /etc/syslog.conf
加入 # The authpriv file has restricted access.
authpriv.* /var/log/secure
开启安全日志,日志文件位置/var/log/secure
没有 syslog.conf 文件,只有 rsyslog.conf。rsyslog.conf 本身就具有该语句
修改所属组
chown :security /var/log
四、入侵防范
1) 应遵循最小安装的原则,仅安装需要的组件和应用程序;
建议操作系统遵循最小安装的原则,仅安装需要的组件和应用程序;整改方案:按照部署方案,删除每台机器上多余的应用即可。
2)应关闭不需要的系统服务、默认共享和高危端口;
建议操作系统关闭不需要的系统服务、默认共享和高危端口,如FTP、DHCP等不必要服务,整改方案:FTP 目前不能关闭还需要上传文件,还有根据部署方案多余的都可以关闭。systemctl list-units 查看所有服务 快照 建议 备份半年,可以登录到物理机上配分。
3)设置登录地址限制(重启生效),通过设定终端接入方式、网络地址范围等条件限制终端登录;
修改文件
vi /etc/hosts.allow
加入如下
sshd:10.1.10.11:allow
允许这个段 使用 telnet访问
in.telnetd:192.168.1.2
#修改文件
vi /etc/hosts.deny
修改如下
sshd:all:deny
示例允许 10.1.10.11 ssh登录系统有效,优先级为先检查 hosts.deny , hosts.allow 后者设定可越过前者限制 在 hosts.deny 中加入 sshd:all:deny。在 Hosts.allow 加入允许的 ip 或者 ip 网段 sshd:ip:allow。
4.4 高危端口管理
永久禁用,需要重启生效
用 iptables 来控制端口和防火墙管理
yum install iptables-services
设置开机自启动
systemctl enable iptables
启动停止命令
systemctl [stop|start|restart] iptables
状态查看
service iptables status
禁用端口
先打开文件编辑
vim /etc/sysconfig/iptables
添加禁止端口访问
-A INPUT -p tcp –dport 445 -j DROP
-A INPUT -p tcp –dport 139 -j DROP
-A INPUT -p tcp –dport 3389 -j DROP
查看开放端口
iptables -nL
-A 参数就看成是添加一条 INPUT 或 OUTPUT 的规则。
-p 指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS,到时我们要配置DNS用到53端口 大家就会发现使用udp协议的。
–dport 就是目标端口,当数据从外部进入服务器为目标端口(INPUT),反之数据从服务器出去(OUTPUT),则为数据源端口使用 –sport
-j 就是指定是 ACCEPT 接收 或者 DROP 不接收
禁止IP访问
-A INPUT -p tcp -s 192.168.1.2 -j DROP
我们就用 -p tcp , 如果是 udp 就写udp,这里就用tcp了, -s就是 来源的意思,
ip来源于 192.168.1.2 ,-j 怎么做 我们拒绝它 这里应该是 DROP
快速生效方式,也会添加到文件中(不建议)
禁用端口访问
/sbin/iptables -A INPUT -p tcp –dport 8080 -j DROP
/sbin/iptables -A OUTPUT -p tcp –sport 8080 -j DROP
允许端口
/sbin/iptables -A INPUT -p tcp –dport 8080 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp –sport 8080 -j ACCEPT
禁用IP访问,可以ping通 但无法通过shh访问
/sbin/iptables -A INPUT -p tcp -s 192.168.200.16 -j DROP
保存到文件,会改变默认规则,所有端口可以访问
service iptables save
基础设置
禁止所有端口访问,但允许22 端口访问,因为是立即生效,最好使用主机修改
iptables -P INPUT ACCEPT
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
-A INPUT –m state –state RELATED,ESTABLISHED –j ACCEPT
-A INPUT –p icmp –j ACCEPT
-A INPUT –i lo –j ACCEPT
-A INPUT –p tcp –m state –state NEW –m tcp –dport 22 –j ACCEPT
-A INPUT –j REJECT –reject-with icmp-host-prohibited
-A FORWARD –j REJECT –reject-with icmp-host-prohibited
清除规则
先查看行号
iptables -nL –line-number
删除
iptables -D INPUT 1
-D 是删除的意思
INPUT 指定删除INPUT的规则
1 是行号
注意事项,需要关闭firewalld
systemctl status firewalld
systemctl stop firewalld
#systemctl disable firewalld