《2022年CentOS._系统安全加固实施方案 .pdf》由会员分享,可在线阅读,更多相关《2022年CentOS._系统安全加固实施方案 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录一、用户帐号和环境 . 2 二、系统访问认证和授权 . 4 三、核心调整 . 5 四、需要关闭的一些服务 . 5 五、SSH 安全配置 . 6 六、封堵 openssl的 Heartbleed漏洞 . 6 七、开启防火墙策略 . 7 八、启用系统审计服务 . 8 九、部署完整性检查工具软件 . 10 十、部署系统监控环境 . 11 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 以下安全设置均是在CentOS6.5_x86
2、 环境 basic server 下进行的验证。一、用户帐号和环境检查项注释 : 1查看用户: awk -F : print $1 /etc/passwd 查看用户组: cat /etc/group 删除用户:userdel lp 删除用户组: groupdel lp 用户列表文件: /etc/passwd 用户组 列表文件: /etc/group 查看系 统 中有 哪些用 户:cut -d : -f 1 /etc/passwd 查看可以登 录系统的用 户 :cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f 1清除了 uucp 、ope
3、rator 、lp、shutdown 、halt、games 、gopher 帐号删除的用户组有:lp、uucp 、games 、dip 其它系统伪帐号均处于锁定SHELL 登录的状态2 验证是否有账号存在空口令的情况: awk -F: ($2 = ) print $1 /etc/shadow3 检查除了 root 以外是否还有其它账号的UID 为0: awk -F: ($3 = 0) print $1 /etc/passwd任何 UID 为0 的账号在系统上都具有超级用户权限. 4 检查 root 用户的 $PATH 中是否有 . 或者所有用户 /组用户可写的目录超级用户的$PATH 设置中
4、如果存在这些目录可能会导致超级用户误执行一个特洛伊木马5 用户的 home 目录许可权限设置为700 用户 home 目录的许可权限限制不严可能会导致恶意用户读/修改 /删除其它用户的数据或取得其它用户的系统权限6 是否有用户的点文件是所有用户可读写的: for dir in awk -F: ($3 = 500) print $6 /etc/passwd do for file in $dir/.A-Za-z0-9* do if -f $file ; then chmod o-w $file fi done doneUnix/Linux 下通常以 ” .” 开头的文件是用户的配置文件,如果存在
5、所有用户可读/写的配置文件可能会使恶意用户能读/写其它用户的数据或取得其它用户的系统权限名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 7 为用户设置合适的缺省umask 值: cd /etc for file in profile csh.login csh.cshrc bashrc do if grep -c umask $file -eq 0 ; then echo umask 022 $file fi chown ro
6、ot:root $file chmod 444 $file done为用户设置缺省的umask 值有助于防止用户建立所有用户可写的文件而危及用户的数据. 8 设备系统口令策略:修改/etc/login.defs 文件将PASS_MIN_LEN 最小密码长度设置为12位。9 设置系统口令复杂度:修改/etc/pam.d/system-auth文件下面这一行password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 dcredit=1 ucredit=1 lcredit=1 ocredit=1 这里限制的是普通用户修改自己
7、口令时的复杂度。这个设置对root 是无效的。10 限制能够 su为root 的用户: #vi /etc/pam.d/su 在文件头部添加下面这样的一行auth required pam_wheel.so use_uid 这样,只有 wheel 组的用户可以su到root 操作样例:#usermod -G10 test 将test 用户加入到 wheel 组11 修改别名文件 /etc/aliases :#vi /etc/aliases 注释掉不要的#games: root #ingres: root #system: root #toor: root #uucp: root #manager
8、: root #dumper: root #operator: root #decode: root #root: marc 修改后执行 /usr/bin/newaliases12 设置帐户锁定登录失败锁定次数、锁定时间Vi /etc/pam.d/system-auth 并增加下面一行内容auth required pam_tally2.so onerr=fail deny=6 unlock_time=300 连续输入密码错误6次,则自动锁定 5分钟。解锁用户faillog -u -r 13 修改帐户 TMOUT 值,设置自动注销时间vi /etc/profile 增加 TMOUT=600 无
9、操作 600 秒后自动退出14 设置 Bash 保留历史命令的条数#vi /etc/profile 修改 HISTSIZE=5 即只保留最新执行的5条命令15 防止误使用 Ctrl+Alt+Del 重启系统#vi /etc/init/control-alt-delete.conf 注掉重启系统的相关命令16 防止 IP SPOOF :#vi /etc/host.conf 添加: nospoof on 不允许服务器对IP地址进行欺骗17 使用日志服务器:#vi /etc/rsyslog.conf 照以下样式修改这里只是作为参考,需要根据实际决定怎么配置参数名师资料总结 - - -精品资料欢迎下载
10、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - *.info;mail.none;authpriv.none;cron.none 192.168.10.199 二、系统访问认证和授权检查项注释 : 1 限制 at/cron 给授权的用户 : cd /etc/ rm -f cron.deny at.deny echo root cron.allow echo root at.allow chown root:root cron.allow at.allow chmod
11、 400 cron.allow at.allowCron.allow 和 at.allow 文件列出了允许允许 crontab 和at命令的用户名单, 在多数系统上通常只有系统管理员才需要运行这些命令5 Crontab 文件限制访问权限: chown root:root /etc/crontab chmod 400 /etc/crontab chown -R root:root /var/spool/cron chmod -R go-rwx /var/spool/cron chown -R root:root /etc/cron.* chmod -R go-rwx /etc/cron.*系统的
12、 crontab 文件应该只能被cron守护进程 (它以超级用户身份运行)来 访 问 , 一 个 普 通 用 户 可 以 修 改crontab 文件会导致他可以以超级用户身份执行任意程序6 建立恰当的警告banner: echo Authorized uses only. All activity may be monitored and reported. /etc/motd chown root:root /etc/motd chmod 644 /etc/motd echo Authorized uses only. All activity may be monitored and re
13、ported. /etc/issue echo Authorized uses only. All activity may be monitored and reported. /etc/改变登录 banner 可以隐藏操作系统类型和版本号和其它系统信息,这些信息可以会对攻击者有用. 7 限制 root 登录到系统控制台: cat /etc/securetty tty1 tty2 tty3 tty4 tty5 tty6 END_FILE chown root:root /etc/securetty 通常应该以普通用户身份访问系统,然后通过其它授权机制( 比如 su命令和sudo) 来获得更高
14、权限, 这样做至少可以对登录事件进行跟踪名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - chmod 400 /etc/securetty8 设置守护进程掩码vi /etc/rc.d/init.d/functions 设置为umask 022 系统缺省的umask 值应该设定为 022以避免守护进程创建所有用户可写的文件三、核心调整设置项注释 : 1 禁止 core dump: cat /etc/security/limits.
15、conf * soft core 0 * hard core 0 END_ENTRIES 允许core dump 会耗费大量的磁盘空间. 2 echo “1” /proc/sys/net/ipv4/conf/all/log_martianschown root:root /etc/sysctl.conf chmod 600 /etc/sysctl.conf log_martians 将进行 ip假冒的 ip包记录到/var/log/messages 其它核心参数使用CentOS 默认值。四、需要关闭的一些服务设置项注释 : 1 关闭 NFS 客户端进程 : 运行 chkconfig nfslo
16、ck off chkconfig autofs off 2 禁止 Netfs 脚本chkconfig netfs off 如果不需要文件共享可禁止该脚本3 关闭 Mail Server chkconfig postfix off 多数 Unix/Linux 系统运行 Sendmail作为邮件服务器, 而该软件历史上出现过较多安全漏洞,如无必要 ,禁止该服务4 关闭 cpuspeed Chkconfig cpuspeed off 调节 cpu 速度用来省电,常用在Laptop 上,对服务器没用5 关闭 IPv6 chkconfig ip6tables off 6 关闭 cups chkconfi
17、g cups off 通用 unix 打印服务7 关闭 atd chkconfig atd off 在指定时间执行命令。建议使用crond 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 五、 SSH 安全配置设置项注释 : 1 配置空闲登出的超时间隔: ClientAliveInterval 300 ClientAliveCountMax 0 Vi /etc/ssh/sshd_config 2 禁用 .rhosts 文件Ig
18、noreRhosts yes Vi /etc/ssh/sshd_config 3 禁用基于主机的认证HostbasedAuthentication no Vi /etc/ssh/sshd_config 4 禁止 root 帐号通过SSH 登录PermitRootLogin no Vi /etc/ssh/sshd_config 5 用警告的Banner Banner /etc/issue Vi /etc/ssh/sshd_config 6 防火墙处理SSH 端口 # 22 -A INPUT -s 192.168.1.0/24 -m state -state NEW -p tcp -dport 2
19、2 -j ACCEPT -A INPUT -s 202.54.1.5/29 -m state -state NEW -p tcp -dport 22 -j ACCEPT这里仅作为参考,需根据实际需要调整参数7 修改 SSH 端口和限制IP 绑定:Port 64906 ListenAddress 192.168.1.5 ListenAddress 202.54.1.5Vi /etc/ssh/sshd_config 仅作为参考,需根据实际需要调整参数。8 禁用空密码:PermitEmptyPasswords no 禁止帐号使用空密码进行远程登录SSH 9 记录日志:LogLevel INFO 确保
20、在sshd_config 中将日志级别LogLevel 设置为INFO 或者DEBUG ,可通过 logwatch or logcheck 来阅读日志。10 重启 SSH ps aux |grep ssh kill -HUP pid -HUP 让进程自动重启六、封堵 openssl的 Heartbleed漏洞检测方法:在服务器上运行以下命令确认openssl 版本# openssl version OpenSSL 1.0.1e-fips 11 Feb 2013 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
21、 - - - - - 第 6 页,共 12 页 - - - - - - - - - 以上版本的openssl 存在 Heartbleed bug,需要有针对性的打补丁。升及补丁:#yum -y install openssl 验证:# openssl version -a OpenSSL 1.0.1e-fips 11 Feb 2013 built on: Thu Jun 5 12:49:27 UTC 2014 以上 built on 的时间是 2014.6.5 号,说明已经修复了该漏洞。注:如果能够临时联网安装以上补丁,在操作上会比较简单一些。如果无法联网,则有两种处理办法:首选从安装光盘拷贝
22、独立的rpm 安装文件并更新;另一个办法是提前下载最新版本的 openssl 源码,编译并安装。七、开启防火墙策略查看当前的iptables 设置:#iptables -L 清除当前的防火墙规则(如果是远程配置iptables 请在清除规则前先执行下表中第一行)#iptables -F #iptables -X #iptables -Z 添加自定义规则:/sbin/iptables -P INPUT ACCEPT 当Chain INPUT (policy DROP) 时 执 行/sbin/iptables -F 后,你将和服务器断开连接所从在清空所有规则前把policy DROP 改为INPU
23、T ,防止悲剧发生(该设置是针对远程配置 iptables 而言,本地则可忽略)/sbin/iptables -A INPUT -i lo -j ACCEPT 允许来自于lo 接口的数据包,如果没有此规则,你将不能通过127.0.0.1 访问本地服务,例如 ping 127.0.0.1。默认设置 。/sbin/iptables -A INPUT -p tcp -dport 22 -j ACCEPT 开放 TCP 协议 22 端口,以便能ssh。该条规则默认将不予设置,每台主机需要根据自己情况决定是使用默认22端口,还是其它端口。注:主机也需要同步更改SSH 监听端口/sbin/iptables
24、 -A INPUT -m state -state ESTABLISHED -j ACCEPT 对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过。默认设置 。/sbin/iptables -A INPUT -p tcp -dport 80 -j ACCEPT 开放 TCP 协议 80 端口供 web 服务。默认不予设置。/sbin/iptables -A INPUT -p tcp -s 10.241.121.15 -j ACCEPT 10.241.121.15 是另外一台服务器的内网ip,由 于 之 间 有 通 信 , 接 受 所 有 来 自10.241.121.15
25、 的 TCP 请求名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 - - - - - - - - - /sbin/iptables -A INPUT -p icmp -m icmp -icmp-type 8 -j ACCEPT 接受 ping /sbin/iptables -P INPUT DROP 屏蔽上述规则以外的所有请求,不可缺少,否则防火墙没有任何过滤的功能。默认设置 。可以使用iptables -L -n 查看规则是否生效/sbin/iptables
26、-A INPUT -p tcp -m state -state NEW -m tcp -dport 20220 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state -state NEW -m tcp -dport 1562 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state -state NEW -m tcp -dport 443 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state -state NEW -m tcp -dport 7400:7600
27、-j ACCEPT /sbin/iptables -A INPUT -p tcp -m state -state NEW -m tcp -dport 80 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m state -state NEW -m tcp -dport 5666 -j ACCEPT 左侧各规则只作为参考,默认均不予设置,请目标主机自行选择并设置。保存刚才设置的防火墙规则:#/etc/init.d/iptables save 可以在文件/etc/sysconfig/iptables 中看到配置八、启用系统审计服务审计内容包括:系统调用、文件访问
28、、用户登录等。编辑/etc/audit/audit.rules, 在文中添加如下内容:-w /var/log/audit/ -k LOG_audit -w /etc/audit/ -p wa -k CFG_audit -w /etc/sysconfig/auditd -p wa -k CFG_auditd.conf -w /etc/libaudit.conf -p wa -k CFG_libaudit.conf -w /etc/audisp/ -p wa -k CFG_audisp -w /etc/cups/ -p wa -k CFG_cups -w /etc/init.d/cups -p w
29、a -k CFG_initd_cups 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - -w /etc/netlabel.rules -p wa -k CFG_netlabel.rules -w /etc/selinux/mls/ -p wa -k CFG_MAC_policy -w /usr/share/selinux/mls/ -p wa -k CFG_MAC_policy -w /etc/selinux/semanage
30、.conf -p wa -k CFG_MAC_policy -w /usr/sbin/stunnel -p x -w /etc/security/rbac-self-test.conf -p wa -k CFG_RBAC_self_test -w /etc/aide.conf -p wa -k CFG_aide.conf -w /etc/cron.allow -p wa -k CFG_cron.allow -w /etc/cron.deny -p wa -k CFG_cron.deny -w /etc/cron.d/ -p wa -k CFG_cron.d -w /etc/cron.daily
31、/ -p wa -k CFG_cron.daily -w /etc/cron.hourly/ -p wa -k CFG_cron.hourly -w /etc/cron.monthly/ -p wa -k CFG_cron.monthly -w /etc/cron.weekly/ -p wa -k CFG_cron.weekly -w /etc/crontab -p wa -k CFG_crontab -w /var/spool/cron/root -k CFG_crontab_root -w /etc/group -p wa -k CFG_group -w /etc/passwd -p wa
32、 -k CFG_passwd -w /etc/gshadow -k CFG_gshadow -w /etc/shadow -k CFG_shadow -w /etc/security/opasswd -k CFG_opasswd -w /etc/login.defs -p wa -k CFG_login.defs -w /etc/securetty -p wa -k CFG_securetty -w /var/log/faillog -p wa -k LOG_faillog -w /var/log/lastlog -p wa -k LOG_lastlog -w /var/log/tallylo
33、g -p wa -k LOG_tallylog -w /etc/hosts -p wa -k CFG_hosts -w /etc/sysconfig/network-scripts/ -p wa -k CFG_network -w /etc/inittab -p wa -k CFG_inittab -w /etc/rc.d/init.d/ -p wa -k CFG_initscripts -w /etc/ld.so.conf -p wa -k CFG_ld.so.conf -w /etc/localtime -p wa -k CFG_localtime -w /etc/sysctl.conf
34、-p wa -k CFG_sysctl.conf -w /etc/modprobe.conf -p wa -k CFG_modprobe.conf -w /etc/pam.d/ -p wa -k CFG_pam -w /etc/security/limits.conf -p wa -k CFG_pam -w /etc/security/pam_env.conf -p wa -k CFG_pam -w /etc/security/namespace.conf -p wa -k CFG_pam -w /etc/security/namespace.init -p wa -k CFG_pam -w
35、/etc/aliases -p wa -k CFG_aliases -w /etc/postfix/ -p wa -k CFG_postfix -w /etc/ssh/sshd_config -k CFG_sshd_config -w /etc/vsftpd.ftpusers -k CFG_vsftpd.ftpusers -a exit,always -F arch=b32 -S sethostname 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - -
36、 - - - - - - -w /etc/issue -p wa -k CFG_issue -w /etc/ -p wa -k CFG_ 重启 audit 服务#service auditd restart 九、部署完整性检查工具软件AIDE(Advanced Intrusion Detection Environment,高级入侵检测环境)是个入侵检测工具,主要用途是检查文档的完整性。AIDE 能够构造一个指定文档的数据库,他使用aide.conf 作为其配置文档。AIDE 数据库能够保存文档的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户
37、(user)、所属用户组(group)、文档大小、最后修改时间(mtime) 、创建时间 (ctime)、最后访问时间 (atime)、增加的大小连同连接数。AIDE 还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文档的校验码或散列号。在系统安装完毕,要连接到网络上之前,系统管理员应该建立新系统的AIDE 数据库。这第一个AIDE数据库是系统的一个快照和以后系统升级的准绳。数据库应该包含这些信息:关键的系统二进制可执行程式、动态连接库、 头文档连同其他总是保持不变的文档。这个数据库不应该保存那些经常变动的文档信息,例如:日志文档、邮件、/proc 文档系统、
38、用户起始目录连同临时目录安装方法:#yum -y install aide 注:如果主机不能联网安装AIDE ,那么也可以从安装光盘拷贝至目标主机。检验系统文件完整性的要求:因为 AIDE 可执行程序的二进制文档本身可能被修改了或数据库也被修改了。因此,应该把AIDE 的数据库放到安全的地方,而且进行检查时要使用确保没有被修改过的程序,最好是事先为 AIDE 执行程序生成一份MD5 信息。再次使用AIDE 可执行程序时,需要先验证该程序没有被篡改过。配置说明:序号参数注释1 /etc/aide.conf 配置文件2 database Aide 读取文档数据库的位置,默认为 /var/lib/a
39、ide ,默认文件名为 aide.db.gz 3 database_out Aide 生成文档数据库的存放位置,默认为 /var/lib/aide ,默认文件名为aide.db.new.gz database_new 在使用 aide -compare 命令时,需要在aide.conf 中事先设置好 database_new并指向需要比较的库文件4 report_url /var/log/aide ,入侵检测报告的存放位置5 其它参数继续使用默认值即可。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - -
40、 - - - 第 10 页,共 12 页 - - - - - - - - - 建立、更新样本库:1)执行初始化,建立第一份样本库# aide -init # cd /var/lib/aide/ # mv aide.db.new.gz aide.db.gz /替换旧的样本库2)更新到样本库#aide -update # cd /var/lib/aide/ # mv aide.db.new.gz aide.db.gz /替换旧的样本库执行 aide 入侵检测:1)查看入侵检测报告#aide -check 报告的详细程度可以通过-V 选项来调控,级别为0-255,-V0 最简略, -V255 最详细
41、。或#aide -compare 这个命令要求在配置文件中已经同时指定好了新、旧两个库文件。2)保存入侵检测报告(将检查结果保存到其他文件)aide -check -report=file :/tmp/aide-report-20120426.txt 3)定期执行入侵检测,并发送报告# crontab -e 45 17 * * * /usr/sbin/aide -C -V4 | /bin/mail -s AIDE REPORT $(date +%Y%m%d) abcdefg# 或45 23 * * * aide -C /var/log/aide/date +%Y%m%d_aide.log 记录
42、 aide 可执行文件的md5 checksum:#md5sum /usr/sbin/aide 十、部署系统监控环境该段落因为需要安装或更新较多的依赖包,所以目前仅作为参考。为了在将来合适的时候,可以支持通过一台集中的监控主机全面监控主机系统和网络设备的运行状态、 网络流量等重要数据,可以在安全加固主机的系统中预先安装和预留了系统监控软件nagios 和 cacti 在被监控主机中需要使用的软件支撑环境。由于以下软件在安装过程中需要使用源码编译的方式,由此而引发需要安装GCC 和OPENSSL-DEVEL 。 而为了安装GCC 和 OPENSSL-DEVEL而引发的依赖包的安装和更新大约有 2
43、0 个左右。这就违返了安全加固主机要保持最小可用系统的设计原则,所以该部分监控软件支撑环境的部署工作不作为默认设置,但仍然通过下文给出了部署参考,以用于系统运行运维过程中需要部署全局性监控系统时使用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - 1)安装 net-snmp 服务#yum -y install net-snmp #chkconfig snmpd off -将该服务设置为默认关闭,这里只是为以后部署cacti
44、先预置一个支撑环境如果不能联网安装,则可以使用安装光盘,并安装以下几个rpm 包:lm_sensors , net-snmp , net-snmp-libs , net-snmp-utils 2)安装 nagios-plugin 和 nrpe a. 增加用户 &设定密码# useradd nagios # passwd nagios b. 安装 Nagios 插件# tar zxvf nagios-plugins-2.0.3.tar.gz # cd nagios-plugins-2.0.3 # ./configure -prefix=/usr/local/nagios # make & mak
45、e install 这一步完成后会在/usr/local/nagios/ 下生成三个目录include、libexec 和 share。修改目录权限# chown nagios.nagios /usr/local/nagios # chown -R nagios.nagios /usr/local/nagios/libexec c. 安装 NRPE # tar zxvf nrpe-2.15.tar.gz # cd nrpe-2.15 # ./configure # make all 接下来安装NPRE 插件, daemon 和示例配置文件。c.1 安装 check_nrpe 这个插件# make install-plugin 监控机需要安装check_nrpe 这个插件,被监控机并不需要,在这里安装它只是为了测试目的。c.2 安装 deamon # make install-daemon c.3 安装配置文件# make install-daemon-config 现在再查看nagios 目录就会发现有5 个目录了名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -
限制150内