1、 LINUX 评估加固手册 第 1 页 共 14 页密 级:商业秘密LINUX 评估加固手册安氏领信科技发展有限公司二一九二一九年七月LINUX 评估加固手册 第 2 页 共 14 页目 录1、系统补丁的安装 .32、帐户、口令策略的加固 .321、删除或禁用系统无用的用户 .322、口令策略的设置 .423、系统是否允许 ROOT 远程登录 .424、ROOT 的环境变量设置 .53、网络与服务加固 .531、RC?.D 中的服务的设置 .532、/ETC/INETD .CONF 中服务的设置 .633、NFS 的配置 .834、SNMP 的配置 .835、SENDMAIL 的配置 .936
2、、DNS (BIND )的配置 .937、网络连接访问控制的设置 .94、信任主机的设置 .105、日志审核的设置 .116、物理安全加固 .117、系统内核参数的配置 .128、选装安全工具 .13LINUX 评估加固手册 第 3 页 共 14 页1、系统补丁的安装RedHat 使用 RPM 包实现系统安装的管理,系统没有单独补丁包(Patch) 。如果出现新的漏洞,则发布一个新的 RPM 包,版本号( Version)不变,Release做相应的调整。因此检查 RH Linux 的补丁安装情况只能列出所有安装的软件,和 RH 网站上发布的升级软件对照,检查其中的变化。通过访问官方站点下载最
3、新系统补丁,RedHat 公司补丁地址如下:http:/ -qa 查看系统当前安装的 rpm 包rpm -ivh package1 安装 RPM 包rpm -Uvh package1 升级 RPM 包rpm -Fvh package1 升级 RPM 包(如果原先没有安装,则不安装)2、帐户、口令策略的加固21、删除或禁用系统无用的用户询问系统管理员,确认其需要使用的帐户如果下面的用户及其所在的组经过确认不需要,可以删除。lp, sync, shutdown, halt, news, uucp, operator, games, gopher 修改一些系统帐号的 shell 变量,例如 uucp
4、,ftp 和 news 等,还有一些仅仅需要 FTP 功能的帐号,检查并取消/bin/bash 或者/bin/sh 等 Shell 变量。可以在/etc/passwd 中将它们的 shell 变量设为/bin/false 或者/dev/null 等。也可以通过 passwd groupdel 来锁定用户、删除组。passwd -l user1 锁定 user1 用户passwd -u user1 解锁 user1 用户groupdel lp 删除 lp 组。LINUX 评估加固手册 第 4 页 共 14 页22、口令策略的设置RedHat Linux 总体口令策略的设定分两处进行,第一部分是在
5、/etc/login.defs 文件中定义,其中有四项相关内容:PASS_MAX_DAYS 密码最长时效(天)PASS_MIN_DAYS 密码最短时效(天)PASS_MIN_LEN 最短密码长度PASS_WARN_AGE 密码过期前 PASS_WARN_AGE 天警告用户编辑/etc/login.defs 文件,设定:PASS_MAX_DAYS=90PASS_MIN_DAYS=0PASS_MIN_LEN=8PASS_WARN_AGE=30另外可以在/etc/pam.d/system-auth 文件中的 cracklib 项中定义口令强度:difokminlendcreditucreditlcr
6、editocredit使用 vi 编辑/etc/pam.d/system-auth 文件,设置 cracklib 的属性#%PAM-1.0# This file is auto-generated.# User changes will be destroyed the next time authconfig is run.auth required /lib/security/pam_env.soauth sufficient /lib/security/pam_unix.so likeauth nullokauth required /lib/security/pam_deny.soac
7、count required /lib/security/pam_access.soaccount required /lib/security/pam_unix.sopassword required /lib/security/pam_cracklib.so retry=3 type= difok=4 minlen=12 dcredit=1 ucredit=2 lcredit=2 ocredit=1password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadowpassword required /lib
8、/security/pam_deny.soLINUX 评估加固手册 第 5 页 共 14 页session required /lib/security/pam_limits.sosession required /lib/security/pam_unix.so23、系统是否允许 root 远程登录RedHat 在文件/etc/securetty 中定义 root 用户可以登录的端口;默认其中只包含vc/1-11 和 tty1-11,即 root 用户只能从本地登录。24、root 的环境变量设置系统的环境变量在下列文件中设置:Bash:/etc/profile/.bash_profile/
9、.bash_login/.profile/.bashrc/etc/bashrcTcsh/Csh:/etc/csh.cshrc/etc/csh.login/.tcshrc 或/.cshrc/.history/.login/.cshdirsprintenv 查看用户的环境变量检查环境变量 PATH,确保其中不包含本地目录(.) 。3、网络与服务加固31、rc?.d 中的服务的设置LINUX 评估加固手册 第 6 页 共 14 页RedHat 的服务主要由/etc/inittab 和/etc/rc?.d/S*文件启动,事实上, /etc/inittab 的主要任务是为每一个 runlevel 指定启
10、动文件,从而启动 /etc/rc?.d/S*文件。例如,在默认的运行级别 3 中系统将运行/etc/rc3.d/目录中所有 S 打头的文件。runlevel 检查当前运行级别(第一项是 pre-runlevel,第二项是当前的 runlevel)chkconfig list 检查所有级别中启动的服务情况chkconfig list |grep 3:on 检查某一级别(例如级别 3)中启动的服务chkconfig sendmail off 将 sendmail 从启动目录中除去检查以下服务,如果不需要,关闭之在(/etc/inittab 中注释掉) ;否则,参照 3.3 3.4 3.5 3.6
11、进行配置:portmap(启动 rpcbind/portmap 服务)nfslock (启动 rpc.lockd 和 rpc.statd)httpd (启动 apache)named (启动 bind)sendmail (启动 sendmail)smb (启动 samba 服务)snmpd (启动 snmp 服务)snmptrapd (启动 snmp trap 服务)nfs (启动 nfs 服务)32、/etc/inetd.conf 中服务的设置由 INETD 启动的服务在文件/etc/inetd.conf 定义。建议关闭由 inetd 启动的所有服务;如果有管理上的需要,可以打开telnet
12、d、ftpd、rlogind、rshd 等服务。可从/etc/inetd.conf 中删除的服务(在 /etc/inetd.conf 中注释掉):shellkshellloginkloginexecLINUX 评估加固手册 第 7 页 共 14 页comsatuucpbootpsfingersystatnetstattftptalkntalkrpc.rquotadrpc.rexdrpc.rusersdrpc.ttdbserverrpc.spraydrpc.cmsdrpc.rwalldrpc.pcnfsdrpc.rstatdrpc.ssalldechodiscardchargendaytimet
13、imecomsatwebsminstsrvimap2pop3LINUX 评估加固手册 第 8 页 共 14 页kfclixmqueryRedHat Linux 7.3 以后使用了新版本的 xinetd 取代了老版本的 inetd,在配置方面最大的不同在于使用了/etc/xinetd.d/配置目录取代了/etc/inetd.conf 配置文件。每一项服务/etc/xinetd.d/ 中都有一个相应的配置文件,例如 telnetd 的配置文件是/etc/xinetd.d/telnet。查看每一个配置文件 disable 属性的定义(yes/no)就可以确定该服务是否启动(默认是 yes) 。使用
14、vi 编辑/etc/xinetd.d/ 中的配置文件,在不需要启动的服务配置文件中添加disable=yes。建议关闭所有服务,如果管理需要,则可以打开 telnetd 和 ftpd 服务。使用 vi 编辑/etc/xinetd.d/rlogin 文件,控制 rlogin 服务的启动状态# default: on# description: rlogind is the server for the rlogin(1) program. The server # provides a remote login facility with authentication based on # pr
15、ivileged port numbers from trusted hosts.service logindisable = yessocket_type = streamwait = nouser = rootlog_on_success += USERIDlog_on_failure += USERIDserver = /usr/sbin/in.rlogind33、NFS 的配置NFS 系统的组成情况:nfsd NFS 服务进程,运行在服务器端,处理客户的读写请求mountd 加载文件系统服务进程,运行在服务器端,处理客户加载 nfs 文件系统的请求/etc/exports 定义服务器对
16、外输出的 NFS 文件系统/etc/fstab 定义客户端加载的 NFS 文件系统如果系统不需要 NFS 服务,可以使用 chkconfig 关闭 NFS 服务;如果不能关闭,使用 showmount -e 或直接查看/etc/exports 文件检查输出的文件系统是否必要,LINUX 评估加固手册 第 9 页 共 14 页以及属性是否妥当(readonly 等) 。chkconfig -list nfs 显示 NFS 服务是否在系统启动时启动/etc/init.d/nfs start|stop 启动|停止 nfs 服务showmount -e 显示本机输出的 NFS 文件系统mount 显示
17、本机加载的文件系统(包括 NFS 文件系统)34、SNMP 的配置如果系统不需要 SNMP 服务,可以关闭该服务(使用 chkconfig 命令) ;如果不能关闭,需要在/etc/snmpd.conf 中指定不同的 community name。chkconfig -list snmpd 显示 snmpd 服务是否在系统启动时启动chkconfig snmpd off 将 snmpd 服务从启动目录中去掉/etc/init.d/snmpd start|stop 启动| 停止 snmpd 服务35、Sendmail 的配置如果系统不需要 Sendmail 服务,可以关闭该服务(使用 chkcon
18、fig 命令) ;如果不能关闭,将 sendmail 服务升级到最新,并在其配置文件/etc/sendmail.cf 中指定不同 banner(参见示例) 。chkconfig -list sendmail 显示 sendmail 服务是否在系统启动时启动chkconfig sendmail off 将 sendmail 服务从启动目录中去掉/etc/init.d/sendmail start|stop 启动|停止 sendmail 服务36、DNS(Bind)的配置如果系统不需要 DNS 服务,可以关闭该服务(使用 chkconfig 命令) ;如果不能关闭,将 DNS 服务升级到最新,并在
19、其配置文件修改版本号(参见示例) 。chkconfig -list named 显示 named 服务是否在系统启动时启动chkconfig named off 将 named 服务从启动目录中去掉/etc/init.d/named start|stop 启动| 停止 named 服务LINUX 评估加固手册 第 10 页 共 14 页37、网络连接访问控制的设置RedHat 7.3 以后版本中存在以下集中方式可以对网络连接设置访问控制:1、使用 iptable 或 ipchains 进行网络访问控制;参见 iptables 和 ipchains 的manual。2、使用 xinetd 本身的
20、访问控制机制对 xinetd 启动的服务进行网络访问控制;xinetd 可以在其配置文件中使用 only_from 和 no_access 指令限制可以访问该服务的主机,tcpd 的配置文件是/etc/hosts.allow 和/etc/hosts.deny;具体配置方法参见 manual。使用 xinetd 自带的访问控制机制控制对 telnet 服务的访问# default: on# description: The telnet server serves telnet sessions; it uses # unencrypted username/password pairs for
21、 authentication.service telnetdisable = noflags = REUSEsocket_type = streamwait = nouser = rootserver = /usr/sbin/in.telnetdlog_on_failure += USERID# allow access from host freebsd and network 172.16.0.0/24only_from = freebsd 172.16.0.0/24# also allow access from host 192.168.0.159only_from += 192.1
22、68.0.159# deny access from host freebsd if uncomment the following line# no_access = freebsd3、使用 pam 系统中的 pam_access 模块提供的访问控制机制;配置文件是/etc/security/access.conf,该文件中提供了该文件的语法。使用 pam_access 进行网络访问控制在 pam 文件中添加 pam_access 模块(以 system-auth 文件为例)#%PAM-1.0# This file is auto-generated.# User changes will
23、be destroyed the next time authconfig is run.auth required /lib/security/pam_env.soauth sufficient /lib/security/pam_unix.so likeauth nullokauth required /lib/security/pam_deny.soaccount required /lib/security/pam_access.soaccount required /lib/security/pam_unix.sopassword required /lib/security/pam_cracklib.so retry=3 type= difok=4 mi