LINUX安全配置手册.docx
《LINUX安全配置手册.docx》由会员分享,可在线阅读,更多相关《LINUX安全配置手册.docx(34页珍藏版)》请在冰点文库上搜索。
LINUX安全配置手册
LINUX安全配置手册
综述
本文档以典型安装的RedHatLinux为对象撰写而成,其他版本均差不多类似,按照具体情形进行适当修改即可。
文档中的操作需要以root用户登录至操纵台进行,不举荐使用网络远程的方式进行补丁及配置修改等加固操作。
部分操作需要重新启动服务器才会生效,注意某些数据库等应用需要先停止应用,然后才能够重新启动。
加固之前第一应对系统中的重要文件及可能修改的文件进行备份,可参照使用以下脚本:
forfilein/etc/inetd.conf/etc/hosts.equiv\
/etc/ftpusers/etc/passwd/etc/shadow/etc/hosts.allow\
/etc/hosts.deny/etc/proftpd.conf\
/etc/rc.d/init.d/functions/etc/inittab\
/etc/sysconfig/sendmail/etc/security/limits.conf\
/etc/exports/etc/sysctl.conf/etc/syslog.conf\
/etc/fstab/etc/security.console.perms/root/.rhosts\
/root/.shosts/etc/shosts.equiv/etc/X11/xdm/Xservers\
/etc/X11/xinit/xserverrc/etc/X11/gdm/gdm.conf\
/etc/cron.allow/etc/cron.deny/etc/at.allow\
/etc/at.deny/etc/crontab/etc/motd/etc/issue\
/usr/share/config/kdm/kdmrc/etc/X11/gdm/gdm.conf\
/etc/securetty/etc/security/access.conf/etc/lilo.conf\
/etc/grub.conf/etc/login.defs/etc/group/etc/profile\
/etc/csh.login/etc/csh.cshrc/etc/bashrc\
/etc/ssh/sshd_config/etc/ssh/ssh_config\
/etc/cups/cupsd.conf/etc/{,vsftpd/}vsftpd.conf\
/etc/logrotate.conf/root/.bashrc/root/.bash_profile\
/root/.cshrc/root/.tcshrc/etc/vsftpd.ftpusers;do
[-f$file]&&/bin/cp$file$file-preCIS
done
fordirin/etc/xinetd.d/etc/rc[0123456].d\
/var/spool/cron/etc/cron.*/etc/logrotate.d/var/log\
/etc/pam.d/etc/skel;do
[-d$dir]&&/bin/cp-r$dir$dir-preCIS
done
补丁
系统补丁
系统内核版本使用uname-a查看。
软件版本和补丁使用rpm-qa查看。
其他应用补丁
除RedHat官方提供的系统补丁之外,系统也应对按照开放的服务和应用进行补丁,如APACHE、PHP、OPENSSL、MYSQL等应用进行补丁。
具体升级方法:
第一确认机器上安装了gcc及必要的库文件。
然后去应用的官方网站下载对应的源代码包,如*.tar.gz
再解压
tarzxfv*.tar.gz
再按照使用情形对编译配置进行修改,或直截了当采纳默认配置
cd*
./configure
再进行编译和安装
make
makeinstall
最小化xinetd网络服务
停止默认服务
讲明:
Xinetd是旧的inetd服务的替代,他提供了一些网络有关服务的启动调用方式。
Xinetd应禁止以下默认服务的开放:
操作:
停止一个服务
chkconfig服务名off
打开一个服务
chkconfig服务名on
也能够使用ntsysv命令进行服务开关调整
其他
讲明:
关于xinet必须开放的服务,应该注意服务软件的升级和安全配置,并举荐使用SSH和SSL对原明文的服务进行替换。
如果条件承诺,能够使用系统自带的iptables或tcp-wrapper功能对访咨询IP地址进行限制。
操作:
Xinetd、SSH和SSL、防火墙配置参见对应系统的用户手册,此不详述。
最小化启动服务
设置daemon权限unmask
讲明:
默认系统umask至少为022,以防止daemon被其他低权限用户修改。
操作:
vi修改/etc/rc.d/init.d文件,umask值为022。
同时检查/etc/rc.d/init.d中其他启动脚本权限是否为755。
关闭xinetd服务
讲明:
如果前面第二章关闭xinetd服务中所列的服务,都不需要开放,则能够直截了当关闭xinetd服务。
操作:
chkconfig--level12345xinetdoff
关闭邮件服务
讲明:
如果系统不需要作为邮件服务器,并不需要向别处发邮件,能够直截了当关闭邮件服务。
如果不需要作为邮件服务器,然而承诺用户发送邮件,能够设置Sendmail不运行在daemon模式。
操作:
chkconfig--level12345sendmailoff
编辑/etc/sysconfig/senmail文件
增加以下行
DAEMON=no
QUEUE=1h
设置
cd/etc/sysconfig
/bin/chownroot:
rootsendmail
/bin/chmod644sendmail
关闭图形登录服务
讲明:
一样来讲,大部分软件的安装和运行都不需要图形环境。
如果不需要图形环境进行登录和操作,能够关闭XWindows的运行。
操作:
cp/etc/inittab/etc/inittab.bak
编辑/etc/inittab文件
修改id:
5:
initdefault:
行为id:
3:
initdefault:
chownroot:
root/etc/inittab
chmod0600/etc/inittab
如需要XWindows的时候,可运行startx命令启动图形界面。
关闭X字体服务器
讲明:
如果关闭了XWindows服务,则Xfont服务器服务也应该进行关闭。
操作:
chkconfigxfsoff
关闭其他默认启动服务
讲明:
系统启动时会启动专门多不必要的服务,这些不必要的服务均存在一定的安全隐患。
一样可能存在以下不必要的服务:
apmdcannaFreeWnngpmhpojinndirdaisdnkdcrotatelvsmars-nweoki4daemonprivoxyrstatdrusersdrwalldrwhodspamassassinwinenfsnfslockautofsypbindypservyppasswddportmapsmbnetfslpdapachehttpdtuxsnmpdnamedpostgresqlmysqldwebminkudzusquidcups
加固时,应按照机器具体配置使用和应用情形对开放的服务进行调整,关闭不需要的服务。
服务运行脚本一样都放在/etc/rc.d/rc*.d进行启动,能够使用chkconfig工具直截了当进行治理。
关于必须通过/etc/rc.d/rc*.d开放的服务,应确保都已打上过最新的补丁。
操作:
chkconfig--level12345服务名off
如果关闭了特定的服务,也应该同时对这些服务在系统中的用户加以锁定或删除
可能包括以下用户rpcrpcuserlpapachehttphttpdnameddnsmysqlpostgressquid
usermod-L要锁定的用户
调整SMB服务
讲明:
Samba服务器一样用来提供与Windows类似的文件和打印共享服务。
除非十分必要,否则应关闭SMB(Windows文件共享)服务。
可采纳以下方式开放SMB服务。
操作:
chkconfigsmbon
调整NFS服务器服务
讲明:
NFS漏洞较多,经常被利用来取得未授权的文件或系统权限。
除非十分必要,否则应关闭NFS服务。
可采纳以下方式开放SMB服务,并应该限制export文件系统的中的IP地址范畴,以及增加只读权限。
操作:
chkconfig--level345nfson
调整NFS客户端服务
讲明:
NFS客户端服务一样用来访咨询其他NFS服务器。
除非十分必要,否则应关闭此服务。
可采纳以下方式开放此服务。
操作:
chkconfig--level345nfslockon
chkconfig--level345autofson
调整NIS服务器服务
讲明:
NIS用来提供基于UNIX的域治理和认证手段。
除非十分必要,否则应关闭此服务。
可采纳以下方式开放此服务。
操作:
chkconfigypservon
chkconfigyppasswddon
调整NIS客户端服务
讲明:
NIS客户端用来访咨询其他NIS服务器。
除非十分必要,否则应关闭此服务。
可采纳以下方式开放此服务。
操作:
chkconfigypbindon
调整RPC端口映射服务
讲明:
RPC协议一样通过比较简单的或不经认证就能够得到一些专门敏锐的信息。
同时RPC系列服务都存在一些缓冲区溢出咨询题。
在以下情形下能够考虑关闭RPC端口映射服务:
服务器不是NFS服务器或客户端;
服务器不是NIS服务器或客户端;
服务器没有运行其它依靠于RPC服务的第三方软件;
服务器不运行图形界面(x-windows)。
操作:
chkconfig--level345portmapon
调整netfs服务
讲明:
此服务会作为客户端挂接网络中的磁盘。
如果没有网络文件共享协议如NFS,NovellNetware或Windows文件共享使用,则能够关闭此服务。
操作:
chkconfig--level345netfson
调整打印机服务
讲明:
UNIX打印服务存在较多的安全漏洞。
如果系统不作为网络中的打印机服务器,则能够关闭此服务。
如果必须使用此服务,第一应保证软件都通过最新的补丁,然和设置cupsd进程运行在非root用户和组。
操作:
if[-e/etc/init.d/cups];then
chkconfigcupson
sed's/^\#Userlp/Userlp/'/etc/cups/cupsd.conf\
>/etc/cups/cupsd.conf.new
sed's/^\#Groupsys/Groupsys/'\
/etc/cups/cupsd.conf.new>/etc/cups/cupsd.conf
rm-f/etc/cups/cupsd.conf.new
/bin/chownlp:
sys/etc/cups/cupsd.conf
/bin/chmod600/etc/cups/cupsd.conf
fi
chkconfighpojon
chkconfiglpdon
调整Web服务器服务
讲明:
如果服务器必须开放Web,则需要作如下设置。
应注意web名目权限设置,不要承诺名目list。
操作:
chkconfigapahceon
或
chkconfighttpdon
调整SNMP服务
讲明:
简单网络治理协议SNMP一样用来监控网络上主机或设备的运行情形。
如果必须打开,则必须更换默认通讯字。
操作:
chkconfigsnmpdon
编辑/etc/snmp/snmpd.conf
com2secnotConfigUserdefaultpublic
修改public为其他一个足够复杂的密码。
调整DNS服务器服务
讲明:
DNS服务器服务用来为其他机器提供DNS解析,一样来讲都能够关掉。
如果必须进行开放,则必须升级至最新版本,并举荐设置chroot环境,还需要注意限制DNS配置文件中的区域传输等设置(加密码或加IP地址限制)。
操作:
chkconfignamedon
调整SSHD服务器服务
讲明:
SSHD服务器服务用来提供SSHServer的服务。
如果必须进行开放,则必须升级至最新版本,并举荐设置chroot环境,还需要注意限制SSH配置文件中的区域传输等设置,需要在SSHD配置文件中禁用ssh1方式连接,因ssh1方式连接是非完全加密。
操作:
如使用Openssh,则检查/etc/ssh/sshd_config
grepProtocol/etc/ssh/sshd_config
grepProtocol/etc/ssh2/sshd2_config
调整SQL服务器服务
讲明:
如果不需要数据库服务,则能够关闭此服务。
如果必须进行开放,则注意修改数据库用户的密码,并增加数据库用户IP访咨询限制。
操作:
chkconfigpostgresqlon
chkconfigmysqldon
调整Webmin服务
讲明:
Webmin是一个通过HTTP协议操纵linux的工具,一样举荐使用SSH进行系统治理而不要使用此工具。
操作:
chkconfigwebminon
调整Squid服务
讲明:
Squid服务是客户端与服务器之间的代理服务。
Squid服务已显现过专门多安全漏洞,同时如果设置不当的话,可能导致被利用来作为内外网之间的跳板。
如果不需要,则能够关闭此服务。
如果必须打开,则需要设置承诺访咨询的地址列表及认证。
操作:
chkconfigsquidon
调整kudzu硬件探测服务
讲明:
Kudzu服务是linux的硬件探测程序,一样设置为启动系统的时候运行。
他会检测系统中的硬件的改变,同时会提示进行配置等。
XX的新设备存在的一定的安全风险,系统启动时操纵台就能够配置任何新增加的设备。
如果不需要经常的改动硬件,则需要进行关闭。
能够在增加新设备时手工运行/etc/rc.d/init.d/kudzu启动此服务。
操作:
chkconfig--level345kudzuon
内核参数
网络参数调整
讲明:
Linux支持的对网络参数进行调整。
具体参数详细讲明,可参见
http:
//lxr.linux.no/source/Documentation/networking/ip-sysctl.txt。
操作:
编辑/etc/sysctl.conf
增加
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.default.accept_source_route=
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.default.secure_redirects=0
/bin/chownroot:
root/etc/sysctl.conf
/bin/chmod0600/etc/sysctl.conf
更多的网络参数调整
讲明:
如果系统不作为在不同网络之间的防火墙或网关时,可进行如下设置。
具体参数详细讲明,可参见
http:
//lxr.linux.no/source/Documentation/networking/ip-sysctl.txt
操作:
编辑/etc/sysctl.conf
增加
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
/bin/chownroot:
root/etc/sysctl.conf
/bin/chmod0600/etc/sysctl.conf
日志
系统认证日志配置
讲明:
不是所有版本的linux都会在日之中记录登陆信息。
一样需要对这些重要的安全有关的信息进行储存,(如成功或失败su,失败的登陆,root登陆等)。
这些将会被记录在/var/log/secure文件里。
操作:
编辑/etc/syslog.conf
确认有如下行
authpriv.*/var/log/secure
touch/var/log/secure
/bin/chownroot:
root/var/log/secure
/bin/chmod600/var/log/secure
FTP进程日志配置
讲明:
系统默认会记录wu-ftpd和vsftpd所有的连接和文件传输。
以下将会确认所有法发送到服务期的命令将会被记录。
wu-ftpd将会把安全有关的或是策略边界的行为经历文件传输记录到syslog里,默认位于/var/log/xferlog。
操作:
编辑/etc/xinetd.d/wu-ftpd文件
确认有如下行
server_args=-l-a-d
/bin/chownroot:
rootwu-ftpd
/bin/chmod644wu-ftpd
编辑/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf文件
确认有如下行
xferlog_std_format=NO
log_ftp_protocol=YES
log_ftp_protocol=YES
/bin/chmod0600vsftpd.conf
/bin/chownroot:
rootvsftpd.conf
确认系统日志权限
讲明:
爱护系统日志文件可不能被非授权的用户所修改。
操作:
cd/var/log
/bin/chmodo-wboot.log*cron*dmesgksyms*httpd/*\
maillog*messages*news/*pgsqlrpmpkgs*samba/*\
scrollkeeper.logsecure*spooler*squid/*vbox/*wtmp
/bin/chmodo-rxboot.log*cron*maillog*messages*pgsql\
secure*spooler*squid/*
/bin/chmodg-wboot.log*cron*dmesghttpd/*ksyms*\
maillog*messages*pgsqlrpmpkgs*samba/*\
scrollkeeper.logsecure*spooler*
/bin/chmodg-rxboot.log*cron*maillog*messages*pgsql\
secure*spooler*
/bin/chmodo-wgdm/httpd/news/samba/squid/vbox/
/bin/chmodo-rxhttpd/samba/squid/
/bin/chmodg-wgdm/httpd/news/samba/squid/vbox/
/bin/chmodg-rxhttpd/samba/
/bin/chown-Rroot:
root.
/bin/chgrputmpwtmp
/bin/chown-Rnews:
newsnews
/bin/chownpostgres:
postgrespgsql
/bin/chown-Rsquid:
squidsquid
文件/名目权限
/etc/fstab中适当分区增加“nodev”选项
讲明:
在我们已知不包含设备的分区增加nodev参数,防止用户挂接分区中未授权设备。
此项加固要比较慎重。
操作:
编辑/etc/fstab文件
在非/的ext2和ext3分区后增加nodev参数
/bin/chownroot:
root/etc/fstab
/bin/chmod0644/etc/fstab
/etc/fstab中移动设备增加“nosuid”“nodev”选项
讲明:
可移动的媒体可能导致恶意的程序进入系统。
能够将这些文件系统设置nosuid选项,此选项能够防止用户使用CD-ROM或软盘将设置了SUID的程序带到系统里。
参照上节,这些文件系统也应当设置nodev选项。
操作:
编辑/etc/fstab文件
在floppy和cdrom分区后增加nosuid,nodev参数
/bin/chownroot:
root/etc/fstab
/bin/chmod0644/etc/fstab
禁止用户挂接可移动文件系统
讲明:
PAM模块中的pamconsole参数给操纵台的用户临时的额外特权。
其配置位于/etc/security/console.perms文件。
默认设置承诺操纵台用户操纵能够与其他主机共享的软盘和CD-ROM设备。
这些可移动媒体存在着一定的安全风险。
以下禁止这些设备的额外特权。
操作:
编辑/etc/security/console.perms文件
修改其中的console行,删除以下设备之外的行
/sound|fb|kbd|joystick|v4l|mainboard|gpm|scanner
/bin/chownroot:
rootconsole.perms
/bin/chmod0600console.perms
检查passwd,shadow和group文件权限
讲明:
检查以下文件的默认权限。
操作:
cd/etc
/bin/chownroot:
rootpasswdshadowgroup
/bin/chmod644passwdgroup
/bin/chmod400shadow
全局可写名目应当设置粘滞位
讲明:
当一个名目设置了粘滞位之后,只有文件的属主能够删除此名目中的文件。
设置粘滞位能够防止用户覆盖其他用户的文件。
如/tmp名目。
操作:
find/-xdev-typed-perm-0002-a!
-perm-1000-print
找出未授权的全局可写名目
讲明:
全局可写文件能够被任意用户修改。
全局可写文件可能造成一些脚本或