Linux服务器如何才能保证它的安全呢?下文介绍了linux服务器的十个安全注意事项,希望大家能够掌握。
①首先要保证自己的服务器的绝对安全,root密码我一般设置为28位以上,而且某些重要的服务器必须只有几个人知道root密码,这个根据公司权限来设置,如果有公司的系统管理员离职,root密码一定要更改;玩linux久了的人都应该知道,更改root密码不会影响linux的crontab计划任务,而windows2003就不一样了,如果随意更改administrator密码,会直接影响其计划任务运行。
②我的Nagios外网监控服务器,刚开始测试时取的密码是redhat,放进公网一天就被人改了,郁闷死了;后来环境部署成熟以后发现仍然有不少外网ip在扫描和试探,看来不用点工具不行啊;呵呵,DenyHosts是用Python2.3写的一个程序,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。
DenyHosts官方网站为:http://denyhosts.sourceforge.net
一、检查安装条件
1、首先判断系统安装的sshd是否支持tcp_wrappers(默认都支持)
- #ldd/usr/sbin/sshdlibwrap.so.0=>/usr/lib/libwrap.so.0(0x0046e000)
2、判断默认安装的Python版本
- #python-VPython2.3.4
二、已安装Python2.3以上版本的情况
1、安装DenyHosts
- #cd/usr/local/src#wgethttp://jaist.dl.sourceforge.net/sourceforge/denyhosts/DenyHosts-2.6.tar.gz#tarzxfDenyHosts-2.6.tar.gz#cdDenyHosts-2.6#pythonsetup.pyinstall
程序脚本自动安装到/usr/share/denyhosts
库文件自动安装到/usr/lib/python2.3/site-packages/DenyHosts
denyhosts.py自动安装到/usr/bin
2、设置启动脚本
- #cd/usr/share/denyhosts/#cpdaemon-control-distdaemon-control#chownrootdaemon-control#chmod700daemon-control#grep-v"^#"denyhosts.cfg-dist>denyhosts.cfg#videnyhosts.cfg
根据自己需要进行相应的修改
----------------denyhosts.cfg------------------------SECURE_LOG=/var/log/secure#RedHat/FedoraCore分析该日志文件#其它版本linux根据denyhosts.cfg-dist内提示选择。PURGE_DENY=30m#过多久后清除DENY_THRESHOLD_INVALID=1#允许无效用户(/etc/passwd未列出)登录失败的次数DENY_THRESHOLD_VALID=5#允许有效(普通)用户登录失败的次数DENY_THRESHOLD_ROOT=3#允许root登录失败的次数HOSTNAME_LOOKUP=NO#是否做域名反解----------------denyhosts.cfg------------------------
如果需要DenyHosts随系统重启而自动启动,还需做如下设置:
#vi/etc/rc.local
加入下面这条命令
- /usr/share/denyhosts/daemon-controlstart
3、启动
- #/usr/share/denyhosts/daemon-controlstart
如果要使DenyHosts每次重起后自动启动还需做如下设置:
- #cd/etc/init.d#ln-s/usr/share/denyhosts/daemon-controldenyhosts#chkconfig--adddenyhosts#chkconfig--level345denyhostson
然后就可以启动了:
servicedenyhostsstart
DenyHosts配置文件:
vi/etc/denyhosts.cfg
SECURE_LOG=/var/log/secure#ssh日志文件,它是根据这个文件来判断的。
HOSTS_DENY=/etc/hosts.deny#控制用户登陆的文件
PURGE_DENY=5m#过多久后清除已经禁止的
BLOCK_SERVICE=sshd#禁止的服务名
DENY_THRESHOLD_INVALID=1#允许无效用户失败的次数
DENY_THRESHOLD_VALID=10#允许普通用户登陆失败的次数
DENY_THRESHOLD_ROOT=5#允许root登陆失败的次数
HOSTNAME_LOOKUP=NO#是否做域名反解
DAEMON_LOG=/var/log/denyhosts#自己的日志文件
ADMIN_EMAIL=yuhongchun027@163.com#管理员邮件地址,它会给管理员发邮件
③服务器上除root外,Linux用户越少越好;如果非要添加授权用户,请给他的登陆shell为nologin;终止未授权用户,定期检查系统有无多余的用户都是很必要的工作。
④分析系统的日志文件,寻找入侵者曾经试图入侵系统的蛛丝马迹。last命令是另外一个可以用来查找非授权用户登录事件的工具
- lyycheepts/254.107.130.61.diMonMay2214:14stillloggedinlyycheepts/251.107.130.61.diThuMay1818:36-18:42(00:05)lyycheepts/261.130.107.51TueMay1614:21-14:39(00:18)rootpts/261.130.107.58SatMay1315:40-15:43(00:02)lyycheepts/2210.32.178.253FriMay1200:53-01:16(00:23)rootpts/258.107.130.61.diWedMay1015:33-15:35(00:01)rootpts/261.130.107.58TueMay914:58-15:07(00:08)rootpts/259.78.34.62SunMay707:40-07:45(00:05)lyycheepts/259.78.34.62SatMay623:50-00:27(00:37)lyycheepts/2222.64.24.144SatMay610:56-10:56(00:00)rootpts/2192.168.0.111SatMay600:01-00:02(00:01)lyycheepts/2222.64.22.144ThuMay412:41-12:43(00:0rootpts/259.78.34.62TueMay206:59-07:00(00:00)
以下是一台机器上的演示图:
last命令输入的信息来自/var/log/wtmp。这个文件详细地记录着每个系统用户的访问活动。但是有经验的入侵者往往会删掉/var/log/wtmp以清除自己非法行为的证据,但是这种清除行为还是会露出蛛丝马迹:在日志文件里留下一个没有退出操作与之对应的登录操作(因为在你删除wtmp的时候,你的登录记录就没有了,但是你待会儿登出,系统还是会把你记下来),不过再高明一点就用at或者cron等自己登出之后再删文件。(但是这种方法也还是可以查,总之linux没有一种操作是最强的,强到没有纰漏。就像古龙的小说一样,没有一个人是天下第一。这样看起来才有劲)
⑤另外,可以用命令greperror/var/log/messages检查自己的服务器是否存在着硬件损坏的情况。
⑥尝试使用Chkrootkit应用程序对rootkit的踪迹和特进行查找,从它的报告中分析你的服务器否已经感染木马。
⑦尝试使用AIDE来检查文件系统的完整性。
⑧推荐使用Snort自动检测入侵,它集成了同类软件中最先进行技术,并且是开放源码的。
⑨以自己的邮件服务器举例说明,由于这是一个独立的服务器,所以前端并没放置硬件防火墙及Web防火墙,所以一定要开启iptables来防护,其/root/firewall.sh内容如下:
- #/bin/bashiptables-Fiptables-F-tnatiptables-Xiptables-PINPUTDROPiptables-POUTPUTACCEPTiptables-PFORWARDACCEP#loadconnection-trackingmodulesmodeprobeip_conntrackmodprobeiptable_natmodprobeip_conntrack_ftpmodprobeip_nat_ftpiptables-AINPUT-ilo-jACCEPTiptables-AINPUT-mstate--stateESTABLISHED,RELATED-jACCEPTiptables-AINPUT-ptcp-mmultiport--dport80,443,25,465,110,995,143,993,587,465,22-jACCEPT
在另一台机器上用扫描之王nmap进行扫描
- [root@mailpostfix]#nmap-P0-sS211.143.6.XStartingNmap4.11(http://www.insecure.org/nmap/)at2009-03-2916:21CSTInterestingportson211.143.6.X:Notshown:1668closedportsPORTSTATESERVICE22/tcpopenssh25/tcpopensmtp80/tcpopenhttp110/tcpopenpop3111/tcpopenrpcbind143/tcpopenimap443/tcpopenhttps465/tcpopensmtps587/tcpopensubmission993/tcpopenimaps995/tcpopenpop3s1014/tcpopenunknown
lsof-i:1014,发现又是rpc.statd,这东东,每次用的端口都不一样啊;它不能正确处理SIGPID信号,远程攻击者可利用这个漏洞关闭进程,进行拒绝服务攻击;发现rpc.statd是由服务nfslock开启,关闭它即可
- servicenfslockstopchkconfignfslockoff
⑩停掉一些系统不必要的服务,强化内核;多关注下服务器的内核漏洞,现在linux很多攻击都是针对内核的,保证内核版本为2.6.9以上(不含2.6.9)。
总结:
希望本文介绍的Linux服务器十大安全注意事项的内容能够对读者有所帮助,更多有关linux系统的知识还有待于读者去探索和学习。
【编辑推荐】