密级:商业秘密LINUX评估加固手册安氏领信科技发展有限公司二〇二〇年八月目录1、系统补丁的安装RedHat使用RPM包实现系统安装的管理,系统没有单独补丁包(Patch)。
如果出现新的漏洞,则发布一个新的RPM包,版本号(Version)不变,Release做相应的调整。
因此检查RH Linux的补丁安装情况只能列出所有安装的软件,和RH网站上发布的升级软件对照,检查其中的变化。
通过访问官方站点下载最新系统补丁,RedHat公司补丁地址如下:-qa 查看系统当前安装的rpm包rpm -ivh package1安装RPM包rpm -Uvh package1升级RPM包rpm -Fvh package1升级RPM包(如果原先没有安装,则不安装)2、帐户、口令策略的加固2.1、删除或禁用系统无用的用户询问系统管理员,确认其需要使用的帐户如果下面的用户及其所在的组经过确认不需要,可以删除。
lp, sync, shutdown, halt, news, uucp, operator, games, gopher 修改一些系统帐号的shell变量,例如uucp,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组。
2.2、口令策略的设置RedHat Linux总体口令策略的设定分两处进行,第一部分是在/etc/文件中定义,其中有四项相关内容:PASS_MAX_DAYS 密码最长时效(天)PASS_MIN_DAYS 密码最短时效(天)PASS_MIN_LEN 最短密码长度PASS_WARN_AGE 密码过期前PASS_WARN_AGE天警告用户编辑/etc/文件,设定:PASS_MAX_DAYS=90PASS_MIN_DAYS=0PASS_MIN_LEN=8PASS_WARN_AGE=30另外可以在/etc/system-auth文件中的cracklib项中定义口令强度:difokminlendcreditucreditlcreditocredit使用vi编辑/etc/system-auth文件,设置cracklib的属性#%# This file is auto-generated.# User changes will be destroyed the next time authconfig is run.auth required /lib/security/auth sufficient /lib/security/ likeauth nullokauth required /lib/security/account required /lib/security/account required /lib/security/password required /lib/security/ retry=3 type= difok=4 minlen=12 dcredit=1 ucredit=2 lcredit=2 ocredit=1password sufficient /lib/security/ nullok use_authtok md5 shadowpassword required /lib/security/session required /lib/security/session required /lib/security/2.3、系统是否允许root远程登录RedHat在文件/etc/securetty中定义root用户可以登录的端口;默认其中只包含vc/1-11和tty1-11,即root用户只能从本地登录。
2.4、root的环境变量设置系统的环境变量在下列文件中设置:Bash:/etc/profile~/.bash_profile~/.bash_login~/.profile~/.bashrc/etc/bashrcTcsh/Csh:/etc//etc/~/.tcshrc或~/.cshrc~/.history~/.login~/.cshdirsprintenv 查看用户的环境变量检查环境变量PATH,确保其中不包含本地目录(.)。
3、网络与服务加固3.1、rc.d中的服务的设置RedHat的服务主要由/etc/inittab和/etc/rc.d/S*文件启动,事实上,/etc/inittab的主要任务是为每一个runlevel指定启动文件,从而启动/etc/rc.d/S*文件。
例如,在默认的运行级别3中系统将运行/etc/目录中所有S打头的文件。
runlevel 检查当前运行级别(第一项是pre-runlevel,第二项是当前的runlevel)chkconfig –list 检查所有级别中启动的服务情况chkconfig –list |grep 3:on 检查某一级别(例如级别3)中启动的服务chkconfig sendmail off 将sendmail从启动目录中除去检查以下服务,如果不需要,关闭之在(/etc/inittab中注释掉);否则,参照进行配置:portmap(启动rpcbind/portmap服务)nfslock (启动和)httpd (启动apache)named (启动bind)sendmail (启动sendmail)smb (启动samba服务)snmpd (启动snmp服务)snmptrapd (启动snmp trap服务)nfs (启动nfs服务)3.2、/etc/中服务的设置由INETD启动的服务在文件/etc/定义。
建议关闭由inetd启动的所有服务;如果有管理上的需要,可以打开telnetd、ftpd、rlogind、rshd等服务。
可从/etc/中删除的服务(在/etc/中注释掉):shellkshellloginkloginexeccomsatuucpbootpsfingersystatnetstattftptalkntalkechodiscardchargendaytimetimecomsatwebsminstsrvimap2pop3kfclixmqueryRedHat Linux 以后使用了新版本的xinetd取代了老版本的inetd,在配置方面最大的不同在于使用了/etc/配置目录取代了/etc/配置文件。
每一项服务/etc/中都有一个相应的配置文件,例如telnetd的配置文件是/etc/telnet。
查看每一个配置文件disable属性的定义(yes/no)就可以确定该服务是否启动(默认是yes)。
使用vi编辑/etc/中的配置文件,在不需要启动的服务配置文件中添加disable=yes。
建议关闭所有服务,如果管理需要,则可以打开telnetd和ftpd 服务。
使用vi编辑/etc/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 \# privileged port numbers from trusted hosts.service login{disable = yessocket_type = streamwait = nouser = rootlog_on_success += USERIDlog_on_failure += USERIDserver = /usr/sbin/3.3、NFS的配置NFS系统的组成情况:nfsd NFS服务进程,运行在服务器端,处理客户的读写请求mountd 加载文件系统服务进程,运行在服务器端,处理客户加载nfs文件系统的请求/etc/exports 定义服务器对外输出的NFS文件系统/etc/fstab 定义客户端加载的NFS文件系统如果系统不需要NFS服务,可以使用chkconfig关闭NFS服务;如果不能关闭,使用showmount -e或直接查看/etc/exports文件检查输出的文件系统是否必要,以及属性是否妥当(readonly等)。
chkconfig --list nfs 显示NFS服务是否在系统启动时启动/etc/nfs start|stop 启动|停止nfs服务showmount -e 显示本机输出的NFS文件系统mount 显示本机加载的文件系统(包括NFS文件系统)3.4、SNMP的配置如果系统不需要SNMP服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,需要在/etc/中指定不同的community name。
chkconfig --list snmpd显示snmpd服务是否在系统启动时启动chkconfig snmpd off 将snmpd服务从启动目录中去掉/etc/snmpd start|stop 启动|停止snmpd服务3.5、Sendmail的配置如果系统不需要Sendmail服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,将sendmail服务升级到最新,并在其配置文件/etc/中指定不同banner(参见示例)。
chkconfig --list sendmail显示sendmail服务是否在系统启动时启动chkconfig sendmail off 将sendmail服务从启动目录中去掉/etc/sendmail start|stop 启动|停止sendmail服务3.6、DNS(Bind)的配置如果系统不需要DNS服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,将DNS服务升级到最新,并在其配置文件修改版本号(参见示例)。
chkconfig --list named显示named服务是否在系统启动时启动chkconfig named off 将named服务从启动目录中去掉/etc/named start|stop 启动|停止named服务3.7、网络连接访问控制的设置RedHat 以后版本中存在以下集中方式可以对网络连接设置访问控制:1、使用iptable或ipchains进行网络访问控制;参见iptables和ipchains的manual。