LINUX安全配置手册

LINUX安全配置手册
LINUX安全配置手册

LINUX安全配置手册

综述

本文档以典型安装的RedHat Linux为对象撰写而成,其他版本均差不多类似,按照具体情形进行适当修改即可。

文档中的操作需要以root用户登录至操纵台进行,不举荐使用网络远程的方式进行补丁及配置修改等加固操作。

部分操作需要重新启动服务器才会生效,注意某些数据库等应用需要先停止应用,然后才能够重新启动。

加固之前第一应对系统中的重要文件及可能修改的文件进行备份,可参照使用以下脚本:

for file in /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

for dir in /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

再解压

tar zxfv *.tar.gz

再按照使用情形对编译配置进行修改,或直截了当采纳默认配置

cd *

./configure

再进行编译和安装

make

make install

最小化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 --level 12345 xinetd off

关闭邮件服务

讲明:

如果系统不需要作为邮件服务器,并不需要向别处发邮件,能够直截了当关闭邮件服务。

如果不需要作为邮件服务器,然而承诺用户发送邮件,能够设置Send mail不运行在daemon模式。

操作:

chkconfig --level 12345 sendmail off

编辑/etc/sysconfig/senmail文件

增加以下行

DAEMON=no

QUEUE=1h

设置

cd /etc/sysconfig

/bin/chown root:root sendmail

/bin/chmod 644 sendmail

关闭图形登录服务

讲明:

一样来讲,大部分软件的安装和运行都不需要图形环境。如果不需要图形环境进行登录和操作,能够关闭X Windows的运行。

操作:

cp /etc/inittab /etc/inittab.bak

编辑/etc/inittab文件

修改id:5:initdefault:行为id:3:initdefault:

chown root:root /etc/inittab

chmod 0600 /etc/inittab

如需要X Windows的时候,可运行startx命令启动图形界面。

关闭X字体服务器

讲明:

如果关闭了X Windows服务,则X font服务器服务也应该进行关闭。

操作:

chkconfig xfs off

关闭其他默认启动服务

讲明:

系统启动时会启动专门多不必要的服务,这些不必要的服务均存在一定的安全隐患。一样可能存在以下不必要的服务:

apmd canna FreeWnn gpm hpoj innd irda isdn kdcrotate lvs mars-nw e oki4daemon privoxy rstatd rusersd rwalld rwhod spamassassin wine nfs nfslock autofs ypbind ypserv yppasswdd portmap smb netfs lpd apache htt pd tux snmpd named postgresql mysqld webmin kudzu squid cups 加固时,应按照机器具体配置使用和应用情形对开放的服务进行调整,关闭不需要的服务。

服务运行脚本一样都放在/etc/rc.d/rc*.d进行启动,能够使用chkconfig 工具直截了当进行治理。

关于必须通过/etc/rc.d/rc*.d开放的服务,应确保都已打上过最新的补丁。

操作:

chkconfig --level 12345 服务名off

如果关闭了特定的服务,也应该同时对这些服务在系统中的用户加以锁定或删除

可能包括以下用户rpc rpcuser lp apache http httpd named dns mysql postgres squid

usermod -L 要锁定的用户

调整SMB服务

讲明:

Samba服务器一样用来提供与Windows类似的文件和打印共享服务。除非十分必要,否则应关闭SMB(Windows文件共享)服务。可采纳以下方式开放SMB服务。

操作:

chkconfig smb on

调整NFS服务器服务

讲明:

NFS漏洞较多,经常被利用来取得未授权的文件或系统权限。除非十分必要,否则应关闭NFS服务。可采纳以下方式开放SMB服务,并应该限制export文件系统的中的IP地址范畴,以及增加只读权限。

操作:

chkconfig --level 345 nfs on

调整NFS客户端服务

讲明:

NFS客户端服务一样用来访咨询其他NFS服务器。除非十分必要,否则应关闭此服务。可采纳以下方式开放此服务。

操作:

chkconfig --level 345 nfslock on

chkconfig --level 345 autofs on

调整NIS服务器服务

讲明:

NIS用来提供基于UNIX的域治理和认证手段。除非十分必要,否则应关闭此服务。可采纳以下方式开放此服务。

操作:

chkconfig ypserv on

chkconfig yppasswdd on

调整NIS客户端服务

讲明:

NIS客户端用来访咨询其他NIS服务器。除非十分必要,否则应关闭此服务。可采纳以下方式开放此服务。

操作:

chkconfig ypbind on

调整RPC端口映射服务

讲明:

RPC协议一样通过比较简单的或不经认证就能够得到一些专门敏锐的信息。同时RPC系列服务都存在一些缓冲区溢出咨询题。

在以下情形下能够考虑关闭RPC端口映射服务:

服务器不是NFS服务器或客户端;

服务器不是NIS服务器或客户端;

服务器没有运行其它依靠于RPC服务的第三方软件;

服务器不运行图形界面(x-windows)。

操作:

chkconfig --level 345 portmap on

调整netfs服务

讲明:

此服务会作为客户端挂接网络中的磁盘。如果没有网络文件共享协议如NFS,NovellNetware或Windows文件共享使用,则能够关闭此服务。

操作:

chkconfig --level 345 netfs on

调整打印机服务

讲明:

UNIX打印服务存在较多的安全漏洞。如果系统不作为网络中的打印机服务器,则能够关闭此服务。如果必须使用此服务,第一应保证软件都通过最新的补丁,然和设置cupsd进程运行在非root用户和组。

操作:

if [ -e /etc/init.d/cups ] ; then

chkconfig cups on

sed 's/^\#User lp/User lp/' /etc/cups/cupsd.conf \

>/etc/cups/cupsd.conf.new

sed 's/^\#Group sys/Group sys/' \

/etc/cups/cupsd.conf.new >/etc/cups/cupsd.conf

rm -f /etc/cups/cupsd.conf.new

/bin/chown lp:sys /etc/cups/cupsd.conf

/bin/chmod 600 /etc/cups/cupsd.conf

fi

chkconfig hpoj on

chkconfig lpd on

调整Web服务器服务

讲明:

如果服务器必须开放Web,则需要作如下设置。应注意web名目权限设置,不要承诺名目list。

操作:

chkconfig apahce on

chkconfig httpd on

调整SNMP服务

讲明:

简单网络治理协议SNMP一样用来监控网络上主机或设备的运行情形。如果必须打开,则必须更换默认通讯字。

操作:

chkconfig snmpd on

编辑/etc/snmp/snmpd.conf

com2sec notConfigUser default public

修改public为其他一个足够复杂的密码。

调整DNS服务器服务

讲明:

DNS服务器服务用来为其他机器提供DNS解析,一样来讲都能够关掉。如果必须进行开放,则必须升级至最新版本,并举荐设置chroot环境,还需要注意限制DNS配置文件中的区域传输等设置(加密码或加IP地址限制)。

操作:

chkconfig named on

调整SSHD服务器服务

讲明:

SSHD服务器服务用来提供SSH Server的服务。如果必须进行开放,则必须升级至最新版本,并举荐设置chroot环境,还需要注意限制SSH配置文件中的区域传输等设置,需要在SSHD配置文件中禁用ssh1方式连接,因ssh1方式连接是非完全加密。

操作:

如使用Openssh,则检查/etc/ssh/sshd_config

grep Protocol /etc/ssh/sshd_config

grep Protocol /etc/ssh2/sshd2_config

调整SQL服务器服务

讲明:

如果不需要数据库服务,则能够关闭此服务。如果必须进行开放,则注意修改数据库用户的密码,并增加数据库用户IP访咨询限制。

操作:

chkconfig postgresql on

chkconfig mysqld on

调整Webmin服务

讲明:

Webmin是一个通过HTTP协议操纵linux的工具,一样举荐使用SSH 进行系统治理而不要使用此工具。

操作:

chkconfig webmin on

调整Squid服务

讲明:

Squid服务是客户端与服务器之间的代理服务。Squid服务已显现过专门多安全漏洞,同时如果设置不当的话,可能导致被利用来作为内外网之间的跳板。如果不需要,则能够关闭此服务。如果必须打开,则需要设置承诺访咨询的地址列表及认证。

操作:

chkconfig squid on

调整kudzu硬件探测服务

讲明:

Kudzu服务是linux的硬件探测程序,一样设置为启动系统的时候运行。他会检测系统中的硬件的改变,同时会提示进行配置等。未经授权的新设备存在的一定的安全风险,系统启动时操纵台就能够配置任何新增加的设备。

如果不需要经常的改动硬件,则需要进行关闭。能够在增加新设备时手工运行/etc/rc.d/init.d/kudzu启动此服务。

操作:

chkconfig --level 345 kudzu on

内核参数

网络参数调整

讲明:

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/chown root:root /etc/sysctl.conf

/bin/chmod 0600 /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/chown root:root /etc/sysctl.conf

/bin/chmod 0600 /etc/sysctl.conf

日志

系统认证日志配置

讲明:

不是所有版本的linux都会在日之中记录登陆信息。一样需要对这些重要的安全有关的信息进行储存,(如成功或失败su,失败的登陆,root登陆等)。这些将会被记录在/var/log/secure文件里。

操作:

编辑/etc/syslog.conf

确认有如下行

authpriv.* /var/log/secure

touch /var/log/secure

/bin/chown root:root /var/log/secure

/bin/chmod 600 /var/log/secure

FTP进程日志配置

讲明:

系统默认会记录wu-ftpd和vsftpd所有的连接和文件传输。以下将会确认所有法发送到服务期的命令将会被记录。wu-ftpd将会把安全有关的或是策略边界的行为经历文件传输记录到syslog里,默认位于/var/log/xferlog。

操作:

编辑/etc/xinetd.d/wu-ftpd文件

确认有如下行

server_args = -l -a -d

/bin/chown root:root wu-ftpd

/bin/chmod 644 wu-ftpd

编辑/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf文件

确认有如下行

xferlog_std_format=NO

log_ftp_protocol=YES

log_ftp_protocol=YES

/bin/chmod 0600 vsftpd.conf

/bin/chown root:root vsftpd.conf

确认系统日志权限

讲明:

爱护系统日志文件可不能被非授权的用户所修改。

操作:

cd /var/log

/bin/chmod o-w boot.log* cron* dmesg ksyms* httpd/* \

maillog* messages* news/* pgsql rpmpkgs* samba/* \

scrollkeeper.log secure* spooler* squid/* vbox/* wtmp

/bin/chmod o-rx boot.log* cron* maillog* messages* pgsql \

secure* spooler* squid/*

/bin/chmod g-w boot.log* cron* dmesg httpd/* ksyms* \

maillog* messages* pgsql rpmpkgs* samba/* \

scrollkeeper.log secure* spooler*

/bin/chmod g-rx boot.log* cron* maillog* messages* pgsql \

secure* spooler*

/bin/chmod o-w gdm/ httpd/ news/ samba/ squid/ vbox/

/bin/chmod o-rx httpd/ samba/ squid/

/bin/chmod g-w gdm/ httpd/ news/ samba/ squid/ vbox/

/bin/chmod g-rx httpd/ samba/

/bin/chown -R root:root .

/bin/chgrp utmp wtmp

/bin/chown -R news:news news

/bin/chown postgres:postgres pgsql

/bin/chown -R squid:squid squid

文件/名目权限

/etc/fstab中适当分区增加“nodev”选项

讲明:

在我们已知不包含设备的分区增加nodev参数,防止用户挂接分区中未授权设备。

此项加固要比较慎重。

操作:

编辑/etc/fstab文件

在非/的ext2和ext3分区后增加nodev参数

/bin/chown root:root /etc/fstab

/bin/chmod 0644 /etc/fstab

/etc/fstab中移动设备增加“nosuid”“nodev”选项

讲明:

可移动的媒体可能导致恶意的程序进入系统。能够将这些文件系统设置nosuid选项,此选项能够防止用户使用CD-ROM或软盘将设置了SUID 的程序带到系统里。

参照上节,这些文件系统也应当设置nodev选项。

操作:

编辑/etc/fstab文件

在floppy和cdrom分区后增加nosuid,nodev参数

/bin/chown root:root /etc/fstab

/bin/chmod 0644 /etc/fstab

禁止用户挂接可移动文件系统

讲明:

PAM模块中的pam console参数给操纵台的用户临时的额外特权。其配置位于/etc/security/console.perms文件。默认设置承诺操纵台用户操纵能够与其他主机共享的软盘和CD-ROM设备。这些可移动媒体存在着一定的安全风险。以下禁止这些设备的额外特权。

操作:

编辑/etc/security/console.perms文件

修改其中的console行,删除以下设备之外的行

/sound|fb|kbd|joystick|v4l|mainboard|gpm|scanner

/bin/chown root:root console.perms

/bin/chmod 0600 console.perms

检查passwd,shadow和group文件权限

讲明:

检查以下文件的默认权限。

操作:

cd /etc

/bin/chown root:root passwd shadow group

/bin/chmod 644 passwd group

/bin/chmod 400 shadow

全局可写名目应当设置粘滞位

讲明:

当一个名目设置了粘滞位之后,只有文件的属主能够删除此名目中的文件。设置粘滞位能够防止用户覆盖其他用户的文件。如/tmp名目。

操作:

find / -xdev -type d -perm -0002 -a ! -perm -1000 -print

找出未授权的全局可写名目

讲明:

全局可写文件能够被任意用户修改。全局可写文件可能造成一些脚本或程序被恶意修改后造成更大的危害,一样应拒绝其他组的用户的写权限。

操作:

find / -perm -0002 -type f -xdev -print

chmod o-w

找出未授权的SUID/SGID文件

讲明:

治理员应当检查没有其他非授权的SUID/SGID在系统内。

操作:

find / -perm -04000 -o -perm -02000 -type f -xdev -print

找出专门和隐藏的文件

讲明:

入侵者容易将恶意文件放在这名目中或命名如此的文件名。关于检查出来的数据需要核对与否系统自身的文件。

操作:

find / -name ".. " -exec ls -ldb {} \;

find / -name ".*" -exec ls -ldb {} \;

系统访咨询,授权和认证

删除.rhosts文件

讲明:

R系列服务(rlogin,rsh,rcp)使用.rhosts文件,它使用基于网络地址或主机名的远端机算计弱认证(专门容易被伪造)。如果必须使用R系列服务,则必须保证.rhosts文件中没有“+”,同时同时指定对方系统和用户名。如果有防火墙,则应该在过滤外部网段至内部的全部R系列服务访咨询。同时需要保证.rhosts文件仅能够被所有者读取(600)。

操作:

for file in /etc/pam.d/* ; do

grep -v rhosts_auth $file > ${file}.new

/bin/mv ${file}.new $file

/bin/chown root:root $file

/bin/chmod 644 $file

done

创建危险文件的链接

讲明:

防止创建危险的/root/.rhosts,/root/.shosts,/etc/hosts.equiv和/etc/shosts. equiv文件。

操作:

/bin/rm /root/.rhosts

ln -s /dev/null /root/.rhosts

/bin/rm /root/.shosts

ln -s /dev/null /root/.shosts

/bin/rm /etc/hosts.equiv

ln -s /dev/null /etc/hosts.equiv

/bin/rm /etc/shosts.equiv

ln -s /dev/null /etc/shosts.equiv

创建ftpuser文件

讲明:

/etc/ftpusers和/etc/vsftp.ftpusers文件里的用户列表里的用户将拒绝通过WU-FTPD和vsftpd访咨询系统。通常情形下,应当不承诺一些系统用户访咨询FTP,同时任何时候都不应当使用root用户访咨询FTP。

/etc/https://www.360docs.net/doc/f017686295.html,er类似上述功能。

操作:

for name in `cut -d: -f1 /etc/passwd`

do

if [ `id -u $name` -lt 500 ]

then

echo $name >> /etc/ftpusers

fi

done

/bin/chown root:root /etc/ftpusers

/bin/chmod 600 /etc/ftpusers

if [ -e /etc/vsftpd.conf ] || \

[ -e /etc/vsftpd/vsftpd.conf ]; then

/bin/rm -f /etc/vsftpd.ftpusers

/bin/cp /etc/ftpusers /etc/vsftpd.ftpusers

fi

关闭X-Windows的开放端口

讲明:

X服务器在6000/tcp监听远端客户端的连接。X-Windows使用相对不安全的认证方式,取得X认证的用户专门容易就能够操纵整台服务器。

删除选项中的“-nolisten tcp”能够使X服务器不再监听6000/tcp端口。

操作:

if [ -e /etc/X11/xdm/Xservers ] ; then

cd /etc/X11/xdm

awk '($1 !~ /^#/ && $3 == "/usr/X11R6/bin/X") \ { $3 = $3 " -nolisten tcp" };

{ print }' Xservers > Xservers.new

/bin/mv Xservers.new Xservers

/bin/chown root:root Xservers

/bin/chmod 444 Xservers

fi

if [ -e /etc/X11/gdm/gdm.conf ] ; then

cd /etc/X11/gdm

awk -F= '($2 ~ /\/X$/) \

{ printf("%s -nolisten tcp\n", $0); next };

{ print }' gdm.conf > gdm.conf.new

/bin/mv gdm.conf.new gdm.conf

/bin/chown root:root gdm.conf

/bin/chmod 644 gdm.conf

fi

if [ -d /etc/X11/xinit ] ; then

cd /etc/X11/xinit

if [ -e xserverrc ] ; then

awk '/X/ && !/^#/ \

{ print $0 " :0 -nolisten tcp \$@"; next }; \

{ print }' xserverrc > xserverrc.new

/bin/mv xserverrc.new xserverrc

else

cat <xserverrc

#!/bin/bash

exec X :0 -nolisten tcp \$@

END

fi

/bin/chown root:root xserverrc

/bin/chmod 755 xserverrc

fi

限制只有授权用户能够访咨询at/cron

讲明:

cron.allow和at.allow能够指定承诺运行crontab和at命令的用户列表。一样直应该承诺治理员有权益运行打算任务。

操作:

cd /etc/

/bin/rm -f cron.deny at.deny

echo root >cron.allow

echo root >at.allow

/bin/chown root:root cron.allow at.allow

/bin/chmod 400 cron.allow at.allow

限制crontab文件的权限

讲明:

系统的crontab文件应该只能被cron daemon(以超级用户权限运行)和crontab命令(SUID)。

操作:

/bin/chown root:root /etc/crontab

/bin/chmod 400 /etc/crontab

/bin/chown -R root:root /var/spool/cron

/bin/chmod -R go-rwx /var/spool/cron

/bin/chown -R root:root /etc/cron.*

/bin/chmod -R go-rwx /etc/cron.*

创建警示BANNER

相关主题
相关文档
最新文档