CentOS系统安全加固实施专项方案(15页).doc
下载文档
上传人:正***
编号:870905
2024-01-03
15页
88KB
1、CentOS7.0系统安全加固手册目录一、用户帐号和环境2二、系统访问认证和授权3三、关键调整4四、需要关闭部分服务5五、SSH安全配置5六、封堵opensslHeartbleed漏洞6七、开启防火墙策略6八、启用系统审计服务8九、布署完整性检验工具软件10十、布署系统监控环境11以下安全设置均是在CentOS7.0_x64环境下minimal安装进行验证。一、用户帐号和环境检验项注释:1清除了operator、lp、shutdown、halt、games、gopher 帐号删除用户组有: lp、uucp、games、dip其它系统伪帐号均处于锁定SHELL登录状态2验证是否有账号存在空口令情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目录许可权限限制不严可能会造成恶意用户读/修改/删除其它用户数据或取得其它用户系统权限6是否有用户点文件是全部用户可读写:for dir in awk -F: 3、($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.login csh.cshrc bashrcdoif grep -c umask $file -eq 0 ;thenecho umask 0224、 $filefichown root:root $filechmod 444 $filedone为用户设置缺省umask值有利于预防用户建立全部用户可写文件而危及用户数据.8设备系统口令策略:修改/etc/login.defs文件将PASS_MIN_LEN最小密码长度设置为12位。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/a5、liases:#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值,设置自动注销时间vi /etc/profile增加TMOUT=600 无操作600秒后自动退出14设置Bash保留历史命令条数#vi /etc/profile修改HISTSIZE=5即只保留最新6、实施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限制 at/cron给授权用户:cd /etc/rm -f cron.deny at.denyecho root cron.allowecho root at.allowchown root:roo7、t cron.allow at.allowchmod 400 cron.allow at.allowCron.allow和at.allow文件列出了许可许可crontab和at命令用户名单, 在多数系统上通常只有系统管理员才需要运行这些命令5Crontab文件限制访问权限:chown root:root /etc/crontabchmod 400 /etc/crontabchown -R root:root /var/spool/cronchmod -R go-rwx /var/spool/cronchown -R root:root /etc/cron.*chmod -R go-rwx /e8、tc/cron.*系统crontab文件应该只能被cron守护进程(它以超级用户身份运行)来访问,一个一般用户能够修改crontab文件会造成她能够以超级用户身份实施任意程序6建立合适警告banner:echo Authorized uses only. All activity may be monitored and reported. /etc/motdchown root:root /etc/motdchmod 644 /etc/motdecho Authorized uses only. All activity may be monitored and reported. /etc9、/issueecho Authorized uses only. All activity may be monitored and reported. /etc/改变登录banner能够隐藏操作系统类型和版本号和其它系统信息,这些信息能够会对攻击者有用.7限制root登录到系统控制台:cat /etc/securettytty1tty2tty3tty4tty5tty6END_FILEchown root:root /etc/securettychmod 400 /etc/securetty通常应该以一般用户身份访问系统,然后经过其它授权机制(比如su命令和sudo)来取得更高权限,这么做最少10、能够对登录事件进行跟踪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 0END_ENTRIES许可core dump会花费大量磁盘空间.2chown root:root /etc/sysctl.confchmod 600 /etc/sysctl.conflog_martians将进行ip假冒ip包统计到/var/l11、og/messages其它关键参数使用CentOS默认值。四、需要关闭部分服务设置项注释:1关闭Mail Serverchkconfig postfix off多数Unix/Linux系统运行Sendmail作为邮件服务器, 而该软件历史上出现过较多安全漏洞,如无必需,严禁该服务五、SSH安全配置设置项注释:1配置空闲登出超时间隔:ClientAliveInterval 300 ClientAliveCountMax 0Vi /etc/ssh/sshd_config2禁用 .rhosts 文件IgnoreRhosts yesVi /etc/ssh/sshd_config3禁用基于主机认证Hos12、tbasedAuthentication noVi /etc/ssh/sshd_config4严禁 root 帐号经过 SSH 登录PermitRootLogin noVi /etc/ssh/sshd_config5用警告 BannerBanner /etc/issueVi /etc/ssh/sshd_config6iptables防火墙处理 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 -s13、tate NEW -p tcp -dport 64906 -j ACCEPT这里仅作为参考,需依据实际需要调整参数7修改 SSH 端口和限制 IP 绑定:Port 64906安装selinux管理命令yum -y install policycoreutils-python修改 port contexts(关键),需要对context进行修改semanage port -a -t ssh_port_t -p tcp 64906semanage port -l | grep ssh -查看目前SElinux 许可ssh端口Vi /etc/ssh/sshd_config仅作为参考,需依据实际需要调14、整参数。8禁用空密码:PermitEmptyPasswords no严禁帐号使用空密码进行远程登录SSH9统计日志:LogLevel INFO确保在 sshd_config 中将日志等级 LogLevel 设置为 INFO 或 DEBUG,可经过logwatchorlogcheck来阅读日志。10重启SSHsystemctl restart sshd.service重启ssh六、封堵opensslHeartbleed漏洞检测方法:在服务器上运行以下命令确定openssl版本# openssl versionOpenSSL 1.0.1e-fips 11 Feb 以上版本openssl存在Hear15、tbleed bug,需要有针对性打补丁。升及补丁:#yum -y install openssl验证:# openssl version -aOpenSSL 1.0.1e-fips 11 Feb built on: Thu Jun 5 12:49:27 UTC 以上built on 时间是.6.5号,说明已经修复了该漏洞。注:假如能够临时联网安装以上补丁,在操作上会比较简单部分。假如无法联网,则有两种处理措施:首选从安装光盘拷贝独立rpm安装文件并更新;另一个措施是提前下载最新版本openssl源码,编译并安装。七、开启防火墙策略在CentOS7.0中默认使用firewall替换了iptab16、les service。即使继续保留了iptables命令,但已经仅是名称相同而已。除非手动删除firewall,再安装iptables,不然不能继续使用以前iptables配置方法。以下介绍是firewall配置方法:#cd /usr/lib/firewalld/services /该目录中存放是定义好网络服务和端口参数,只用于参考,不能修改。这个目录中只定义了一部分通用网络服务。在该目录中没有定义网络服务,也无须再增加相关xml定义,后续经过管理命令能够直接增加。#cd /etc/firewalld/services/从上面目录中将需要使用服务xml文件拷至这个目录中,假如端口有改变则能够17、修改文件中数值。# Check firewall state.firewall-cmd -state# Check active zones.firewall-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 permanen18、t and reload the runtime config.# firewall-cmd -permanent -zone=public -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从已经有配置中删除一个服务端口# firewa19、ll-cmd -permanent -zone=public -add-port=8080-8081/tcp# firewall-cmd -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端口方法,同理假如使用了20、其它非通用端口,那么也能够这么操作。# firewall-cmd -permanent -zone=public -add-rich-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 acceptThe following command allows 21、you to open/close HTTP access to a specific IP address.八、启用系统审计服务审计内容包含:系统调用、文件访问、用户登录等。编辑/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/ 22、-p wa -k CFG_audisp-w /etc/cups/ -p wa -k CFG_cups-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/sb23、in/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/ -p wa -k CFG_cron.daily-w /etc/cron.hourly/ 24、-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 -k CFG_passwd-w /etc/gshadow -k CFG_gshadow-w /etc/s25、hadow -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/tallylog -p wa -k LOG_tallylog-w /etc/hosts -p wa -k CFG_hosts-w /et26、c/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 -p wa -k CFG_sysctl.conf-w /etc/modprobe.conf -p wa -k CFG_modprobe.27、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 /etc/aliases -p wa -k CFG_aliases-w /etc/postfix/ -p wa -k CFG_postfix-w /e28、tc/ssh/sshd_config -k CFG_sshd_config-w /etc/vsftpd.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,高级入侵检测环境)是个入侵检测工具,关键用途是检验文档完整性。29、AIDE能够结构一个指定文档数据库,她使用aide.conf作为其配置文档。AIDE数据库能够保留文档多种属性,包含:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文档大小、最终修改时间(mtime)、创建时间(ctime)、最终访问时间(atime)、增加大小连同连接数。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文档校验码或散列号。在系统安装完成,要连接到网络上之前,系统管理员应该建立新系统AIDE数据库。这第一个AIDE数据库是系统一个快照和以后系统升级准绳。数据库应该30、包含这些信息:关键系统二进制可实施程式、动态连接库、头文档连同其它总是保持不变文档。这个数据库不应该保留那些常常变动文档信息,比如:日志文档、邮件、/proc文档系统、用户起始目录连同临时目录安装方法:#yum -y install aide注:假如主机不能联网安装AIDE,那么也能够从安装光盘拷贝至目标主机。检验系统文件完整性要求:因为AIDE可实施程序二进制文档本身可能被修改了或数据库也被修改了。所以,应该把AIDE数据库放到安全地方,而且进行检验时要使用确保没有被修改过程序,最好是事先为AIDE实施程序生成一份MD5信息。再次使用AIDE可实施程序时,需要先验证该程序没有被篡改过。配置说31、明:序号参数注释1/etc/aide.conf配置文件2databaseAide读取文档数据库位置,默认为/var/lib/aide,默认文件名为aide.db.gz3database_outAide生成文档数据库存放位置,默认为/var/lib/aide,默认文件名为aide.db.new.gzdatabase_new在使用aide -compare命令时,需要在aide.conf中事先设置好database_new并指向需要比较库文件4report_url/var/log/aide,入侵检测汇报存放位置5其它参数继续使用默认值即可。建立、更新样本库: 1)实施初始化,建立第一份样本库 # 32、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 最具体。或#aide -compare这个命令要求在配置文件中已经同时指定好了新、旧两个库文件。2) 保留入侵检测汇报(将检验结果保留到其它文件)aide33、-check-report=file:/tmp/aide-report-0426.txt3) 定时实施入侵检测,并发送汇报#crontab-e4517*/usr/sbin/aide-C-V4|/bin/mail-sAIDEREPORT$(date+%Y%m%d)abcdefg#或4523 * * * aide -C /var/log/aide/date +%Y%m%d_aide.log统计aide可实施文件md5 checksum:#md5sum /usr/sbin/aide十、布署系统监控环境该段落因为需要安装或更新较多依靠包,所以现在仅作为参考。为了在未来适宜时候,能够支持经过一台集中监控34、主机全方面监控主机系统和网络设备运行状态、网络流量等关键数据,能够在安全加固主机系统中预先安装和预留了系统监控软件nagios和cacti在被监控主机中需要使用软件支撑环境。因为以下软件在安装过程中需要使用源码编译方法,由此而引发需要安装GCC和OPENSSL-DEVEL。而为了安装GCC和OPENSSL-DEVEL而引发依靠包安装和更新大约有20个左右。这就违返了安全加固主机要保持最小可用系统设计标准,所以该部分监控软件支撑环境布署工作不作为默认设置,但仍然经过下文给出了布署参考,以用于系统运行运维过程中需要布署全局性监控系统时使用。1) 安装net-snmp服务#yum -y instal35、l net-snmp#chkconfig snmpd off -将该服务设置为默认关闭,这里只是为以后布署cacti先预置一个支撑环境假如不能联网安装,则能够使用安装光盘,并安装以下多个rpm包:lm_sensors , net-snmp , net-snmp-libs , net-snmp-utils2) 安装nagios-plugin和nrpea. 增加用户&设定密码# useradd nagios# passwd nagiosb. 安装Nagios 插件# tar zxvf nagios-plugins-2.0.3.tar.gz # cd nagios-plugins-2.0.3# ./36、configure -prefix=/usr/local/nagios# make & make install这一步完成后会在/usr/local/nagios/下生成三个目录include、libexec和share。修改目录权限# chown nagios.nagios /usr/local/nagios# chown -R nagios.nagios /usr/local/nagios/libexecc. 安装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-daemonc.3 安装配置文件# make install-daemon-config现在再查看nagios 目录就会发觉有5个目录了