CentOS系统安全保护

分类:CentOS运维 阅读:63154 次

无论你是Linux的普通桌面用户还是管理多个服务器的系统管理员,你都面临着同样的问题:日益增加的各种威胁。Linux是一个开放式系统,可以在网络上找到许多现成的程序和工具,这既方便了用户,也方便了黑客,因为他们也能很容易地找到程序和工具来潜入Linux系统,或者盗取Linux系统上的重要信息。

“知己知彼,百战不殆”。作为一个好的系统管理者,要保障整个系统的安全运行.最好的方法是了解攻击的工作原理和机制,了解攻击中使用了哪些工具,如何操作入侵等等。并知道如何从部署linux来降低风险。


一、蛛丝马迹:从日志着手

日志记录了系统每天发生的事情,可以通过他来检查错误发生的原因或者攻击者留下的痕迹,还可以实时的监测系统状态,监测和追踪侵入者等等。所以对于Linux系统而言,日志非常重要,最好单独建立一个日志服务器来存放日志。

TIPS:在Linux系统中,有三个主要的日志子系统:

(1)连接时间日志。由多个程序执行,把纪录写入到“/var/log/wtmp”和/“var/run/utmp”,Login等程序更新Wtmp和Utmp文件,使系统管理员能够跟踪谁在何时登录到系统。


(2)由系统内核执行的进程统计。当一个进程终止时,往统计文件中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。


(3)错误日志。由Syslogd(8)执行,各种系统守护进程、用户程序和内核向文件“/var/log/messages”报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。


从攻击角度而言,服务器上的安全文件十分重要,若你关闭外部网络对你的服务器的访问,攻击者总是试图连接服务器上的若干个端口,但是由于服务器关闭了Inetd启动的所有服务,所以LOG系统记录下了这些访问拒绝。常用的日志文件如下:

access-log 纪录HTTP/web的传输

acct/pacct 纪录用户命令

aculog 纪录MODEM的活动

btmp 纪录失败的纪录

lastlog 最近几次成功登录和最后一次不成功的登录

messages 从syslog中记录信息

sudolog 纪录使用sudo发出的命令

sulog 纪录使用su命令的使用

syslog 从syslog中记录信息

utmp 纪录当前登录的每个用户

wtmp 用户每次登录进入和退出时间的永久纪录

xferlog 纪录FTP会话


二、亡羊补牢:加强防卫

一方面要积极寻找本操作系统的常见漏洞并及时升级厂商所公布的补丁。比如,可以修改Inetd.conf文件以关闭某些服务,重新启动后再用NMAP扫描,在攻击者发现其以前更早的发现自己的系统的漏洞,并加以弥补。

另一方面要加强密码保护。攻击密码的手段主要有:字典攻击(Dictionaryattack)、混合攻击(Hybridattack)、蛮力攻击(Bruteforceattack)。最好的防卫方法便是严格控制进入特权,即使用有效的密码。主要包括密码应当遵循字母、数字、大小写(因为Linux对大小写是有区分)混合使用的规则,如加入“#”或“%”或“$”这样的特殊字符以添加复杂性。



1.保持最新的系统核心

由于Linux流通渠道很多,而且经常有更新的程序和系统补丁出现,因此,为了加强系统安全,一定要经常更新系统内核。


Kernel是Linux操作系统的核心,它常驻内存,用于加载操作系统的其他部分,并实现操作系统的基本功能。由于Kernel控制计算机和网络的各种功能,因此,它的安全性对整个系统安全至关重要。


早期的Kernel版本存在许多众所周知的安全漏洞,而且也不太稳定,只有2.0.x以上的版本才比较稳定和安全,新版本的运行效率也有很大改观。在设定Kernel的功能时,只选择必要的功能,千万不要所有功能照单全收,否则会使Kernel变得很大,既占用系统资源,也给黑客留下可乘之机。


在Internet上常常有最新的安全修补程序,Linux系统管理员应该消息灵通,经常光顾安全新闻组,查阅新的修补程序。


2.增强安全防护工具

SSH是安全套接层的简称,它是可以安全地用来取代rlogin、rsh和rcp等公用程序的一套程序组。SSH采用公开密钥技术对网络上两台主机之间的通信信息加密,并且用其密钥充当身份验证的工具。


