1、 2009 HP Confidential 1 Zhiwei Zhong Technical Consultant LINUX 常用的安全加固措施 2009 HP Confidential 2 议题 1、 Linux安全加固 概述 2、 Linux常用的安全加固 措施(以 SuSE Linux为例) 3、 Linux安全 加固的后续检查 2009 HP Confidential 3 1、 Linux安全加固概述 对 Linux系统进行安全加固目的在于使系统在操作系统级别具备较强抵御非法入侵的能力,以确保系统的稳定运行。 必须明确: 安全加固是有一定风险的操作,可能的风险包括应用程序不能正常使
2、用、停机、甚至是系统被破坏无法使用。 这些风险一般是由于对业务系统运行状况调查不清、加固方案不准确导致,也有因为实施过程中的误操作引起。 因此要求: 现场实施工程师必须清楚研究本主机业务系统要求,对安全加固措施进行认真评估取舍;在加固前实施备份,在加固后全面测试,才能确保既提高操作系统安全性,又使业务系统可靠运行。 2009 HP Confidential 4 2、 SuSE Linux常用的安全加固措施 2.1物理安全和 BIOS安全设置 记录进出机房的人员名单,安全级别要求较高的主机所在机房,考虑安装录像监视系统、身份识别门禁系统等。 主机及控制台应避免让非维护人员接触,如给机柜上锁。 系
3、统安装完毕后在 BIOS中设置不从软盘、 CD-ROM启动,防止未经授权的从这些设备引导,避开 Linux口令认证直接访问文件系统;要求严格的可以考虑移除软驱、 CD-ROM。 在 BIOS中设置管理员口令、开机口令,并设置启动时需要进行口令认证。以防止未经授权进入、更改 BIOS配置。 主机的关闭应由维护人员登陆系统,执行正式关机操作方可。因此,应屏蔽使用 CTRL+ALT+DEL键的关机功能,具体方法为: 编辑 /etc/inittab文件,将如下行 ca:ctrlaltdel:/sbin/shutdown -t3 -r now行首加“ #”号进行注释,即修改为 #ca:ctrlaltde
4、l:/sbin/shutdown -t3 -r now 2009 HP Confidential 5 2、 SuSE Linux常 用 的安全加固措施 2.2系统安装及初始系统的备份 系统安装时应根据组件最小化的要求,不安装系统运行不需要使用的组件。操作系统环境安装完成,立即打上系统软件的最新补丁,以堵塞安全漏洞。 所有补丁安装完毕,应对操作系统做完整备份,并保存到安全位置。 除此之外, 还 可以 执行 如下命令,备份一份 setuid、 setgid文件列表: # find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg ; o
5、rigin_suid_sgid_filelist.txt 以便日后检查时,与变更后的 setuid、 setgid文件列表进行比较,发现存在的不安全的文件权限变动情况。 2009 HP Confidential 6 2、 SuSE Linux常用的安全加固措施 2.3用户帐号和环境变量管理 2.3.1 确认系统只存在一个超级用户: 检查 /etc/passwd文件,确认只存在一个 UID为 0的账号。默认情况下该账号名为 root。 2.3.2 禁用或删除不必要的帐号、用户组: 删除系统中所有不用的缺省用户和组账户(比如 adm, lp, sync, shutdown, halt, news,
6、 uucp, operator, games, ftp等)。 如果某些用户当前不需要使用,但未来可能需要用到,可以先将该帐户进行禁用(将文件中该帐号的默认 /bin/bash改为 /bin/false)。 2009 HP Confidential 7 2、 SuSE Linux常用的安全加固措施 2.3用户帐号和环境变量管理 2.3.3 限制 root用户可以登陆系统的 tty设备: 建议只允许 root在一个 tty设备上登陆,如果需要从其它 tty设备上登陆,可以先使用普通用户登陆,而后使用” su”命令把身份转换为” root”。编辑 /etc/securetty文件,将不希望以 roo
7、t登陆的 TTY设备注释掉,如: tty1 #tty2 #tty3 #tty4 #tty5 #tty6 #tty7 #tty8 这意味着 root用户只能从 tty1设备上登陆系统。 2009 HP Confidential 8 2、 SuSE Linux常用的安全加固措施 2.3用户帐号和环境变量管理 2.3.4 禁止 root用户通过 SSH远程登陆 SuSE Linux主机: 编辑 /etc/ssh/sshd_config文件,将如下行 #PermitRootLogin YES 改为 PermitRootLogin no 2009 HP Confidential 9 2、 SuSE Li
8、nux常用的安全加固措施 2.3用户帐号和环境变量管理 2.3.5 终端持续一段时间( 5分钟)无操作则自动注销: 编辑 /etc/profile文件 ,加入下面这行: export TMOUT=300 TMOUT按秒计算,设置为 300( 5*60=300),也就是 5分钟。 改变这项设置后,必须先注销用户,再用该用户登陆才能激活这个功能。 2009 HP Confidential 10 2、 SuSE Linux常用的安全加固措施 2.3用户帐号和环境变量管理 2.3.6 限制保存的历史命令个数: Shell中默认保存了命令信息,保存的历史命令越多,泄露有用信息的可能性越大。因此,建议将保
9、存值设置得小一点,如 20,方法为: 编辑 /etc/profile文件,如下参数值改为: HISTFILESIZE=20 HISTSIZE=20 2009 HP Confidential 11 2、 SuSE Linux常用的安全加固措施 2.3用户帐号和环境变量管理 2.3.7 除非必要,不使用 .rhost文件 部分双机业务情况需要 .rhost文件,才能正常工作。但使用该文件存在很大的安全风险,如果某用户的主目录中有一个 .rhosts文件,且内容如下: + 这个文件将允许来自任何主机的任何用户无须密码就可以使用 rlogin登陆。 如果确认不需要,请删除。如果确实需要保留,应确认该文
10、件内不存在 “+“符号,更不能存在 “+“ 。 rhosts.equiv文件有与 .rhosts具有类似的作用。因此,处理方式与 .rhosts文件相同。 注意:在 .rhosts和 rhosts.equiv文件中不要使用 ! 和 #符号,因为此处这些并不表示注释信息。 2009 HP Confidential 12 2、 SuSE Linux常用的安全加固措施 2.4 用户口令管理 从 设置密码的长度、有效期、修改周期方面保证了密码的健壮性 编辑 /etc/login.defs文件,修改口令策略: PASS_MIN_LEN 8 用户口令长度不少于 8个字符 PASS_MAX_DAYS 90
11、口令最多可以 90天不用修改 PASS_MIN_DAYS 0 用户修改了密码之后,如果还需要再次修改,可以马上更改 2009 HP Confidential 13 2、 SuSE Linux常用的安全加固措施 2.5 文件和目录访问权限管理 2.5.1 最小授权原则 为了保护 Linux文件和目录的安全,即使是对合法用户也必须按照最小权限原则,仅授予每个用户完成特定任务所必需的文件、目录访问权限。这种授权方式下,即使攻击者攻破了某一普通帐号,但由于权限较低,所能对系统造成的破坏也就受到限制 了。 2.5.2 umask设置 在 一般安全要求的下,将 umask设为 022,更高的安全性要求则应
12、将 umask改为027甚至 077。 编辑 /etc/profile,配置 umask变量值为 027或 077。对于非 root用户,其 umask变量则视该用户所用 shell类型,在其主目录的 .profile、 .login 或 .cshrc文件中定义。 2009 HP Confidential 14 2、 SuSE Linux常用的安全加固措施 2.5 文件和目录访问权限管理 2.5.3 去掉 PATH变量中的“ .” PATH环境变量指定执行命令要搜索的目录。超级用户的 PATH变量在 /etc/profile文件 中,编辑 该文件,如果 PATH环境变量中 包含“ .”,则 予
13、以删除。 对于普通帐号,编辑其主目录下的 .profile文件: $HOME/.profile,同样删除PATH变量中 的“ .”, 并取消普通用户对他们的 .profile文件修改权限。 另外, PATH变量中也不能包括可疑或目的不清的目录 。 2.5.4 设置具有 setuid和 setgid属性的文件的 权限 如果一个程序被设置成了 S位标志,那么普通用户就可以以 root身份来运行这个程序。对系统安全性有较大不利影响,所以应禁止所有不必要的 SUID/SGID程序。 执行如下命令,查找系统中使用 S位的程序,并把结果导入到文本文件中: # find / -type f ( -perm
14、-04000 -o -perm -02000 ) -exec ls -lg ; suid-sgid-results.txt 将导出的文本文件与系统初始安装时导出的文件对比,看出现“ S”位变动的程序是否为预期的。否则,使用如下命令去除“ S”位权限: # chmod a-s program_name 2009 HP Confidential 15 2、 SuSE Linux常用的安全加固措施 2.5 文件和目录访问权限管理 2.5.5 设置关键系统文件的许可权限 加强常用系统配置文件的访问权限控制: #chmod 700 /bin/rpm /只有 root用户可以使用 rpm命令,安装软件包
15、# chmod 740 /usr/X11R6/bin/xhost # chmod 664 /etc/hosts # chmod 644 /etc/alias # chmod 644 /etc/passwd # chmod 644 /etc/exports # chmod 644 /etc/issue # chmod 664 /var/log/wtmp # chmod 664 /var/log/utmp # chmod 644 /etc/services # chmod 600 /etc/xinetd.conf # chmod 600 /etc/shadow # chmod 600 /etc/n
16、etgroup (接下) 2009 HP Confidential 16 2、 SuSE Linux常用的安全加固措施 2.5 文件和目录访问权限管理 2.5.5 设置关键系统文件的许可权限 设置系统文件的访问权限 加强 常用系统配置文件的访问权限控制: (接上) # chmod 600 /etc/login.defs # chmod 600 /etc/hosts.allow # chmod 600 /etc/hosts.deny # chmod 600 /etc/securetty # chmod 600 /etc/security # chmod 600 /etc/ssh/ssh_host
17、_key # chmod 600 /etc/ssh/sshd_config # chmod 600 /var/log/lastlog # chmod 600 /var/log/messages 2009 HP Confidential 17 2、 SuSE Linux常用的安全加固措施 2.5 文件和目录访问权限管理 2.5.6 设置关键系统文件为不可更改 属性 Linux中一个有 “ i” 属性的文件是不能被改动的:不能删除或重命名,不能创建这个 文件的链接,不能往这个文件里写数据。只有系统管理员才能设置和清除这个属性。 使用 chattr命令给下面的文件加上不可更改属性,从而防止非授权用户
18、获得权限 。# chattr +i /etc/passwd # chattr +i /etc/shadow # chattr +i /etc/group # chattr +i /etc/xinetd.conf # chattr +i /etc/services 如果 需要 改变该文件 ,必须先清除这个不允许改变的标志,使用如下命令 : # chattr -i /etc/xinetd.conf 2009 HP Confidential 18 2、 SuSE Linux常用的安全加固措施 2.6 最小化系统 服务 最小 化 xinetd 控制 的服务 为了提高系统安全性,应把不必要的服务禁止掉。
19、 /etc/xinetd.d目录下每个配置文件都对应着一个由 xinetd进程管理的服务 。 要 关闭某个由 xinetd控制的服务,可以到 /etc/xinet.d/目录 ,编辑目录下对应服务的配置文件,在文件中设置 disable项 为: disable = yes 一般 情况下,可以禁用该目录下的各个服务(尤其要禁止任何不用的 RPC服务),将该目录下各配置文件中的 disable项值设置为 yes。如因业务特殊要求,可以将业务所需的服务配置文件中 disable值设置为 no。 配置文件修改完毕后 , 重启 xinetd服务使之生效。 注: 由于系统默认已经安装 、开启了 SSH服务,
20、完全可以替代 telnet、 ftp的功能。因此,这两项服务( telnet、 ftp)也是可以关闭的。 2009 HP Confidential 19 2、 SuSE Linux常用的安全加固措施 2.6 最小化系统 服务 最小化启动脚本控制 的服务 在 Linux系统中,也有部分服务是独立于 xinetd进程运行的服务,这些服务一般通过启动脚本,跟随系统启动开始运行。这些脚本存在于 /etc/rc.d/rcX.d目录下,服务启动脚本以“”开头,服务关闭脚本以“ K”开头 。 取消其中不需要的服务,可以把 /etc/rc.d/rcX.d下不需要运行的肥务的启动或关闭脚本前加一个“ _”符号
21、,其他不变。可以关闭如下服务 : 如果产品系统不要求使用 ISDN服务,应该禁止 : mv /etc/rc3.d/K21isdn /etc/rc5.d/_K21isdn mv /etc/rc3.d/S01isdn /etc/rc5.d/_S01isdn 2 禁止 K10alsasound(声卡 )服务 mv /etc/rc3.d/K10alsasound /etc/rc5.d/_K10alsasound mv /etc/rc3.d/S12alsasound /etc/rc5.d/_S12alsasound 2009 HP Confidential 20 2、 SuSE Linux常用的安全加固
22、措施 2.7 调整系统参数 配置 2.7.1 使系统对 ping没有 反应 使系统对 ping请求不做出反应,对于网络安全很有好处,可以使许多扫描攻击失效。使 用如下命令可以达到该目标 : echo 1 /proc/sys/net/ipv4/icmp_echo_ignore_all 如果 需要重新恢复对 ping的响应,可以用下面的命令 : echo 0 /proc/sys/net/ipv4/icmp_echo_ignore_all 2.7.2 禁止 IP伪装 IP伪装是把自己伪装成别的计算机去欺骗其它的计算机。为了禁止 IP伪装,可以编辑 /etc/host.conf文件,在文件后加上如下行
23、: nospoof on 2009 HP Confidential 21 2、 SuSE Linux常用的安全加固措施 2.7 调整系统参数 配置 2.7.3 防止 DoS攻击 对系统所有的用户设置资源限制可以防止 DoS类型攻击。如最大进程数和内存使用数量等。可以在 /etc/security/limits.conf中添加如下几行 : * hard core 0 /表示禁止创建 core文件 * hard rss 5000 /表示除 root之外,其他用户最多只能用 5M内存 * hard nproc 20 /表示最多进程数限制为 20 2009 HP Confidential 22 2、
24、SuSE Linux常用的安全加固措施 2.8 系统日志配置 系统日志是监视、跟踪入侵行为的重要资料,也是仲裁中的主要证据。 Syslog是Linux默认的日志守护进程, /etc/syslog.conf(或 /etc/syslog-ng/syslog-ng.conf)为 其配置文件。 Linux的日志主要存储在 /var/log 目录中。 2.8.1 更详细的 xinetd服务日志 记录 编辑 /etc/xinetd.conf文件,确保存在如下行 : Log_type = SYSLOG AUTHPRIV 2.8.2 根据系统性能情况修改日志同步情况 Syslog.conf配置文件中,部分配置
25、条目的文件名前加 了“ -”符号 ,例如 : news.notice -/var/log/news/news.notice 该 横线的含义表示守护进程不用把它对给定日志文件的写操作与对文件系统的写操作进行同步。因此,如果系统性能比较重,则可以在更多的配置条目前 加上 “ -”符号 。 2009 HP Confidential 23 2、 SuSE Linux常用的安全加固措施 2.8 系统日志 配置 2.8.3 重要日志重定向 为了防止日志被入侵者删除,以掩盖其入侵行为,可以为重要日志建立硬拷贝。在有条件的情况下,把日志重定向到打印机、管理员的邮箱或独立的日志服务器。这样,即使服务器上的日志被
26、删除,原始的日志信息仍能得到保存。 例如中央日志服务器 IP为 192.168.1.40,可以在 /etc/syslog.conf文件中做如下配置,以将“授权”日志发送到中央日志服务器: authpriv.* 192.168.1.40 2.8.4 定期 备份如下 日志到安全存放地,如: /var/log/lastlog /var/log/wtmp /var/log/messages /var/run/utmp /var/log/faillog 2009 HP Confidential 24 2、 SuSE Linux常用的安全加固措施 2.9 系统补丁管理 新的安全漏洞总是不断被发现,操作系统
27、厂商也针对这些漏洞发布新的安全补丁 。为系统配置补丁自动更新或定期去操作系统厂商网站下载相应的安全补丁。 (前提:购买了相关厂商的服务) 2009 HP Confidential 25 3、 Linux安全 加固的后续 检查 由于 安全加固涉及到对 Linux系统配置多方面的修改,为了确保安全效果已经达到,同时业务又正常运行,应在安全加固实施完之后,做以下方面的检查 : 一、 Linux系统健康状况检查 使用 top、 vmstat、 iostat等命令检查加固后系统的健康状况,主要与加固前状况进行对比,确认系统各项运行指标保持正常。 二、业务系统功能正常 参照相关业务产品质量检查标准,对业务系统功能进行测试验证,并持续观察一段时间,确认系统运行正常。 三、安全性检查评估 利用第三方扫描工具或安全检查脚本,对加固后的系统做安全检查,确认没有高、中级别的安全漏洞 。 2009 HP Confidential 26 Thanks