4.3 Linux/UNIX系统安全设置及管理
4.3.1 Lⅰnux/UNIX系统安全设置
1. 安装系统补丁及其他重要的安全软件
(1)安装最新补丁程序。安装UNIX系统后,首先要做的工作是安装操作系统补丁程序,补丁程序是操作系统厂商根据系统安全漏洞对操作系统所做的修改,它对系统的安全及可靠性是至关重要的。
(2)安全重要的安全软件。
● SSH。在SANS/FBI公布的2003年10大UNIX安全漏洞中,FTP及Telnet会话用户名及密码等敏感信息以明文传送名列其中。SSH协议解决了登录及文件传输会话安全加密问题,OpenSSH是一个免费且符合SSH协议的软件包。
● TCP Wrapper。TCP Wrapper允许系统管理员通过远程连接的IP地址来控制谁能够访问系统并提供网络服务。通过使用系统的Syslog,TCP Wrapper能够记录下所有成功及未成功的连接。
2. 将ⅰnetd提供的网络服务减至最小
最小化网络服务,如果有可能去掉Telnet、FTP、TFTP、rlogin/rsh/rcp及与X窗口相关的守护进程,该项工作与UNIX版本有关,在Solaris系统中为编辑inetd.conf文件。
3. 最小化系统启动后所提供的应用服务
如果没有绝对的必要,应关闭以下服务:串口登录服务、邮件服务、基于Windows系统的Samba服务、NFS服务器及客户端进程、RPC服务、目录服务、打印机守护进程、Kerberos服务、X服务、Web服务器、SNMP服务、DHCP服务、DNS或NIS服务及路由守护进程。最后应设置系统守护进程正确的umask为022。
4. 系统核心参数的调整
通过调整核心参数来达到加固系统平台的目的。具体参数根据系统的不同有很大差异。通常核心参数包括:
(1)禁止系统转储核心文件。
(2)禁止堆栈执行代码,防止缓冲区溢出。
(3)修改网络参数,例如,在Solaris系统中使用ndd-set命令修改/dev/ip及/dev/tcp等参数;在Linux下使用echo命令修改/proc/sys/net/ipv4目录中的参数。具体每个参数的名称及功能需查阅相应UNIX系统提供商所供应的系统管理员指南。
5. 加强日志功能
为了跟踪系统的各种活动,及时发现各种攻击及出现问题后处理,安全专家建议应加强系统的日志记录功能。为了保证系统安全,应对下面事件进行记录:
(1)LOG_AUTH,用于记录用户所有成功或失败的系统登录请求。
(2)FTP服务连接信息。
(3)当必须要使用FTP服务时,要启动FTP服务连接跟踪日志功能。
(4)启用所有cron活动的日志。
(5)确认所有系统日志文件的访问权限为664,及文件的属性和同组用户具有写权限。
6. 文件及目录访问许可权设置
确认所有重要系统文件及目录的访问许可权,需要确认的文件如下:
(1)以ro/nosuid方式mount文件系统。确认除系统文件所在卷及一些必要程序所在的卷外,其他卷以ro/nosuid方式mount,以防恶意程序执行suid操作。Solaris系统修改vfstab文件,Linux系统修改/etc/fstab文件。
(2)设置关键文件访问许可。通过以下命令设置关键文件访问许可权:
chmod 644 passwd group chmod 400 shadow
(3)在任意账号可写的临时目录上设置粘贴位。通过使用命令chmod +t dir_name,可在任意账号可写的临时目录上设置粘贴位,以防某用户有意或无意重写其他用户创建的临时文件,其中dir_name表示目录名。例如:
chmod +t /tmp
(4)找出非授权的SUID/SGID执行程序。系统管理员有责任找出所有系统中存在的非授权的SUID/SGID执行程序。以下命令用于找出系统所有设置SUID/SGID的程序。
Find /-type f\(-perm -04000-o -perm -02000\)-print
7. 系统访问、身份鉴别及授权
(1)删除/etc/pam.conf或/etc/pam.d.rhost中的.rhost支持。在使用BSD的R系列命令(rlogin、rsh、rcp)时,.rhost文件实现了基于远程网络地址或主机名的弱身份鉴别,潜在的攻击者是非常容易伪造网络地址及主机名的。删除.rhost支持可防止系统免遭此类攻击。Solaris系统下的命令脚本是:
cd /etc grep -v rhost_auth pam.conf>pam.conf.new mv pam.conf.new pam.conf chroot root:sys pam.conf chmod 644 pam.conf
(2)建立/etc/ftpuser文件。ftpuser文件列出了不能够通过FTP访问系统的用户清单。通常,仅允许普通账号的用户能够通过FTP访问系统,而系统账号,如root、daemon、bin、sys、adm、lp、uucp、smmsp等应禁止。
(3)禁止X服务器监听TCP 6000通道。X服务器通过监听TCP 6000通道的请求来向远程X客户提供服务,由于X窗口使用了相对较弱的身份认证协议,攻击者可以未经授权访问本地X服务器,从而暴露系统敏感信息。管理员应使用nolisten tcp选项来禁止X服务器监听TCP 6000通道的服务请求。
(4)设置屏幕保护。当使用X窗口时,应设置屏幕保护,同时设置需要使用的口令来恢复X会话窗口。
(5)严格限制使用cron/at用户。cron及at命令用于定时执行系统命令,在某些UNIX系统中,cron及at以超级用户身份执行。cron.allow及at.allow列出了允许使用cron及at的用户名。
(6)限制以root身份登录到系统控制台。除非在紧急情况下,否则禁止使用root账号登录系统。通常,系统管理员应通过使用非特权账号及一些授权机制(例如,su命令)来获得普通账号以外的权限。Solaris系统为修改/dev/console文件,Linux系统为修改/etc/securetty文件。
8. 用户账号及环境
系统管理员在正常情况下应设置的项目如下:
(1)锁定系统账号。系统管理员应锁定非普通用户的账号。通过查询文件/etc/passwd可以找到所有要锁定的系统账号。例如,daemon、bin、sys、adm、lp、uucp、smmsp等,根据系统情况及安装程序不同而变化。使用命令为:
passwd -l user -name
(2)确认是否有无口令的账号。使用如下命令显示无口令的账号:
awk -F:′($2==″″){print $1}′/etc/shadow
(3)确认除root账号以外,没有UID为0的账号。UID为0的账号具有超级用户权限。使用下面命令显示UID为0的账号:
awk -F:′($3==0){print $1}′/etc/passwd
(4)确认root的当前路径及路径PATH指定路径的root组可写目录中文件,以防植入木马程序。
(5)保证用户起始目录正确权限设置。组用户或任意用户可写用户起始目录的属性,很有可能被一些恶意用户利用,用以窃取或修改受害用户数据,以至于得到用户权限。应使用以下脚本修改用户起始目录权限为750或更加严格。
for dir in′awk-F:′($3>=500){print $6}′/etc/passwd′ do chmod g-w $dir chmod o-rwx $dir done
其中500表示系统分配给普通用户的最低UID,该值取决于UNIX系统。
(6)删除用户起始目录中的.netrc文件。该文件包含了ftp客户自动登录到ftp服务器所用的用户名及口令等敏感信息,且这些信息以明文存放。使用以下脚本自动删除所有用户起始目录中的.netrc文件:
for dir in′cut -f6 d:/etc/passwd′ do rm -f $dir/.netrc done
(7)设置默认用户umask位。umask位表示用户建立文件的默认读写权限。正确的读写权限可以防止用户的敏感信息被窃取、修改及账号泄露。umask 077表示用户所创建的文件不能由其他用户读、写及执行,而umask 022则表示用户所创建的文件对系统中其他用户只开放读权限。设置umask位的方法是,在标准的shell构成文件中(依不同的UNIX及shell而定,例如,Solaris系统下使用B shell时的构成文件为用户起始目录下的.profile文件)插入一条umask命令。
注意:
本节所述UNIX系统设置主要是与安全相关的内容,是对不同厂商UNIX系统设置的抽象浓缩,所以不涉及具体命令,相关内容请查阅相应UNIX系统管理员指南。
4.3.2 用户管理
UNIX系统用户分为两类:
(1)系统用户,这是给系统管理员对系统有特殊要求的用户使用的。这类用户具有某些特权,其中以超级用户(root)权限最高,root账号在系统安装时创建。
(2)普通用户,一般的系统使用者都是系统的普通用户,这类用户由系统管理员创建。
用户管理主要是指管理员对普通用户的创建和删除、修改用户口令、暂停某账号使用、修改用户属性等日常维护工作。
4.3.3 系统管理
系统管理是由系统管理员完成的一项复杂的日常工作。通常,系统管理员要完成的工作包括启动系统、停止系统运行、安装新软件、增加新用户、删除老用户、端口服务管理、打印服务管理、文件系统维护、数据备份与恢复、网络系统管理、系统性能维护及完成、保持系统发展和运行的日常事务工作。
系统安全管理的主要内容如下:
(1)防止未授权存取。
(2)防止泄密。
(3)防止用户拒绝系统的管理。
(4)防止丢失系统的完整性。