Linux基线加固
1、修改vsftp回显信息 (1)检查办法 修改vsftp回显信息: 需在安装VSFTP的情况下检查,未安装可忽略或禁用该项。 查看ftpd_banner的值。 查看命令:cat /etc/vsftpd/vsftpd.conf (2)加固配置 修改vsftp回显信息: 1. 修改vsftp回显信息 # vi /etc/vsftpd.conf ftpd_banner=" Authorized users only. All activity may be monitored and reported." 可根据实际需要修改该文件内容。 重启服务: /etc/init.d/xinetd restart =================================================== 2、隐藏SSH的Banner信息 (1)检查办法 隐藏SSH的Banner信息: 查看sshd_config文件中是否存在未注释的Banner /etc/issue.net行,不存在未注释的Banner行或Banner值为none视为合规 查看命令:cat /etc/ssh/sshd_config (2)加固配置 隐藏SSH的Banner信息: 1. 备份sshd_config文件 cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak 2. 编辑sshd_config,注释或删除Banner行 vim /etc/ssh/sshd_config 在Banner行前添加井号# =================================================== 3、账户目录中不存在危险文件 (1)检查办法 账户目录中不存在.rhosts文件: 返回值不包含.rhosts文件 查看命令:ls -la $(cut -d":" -f6 /etc/passwd) 2>/dev/null| grep -E ".rhosts|/" --color=never 账户目录中不存在.netrc文件: 返回值中不包含.netrc文件 查看命令:ls -la $(cut -d":" -f6 /etc/passwd) 2>/dev/null| grep -E ".netrc|/" --color=never (2)加固配置 账户目录中不存在.rhosts文件: 1、根据检查命令查询出的结果路径备份.rhosts文件(与管理员确认无用后可删除) 2、删除.rhosts文件 rm -f filename 账户目录中不存在.netrc文件: 1、根据检查命令查询出的结果路径备份.netrc文件(与管理员确认无用后可删除) 2、删除.netrc文件 rm -f filename =================================================== 4、Wuftp的banner信息 (1)检查办法 Wuftp的banner信息: 通过外部ftp客户端登录,banner按照预先设定的显示 查看命令:cat `cat /etc/ftpaccess |grep -v "#"|grep ^banner |awk -F " *" '{print $2}'` 1 2>/dev/null (2)加固配置 Wuftp的banner信息: 样例: 修改文件/etc/ftpaccess,在其中添加,如: banner /thisftpbannerfile 在指定目录下创建包含ftp的banner信息的文件 touch /thisftpbannerfile 编辑文件 vi /thisftpbannerfile 在其中添加banner信息,例如 this is banner =================================================== 5、隐藏Telnet的Banner信息 (1)检查办法 隐藏Telnet的Banner信息: 查看文件和/etc/issue.net是否包含类似如下内容: " Authorized users only. All activity may be monitored and reported " 查看命令:cat /etc/issue.net (2)加固配置 隐藏Telnet的Banner信息: 由于默认的提示信息中包含操作系统版本,因此需要修改以防版本信息泄露。 1. 备份配置信息 cp -p /etc/issue.net /etc/issue.net_bak 2. 修改issue.net文件的内容 vim /etc/issue.net 将原有内容改为如下行 Authorized users only. All activity may be monitored and reported =================================================== 6、配置ssh等加密协议 (1)检查办法 关闭telnet服务,23端口不存在监听: 不存在telnet相关进程视为合规 查看命令:lsof -i >/tmp/tmplsoftmp.txt;cat /tmp/tmplsoftmp.txt;rm -rf /tmp/tmplsoftmp.txt 开启ssh服务,22端口监听: 存在sshd进程视为合规 查看命令:ps -elf | grep -v "grep" (2)加固配置 关闭telnet服务,23端口不存在监听: 关闭telnet服务 编辑#vi /etc/xinetd.d/telnet文件,把disable项改为yes,即disable = yes 然后运行service xinetd restart,telnet就可以关闭掉了 开启ssh服务,22端口监听: 开启ssh服务 service sshd start 或 /etc/init.d/sshd start =================================================== 7、关闭不必要的服务 (1)检查办法 关闭不必要的服务: 查看服务列表,列出所需要服务的列表(包括所需的系统服务),不在此列表的服务需关闭,保障系统业务最小化。 查看命令:LANG="en_US" chkconfig --list > /tmp/systemctl.txt && cat /tmp/systemctl.txt rm -f /tmp/systemctl.txt (2)加固配置 关闭不必要的服务: 禁止非必要服务 chkconfig [service] off =================================================== 8、查看账户组和组内用户 (1)检查办法 查看账户组和组内用户: 查看group文件中的组名,和组下的成员信息是否正确。 查看命令:cat /etc/group (2)加固配置 查看账户组和组内用户: 1. 执行备份: cp -p /etc/group /etc/group_bak 2. 修改用户所属组: usermod -g group username =================================================== 9、对系统账号进行登录限制 (1)检查办法 对系统账号进行登录限制: 查看passwd文件中用户信息(gopher,sync,games,operator,news,halt,shutdown,webservd,nobody4,noaccess,uucp,lp,nobody,gdm,listen)的最后一个字段登录shell配置为 /sbin/nologin 或 /bin/false 或 /usr/sbin/nologin 查看命令:cat /etc/passwd (2)加固配置 对系统账号进行登录限制: 1. 备份passwd文件 cp -p /etc/passwd /etc/passwd_bak 2. 编辑passwd文件 vi /etc/passwd 依次修改需要锁定的账号(gopher,sync,games,operator,news,halt,shutdown,webservd,nobody4,noaccess,uucp,lp,nobody,gdm,listen)的登录shell为 /sbin/nologin 或 /bin/false (推荐配置为此项) 或 /usr/sbin/nologin 补充说明: /bin/false:什么也不做只是返回一个错误状态,然后立即退出。将用户的shell设置为/bin/false,用户会无法登陆,并且不会有任何提示 /usr/sbin/nologin:会礼貌的向用户显示一条信息,并拒绝用户登录:This account is currently not available /sbin/nologin:同上 /usr/sbin/nologin或/sbin/nologin的配置可以根据实际情况进行选择 =================================================== 10、删除或锁定无用账号 (1)检查办法 删除或锁定无用账号: 查看账号(daemon,adm,nuucp,smmsp,sys,bin,lp,sync,shutdown,halt,news,uucp,operator,games,gopher,nobody)密码状态,为LK视为合规。 查看命令:passwd -S daemon;passwd -S adm;passwd -S nuucp;passwd -S smmsp;passwd -S sys;passwd -S bin;passwd -S lp;passwd -S sync;passwd -S shutdown;passwd -S halt;passwd -S news;passwd -S uucp;passwd -S operator;passwd -S games;passwd -S gopher;passwd -S nobody; (2)加固配置 删除或锁定无用账号: 执行命令 passwd -l <username> 锁定账号<username>,此处<username>需依次替换为daemon,adm,nuucp,smmsp,sys,bin,lp,sync,shutdown,halt,news,uucp,operator,games,gopher,nobody 注意:锁定账户会导致原密码丢失,谨慎操作。 =================================================== 11、定时账户自动登出 (1)检查办法 bash下空闲等待时间TMOUT设置: TMOUT的值大于0且小于等于300视为合规 查看命令:export (2)加固配置 bash下空闲等待时间TMOUT设置: 1. 备份/etc/profile文件 cp /etc/profile /etc/profile_bak 2. 编辑profile文件 vim /etc/profile 修改/新增 TMOUT=300 export TMOUT 或 export TMOUT=300 保存退出 3.执行source /etc/profile 命令使修改生效 =================================================== 12、配置远程日志服务器 (1)检查办法 配置远程日志服务器: 查看日志文件中是否配置远程日志服务器,存在远程日志服务器视为合规,即存在@LogHostIP(LogHostIP的具体值是否准确需要人工判断)。 查看命令:cat /etc/rsyslog.conf;cat /etc/syslog.conf;cat /etc/rsyslog.d/50-default.conf (2)加固配置 配置远程日志服务器: 1. 备份配置文件 cp -p /etc/rsyslog.conf /etc/rsyslog.conf_bak 2. 编辑配置文件 vim /etc/rsyslog.conf 添加如下行 *.* @192.168.0.1 (以上的*.*为需要传输到远程日志服务器的内容,@IP为远程日志服务器的地址。以上参数都需要根据实际情况调整,系统只判断是否配置@IP,具体IP的准确性,需要人工判断) =================================================== 13、对用户登录认证、权限变更进行记录 (1)检查办法 配置记录用户权限变更日志: 查看是否存在authpriv.info /<path>或authpriv.* /<path> 存在视为合规。 查看命令:cat /etc/rsyslog.conf;cat /etc/syslog.conf;cat /etc/rsyslog.d/50-default.conf (2)加固配置 配置记录用户权限变更日志: 备份/etc/rsyslog.conf文件 cp /etc/rsyslog.conf /etc/rsyslog.conf_bak 编辑/etc/rsyslog.conf文件 vim /etc/rsyslog.conf 备份需要配置的文件 添加authpriv.info /<path>或authpriv.* /<path>。 =================================================== 14、配置记录cron行为日志功能 (1)检查办法 配置记录cron行为日志功能: 存在cron.* /<path>视为合规。 查看命令:cat /etc/rsyslog.conf;cat /etc/syslog.conf;cat /etc/rsyslog.d/50-default.conf (2)加固配置 配置记录cron行为日志功能: 备份/etc/rsyslog.conf文件 cp /etc/rsyslog.conf /etc/rsyslog.conf_bak 编辑/etc/rsyslog.conf文件 vim /etc/rsyslog.conf 添加cron.* /var/log/cron 保存退出 =================================================== 15、日志文件读写权限 (1)检查办法 /var/log日志文件权限: 查看/var/log文件夹日志权限,按账户分配日志文件读取、修改和删除权限 如:messages、secure、maillog、cron、spooler、boot.log文件权限是否合规 查看命令:ls -la /var/log | grep -E "messages$|secure$|maillog$|cron$|spooler$|boot.log$" --color=never (2)加固配置 /var/log日志文件权限: 1、备份需要修改的文件,messages、secure、maillog、cron、spooler、boot.log文件 样例:cp /var/log/fileName (此处fileName依次替换为messages、secure、maillog、cron、spooler、boot.log文件) 2、设置文件权限。 样例:chmod 644 fileName (此处fileName依次替换为messages、secure、maillog、cron、spooler、boot.log文件) =================================================== 16、查看补丁信息 (1)检查办法 查看补丁信息: 查看版本信息及/var/sadm/patch目录下补丁包信息(若补丁包在其他目录下需人工执行命令查看) 查看命令:uname -a;ls /var/sadm/patch --color=never (2)加固配置 查看补丁信息: 定期更新升级,可以使用OnlineUpdate或Patch CD Update等方式升级系统补丁(此处不做详细说明) =================================================== 17、检查新建用户的home目录的缺省访问权限 (1)检查办法 检查新建用户的home目录的缺省访问权限: 查看login.defs中是否存在UMASK 027,存在视为合规。 查看命令:cat /etc/login.defs (2)加固配置 检查新建用户的home目录的缺省访问权限: 设置默认权限: 备份文件 cp /etc/login.defs /etc/login.defs_bak 编辑文件 vi /etc/login.defs 在末尾增加UMASK 027(若之前存在UMASK循环函数,则需要先将整段循环注释),将缺省访问权限设置为750。 补充说明: UMASK 的默认设置一般为022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其它用户读权限。 =================================================== 18、禁止匿名FTP (1)检查办法 vsftp中禁止匿名ftp: 存在anonymous_enable=NO视为合规 查看命令:cat /etc/vsftpd/vsftpd.conf (2)加固配置 vsftp中禁止匿名ftp: 1.备份vsftpd.conf文件 2.编辑vsftpd.conf文件 vi /etc/vsftpd/vsftpd.conf 修改或添加anonymous_enable的值为NO anonymous_enable=NO =================================================== 19、限制具备超级管理员权限的用户远程登录 (1)检查办法 禁止root用户远程登录: 查看sshd_config文件中PermitRootLogin的值是否为no,为no视为合规。 查看命令:cat /etc/ssh/sshd_config (2)加固配置 禁止root用户远程登录: 1. 备份文件 cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_bak 2. 编辑文件 vim /etc/ssh/sshd_config 添加或修改如下行 PermitRootLogin no 注:重启ssh服务生效 =================================================== 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、设置FTP权限及访问,限制部分用户的ftp访问权限 (1)检查办法 查看Ftp权限配置/etc/ftpaccess: 需人工查看用户黑名单是否合规。 查看命令:cat /etc/ftpaccess (2)加固配置 查看Ftp权限配置/etc/ftpaccess: 编辑ftpaccess文件,将禁止访问的用户加入到名单中 =================================================== 22、分配不同账号,避免不同用户间共享账号 (1)检查办法 分配不同账号,避免不同用户间共享账号: 1、判定条件 不存在不同用户间共享同一帐户的情况。 2、检测操作 1)使用命令“cat /etc/passwd ”查看系统帐户列表; 2)访谈系统管理员,询问各帐户的使用人情况; 3)判定是否存在不同用户共享帐户的情况。 查看命令:cat /etc/passwd (2)加固配置 分配不同账号,避免不同用户间共享账号: 1、参考配置操作 1)为用户创建帐户: #useradd username //创建帐户; #passwd username //设置密码。 =================================================== 23、访问控制 (1)检查办法 Vsftp的chroot list配置: 查看chroot_list中的用户是否合理。 查看命令:cat /etc/vsftpd/chroot_list (2)加固配置 Vsftp的chroot list配置: 修改chroot_list中的用户,凡是加在文件vsftpd.chroot_list中的用户都是不受限制的用户,即可以浏览其主目录的上级目录。 注意:要想使chroot_list中的配置生效,要先在vsftpd.conf中配置如下内容 chroot_local_user=YES(可以为YES或NO) chroot_list_enable=YES(这行必须要有, 否则文件vsftpd.chroot_list不会起作用) chroot_list_file=/etc/vsftpd.chroot_list =================================================== 24、重要目录和文件的权限进行设置 (1)检查办法 passwd文件权限: 查看passwd文件的权限,应为小于等于rw-r--r--的合理值(其他组用户权限不高于所属组用户,以此类推) 查看命令:stat /etc/passwd shadow文件权限: 查看shadow文件的权限,应为小于等于r--------的合理值(其他组用户权限不高于所属组用户,以此类推) 查看命令:stat /etc/shadow group文件权限: 查看group文件的权限,应为小于等于rw-r--r--的合理值(其他组用户权限不高于所属组用户,以此类推) 查看命令:stat /etc/group (2)加固配置 passwd文件权限: 1.备份文件 2.执行如下命令修改权限 chmod rw-r--r-- /etc/passwd shadow文件权限: 1.备份文件 2.执行如下命令修改权限 chmod r-------- /etc/shadow group文件权限: 1.备份文件 2.执行如下命令修改权限 chmod rw-r--r-- /etc/group =================================================== 25、账户口令安全符合要求 (1)检查办法 设置账户口令有效期: PASS_MAX_DAYS的值大于0且小于等于90视为合规 查看命令:cat /etc/login.defs (2)加固配置 设置账户口令有效期: 1.执行命令备份需要修改的配置文件 2.编辑配置文件login.defs vim /etc/login.defs 添加或修改PASS_MAX_DAYS为小于等于90,且大于0的值 PASS_MAX_DAYS 90 注:若在shadow文件中设置相应限制信息,则shadow文件配置优先生效。 =================================================== 26、检查密码长度及复杂度策略 (1)检查办法 密码长度是否符合要求: 查看PASS_MIN_LEN的值是否合规 查看命令:cat /etc/login.defs 检查密码字符串中含大写字符个数: ucredit的值小于等于-1视为合规 查看命令:cat /etc/pam.d/system-auth;cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf;cat /etc/pam.d/passwd 检查密码字符串中含小写字符个数: lcredit的值小于等于-1视为合规 查看命令:cat /etc/pam.d/system-auth;cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf;cat /etc/pam.d/passwd 检查密码字符串中含特殊字符个数: ocredit的值小于等于-1视为合规 查看命令:cat /etc/pam.d/system-auth;cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf;cat /etc/pam.d/passwd 检查密码字符串中含数字个数: dcredit的值小于等于-1视为合规 查看命令:cat /etc/pam.d/system-auth;cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf;cat /etc/pam.d/passwd (2)加固配置 密码长度是否符合要求: 1. 备份login.defs文件 cp -p /etc/login.defs /etc/login.defs_bak 2. 修改login.denfs文件 vim /etc/login.defs 修改或添加PASS_MIN_LEN值为8 PASS_MIN_LEN 8 注:若在shadow文件中设置相应限制信息,则shadow文件配置优先生效。 检查密码字符串中含大写字符个数: 方法一(使用pam_cracklib.so模块): 1.备份需要编辑的文件/etc/pam.d/system-auth或/etc/pam.d/passwd cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak 或cp /etc/pam.d/passwd /etc/pam.d/passwd_bak 2.修改配置文件system-auth或passwd password required pam_cracklib.so dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 3.保存退出。 方法二(使用pam_pwquality.so模块): 1.备份需要编辑的文件/etc/pam.d/system-auth或/etc/pam.d/passwd,和cat /etc/security/pwquality.conf cp /etc/security/pwquality.conf /etc/security/pwquality.conf_bak cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak 或cp /etc/pam.d/passwd /etc/pam.d/passwd_bak 2.修改配置system-auth或passwd文件 首先配置password required pam_pwquality.so password required pam_pwquality.so dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 或在pwquality.conf中修改 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 3.保存退出。 注:/etc/pam.d/system-auth和/etc/pam.d/passwd修改一个即可。 检查密码字符串中含小写字符个数: 同上 检查密码字符串中含特殊字符个数: 同上 检查密码字符串中含数字个数: 同上 =================================================== 27、etc目录中不存在hosts.equiv文件 (1)检查办法 etc目录中不存在hosts.equiv文件: 返回值不包含hosts.equiv文件视为合规 查看命令:ls -la /etc --color=never (2)加固配置 etc目录中不存在hosts.equiv文件: 1、备份hosts.equiv文件 cp /etc/hosts.equiv /etc/hosts.equiv_bak 2、删除hosts.equiv文件 cd /etc rm -f hosts.equiv 3.与管理员确认hosts.enquiv文件是否确认无用,确认无用的情况下,删除/etc/hosts.equiv_bak cd /etc rm -f hosts.equiv_bak