1、 密 级:商业秘密LINUX评估加固手册安氏领信科技发展有限公司二二四年五月目 录1、系统补丁的安装32、帐户、口令策略的加固321、删除或禁用系统无用的用户322、口令策略的设置423、系统是否允许root远程登录424、root的环境变量设置53、网络与服务加固531、rc?.d中的服务的设置532、/etc/inetd.conf中服务的设置633、NFS的配置834、SNMP的配置835、Sendmail的配置936、DNS(Bind)的配置937、网络连接访问控制的设置94、信任主机的设置105、日志审核的设置116、物理安全加固117、系统内核参数的配置128、选装安全工具131、系
2、统补丁的安装RedHat使用RPM包实现系统安装的管理,系统没有单独补丁包(Patch)。如果出现新的漏洞,则发布一个新的RPM包,版本号(Version)不变,Release做相应的调整。因此检查RH Linux的补丁安装情况只能列出所有安装的软件,和RH网站上发布的升级软件对照,检查其中的变化。通过访问官方站点下载最新系统补丁,RedHat公司补丁地址如下:rpm -qa 查看系统当前安装的rpm包rpm -ivh package1 安装RPM包rpm -Uvh package1 升级RPM包rpm -Fvh package1 升级RPM包(如果原先没有安装,则不安装)2、帐户、口令策略的
3、加固21、删除或禁用系统无用的用户询问系统管理员,确认其需要使用的帐户如果下面的用户及其所在的组经过确认不需要,可以删除。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 us
4、er1锁定user1用户passwd -u user1 解锁user1用户groupdel lp 删除lp组。22、口令策略的设置RedHat Linux总体口令策略的设定分两处进行,第一部分是在/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=8P
5、ASS_WARN_AGE=30另外可以在/etc/pam.d/system-auth文件中的cracklib项中定义口令强度:difokminlendcreditucreditlcreditocredit使用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 suffici
6、ent /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 minlen=12 dcredit=1 ucredit=2 lcredit=2 ocredit=1password su
7、fficient /lib/security/pam_unix.so nullok use_authtok md5 shadowpassword required /lib/security/pam_deny.sosession 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的环境变量
8、设置系统的环境变量在下列文件中设置:Bash:/etc/profile/.bash_profile/.bash_login/.profile/.bashrc/etc/bashrcTcsh/Csh:/etc/csh.cshrc/etc/csh.login/.tcshrc或/.cshrc/.history/.login/.cshdirsprintenv 查看用户的环境变量检查环境变量PATH,确保其中不包含本地目录(.)。3、网络与服务加固31、rc?.d中的服务的设置RedHat的服务主要由/etc/inittab和/etc/rc?.d/S*文件启动,事实上,/etc/inittab的主要任务是
9、为每一个runlevel指定启动文件,从而启动/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.
10、6进行配置: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启动的所有服务;如果有管理上的需要,可以打开telnetd、ftpd、rlogind、rshd等服
11、务。可从/etc/inetd.conf中删除的服务(在/etc/inetd.conf中注释掉):shellkshellloginkloginexeccomsatuucpbootpsfingersystatnetstattftptalkntalkrpc.rquotadrpc.rexdrpc.rusersdrpc.ttdbserverrpc.spraydrpc.cmsdrpc.rwalldrpc.pcnfsdrpc.rstatdrpc.ssalldechodiscardchargendaytimetimecomsatwebsminstsrvimap2pop3kfclixmqueryRedHat L
12、inux 7.3以后使用了新版本的xinetd取代了老版本的inetd,在配置方面最大的不同在于使用了/etc/xinetd.d/配置目录取代了/etc/inetd.conf配置文件。每一项服务/etc/xinetd.d/中都有一个相应的配置文件,例如telnetd的配置文件是/etc/xinetd.d/telnet。查看每一个配置文件disable属性的定义(yes/no)就可以确定该服务是否启动(默认是yes)。使用vi编辑/etc/xinetd.d/中的配置文件,在不需要启动的服务配置文件中添加disable=yes。建议关闭所有服务,如果管理需要,则可以打开telnetd和ftpd服务
13、。使用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 # privileged port numbers from trusted hosts.service login disable = yes socket_type = stream wait = no
14、 user = root log_on_success += USERID log_on_failure += USERID server = /usr/sbin/in.rlogind33、NFS的配置NFS系统的组成情况:nfsd NFS服务进程,运行在服务器端,处理客户的读写请求mountd 加载文件系统服务进程,运行在服务器端,处理客户加载nfs文件系统的请求/etc/exports 定义服务器对外输出的NFS文件系统/etc/fstab 定义客户端加载的NFS文件系统如果系统不需要NFS服务,可以使用chkconfig关闭NFS服务;如果不能关闭,使用showmount -e或直接查看
15、/etc/exports文件检查输出的文件系统是否必要,以及属性是否妥当(readonly等)。chkconfig -list nfs 显示NFS服务是否在系统启动时启动/etc/init.d/nfs start|stop 启动|停止nfs服务showmount -e 显示本机输出的NFS文件系统mount 显示本机加载的文件系统(包括NFS文件系统)34、SNMP的配置如果系统不需要SNMP服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,需要在/etc/snmpd.conf中指定不同的community name。chkconfig -list snmpd显示snmpd服务
16、是否在系统启动时启动chkconfig snmpd off 将snmpd服务从启动目录中去掉/etc/init.d/snmpd start|stop 启动|停止snmpd服务35、Sendmail的配置如果系统不需要Sendmail服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,将sendmail服务升级到最新,并在其配置文件/etc/sendmail.cf中指定不同banner(参见示例)。chkconfig -list sendmail显示sendmail服务是否在系统启动时启动chkconfig sendmail off 将sendmail服务从启动目录中去掉/etc/
17、init.d/sendmail start|stop 启动|停止sendmail服务36、DNS(Bind)的配置如果系统不需要DNS服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,将DNS服务升级到最新,并在其配置文件修改版本号(参见示例)。chkconfig -list named显示named服务是否在系统启动时启动chkconfig named off 将named服务从启动目录中去掉/etc/init.d/named start|stop 启动|停止named服务37、网络连接访问控制的设置RedHat 7.3以后版本中存在以下集中方式可以对网络连接设置访问控制:1
18、、 使用iptable或ipchains进行网络访问控制;参见iptables和ipchains的manual。2、 使用xinetd本身的访问控制机制对xinetd启动的服务进行网络访问控制;xinetd可以在其配置文件中使用only_from和no_access指令限制可以访问该服务的主机,tcpd的配置文件是/etc/hosts.allow和/etc/hosts.deny;具体配置方法参见manual。使用xinetd自带的访问控制机制控制对telnet服务的访问# default: on# description: The telnet server serves telnet ses
19、sions; it uses # unencrypted username/password pairs for authentication.service telnet disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID# allow access from host freebsd and network 172.16.0.0/24 only_from = freebsd 172.16.0.0
20、/24# also allow access from host 192.168.0.159 only_from += 192.168.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
21、-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.soaccount required /lib/security/pam_access.soaccount required /lib/s
22、ecurity/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/security/pam_deny.sosession required /lib/security/pam_limits.so
23、session required /lib/security/pam_unix.so4、信任主机的设置参照3.2(/etc/inetd.conf中服务的启动情况)检查rlogin、rsh、rexec服务是否启动。如果启动,查看配置文件/etc/hosts.equiv(全局配置文件)和/.rhosts(单独用户的配置文件)文件,检查文件是否配置妥当。建议关闭R系列服务(rlogin、rsh、rexec);如果不能关闭,则需要检查配置文件,确保没有失当的配置(不能存在”+”或”+ +”,如果存在,咨询系统管理员是为何这样配置)。5、日志审核的设置对ssh、su登录日志进行记录编辑syslogd配置
24、文件# vi /etc/syslog.conf 加入以下信息,使和登陆验证有关的日志信息记录到secure文件中# The authpriv file has restricted access.authpriv.* /var/log/secure重新启动syslogd:# /etc/rc.d/init.d/syslog restart 6、物理安全加固启动LILO时需要密码第一步:编辑lilo.conf文件(vi /etc/lilo.conf),加入或改变这三个参数(加#的部分): boot=/dev/hdaprompttimeout=00 # 把该行改为00,系统启动时将不再等待,而直接启
25、动LINUXmessage=/boot/messagelinear default=linux restricted # 加入该行 password= is-0ne # 加入该行并设置自己的密码(明文) image=/boot/vmlinuz-2.4.18 label=linux root=/dev/hda6 read-only 第二步:因为“/etc/lilo.conf”文件中包含明文密码,所以要把它设置为root权限读取。 # chmod 0600 /etc/lilo.conf 第三步:更新系统,以便对“/etc/lilo.conf”文件做的修改起作用。 # /sbin/lilo -v 第
26、四步:使用“chattr”命令使“/etc/lilo.conf”文件不可改变。 # chattr +i /etc/lilo.conf 这样可以在一定程度上防止对“/etc/lilo.conf”任何改变(意外或其他原因)最后将/etc/lilo.conf文件权限改为600# chmod 600 /etc/lilo.confpassword用于系统启动时应当输入密码;restricted用于命令行启动系统时(如:进入单用户模式)需要输入密码。7、系统内核参数的配置RedHat Linux使用sysctl命令控制内核参数,并可以在/etc/sysctl.conf中设置启动的内核参数。比较重要的网络安
27、全参数有:net.ipv4.conf.default.accept_source_route=0 不接收源路由ip包net.ipv4.conf.default.send_redirects=0 不发送重定向ip包net.ipv4.conf.default.accept_redirects=0 不接收重定向ip包net.ipv4.icmp_echo_ignore_broadcasts=1 忽略icmp广播包net.ipv4.ip_forward=0 禁止ip转发sysctl -a 查看所有的内核参数sysctl -w net.ipv4.ip_forward=0 禁止ip转发使用vi编辑/etc/
28、sysctl.conf文件,添加网络安全参数# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) for# more details.# Controls IP packet forwardingnet.ipv4.ip_forward = 0# Controls source route verificationnet.ipv4.conf.default.rp_filter = 1# Controls the System Request debugging functionality of the kernelkern
29、el.sysrq = 0# Controls whether core dumps will append the PID to the core filename.# Useful for debugging multi-threaded applications.kernel.core_uses_pid = 1# Add the networking security parameters #net.ipv4.conf.default.send_redirects=0net.ipv4.conf.default.accept_source_route=0net.ipv4.conf.defau
30、lt.accept_redirects=0net.ipv4.icmp_echo_ignore_broadcasts=1net.ipv4.ip_forward=08、选装安全工具工具名称TCP Wrapper工具用途该软件为大多数网络服务提供访问控制与日志记录的功能。相关信息ftp:/ftp.porcupine.org/pub/security/工具名称Tripwire工具用途该工具为关键文件创建检验值数据库,当这些关键文件发生变化时,给root以提示信息。相关信息ftp:/coast.cs.purdue.edu/pub/tools/unix/ids/tripwire/工具名称lsof工具用途该
31、工具报告进程打开的文件、进程侦听的端口等信息。相关信息ftp:/coast.cs.purdue.edu/pub/tools/unix/sysutils/lsof/工具名称SSH工具用途该工具为主机间远程通讯提供加密通道。用来代替rsh、rlogin、telnet等远程登录工具。相关信息其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。二培训的及要求培训目的安全生产目标责任书为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下
32、安全生产目标:一、目标值:1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。2、现金安全保管,不发生盗窃事故。3、每月足额提取安全生产费用,保障安全生产投入资金的到位。4、安全培训合格率为100%。二、本单位安全工作上必须做到以下内容: 1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。 2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。 3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期
33、、质量”发生矛盾时,坚持安全第一的原则。 4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。 5、在公司及政府的安全检查中杜绝各类违章现象。 6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。 7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。 8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。 10、必须按规定对单位员工进行培训和新员工上岗教育;11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。 三、 安全奖惩: 1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。 2、每月接受主管领导指派人员对安全生产责任状的落LINUX评估加固手册 第 15 页 共 15页