服务Linux系统安全加固手册.docx
《服务Linux系统安全加固手册.docx》由会员分享,可在线阅读,更多相关《服务Linux系统安全加固手册.docx(14页珍藏版)》请在冰点文库上搜索。
服务Linux系统安全加固手册
【关键字】服务
密级:
商业秘密
LINUX评估加固手册
安氏领信科技发展有限公司
二〇二一年二月
1、系统补丁的安装
RedHat使用RPM包实现系统安装的管理,系统没有单独补丁包(Patch)。
如果出现新的漏洞,则发布一个新的RPM包,版本号(Version)不变,Release做相应的调整。
因此检查RHLinux的补丁安装情况只能列出所有安装的软件,和RH网站上发布的升级软件对照,检查其中的变化。
通过访问官方站点下载最新系统补丁,RedHat公司补丁地址如下:
rpm-qa查看系统当前安装的rpm包
rpm-ivhpackage1安装RPM包
rpm-Uvhpackage级RPM包
rpm-Fvhpackage级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等。
也可以通过passwdgroupdel来锁定用户、删除组。
passwd-luser1锁定user1用户
passwd-uuser1解锁user1用户
groupdellp删除lp组。
2.2、口令策略的设置
RedHatLinux总体口令策略的设定分两处进行,第一部分是在/etc/login.defs文件中定义,其中有四项相关内容:
PASS_MAX_DAYS密码最长时效(天)
PASS_MIN_DAYS密码最短时效(天)
PASS_MIN_LEN最短密码长度
PASS_WARN_AGE密码过期前PASS_WARN_AGE天警告用户
编辑/etc/login.defs文件,设定:
PASS_MAX_DAYS=90
PASS_MIN_DAYS=0
PASS_MIN_LEN=8
PASS_WARN_AGE=30
另外可以在/etc/pam.d/system-auth文件中的cracklib项中定义口令强度:
difok
minlen
dcredit
ucredit
lcredit
ocredit
使用vi编辑/etc/pam.d/system-auth文件,设置cracklib的属性
#%PAM-1.0
#Thisfileisauto-generated.
#Userchangeswillbedestroyedthenexttimeauthconfigisrun.
authrequired/lib/security/pam_env.so
authsufficient/lib/security/pam_unix.solikeauthnullok
authrequired/lib/security/pam_deny.so
accountrequired/lib/security/pam_access.so
accountrequired/lib/security/pam_unix.so
passwordrequired/lib/security/pam_cracklib.soretry=3type=difok=4minlen=12dcredit=1ucredit=2lcredit=2ocredit=1
passwordsufficient/lib/security/pam_unix.sonullokuse_authtokmd5shado
w
passwordrequired/lib/security/pam_deny.so
sessionrequired/lib/security/pam_limits.so
sessionrequired/lib/security/pam_unix.so
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/bashrc
Tcsh/Csh:
/etc/csh.cshrc
/etc/csh.login
~/.tcshrc或~/.cshrc
~/.history
~/.login
~/.cshdirs
printenv查看用户的环境变量
检查环境变量PATH,确保其中不包含本地目录(.)。
3、网络与服务加固
3.1、rc?
.d中的服务的设置
RedHat的服务主要由/etc/inittab和/etc/rc?
.d/S*文件启动,事实上,/etc/inittab的主要任务是为每一个runlevel指定启动文件,从而启动/etc/rc?
.d/S*文件。
例如,在默认的运行级别3中系统将运行/etc/rc3.d/目录中所有S打头的文件。
runlevel检查当前运行级别(第一项是pre-runlevel,第二项是当前的runlevel)
chkconfig–list检查所有级别中启动的服务情况
chkconfig–list|grep3:
on检查某一级别(例如级别3)中启动的服务
chkconfigsendmailoff将sendmail从启动目录中除去
检查以下服务,如果不需要,关闭之在(/etc/inittab中注释掉);否则,参照3.33.43.53.6进行配置:
portmap(启动rpcbind/portmap服务)
nfslock(启动rpc.lockd和rpc.statd)
httpd(启动apache)
named(启动bind)
sendmail(启动sendmail)
smb(启动samba服务)
snmpd(启动snmp服务)
snmptrapd(启动snmptrap服务)
nfs(启动nfs服务)
3.2、/etc/inetd.conf中服务的设置
由INETD启动的服务在文件/etc/inetd.conf定义。
建议关闭由inetd启动的所有服务;如果有管理上的需要,可以打开telnetd、ftpd、rlogind、rshd等服务。
可从/etc/inetd.conf中删除的服务(在/etc/inetd.conf中注释掉):
shell
kshell
login
klogin
exec
comsat
uucp
bootps
finger
systat
netstat
tftp
talk
ntalk
rpc.rquotad
rpc.rexd
rpc.rusersd
rpc.ttdbserver
rpc.sprayd
rpc.cmsd
rpc.rwalld
rpc.pcnfsd
rpc.rstatd
rpc.ssalld
echo
discard
chargen
daytime
time
comsat
websm
instsrv
imap2
pop3
kfcli
xmquery
RedHatLinux7.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服务。
使用vi编辑/etc/xinetd.d/rlogin文件,控制rlogin服务的启动状态
#default:
on
#description:
rlogindistheserverfortherlogin
(1)program.Theserver\
#providesaremoteloginfacilitywithauthenticationbasedon\
#privilegedportnumbersfromtrustedhosts.
servicelogin
{
disable=yes
socket_type=stream
wait=no
user=root
log_on_success+=USERID
log_on_failure+=USERID
server=/usr/sbin/in.rlogind
3.3、NFS的配置
NFS系统的组成情况:
nfsdNFS服务进程,运行在服务器端,处理客户的读写请求
mountd加载文件系统服务进程,运行在服务器端,处理客户加载nfs文件系统的请求
/etc/exports定义服务器对外输出的NFS文件系统
/etc/fstab定义客户端加载的NFS文件系统
如果系统不需要NFS服务,可以使用chkconfig关闭NFS服务;如果不能关闭,使用showmount-e或直接查看/etc/exports文件检查输出的文件系统是否必要,以及属性是否妥当(readonly等)。
chkconfig--listnfs显示NFS服务是否在系统启动时启动
/etc/init.d/nfsstart|stop启动|停止nfs服务
showmount-e显示本机输出的NFS文件系统
mount显示本机加载的文件系统(包括NFS文件系统)
3.4、SNMP的配置
如果系统不需要SNMP服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,需要在/etc/snmpd.conf中指定不同的communityname。
chkconfig--listsnmpd显示snmpd服务是否在系统启动时启动
chkconfigsnmpdoff将snmpd服务从启动目录中去掉
/etc/init.d/snmpdstart|stop启动|停止snmpd服务
3.5、Sendmail的配置
如果系统不需要Sendmail服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,将sendmail服务升级到最新,并在其配置文件/etc/sendmail.cf中指定不同banner(参见示例)。
chkconfig--listsendmail显示sendmail服务是否在系统启动时启动
chkconfigsendmailoff将sendmail服务从启动目录中去掉
/etc/init.d/sendmailstart|stop启动|停止sendmail服务
3.6、DNS(Bind)的配置
如果系统不需要DNS服务,可以关闭该服务(使用chkconfig命令);如果不能关闭,将DNS服务升级到最新,并在其配置文件修改版本号(参见示例)。
chkconfig--listnamed显示named服务是否在系统启动时启动
chkconfignamedoff将named服务从启动目录中去掉
/etc/init.d/namedstart|stop启动|停止named服务
3.7、网络连接访问控制的设置
RedHat7.3以后版本中存在以下集中方式可以对网络连接设置访问控制:
1、使用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:
Thetelnetserverservestelnetsessions;ituses\
#unencryptedusername/passwordpairsforauthentication.
servicetelnet
{
disable=no
flags=REUSE
socket_type=stream
wait=no
user=root
server=/usr/sbin/in.telnetd
log_on_failure+=USERID
#allowaccessfromhostfreebsdandnetwork
only_from=freebsd
#alsoallowaccessfromhost
only_from+=
#denyaccessfromhostfreebsdifuncommentthefollowingline
#no_access=freebsd
}
3、使用pam系统中的pam_access模块提供的访问控制机制;配置文件是/etc/security/access.conf,该文件中提供了该文件的语法。
使用pam_access进行网络访问控制
在pam文件中添加pam_access模块(以system-auth文件为例)
#%PAM-1.0
#Thisfileisauto-generated.
#Userchangeswillbedestroyedthenexttimeauthconfigisrun.
authrequired/lib/security/pam_env.so
authsufficient/lib/security/pam_unix.solikeauthnullok
authrequired/lib/security/pam_deny.so
accountrequired/lib/security/pam_access.so
accountrequired/lib/security/pam_unix.so
passwordrequired/lib/security/pam_cracklib.soretry=3type=difok=4mi
nlen=12dcredit=1ucredit=2lcredit=2ocredit=1
passwordsufficient/lib/security/pam_unix.sonullokuse_authtokmd5shado
w
passwordrequired/lib/security/pam_deny.so
sessionrequired/lib/security/pam_limits.so
sessionrequired/lib/security/pam_unix.so
4、信任主机的设置
参照3.2(/etc/inetd.conf中服务的启动情况)检查rlogin、rsh、rexec服务是否启动。
如果启动,查看配置文件/etc/hosts.equiv(全局配置文件)和~/.rhosts(单独用户的配置文件)文件,检查文件是否配置妥当。
建议关闭R系列服务(rlogin、rsh、rexec);如果不能关闭,则需要检查配置文件,确保没有失当的配置(不能存在”+”或”++”,如果存在,咨询系统管理员是为何这样配置)。
5、日志审核的设置
对ssh、su登录日志进行记录
编辑syslogd配置文件
#vi/etc/syslog.conf
加入以下信息,使和登陆验证有关的日志信息记录到secure文件中
#Theauthprivfilehasrestrictedaccess.
authpriv.*/var/log/secure
重新启动syslogd:
#/etc/rc.d/init.d/syslogrestart
6、物理安全加固
启动LILO时需要密码
第一步:
编辑lilo.conf文件(vi/etc/lilo.conf),加入或改变这三个参数(加#的部分):
boot=/dev/hda
prompt
timeout=00#把该行改为00,系统启动时将不再等待,而直接启动LINUX
message=/boot/message
linear
default=linux
restricted#加入该行
password=is-0ne#加入该行并设置自己的密码(明文)
image=/boot/vmlinuz-
label=linux
root=/dev/hda6
read-only
第二步:
因为“/etc/lilo.conf”文件中包含明文密码,所以要把它设置为root权限读取。
#chmod0600/etc/lilo.conf
第三步:
更新系统,以便对“/etc/lilo.conf”文件做的修改起作用。
#/sbin/lilo-v
第四步:
使用“chattr”命令使“/etc/lilo.conf”文件不可改变。
#chattr+i/etc/lilo.conf
这样可以在一定程度上防止对“/etc/lilo.conf”任何改变(意外或其他原因)
最后将/etc/lilo.conf文件权限改为600
#chmod600/etc/lilo.conf
password用于系统启动时应当输入密码;
restricted用于命令行启动系统时(如:
进入单用户模式)需要输入密码。
7、系统内核参数的配置
RedHatLinux使用sysctl命令控制内核参数,并可以在/etc/sysctl.conf中设置启动的内核参数。
比较重要的网络安全参数有:
不接收源路由ip包
不发送重定向ip包
不接收重定向ip包
忽略icmp广播包
禁止ip转发
sysctl-a查看所有的内核参数
sysctl-w禁止ip转发
使用vi编辑/etc/sysctl.conf文件,添加网络安全参数
#Forbinaryvalues,0isdisabled,1isenabled.Seesysctl(8)for
#moredetails.
#ControlsIPpacketforwarding
=0
#Controlssourcerouteverification
=1
#ControlstheSystemRequestdebuggingfunctionalityofthekernel
kernel.sysrq=0
#ControlswhethercoredumpswillappendthePIDtothecorefilename.
#Usefulfordebuggingmulti-threadedapplications.
kernel.core_uses_pid=1
####Addthenetworkingsecurityparameters####
8、选装安全工具
工具名称
TCPWrapper
工具用途
该软件为大多数网络服务提供访问控制与日志记录的功能。
相关信息
/security/
工具名称
Tripwire
工具用途
该工具为关键文件创建检验值数据库,当这些关键文件发生变化时,给root以提示信息。
相关信息
.edu/pub/tools/unix/ids/tripwire/
工具名称
lsof
工具用途
该工具报告进程打开的文件、进程侦听的端口等信息。
相关信息
.edu/pub/tools/unix/sysutils/lsof/
工具名称
SSH
工具用途
该工具为主机间远程通讯提供加密通道。
用来代替rsh、rlogin、telnet等远程登录工具。
相关信息
此文档是由网络收集并进行重新排版整理.word可编辑版本!