1、CentOS7.0 系统安全加固手册目录一、用户帐号和环境 .2二、系统访问认证和授权 .3三、核心调整 .4四、需要关闭的一些服务 .5五、SSH 安全配置 .5六、封堵 openssl 的 Heartbleed 漏洞 .6七、开启防火墙策略 .6八、启用系统审计服务 .8九、部署完整性检查工具软件 .10十、部署系统监控环境 .11以下安全设置均是在 CentOS7.0_x64 环境下 minimal 安装进行的验证。一、用户帐号和环境检查项 注释:1 清除了operator、 lp、shutdown、 halt、games、gopher 帐号删除的用户组有: lp、uucp 、games
2、、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 设置中如果存在这些目录可能会导致超级用户误执行一个特洛伊木马5 用户的home目录许可权限设置为700 用户home目录的许可权限限制不严可能会导致恶意用户读/修
3、改/删除其它用户的数据或取得其它用户的系统权限6 是否有用户的点文件是所有用户可读写的:for dir in awk -F: ($3 = 500) print $6 /etc/passwddofor file in $dir/.A-Za-z0-9*doif -f $file ; thenchmod o-w $filefidonedoneUnix/Linux下通常以 ”.”开头的文件是用户的配置文件,如果存在所有用户可读/写的配置文件可能会使恶意用户能读/写其它用户的数据或取得其它用户的系统权限7 为用户设置合适的缺省umask 值:cd /etcfor file in profile csh.
4、login csh.cshrc bashrcdoif grep -c umask $file -eq 0 ;thenecho “umask 022“ $filefi为用户设置缺省的umask 值有助于防止用户建立所有用户可写的文件而危及用户的数据.chown root:root $filechmod 444 $filedone8 设备系统口令策略:修改/etc/login.defs文件将PASS_MIN_LEN最小密码长度设置为 12位。10 限制能够su为root 的用户:#vi /etc/pam.d/su 在文件头部添加下面这样的一行auth required pam_wheel.so u
5、se_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: root #dumper: root #operator: root #decode: root #root: marc 修改后执行/usr/bin/newaliases13 修改帐户TMOUT 值,设置自动注销时间v
6、i /etc/profile增加TMOUT=600 无操作600秒后自动退出14 设置Bash保留历史命令的条数#vi /etc/profile修改HISTSIZE=5即只保留最新执行的5条命令16 防止IP SPOOF:#vi /etc/host.conf 添加:nospoof on 不允许服务器对IP地址进行欺骗17 使用日志服务器:#vi /etc/rsyslog.conf 照以下样式修改*.info;mail.none;authpriv.none;cron.none 192.168.10.199这里只是作为参考,需要根据实际决定怎么配置参数二、系统访问认证和授权检查项 注释:1 限制
7、at/cron给授权的用户:cd /etc/rm -f cron.deny at.denyCron.allow和at.allow文件列出了允许允许crontab 和at 命令的用户名单, 在多数系统上通常只有系统管理员echo root cron.allowecho root at.allowchown root:root cron.allow at.allowchmod 400 cron.allow at.allow才需要运行这些命令5 Crontab文件限制访问权限:chown root:root /etc/crontabchmod 400 /etc/crontabchown -R roo
8、t:root /var/spool/cronchmod -R go-rwx /var/spool/cronchown -R root:root /etc/cron.*chmod -R go-rwx /etc/cron.*系统的crontab 文件应该只能被cron守护进程(它以超级用户身份运行 )来访问,一个普通用户可以修改crontab文件会导致他可以以超级用户身份执行任意程序6 建立恰当的警告banner:echo “Authorized uses only. All activity may be monitored and reported.“ /etc/motdchown root:
9、root /etc/motdchmod 644 /etc/motdecho “Authorized uses only. All activity may be monitored and reported.“ /etc/issueecho “Authorized uses only. All activity may be monitored and reported.“ /etc/改变登录banner可以隐藏操作系统类型和版本号和其它系统信息,这些信息可以会对攻击者有用.7 限制root登录到系统控制台 :cat /etc/securettytty1tty2tty3tty4tty5tty6
10、END_FILEchown root:root /etc/securettychmod 400 /etc/securetty通常应该以普通用户身份访问系统,然后通过其它授权机制(比如su命令和sudo)来获得更高权限,这样做至少可以对登录事件进行跟踪8 设置守护进程掩码vi /etc/rc.d/init.d/functions设置为 umask 022系统缺省的 umask 值应该设定为 022 以避免守护进程创建所有用户可写的文件三、核心调整设置项 注释:1 禁止core dump:cat /etc/security/limits.conf* soft core 0* hard core 0
11、END_ENTRIES允许core dump会耗费大量的磁盘空间.2 chown root:root /etc/sysctl.confchmod 600 /etc/sysctl.conf log_martians将进行ip假冒的ip 包记录到/var/log/messages其它核心参数使用CentOS默认值。四、需要关闭的一些服务设置项 注释:1 关闭Mail Serverchkconfig postfix off 多数Unix/Linux系统运行 Sendmail作为邮件服务器, 而该软件历史上出现过较多安全漏洞,如无必要,禁止该服务五、SSH 安全配置设置项 注释:1 配置空闲登出的超时
12、间隔:ClientAliveInterval 300 ClientAliveCountMax 0Vi /etc/ssh/sshd_config2 禁用 .rhosts 文件IgnoreRhosts yes Vi /etc/ssh/sshd_config3 禁用基于主机的认证HostbasedAuthentication no Vi /etc/ssh/sshd_config4 禁止 root 帐号通过 SSH 登录PermitRootLogin no Vi /etc/ssh/sshd_config5 用警告的 BannerBanner /etc/issue Vi /etc/ssh/sshd_co
13、nfig6 iptables防火墙处理 SSH 端口 # 64906-A INPUT -s 192.168.1.0/24 -m state -state NEW -p tcp -dport 64906 -j ACCEPT-A INPUT -s 202.54.1.5/29 -m state -state NEW -p tcp -dport 64906 -j ACCEPT这里仅作为参考,需根据实际需要调整参数7 修改 SSH 端口和限制 IP 绑定:Port 64906安装selinux管理命令yum -y install policycoreutils-python修改 port context
14、s(关键),需要对context 进行修改semanage port -a -t ssh_port_t -p tcp 64906semanage port -l | grep ssh -查看当前SElinux 允许的ssh端口Vi /etc/ssh/sshd_config仅作为参考,需根据实际需要调整参数。8 禁用空密码:PermitEmptyPasswords no 禁止帐号使用空密码进行远程登录SSH9 记录日志:LogLevel INFO 确保在 sshd_config 中将日志级别 LogLevel 设置为 INFO 或者 DEBUG,可通过 logwatch or logcheck
15、来阅读日志。10 重启SSHsystemctl restart sshd.service 重启ssh六、封堵 openssl 的 Heartbleed 漏洞检测方法:在服务器上运行以下命令确认 openssl 版本# openssl versionOpenSSL 1.0.1e-fips 11 Feb 2013以上版本的 openssl 存在 Heartbleed bug,需要有针对性的打补丁。升及补丁:#yum -y install openssl验证:# openssl version -aOpenSSL 1.0.1e-fips 11 Feb 2013built on: Thu Jun 5
16、12:49:27 UTC 2014以上 built on 的时间是 2014.6.5 号,说明已经修复了该漏洞。注:如果能够临时联网安装以上补丁,在操作上会比较简单一些。如果无法联网,则有两种处理办法:首选从安装光盘拷贝独立的 rpm 安装文件并更新;另一个办法是提前下载最新版本的 openssl 源码,编译并安装。七、开启防火墙策略在 CentOS7.0 中默认使用 firewall 代替了 iptables service。虽然继续保留了 iptables 命令,但已经仅是名称相同而已。除非手动删除 firewall,再安装 iptables,否则不能继续使用以前的 iptables 配置
17、方法。以下介绍的是 firewall 配置方法:#cd /usr/lib/firewalld/services /该目录中存放的是定义好的网络服务和端口参数,只用于参考,不能修改。这个目录中只定义了一部分通用网络服务。在该目录中没有定义的网络服务,也不必再增加相关 xml 定义,后续通过管理命令可以直接增加。#cd /etc/firewalld/services/ /从上面目录中将需要使用的服务的 xml 文件拷至这个目录中,如果端口有变化则可以修改文件中的数值。# Check firewall state.firewall-cmd -state# Check active zones.fir
18、ewall-cmd -get-active-zones# Check current active services.firewall-cmd -get-service# Check services that will be active after next reload.firewall-cmd -get-service -permanent查看 firewall 当前的配置信息,最后一个命令是查看写入配置文件的信息。# # Set permanent and reload the runtime config.# firewall-cmd -permanent -zone=public
19、 -add-service=http# firewall-cmd -reload# firewall-cmd -permanent -zone=public -list-services打开 HTTP 服务端口并写入配置文件从配置文件中重载至运行环境中。# firewall-cmd -permanent -zone=public -remove-service=https# firewall-cmd -reload从已有配置中删除一个服务端口# firewall-cmd -permanent -zone=public -add-port=8080-8081/tcp# firewall-cmd
20、-reload# firewall-cmd -zone=public -list-ports8080-8081/tcp# firewall-cmd -permanent -zone=public -list-ports8080-8081/tcp# firewall-cmd -permanent -zone=public -remove-port=8080-8081/tcp# firewall-cmd -reload打开或关闭一段 TCP 端口的方法,同理如果使用了其它非通用端口,那么也可以这么操作。# firewall-cmd -permanent -zone=public -add-rich
21、-rule=“rule family=“ipv4“ source address=“192.168.0.4/24“ service name=“http“ accept“# firewall-cmd -permanent -zone=public -remove-rich-rule=“rule family=“ipv4“ source address=“192.168.0.4/24“ service name=“http“ accept“The following command allows you to open/close HTTP access to a specific IP add
22、ress.八、启用系统审计服务审计内容包括:系统调用、文件访问、用户登录等。编辑/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
23、-w /etc/init.d/cups -p wa -k CFG_initd_cups-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.conf -p wa -k CFG_MAC_policy-w /usr/sbin/stunnel -p x-w /etc/security/rbac-self-test.con
24、f -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/ -p wa -k CFG_cron.daily-w /etc/cron.hourly/ -p wa -k CFG_cron.hourly-w /etc/cron.monthly/ -p w
25、a -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 -k CFG_passwd-w /etc/gshadow -k CFG_gshadow-w /etc/shadow -k CFG_shadow-w /etc/security/opasswd -k CFG
26、_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/tallylog -p wa -k LOG_tallylog-w /etc/hosts -p wa -k CFG_hosts-w /etc/sysconfig/network-scripts/ -p wa -k CFG_network-
27、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 -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/securit
28、y/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 /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/vsftp
29、d.ftpusers -k CFG_vsftpd.ftpusers-a exit,always -F arch=b32 -S sethostname-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
30、数据库能够保存文档的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文档大小、最后修改时间 (mtime)、创建时间(ctime) 、最后访问时间(atime)、增加的大小连同连接数。 AIDE 还能够使用下列算法:sha1、md5 、rmd160、tiger,以密文形式建立每个文档的校验码或散列号。在系统安装完毕,要连接到网络上之前,系统管理员应该建立新系统的 AIDE 数据库。这第一个 AIDE 数据库是系统的一个快照和以后系统升级的准绳。数据库应该包含这些信息:关键的系统二进制可执行程式、动态连接库、
31、头文档连同其他总是保持不变的文档。这个数据库不应该保存那些经常变动的文档信息,例如:日志文档、邮件、/proc 文档系统、用户起始目录连同临时目录安装方法:#yum -y install aide注:如果主机不能联网安装 AIDE,那么也可以从安装光盘拷贝至目标主机。检验系统文件完整性的要求:因为 AIDE 可执行程序的二进制文档本身可能被修改了或数据库也被修改了。因此,应该把 AIDE 的数据库放到安全的地方,而且进行检查时要使用确保没有被修改过的程序,最好是事先为 AIDE 执行程序生成一份 MD5 信息。再次使用 AIDE 可执行程序时,需要先验证该程序没有被篡改过。配置说明:序号 参数 注释1 /etc/aide.conf 配置文件2 database Aide 读取文档数据库的位置,默认为/var/lib/aide,默认文件名为 aide.db.gz3 database_out Aide 生成文档数据库的存放位置,默认为/var/lib/aide,默认文件名为 aide.db.new.gzdatabase_new 在使用 aide -compare 命令时,需要在 aide.conf 中事先
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。