明明白白你的Linux服务器——安全篇(1)安全对于linux/unix生产服务器而言是至关重要的,也是每一个系统管理员的基本功课。本文是《明明白白你的Linux服务器》系列的第四篇,下面所列的一切是关于Linux服务器的基本设置,力求用最简单的语言来说明Linux服务器的基础安全设置,尤其适用于新手;如果对Linux服务器的安全有更高要求,建议配合硬件防火墙来进行操作。一、Linux服务器的硬件防护我在项目实施中和自己的网站架设中,发现防DDOS攻击及SQL注入、跨站脚本、蠕虫、黑客扫描和攻击等攻击效果不错的方案有:①华赛三层防火墙+天泰web防火墙;②Juniper系列防火墙;如果你的Linux或FreeBSD前端无任何硬件防护,一下要记得开启iptables或ipfw防火墙。虽然它们不能防DDOS攻击,但在安全防护上或多或少的有所作用;如果是windows2003服务器,建议开启它自带的系统防火墙,并禁ping。建议采用64位的Linux操作系统,如CentOS5.4;如果是UNIX,建议采用FreeBSD8.0(也采用64位的)。多关注下服务器的内核漏洞,现在linux很多攻击都是针对内核的,保证内核版本为2.6.9以上。二、远程连接你的Linux服务器对于远程连接,建议只允许在内网进行ssh操作,而拒绝外网控制,这样做是比较安全的(此步操作可能要配合公司的网络工程师来操作)。如果非要从外网进行ssh操作,建议正确配置x-shell、Putty等远程连接工具的公钥和私钥。root密码我一般设置为28位以上,建议用字母+数字的组合,如p@sSw0rdyuhongchun027nagios,而且某些重要的服务器必须只有几个人知道root密码,这个根据公司权限来设置,如果有公司的系统管理员离职,root密码一定要更改;玩linux久了的人都应该知道,更改root密码不会影响linux的crontab计划任务(这个在windows2003就不一样了,如果随意更改administrator密码,会直接影响其计划任务运行)。三、Linux服务器如何防ssh暴力破解我的Nagios外网监控服务器,刚开始测试时取的密码是redhat,放进公网一天就被人改了,郁闷死了;后来环境部署成熟以后发现仍然有不少外网ip在扫描和试探,看来不用点工具不行啊;呵呵,我尝试使用大家都推荐使用的DenyHosts,它是用Python2.3写的一个程序,它会分析/var/log/secure等日志文件,当发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而达到自动屏蔽该IP的目的。DenyHosts官方网站为:①检查安装条件1、首先判断系统安装的sshd是否支持tcp_wrappers(默认都支持)#ldd/usr/sbin/sshdlibwrap.so.0=/usr/lib/libwrap.so.0(0x0046e000)2、判断默认安装的Python版本#python-VPython2.3.43、已安装Python2.3以上版本的情况可以直接安装DenyHosts#cd/usr/local/src#wget程序脚本自动安装到/usr/share/denyhosts库文件自动安装到/usr/lib/python2.3/site-packages/DenyHostsdenyhosts.py自动安装到/usr/bin②设置启动脚本#cd/usr/share/denyhosts/#cpdaemon-control-distdaemon-control#chownrootdaemon-control#chmod700daemon-control#grep-v^#denyhosts.cfg-distdenyhosts.cfg#videnyhosts.cfg根据自己需要进行相应的修改denyhosts.cfgSECURE_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随系统重启而自动启动,还需做如下设置:#vi/etc/rc.local加入下面这条命令/usr/share/denyhosts/daemon-controlstart③启动#/usr/share/denyhosts/daemon-controlstart如果要使DenyHosts每次重起后自动启动还需做如下设置:#cd/etc/init.d#ln-s/usr/share/denyhosts/daemon-controldenyhosts#chkconfig--adddenyhosts#chkconfig--level345denyhostson然后就可以启动了:servicedenyhostsstartDenyHosts配置文件:vi/etc/denyhosts.cfgSECURE_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#管理员邮件地址,它会给管理员发邮件下面这个是全自动下载安装的小脚本(推荐),当然安装后还得手动调整配置文件。install_denyhosts.sh脚本内容如下:#!/bin/bashcd/usr/local/srcwget^#denyhosts.cfg-distdenyhosts.cfgecho/usr/share/denyhosts/daemon-controlstart/etc/rc.localcd/etc/init.dln-s/usr/share/denyhosts/daemon-controldenyhostschkconfig--adddenyhostschkconfig--level345denyhostsonservicedenyhostsstart下面是hostsdeny的示例:Connectionto192.168.0.154closed.[root@autolemp~]#ssh192.168.0.154root@192.168.0.154'spassword:Permissiondenied,pleasetryagain.root@192.168.0.154'spassword:Permissiondenied,pleasetryagain.root@192.168.0.154'spassword:Permissiondenied(publickey,gssapi-with-mic,password)出现最后这行表示生效。明明白白你的Linux服务器——安全篇(2)抚琴煮酒51CTO.com我要评论(3)摘要:系统安全对于服务器而言是至关重要的。对于Linux/UNIX生产服务器而言,最基本的安全防护是系统管理员们的职责。本文列举了一些Linux服务器的基础安全设置,尤其适用于新手。如果对Linux服务器的安全有更高要求,建议配合硬件防火墙来进行操作。标签:Linux服务器Linux安全限时报名参加“甲骨文全球大会·2010·北京”及“JavaOne和甲骨文开发者大会2010”四、用户管理服务器上除root外,Linux用户越少越好,如果非要添加具有root权限的用户,建议在/etc/sudoer里添加,这样避免大家都用root用户在服务器上工作,另外一个作用是规范责任界限,做到有迹可循(我的开发服务器就发生了有人恶意更改root密码的事情);如果非要添加授权用户,请给他的登陆shell为nologin;终止未授权用户,定期检查系统有无多余的用户都是sysadmin必要的工作。五、日志文件分析系统的日志文件,寻找入侵者曾经试图入侵系统的蛛丝马迹。last命令是另外一个可以用来查找非授权用户登录事件的工具lyycheepts/254.107.130.61MonMay2214:14stillloggedinlyycheepts/251.107.130.61ThuMay1818: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:00)rootpts/259.78.34.62TueMay206:59-07:00(00:00)last命令输入的信息来自/var/log/wtmp。这个文件详细地记录着每个系统用户的访问活动。但是有经验的入侵者往往会删掉/var/log/wtmp以清除自己非法行为的证据,但是这种清除行为还是会露出蛛丝马迹:在日志文件里留下一个没有退出操作与之对应的登录操作(因为在你删除wtmp的时候,你的登录记录就没有了,但是你待会儿登出,系统还是会把你记下来),不过再高明一点就用a