PURGE_DENY = 30m #过多久后清除
DENY_THRESHOLD_INVALID = 1 #允许无效用户(/etc/passwd未列出)登录失败的次数
DENY_THRESHOLD_VALID = 5 #允许有效(普通)用户登录失败的次数 DENY_THRESHOLD_ROOT = 3 #允许root登录失败的次数 HOSTNAME_LOOKUP=NO #是否做域名反解
/usr/share/denyhosts/daemon-control start #启动 放入rc.local随系统启动。 最后使用/etc/security/limits.conf文件对个别用户进行限制
二、网络安全
2.1 禁止ping反应
入侵者确定主机是否活动的最快、最简单的方法就是使用ping命令进行刺探。Ping
命令会发送一个ICMP echo请求,目标主机接收到请求后会回应一个ICMP应答包。为了防止入侵者对主机进行ping刺探,可以禁止Linux主机对ICMP包的回应: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
2.2 防洪水攻击
到目前为止,进行DDoS攻击的防御还是比较困难的。首先,这种攻击的特点是它利用了TCP/IP协议的漏洞,除非你不用TCP/IP,才有可能完全抵御住DDoS攻击。
2.2.1 DDoS攻击实例 - SYN Flood攻击
SYN-Flood是目前最流行的DDoS攻击手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了浪里淘沙的过程。SYN-Flood的攻击效果最好,应该是众黑客不约而同选择它的原因吧。那么我们一起来看看SYN-Flood的详细情况。 Syn Flood原理 - 三次握手
Syn Flood利用了TCP/IP协议的固有漏洞。面向连接的TCP三次握手是Syn Flood存在的基础。
TCP连接的三次握手
图一 图一TCP三次握手
如图一,在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。
Syn Flood攻击者不会完成三次握手
图二 图二 Syn Flood恶意地不完成三次握手
假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的攻击者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端
也将忙于处理攻击者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:服务器端受到了SYN Flood攻击(SYN洪水攻击)。
2.2.2 防洪水攻击的方法
主机上的设置
几乎所有的主机平台都有抵御DoS的设置,总结一下,基本的有几种:
? ? ? ?
关闭不必要的服务
限制同时打开的Syn半连接数目 缩短Syn半连接的time out 时间 及时更新系统补丁
网络设备上的设置
企业网的网络设备可以从防火墙与路由器上考虑。这两个设备是到外界的接口设备,在进行防DDoS设置的同时,要注意一下这是以多大的效率牺牲为代价的,对你来说是否值得。 1.防火墙
? ? ? ? ?
禁止对主机的非开放服务的访问 限制同时打开的SYN最大连接数 限制特定IP地址的访问 启用防火墙的防DDoS的属性
严格限制对外开放的服务器的向外访问
2.路由器
以Cisco路由器为例
? ? ? ? ? ?
Cisco Express Forwarding(CEF) 使用 unicast reverse-path 访问控制列表(ACL)过滤 设置SYN数据包流量速率 升级版本过低的ISO
为路由器建立log server
2.2.3 具体实施:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies #提高SYN攻击的能力 #添加防火墙规则防止洪水攻击 iptables -N syn-flood
iptables -A INPUT -i eth0 -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 9000/s --limit-burst 120 -j RETURN
iptables -A syn-flood -j DROP
###以后会根据服务器的应用与配置写出防火墙的脚本。
2.3 防止源路由
路由和路由协议会导致一些问题。IP源路径路由(IPsourcerouting),也就是IP包包含到达的目的地址的详细路径信息,是非常危险的,因为根据RFC1122规定目的主机必须按原路径返回这样的IP包。如果黑客能够伪造原路径路由的信息包,那么它就能截取返回的信息包,并且欺骗你的计算机,让它觉得正在和它交换信息的是可以信任的主机。强烈建议你禁止IP原路径路由以避免这个安全漏洞。
echo 0 >/proc/sys/net/ipv4/conf/all/accept_source_route #禁止IP源路径路由
三、监控系统日志
3.1登录日志的定时发送
定时发送登录日志 crontab -e
* */1 * * * last > denglu.log |mutt bvsg@sohu.com -a denglu.log -s \
定时发送登录成功的用户 Crontab -e
* */1 * * * lastb > denglub.log |mutt bvsg@sohu.com -a denglu.log -s \ 定时发送不能成功登录的用户。
3.2 更改历史记录
默认情况下,bash shell会在文件$HOME/.bash_history中存放多达2000条命令记录(根据具体的系统不同,默认记录条数不同)。这样会增加信息外露的风险。将历史记录改成只记录20条命令: vim /etc/profile HISTSIZE=20
HISTFILESIZE=20
四、漏洞扫描
检查大量主机是否存在系统漏洞是一项相当费时间的任务,而借助一些自动化的漏洞扫描工具则可以大大减轻系统管理员的负担。Nessus是linux上的一个用户自动检测和发现安全漏洞的强大工具,可以对多个目标主机进行远程漏洞自动检查。
4.1 Nessus介绍
Nessus是一个GPL许可下的开放软件,完全免费和开源代码,用户可以通过www.nessus.org/nessus进行下载。
Nessus采用服务器/客户端的工作模式,用户需要分别下载。我们下载一个系统对应的版本即可。客户端一般安装在windows上比较方便。
Nessus以rpm软件包的形式发布,其安装步骤比较简单,安装完成后需要执行那nessus-adduser命令穿件Nessus的管理用户,具体步骤:
1、安装Nessus-4.4.0-es5.x86.rpm软件包,命令:rpm -ivh Nessus-4.4.0-es5.x86.rpm
2、创建Nessus的管理用户。命令:/opt/nessus/sbin/nessus-adduser
3、启动服务前需要激活,在下面地址激活,会受到激活邮件,内容如下:/opt/nessus/bin/nessus-fetch --register 44C4-86DF-1223-2625-DFEF执行命令如下图: