Linux 服务器安全配置


第一部分:RedHat Linux篇  
1.概述  
Linux服务器版本:RedHat Linux AS  
对于开放式的操作系统---Linux,系统的安全设定包括系统服务最小化、限制远程存取、隐藏重要资料、修补安全漏洞、采用安全工具以及经常性的安全检查等。本文主要从用户设置、如何开放服务、系统优化等方面进行系统的安全配置,以到达使Linux服务器更安全、稳定。  
2.用户管理  
在 Linux系统中,用户帐号是用户的身份标志,它由用户名和用户口令组成。系统将输入的用户名存放在/etc/passwd文件中,而将输入的口令以加密的形式存放在/etc/shadow文件中。在正常情况下,这些口令和其他信息由操作系统保护,能够对其进行访问的只能是超级用户(root)和操作系统的一些应用程序。但是如果配置不当或在一些系统运行出错的情况下,这些信息可以被普通用户得到。进而,不怀好意的用户就可以使用一类被称为“口令破解”的工具去得到加密前的口令。  
2.1 删除系统特殊的的用户帐号和组帐号:  
#userdel username  
userdel adm  
userdel lp  
userdel sync  
userdel shutdown  
userdel halt  
userdel news  
userdel uucp  
userdel operator  
userdel games  
userdel gopher  

以上所删除用户为系统默认创建,但是在常用服务器中基本不使用的一些帐号,但是这些帐号常被黑客利用和攻击服务器。  
#groupdel username  
groupdel adm  
groupdel lp  
groupdel news  
groupdel uucp  
groupdel games  
groupdel dip  
同样,以上删除的是系统安装是默认创建的一些组帐号。这样就减少受攻击的机会。  
2.2 用户密码设置:  
安装linux时默认的密码最小长度是5个字节,但这并不够,要把它设为8个字节。修改最短密码长度需要编辑login.defs文件(vi /etc/login.defs)  
PASS_MAX_DAYS 99999 ##密码设置最长有效期(默认值)  
PASS_MIN_DAYS 0 ##密码设置最短有效期  
PASS_MIN_LEN 5 ##设置密码最小长度  
PASS_WARN_AGE 7 ##提前多少天警告用户密码即将过期。  
2.3 修改自动注销帐号时间:  
自动注销帐号的登录,在Linux系统中root账户是具有最高特权的。如果系统管理员在离开系统之前忘记注销root账户,那将会带来很大的安全隐患,应该让系统会自动注销。通过修改账户中“TMOUT”参数,可以实现此功能。TMOUT按秒计算。编辑你的profile文件(vi /etc/profile),在"HISTSIZE="后面加入下面这行:  
  TMOUT=300  
  300,表示300秒,也就是表示5分钟。这样,如果系统中登陆的用户在5分钟内都没有动作,那么系统会自动注销这个账户。  
2.4 给系统的用户名密码存放文件加锁:  
chattr +i /etc/passwd  
chattr +i /etc/shadow  
chattr +i /etc/gshadow  
chattr +i /etc/group  
注:chattr是改变文件属性的命令,参数i代表不得任意更动文件或目录,此处的i为不可修改位(immutable)。查看方法:lsattr /etc/passwd  
3.服务管理  
在Linux系统的服务管理方面,如果想做到服务的最好安全,其中主要的就是升级服务本身的软件版本,另外一个就是关闭系统不使用的服务,做到服务最小化。  
3.1 关闭系统不使用的服务:  
cd /etc/init.d ##进入到系统init进程启动目录  
在这里有两个方法,可以关闭init目录下的服务,一、将init目录下的文件名mv成*.old类的文件名,即修改文件名,作用就是在系统启动的时候找不到这个服务的启动文件。二、使用chkconfig系统命令来关闭系统启动等级的服务。  
注:在使用以下任何一种方法时,请先检查需要关闭的服务是否是本服务器特别需要启动支持的服务,以防关闭正常使用的服务。  
第一种:修改文件名的方法  
Cd /etc/init.d/  
mv apmd apmd.old ##笔记本需要  
mv netfs netfs.old ## nfs客户端  
mv yppasswdd yppasswdd.old ## NIS服务器,此服务漏洞很多  
mv ypserv ypserv.old ## NIS服务器,此服务漏洞很多  
mv dhcpd dhcpd.old ## dhcp服务  
mv portmap portmap.old ##运行rpc(111端口)服务必需  
mv lpd lpd.old ##打印服务  
mv nfs nfs.old ## NFS服务器,漏洞极多  
mv sendmail sendmail.old ##邮件服务, 漏洞极多  
mv snmpd snmpd.old ## SNMP,远程用户能从中获得许多系统信息  
mv rstatd rstatd.old ##避免运行r服务,远程用户可以从中获取很多信息  
mv atd atd.old ##和cron很相似的定时运行程序的服务  
第二种:使用chkcofig命令来关闭不使用的系统服务  
chkconfig ?Clevel 35 apmd off  
chkconfig ?Clevel 35 netfs off  
chkconfig ?Clevel 35 yppasswdd off  
chkconfig ?Clevel 35 ypserv off  
chkconfig ?Clevel 35 dhcpd off  
chkconfig ?Clevel 35 portmap off  
chkconfig ?Clevel 35 lpd off  
chkconfig ?Clevel 35 nfs off  
chkconfig ?Clevel 35 sendmail off  
chkconfig ?Clevel 35 snmpd off  
chkconfig ?Clevel 35 rstatd off  
chkconfig ?Clevel 35 atd off  
注:以上chkcofig 命令中的3和5是系统启动的类型,3代表系统的多用启动方式,5代表系统的X启动方式。  

3.2 给系统服务端口列表文件加锁  
主要作用:防止未经许可的删除或添加服务  
chattr +i /etc/services  

3.3 修改ssh服务的root登录权限  
修改ssh服务配置文件,使的ssh服务不允许直接使用root用户来登录,这样建设系统被恶意登录攻击的机会。  
vi /etct/ssh/sshd_config  
PermitRootLogin yes  
将这行前的#去掉后,修改为:PermitRootLogin no  
4.系统文件权限  
Linux 文件系统的安全主要是通过设置文件的权限来实现的。每一个Linux的文件或目录,都有3组属性,分别定义文件或目录的所有者,用户组和其他人的使用权限(只读、可写、可执行、允许SUID、允许SGID等)。特别注意,权限为SUID和SGID的可执行文件,在程序运行过程中,会给进程赋予所有者的权限,如果被黑客发现并利用就会给系统造成危害。  
4.1 修改init目录文件执行权限:  
chmod -R 700 /etc/init.d/*  
4.2 修改部分系统文件的SUID和SGID的权限:  
chmod a-s /usr/bin/chage  
chmod a-s /usr/bin/gpasswd  
chmod a-s /usr/bin/wall  
chmod a-s /usr/bin/chfn  
chmod a-s /usr/bin/chsh  
chmod a-s /usr/bin/newgrp  
chmod a-s /usr/bin/write  
chmod a-s /usr/sbin/usernetctl  
chmod a-s /usr/sbin/traceroute  
chmod a-s /bin/mount  
chmod a-s /bin/umount  
chmod a-s /bin/ping  
chmod a-s /sbin/netreport  
4.3 修改系统引导文件  
chmod 600 /etc/grub.conf  
chattr +i /etc/grub.conf  
5.系统优化  
5.1 虚拟内存优化:  
一般来说,linux的物理内存几乎是完全used。这个和windows非常大的区别,它的内存管理机制将系统内存充分利用,并非windows无论多大的内存都要去使用一些虚拟内存一样。  
在/proc/sys/vm/freepages中三个数字是当前系统的:最小内存空白页、最低内存空白页和最高内存空白。  
注意,这里系统使用虚拟内存的原则是:如果空白页数目低于最高空白页设置,则使用磁盘交换空间。当达到最低空白页设置时,使用内存交换。内存一般以每页4k 字节分配。最小内存空白页设置是系统中内存数量的2倍;最低内存空白页设置是内存数量的4倍;最高内存空白页设置是系统内存的6倍。  
以下以1G内存为例修改系统默认虚拟内存参数大小:  
echo "2048 4096 6444" >/proc/sys/vm/freepages  
6.日志管理  
6.1 系统引导日志:  
dmesg  
使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的  
内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。  
6.2 系统运行日志:  
A、Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有 root 才可以读,不过只需要修改文件的访问权限就可以让其他人可读。  
以下是常用的系

相关内容

    暂无相关文章