linux主机安全和漏洞修复
1.隐藏SSH的Banner信息
#1.检查方法
隐藏SSH的Banner信息:
查看sshd_config文件中是否存在未注释的Banner /etc/issue.net行,不存在未注释的Banner行视为合规
查看命令:cat /etc/ssh/sshd_config
#2.加固步骤
隐藏SSH的Banner信息:
- 备份sshd_config文件
cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak - 编辑sshd_config,注释或删除Banner行
vim /etc/ssh/sshd_config
在Banner行前添加井号#
2.查看是否修改Snmp默认团体名(按需开启
#1.检查方法
查看是否修改Snmp默认团体名(按需开启):
查看结果中是否存在community为public的字段,存在视为不合规。
查看命令:cat /etc/snmp/snmpd.conf
#2.加固步骤
查看是否修改Snmp默认团体名(按需开启):
停止snmpd、snmptrapd服务 service snmpd stop,service snmptrapd stop
备份snmpd.conf文件 vi /etc/snmp/snmpd.conf
编辑snmpd.conf文件,修改默认的community string
com2sec notConfigUser default 其中可以配置为任意字串。
重新启动snmp相关服务 service snmpd start,service snmptrapd start
3.对root为ls、rm设置别名
#1.检查方法
对root为ls、rm设置别名:
存在alias ls='ls -aol’和alias rm='rm -i’视为合规
查看命令:cat /root/.bashrc
#2.加固步骤
对root为ls、rm设置别名:
备份/root/.bashrc文件
cp /root/.bashrc /root/.bashrc_bak
编辑/root/.bashrc文件
vi /root/.bashrc
添加或修改如下行
alias ls=‘ls -aol’
alias rm=‘rm -i’
执行source /root/.bashrc 使修改生效
4.查看记录历史命令条数设置
#1.检查方法
查看记录历史命令条数设置:
查看是否存在HISTSIZE的值合规,且存在export HISTSIZE。
查看命令:cat /etc/profile
#2.加固步骤
查看记录历史命令条数设置:
1.备份/etc/profile文件
cp /etc/profile /etc/profile_bak
2.编辑profile文件
vim /etc/profile
修改/新增HISTSIZE=500
添加export HISTSIZE,保存退出。
5.Chrony时钟服务配置
#1.检查方fa
Chrony时钟服务配置:
使用cat /etc/chrony.conf命令查看chrony的配置文件应存在server xxxx iburst的配置。"xxxx"为域名或者IP地址,并且需人工验证合理性
查看命令:cat /etc/chrony.conf
Chrony时钟服务配置:
使用service chronyd status命令查看时钟服务,Active的值应为: active (running)
查看命令:service chronyd status > /tmp/chrony.txt && cat /tmp/chrony.txt
rm -f /tmp/chrony.txt
#2.加固步骤
Chrony时钟服务配置:
- 备份/etc/chrony.conf文件
cp -p /etc/chrony.conf /etc/ntp.conf_bak - 编辑chrony.conf文件
加入以下内容:server xxxx iburst ,"xxxx"为域名或者IP地址,并且需人工验证合理性
Chrony时钟服务配置:
1.未安装情况下使用yum -y install chrony 命令进行安装
2.使用service chronyd start命令或 systemctl start chronyd.service命令启动服务
6.检查NFS相关进程状态
#1.检查方法
检查NFS相关进程状态:
查看进程状态,应禁止的进程不应该运行
查看是否有如下NFS进程: lockd, nfsd, statd, mountd
查看命令:ps -elf | grep -v “grep”
#2.加固步骤
检查NFS相关进程状态:
禁止掉无用进程
1、 杀掉如下NFS进程: lockd, nfsd, statd, mountd
2、禁用NFS
#chkconfig --level 235 nfs off
3、如需要nfs服务,设置限制能够访问NFS服务的IP范围:
编辑文件:vi /etc/hosts.allow
增加一行: nfs: 允许访问的IP
7.NTP配置
#1.检查方法
NTP配置:
查看ntp.conf文件的配置中是否包含NTP服务器的IP配置。
查看命令:
NTP配置:
查看NTP服务状态,为运行状态视为合规。
查看命令:/etc/init.d/ntpd status
#2.加固步骤
NTP配置:
- 备份ntp.conf文件
cp -p /etc/ntp.conf /etc/ntp.conf_bak - 编辑ntp.conf文件
vim ntp.conf
server [IP or hostname] [prefer]
NTP服务器地址;
prefer:表示优先使用
3.重新启动ntp服务
service ntpd start
NTP配置:
service ntpd start
8.定时账户自动登出
#1.检查方法
定时账户自动登出:
查看csh.cshrc文件中csh登录超时参数autologout的配置
查看命令:cat /etc/csh.cshrc
定时账户自动登出:
查看是否存在TMOUT<=500、TMOUT>0且存在export TMOUT,存在视为合规(具体TMOUT合规值参照正则)
查看命令:cat /etc/profile
#2.加固步骤
定时账户自动登出:
- 备份csh.cshrc文件
cp -p /etc/csh.cshrc /etc/csh.cshrc_bak - 编辑csh.cshrc文件
将set autologout的值设置为30。
样例:
set autologout=30
定时账户自动登出:
- 备份/etc/profile文件
cp /etc/profile /etc/profile_bak - 编辑profile文件
vim /etc/profile
修改/新增TMOUT=500
添加export TMOUT,保存退出。
9.系统umask设置
#1.检查方法
系统umask设置:
查看/root/.cshrc文件的umask值,为027视为合规
查看命令:cat /root/.cshrc
系统umask设置:
查看/root/.bashrc的umask值,为027视为合规。
查看命令:cat /root/.bashrc
系统umask设置:
查看文件的umask值为027视为合规。
查看命令:cat /etc/bashrc
#2.加固步骤
系统umask设置:
vi /root/.cshrc
注释掉原有umask值或循环函数。
在文件末尾添加umask值为027
系统umask设置:
- 备份配置文件
cp -p /root/.bashrc /root/.bashrc_bak - 修改配置文件
vim /root/.bashrc
注释掉原有umask值或循环函数。
在文件末尾添加umask值为027
系统umask设置:
1、执行备份:
#cp -p /etc/bashrc /etc/bashrc_bak
2、修改umask设置:
#vi /etc/bashrc
注释掉原有umask值或循环函数。
在文件末尾添加umask值为027
10.FTP(VSFTP)日志记录配置
#1.检查方法
FTP(VSFTP)日志记录配置:
查看xferlog_file的是否配置。
查看命令:cat /etc/vsftpd/vsftpd.conf
FTP(VSFTP)日志记录配置:
查看vsftpd.conf文件中xferlog_enable的配置,配置为YES表示开启日志记录功能,为合规。
查看命令:cat /etc/vsftpd/vsftpd.conf
#2.加固步骤
FTP(VSFTP)日志记录配置:
- 备份vsftpd.conf配置文件
cp -p /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak - 编辑配置文件
vim /etc/vsftpd/vsftpd.conf
修改xferlog_file的值为FTP日志存储的路径,此处需要用户自定义。
FTP(VSFTP)日志记录配置:
- 备份vsftpd.conf配置文件
cp -p /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf_bak - 编辑配置文件
vim /etc/vsftpd/vsftpd.conf
修改或添加如下行
xferlog_enable=YES
11.对用户登录认证、权限变更进行记录
#1.检查方法
对用户登录认证、权限变更进行记录:
查看是否存在authpriv.info /
查看命令:cat /etc/syslog.conf
对用户登录认证、权限变更进行记录:
查看是否存在auth.info /
查看命令:cat /etc/syslog.conf
#2.加固步骤
对用户登录认证、权限变更进行记录:
备份/etc/rsyslog.conf文件
cp /etc/rsyslog.conf /etc/rsyslog.conf_bak
编辑/etc/rsyslog.conf文件
vim /etc/rsyslog.conf
备份需要配置的文件
添加authpriv.info /
对用户登录认证、权限变更进行记录:
备份/etc/rsyslog.conf文件
cp /etc/rsyslog.conf /etc/rsyslog.conf_bak
编辑/etc/rsyslog.conf文件
vim /etc/rsyslog.conf
备份需要编辑的文件
添加auth.info /
12.记录与设备相关的安全事件(info级别)
#1.检查方法
记录与设备相关的安全事件(info级别):
查看rsyslog.conf文件中是否配置如下信息,配置视为合规。
*.info /
*.info表示记录所有info级别的日志,/
查看命令:cat /etc/syslog.conf
#2.加固步骤
记录与设备相关的安全事件(info级别):
- 备份配置文件
cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak - 编辑配置文件
vim /etc/rsyslog.conf
添加如下行
*.info;auth.none;authpriv.none <TAB键>
(以上的auth.none;authpriv.none表示不记录auth.info和authpriv.info的日志信息,根据实际情况添加) - 备份配置文件
cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak - 编辑配置文件
vim /etc/rsyslog.conf
在*.info后添加如下内容
/var/adm/syslog
(以上路径为日志实际存储路径,根据实际情况修改添加)
13.配置远程日志服务器
#1.检查方法
配置远程日志服务器:
查看日志文件中是否配置远程日志服务器,存在远程日志服务器视为合规,即存在@LogHostIP(LogHostIP的具体值是否准确需要人工判断)。
查看命令:cat /etc/syslog.conf
#2.加固步骤
配置远程日志服务器:
- 备份配置文件
cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak - 编辑配置文件
vim /etc/rsyslog.conf
添加如下行
. @192.168.0.1
(以上的*.*为需要传输到远程日志服务器的内容,@IP为远程日志服务器的地址。以上参数都需要根据实际情况调整,系统只判断是否配置@IP,具体IP的准确性,需要人工判断)
14.配置记录内核日志
#1.检查方法
配置记录内核日志:
查看rsyslog.conf中是否记录kern.info或kern.*类型的日志
查看命令:cat /etc/syslog.conf
#2.加固步骤
配置记录内核日志:
备份/etc/rsyslog.conf文件
cp /etc/rsyslog.conf /etc/rsyslog.conf_bak
编辑/etc/rsyslog.conf文件
vim /etc/rsyslog.conf
记录包含kern.info类型的日志,样例如下:
kern.info /var/log/kern
或kern.* /var/log/kern
15.记录系统日志及应用日志
#1.检查方法
记录系统日志及应用日志:
查看rsyslog.conf文件中是否配置如下信息,配置视为合规。
*.err /
*.err表示记录所有err级别的日志,/
查看命令:cat /etc/rsyslog.conf
#2.加固步骤
记录系统日志及应用日志:
- 备份配置文件
cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak - 编辑配置文件
vim /etc/rsyslog.conf
添加如下行
*.err;kern.debug;daemon.notice <TAB键> /var/adm/messages
(以上的kern.debug;daemon.notice表示不记录kern.debug和daemon.notice的日志信息,/var/adm/messages为日志存储路径,根据实际情况添加)
16.检查系统是否存在“心脏滴血”漏洞
#1.检查方法
检查系统是否存在“心脏滴血”漏洞:
版本符合正则中的版本号视为不合规
查看命令:openssl version
#2.加固步骤
检查系统是否存在“心脏滴血”漏洞:
升级至不包含漏洞的新版本
#### 17.检查系统是否存在bash漏洞
#1.检查方法
检查系统是否存在bash漏洞:
存在vulnerable为不合规
查看命令:env x=’() { :;}; echo vulnerable’ bash -c “echo this is a test”
#2.加固步骤
检查系统是否存在bash漏洞:
升级bash至bash-4.1.2-15.el6_5.1版本
18.检查新建用户的home目录的缺省(默认)访问权限
#1.检查方法
检查新建用户的home目录的缺省访问权限:
查看login.defs中是否存在UMASK 027,存在视为合规。
查看命令:cat /etc/login.defs
#2.加固步骤
:
设置默认权限:
vi /etc/login.defs 在末尾增加UMASK 027(若之前存在UMASK循环函数,则需要先将整段循环注释),将缺省访问权限设置为750。
补充说明:
UMASK 的默认设置一般为022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其它用户读权限。
19.禁止匿名FTP
#1.检查方法
禁止匿名FTP:
存在anonymous_enable=NO视为合规。
查看命令:cat /etc/vsftpd/vsftpd.conf
#2.加固步骤
禁止匿名FTP:
备份vsftpd.conf文件
编辑vsftpd.conf文件
修改或添加anonymous_enable的值为NO
样例:
anonymous_enable=NO
20.检查是否指定用户组成员使用su命令
#1.检查方法
检查是否指定用户组成员使用su命令:
存在auth required pam_wheel.so group=wheel视为合规(其中wheel组为可以su到root的用户组,具体值参照正则)
查看命令:cat /etc/pam.d/su
#2.加固步骤
检查是否指定用户组成员使用su命令:
备份文件
cp /etc/pam.d/su /etc/pam.d/su_bak
编辑文件
vi /etc/pam.d/su
添加或修改如下行auth required pam_wheel.so group=wheel(wheel具体标准值参照正则)
其中wheel组为可以su到root的用户组,可以自己定义
21.SSH登陆尝试次数设置–sshd_config
#1.检查方法
SSH登陆尝试次数设置–sshd_config:
MaxAuthTries值符合正则视为合规
查看命令:cat /etc/ssh/sshd_config
#2.加固步骤
SSH登陆尝试次数设置–sshd_config:
样例:
1.备份需要编辑的文件:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
2.修改MaxAuthTries的值
MaxAuthTries 5
(重启SSH服务后生效)
22./etc/services文件权限
#1.检查方法
/etc/services文件权限:
/etc/services文件权限符合正则视为合规
查看命令:stat /etc/services
#2.加固步骤
/etc/services文件权限:
样例:
chmod 644 /etc/services
23.Root目录权限设置为700
#1.检查方法
Root目录权限设置为700:
查看root目录的权限,为700视为合规,即为rwx------.
查看命令:ls -lad /root
#2.加固步骤
Root目录权限设置为700:
1、记住/root目录原权限状态。
2、设置700权限。
chown root:root /root
chmod 0700 /root
24.GRUB密码
#1.检查方法
GRUB密码:
查看是否配置GRUB密码,在使用GRUB时需要进行身份认证。存在passwd字段且passwd字段值不空视为合规。
查看命令:cat /etc/grub.conf
#2.加固步骤
GRUB密码:
- 备份grub.conf文件
cp -p /etc/grub.conf /etc/grub.conf_bak - 获取md5加密密码:
/sbin/grub-md5-crypt,获取md5加密密码; - 编辑/etc/grub.conf
vi /etc/grub.conf
在首行添加:password
使用上一步获取的md5密码替换
设置文件权限如下:
chown root:root /etc/grub.conf
chmod 600 /etc/grub.conf
25.SSH协议使用SSH2版本
#1.检查方法
SSH协议使用SSH2版本:
查看sshd_config中是否包含Protocol 2,包含视为合规。
查看命令:cat /etc/ssh/sshd_config
#2.加固步骤
SSH协议使用SSH2版本:
手动编辑/etc/ssh/sshd_config,添加Protocol 2或者取消Protocol 2前的注释
26.禁止X Server监听6000/TCP端口
#1.检查方法
禁止X Server监听6000/TCP端口:
查看custom.conf文件中DisallowTCP参数是否配为true,配置为true视为合规。没有该文件也视为合规。
查看命令:cat /etc/gdm/custom.conf
#2.加固步骤
禁止X Server监听6000/TCP端口:
- 备份custom.conf文件
cp -p /etc/gdm/custom.conf /etc/gdm/custom.conf_bak - 编辑custom.conf文件
vim /etc/gdm/custom.conf
在[security]标签下添加或者修改DisallowTCP的值为true,有效值:true|false
DisallowTCP=true
27.记录历史密码次数
#1.检查方法
记录历史密码次数:
查看system-auth文件中控制标志参数查看system-auth文件中remember的设置,为5视为合规。查看system-auth文件中pam模块参数设置,包含password required pam_unix.*so remember=5视为合规
查看命令:cat /etc/pam.d/system-auth
#2.加固步骤
记录历史密码次数:
system-auth文件中的第二列字段参数
控制标志可选种类如下:
- required:必须通过此认证,否则不再往下认证下去,直接退出;
- requisite:必须通过认证,但以后还有机会,可以往下认证;
- sufficient:一经通过,后面的不再认证(只要通过这个条件则直接通过);
- optional:可选的,通不通过均可
- 备份system-auth文件
cp -p /etc/pam.d/system-auth /etc/pam.d/system-auth_bak - 编辑配置文件
在password required pam_unix.so行后加入remember=5。
system-auth文件中的第三列字段参数
pam模块大致分为以下几种:
- pam_env.so 登录后的环境变量
- pam_fprintd.so 指纹认证
- pam_unix.so 验证用户密码的有效性
- pam_deny.so 对所有不满足上述任意条件的登录请求直接拒绝
- pam_cracklib.so 对用户密码提供强健性检测
- pam_access.so 控制访问者的地址与帐号的名称
- pam_listfile.so 控制访问者的帐号名称或登录位置
- pam_limits.so 控制为用户分配的资源
- pam_rootok.so 对管理员(uid=0)无条件通过
- pam_userdb.so 设定独立用户帐号数据库认证
根据实际需要进行选择配置
在password required pam_unix.*so后添加remember=5,保存退出。
28.用户锁定策略
#1.检查方法
用户锁定策略:
看是否包含以下auth required pam_tally.so onerr=fail deny=6 no_magic_root。包含视为合规(deny的具体标准值以正则为准)。
查看命令:cat /etc/pam.d/login
用户锁定策略:
查看是否存在在auth required pam_tally.so onerr=fail deny=6 unlock_time=300 no_magic_root。(pam_tally.so需根据实际情况配置,deny具体合规值参照正则)
查看命令:cat /etc/pam.d/login
#2.加固步骤
登录失败锁定前尝试次数
认证失败锁定时间
用户锁定策略:
备份 cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
编辑 vi /etc/pam.d/system-auth
在auth required pam_tally.so后添加onerr=fail deny=6 no_magic_root。(pam_tally.so需根据实际情况配置,deny具体合规值参照正则)
用户锁定策略:
备份 cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
编辑 vi /etc/pam.d/system-auth
在auth required pam_tally.so后添加onerr=fail deny=6 unlock_time=300 no_magic_root。(pam_tally.so需根据实际情况配置,deny具体合规值参照正则)
29.检查关键文件属性设置
× 设置/etc/group文件不能被删除、改名、设定链接关系,同时不能写入或新增内容
× 设置/etc/passwd文件不能被删除、改名、设定链接关系,同时不能写入或新增内容
× 设置/etc/shadow文件不能被删除、改名、设定链接关系,同时不能写入或新增内容
× 设置/var/log/messages文件属性为只能追加数据
#1.检查方法
检查关键文件属性设置:
查看结果是否包含-i,包含视为合规。
查看命令:lsattr /etc/group
检查关键文件属性设置:
查看结果是否包含-i,包含视为合规。
查看命令:lsattr /etc/passwd
检查关键文件属性设置:
查看结果是否包含-i,包含视为合规。
查看命令:lsattr /etc/shadow
检查关键文件属性设置:
查看返回结果中是否存在-a,存在视为合规。
查看命令:lsattr /var/log/messages
#2.加固步骤
检查关键文件属性设置:
chattr +i /etc/group
建议管理员对关键文件进行特殊设置(不可更改或只能追加等)。
注意:此操作会影响新建组。
检查关键文件属性设置:
chattr +i /etc/passwd
建议管理员对关键文件进行特殊设置(不可更改或只能追加等)。
注意:此操作会影响新建用户和修改密码等命令。
检查关键文件属性设置:
chattr +i /etc/shadow
建议管理员对关键文件进行特殊设置(不可更改或只能追加等)。
注意:此操作会影响新建用户和修改密码等命令。
检查关键文件属性设置:
chattr +a /var/log/messages
建议管理员对关键文件进行特殊设置(不可更改或只能追加等)。
30.加固主机解析文件
× 检查是否关闭绑定多IP功能
× 检查是否关闭IP伪装功能
#1.检查方法
加固主机解析文件:
查看是否存在multi off,存在视为合规。
查看命令:cat /etc/host.conf
加固主机解析文件:
查看是否存在nospoof on,存在视为合规。
查看命令:cat /etc/host.conf
#2.加固步骤加固主机解析文件:
编辑/etc/host.conf文件:
multi off #关闭多IP绑定
加固主机解析文件:
编辑/etc/host.conf文件:
nospoof on #关闭IP伪装
31.检查密码复杂度策略
× 检查密码字符串中含特殊字符个数
× 检查密码字符串中含大写字符个数
× 检查密码字符串中含小写字符个数
× 检查密码字符串中含数字个数
#1.检查方法
检查密码复杂度策略:
ocredit的值小于等于-1视为合规
查看命令:cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf
检查密码复杂度策略:
ucredit的值小于等于-1视为合规
查看命令:cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf
检查密码复杂度策略:
lcredit的值小于等于-1视为合规
查看命令:cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf
检查密码复杂度策略:
dcredit的值小于等于-1视为合规
查看命令:cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf
#2.加固步骤
检查密码复杂度策略:
样例:
1.备份需要编辑的文件/etc/pam.d/system-auth
cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
2.修改配置文件,将ocredit值修改为小于等于-1
password required pam_cracklib.so(或pam_pwquality.so) ocredit=-1
3.保存退出。
检查密码复杂度策略:
样例:
1.备份需要编辑的文件/etc/pam.d/system-auth
cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
2.修改配置文件,将ucredit值修改为小于等于-1
password required pam_cracklib.so(或pam_pwquality.so)ucredit=-1
3.保存退出。
检查密码复杂度策略:
样例:
1.备份需要编辑的文件/etc/pam.d/system-auth
cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
2.修改配置文件,将lcredit值修改为小于等于-1
password required pam_cracklib.so(或pam_pwquality.so) lcredit=-1
3.保存退出。
检查密码复杂度策略:
样例:
1.备份需要编辑的文件/etc/pam.d/system-auth
cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
2.修改配置文件,将dcredit值修改为小于等于-1
password required pam_cracklib.so(或pam_pwquality.so) dcredit=-1
3.保存退出。
32.检查系统core dump状态
× 检查是否配置* soft core 0
× 检查是否配置* hard core 0
#1.检查方法
检查系统core dump状态:
查看是否包含* soft core 0,包含视为合规。
查看命令:cat /etc/security/limits.conf
检查系统core dump状态:
查看是否包含* hard core 0,包含视为合规。
查看命令:cat /etc/security/limits.conf
#2.加固步骤
检查系统core dump状态:
编辑文件/etc/security/limits.conf添加或修改如下行:
- soft core 0
检查系统core dump状态:
编辑文件/etc/security/limits.conf添加或修改如下行:
- hard core 0
33.关闭数据包转发
#1.检查方法
关闭数据包转发:
查看返回结果ip_forward的值是否为0,0为禁止源路由转发,视为合规。
查看命令:cat /proc/sys/net/ipv4/ip_forward
#2.加固步骤
关闭数据包转发:
方法一:
- 备份sysctl.conf文件
cp -p /etc/sysctl.conf /etc/sysctl.conf_bak - 编辑sysctl.conf文件
vim /etc/sysctl.conf
找到以下行net.ipv4.ip_forward(若没有自行添加),将其值修改为0。
执行/sbin/sysctl -e -p /etc/sysctl.conf立即生效
方法二:
1.使用命令以下命令修改ip_forward的值(不推荐,使用该方法修改参数值,系统重启后会失效,参数变为原始默认值)。
sysctl -w net.ipv4.ip_forward=0