由于SSH将网络上的信息加密,因此它可以用来安全地登录到远程主机上,并且在两台主机之间安全地传送信息。实际上,SSH不仅可以保障Linux主机之间的安全通信,Windows用户也可以通过SSH安全地连接到Linux服务器上。


很多Linux发行版都包含一些非常使用的小工具,lsof就是其中一个。Lsof能列出当前系统打开的所有文件。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。通过lsof工具能够查看哪些进程正在使用哪些端口,它的进程ID以及是谁在运行它。如果你从中发现了一些异常,那么你肯定值得仔细检查一番。


3.限制超级用户的权力

我们在前面提到,root是Linux保护的重点,由于它权力无限,因此最好不要轻易将超级用户授权出去。但是,有些程序的安装和维护工作必须要求有超级用户的权限,在这种情况下,可以利用其他工具让这类用户有部分超级用户的权限。Sudo就是这样的工具。


Sudo程序允许一般用户经过组态设定后,以用户自己的密码再登录一次,取得超级用户的权限,但只能执行有限的几个指令。


4.设定用户账号的安全等级

除密码之外,用户账号也有安全等级,这是因为在Linux上每个账号可以被赋予不同的权限,因此在建立一个新用户ID时,系统管理员应该根据需要赋予该账号不同的权限,并且归并到不同的用户组中。


在Linux系统上的tcpd中,可以设定允许上机和不允许上机人员的名单。其中,允许上机人员名单在/etc/hosts.allow中设置,不允许上机人员名单在/etc/hosts.deny中设置。设置完成之后,需要重新启动inetd程序才会生效。此外,Linux将自动把允许进入或不允许进入的结果记录到/rar/log/secure文件中,系统管理员可以据此查出可疑的进入记录。


每个账号ID应该有专人负责。在企业中,如果负责某个ID的职员离职,管理员应立即从系统中删除该账号。很多入侵事件都是借用了那些很久不用的账号。


在用户账号之中,黑客最喜欢具有root权限的账号,这种超级用户有权修改或删除各种系统设置,可以在系统中畅行无阻。因此,在给任何账号赋予root权限之前,都必须仔细考虑。


Linux系统中的/etc/securetty文件包含了一组能够以root账号登录的终端机名称。例如,在RedHatLinux系统中,该文件的初始值仅允许本地虚拟控制台(rtys)以root权限登录,而不允许远程用户以root权限登录。最好不要修改该文件,如果一定要从远程登录为root权限,最好是先以普通账号登录,然后利用su命令升级为超级用户。


使用口令老化。口令老化一种增强的系统口令生命期认证机制,虽然它会一定程序的削弱用户使用的便利性,但是它能够确保用户的口令定期更换,这是一种非常好的安全措施。因此,如果一个帐户受到了黑客的攻击并且没有被发现,但是在下一个密码更改周期,他就不能再访问该帐号了。


5.物理防护


虽然大多数的攻击是依靠网络实施的,而黑客取得物理访问你的计算机的机会也非常渺茫,但这并不意味你无需设防。

给引导程序加上密码保护,确保在你离开电脑时它总是处于锁定状态。并且你应该完全肯定没有人可以从外部设备启动你的服务器。


6.部署防火墙

  这听起来像一条最“明显”的建议(就像使用健壮密码一样),但令人惊奇地是,很少有人真正去设置防火墙。即使你使用的路由器可能内置了防火墙,但是在Linux系统中部署一个软件防火墙是一件非常轻松的事情,你能够从中受益匪浅。


图形防火墙,例如最近比较流行的Firestarter,非常适合定义口转发和监测活动规则。


三、反击:从系统开始


攻击者具有对Linux服务器的全部控制权,可以在任何时刻都能够完全关闭甚至毁灭此网络。可以采取的反击措施有:备份重要的关键数据;改变系统中所有口令,通知用户更新口令;隔离该网段,使攻击行为仅出现在一个小范围内;允许行为继续进行。如有可能,不要急于把攻击者赶出系统,争取收集证据;进行各种尝试,识别出攻击源


本文出自 “无痕” 博客,请务必保留此出处http://hucwuhen.blog.51cto.com/6253667/1283317