服务器的安全不仅要做好入侵地防护,还要做好攻击地预防。一目标服务器,黑客入侵不了,没法黑。可能他的目的不是拿到服务器shell权限,他的目的只要把目标服务器搞瘫痪就行。所以有些黑客不是找服务器漏洞,而是使用大流量不停地请求目标服务器对外端口服务,不断发送大量数据包,服务器面对大量数据”应接不暇”,性能急剧下降,直到瘫痪。这就是我们常听到的——流量攻击(DDOS攻击)。
DDOS流量攻击是目前最难防御的网络攻击之一,现在ddos成本已经很低了,不比前几年。现在几十块到几百块不等就能搞垮一个站,一个普通的站,一般网站的web服务器配置都不高,防护能力也几乎为0,所以别说5G了,就是瞬时1G打个一小时,服务器瞬间就瘫痪了。打多久瘫多久。。
无利不起早,这世界上没有无缘无故的恨,网络攻击大多属于同行竞争和敲诈勒索,像一般的小网站黑客也看不上眼。如果网站服务器真被攻击,需要应对的策略很多,不单单做好服务器的配置,还要升级硬件设施,比如多架设几台服务器,加大宽带等。流量攻击的应对这是一个大的话题,不是一两句就能全面说清楚的,分享一篇文章《DDOS的产生》。
这节楠神给大家讲解下iptables工具,iptables是Linux的防火墙工具。《iptables百度百科》
在防御流量攻击时,必然少不了对防火墙的设置。iptables是功能强大的防火墙设置命令,用它可以设置对某一(些)ip进行连接频率、并发限制、禁止访问限制等各种防火墙规则。
对iptables的学习流程是这样的:
1)先去看这篇文章《iptables的概念》
先理解了iptables,才能用iptables。要明白“链”与“表”的概念。
2)再去去看这篇文章《iptables规则查询》
怎么去查看iptables 表中设置的各种规则
3)最后看这篇文章《iptables规则增删改》
怎么对iptables规则增删改
把这三篇文章仔细看一遍,对iptables基本算是入门了。如果想熟练学习,可去《iptables零基础快速入门系列》做更深学习。
做服务器运维的需要熟练学习iptables,对于我们专职做程序员的,只要会参考学习文档做防火墙设置即可。毕竟iptables内容还挺多,只有现学现用才会记得深刻。
举几个常用的iptables规则例子:
允许所有访问22端口:
# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
拒绝所有访问22端口:
# iptables -A INPUT -p tcp --dport 22 -j DROP
只允许10.0.0.2访问22端口:
# iptables -A INPUT -p tcp --dport 22 -s 10.0.0.2 -j ACCEPT
抵御流量攻击的规则:
#单个IP在60秒内只允许新建20个连接,这里假设web端口就是80,
iptables -I INPUT -i eth1 -p tcp -m tcp –dport 80 -m state –state NEW -m recent –update –seconds 60 –hitcount 20 –name DEFAULT –rsource -j DROP iptables -I INPUT -i eth1 -p tcp -m tcp –dport 80 -m state –state NEW -m recent –set –name DEFAULT –rsource
#控制单个IP的最大并发连接数为20
iptables -I INPUT -p tcp –dport 80 -m connlimit –connlimit-above 20 -j REJECT
#每个IP最多20个初始连接
iptables -I INPUT -p tcp –syn -m connlimit –connlimit-above 20 -j DROP
参数解释:
-p协议
-m module_name:
-m tcp 的意思是使用 tcp 扩展模块的功能 (tcp扩展模块提供了 –dport, –tcp-flags, –sync等功能)
recent模块:
–name #设定列表名称,默认DEFAULT。
–rsource #源地址,此为默认。
–rdest #目的地址
–seconds #指定时间内
–hitcount #命中次数
–set #将地址添加进列表,并更新信息,包含地址加入的时间戳。
–rcheck #检查地址是否在列表,以第一个匹配开始计算时间。
–update #和rcheck类似,以最后一个匹配计算时间。
–remove #在列表里删除相应地址,后跟列表名称及地址
connlimit功能:
connlimit模块允许你限制每个客户端IP的并发连接数,即每个IP同时连接到一个服务器个数。
connlimit模块主要可以限制内网用户的网络使用,对服务器而言则可以限制每个IP发起的连接数。
–connlimit-above n #限制为多少个
–connlimit-mask n #这组主机的掩码,默认是connlimit-mask 32 ,即每个IP.