DDOS攻击由于容易实施、难以防范、难以追踪等而成为最难解决的网络安全问题之一,给网络社会带来了极大的危害。同时,拒绝服务攻击也将是未来信息战的重要手段之一。下面我们来了解下ddos攻击有哪些方式,以及如何防御ddos攻击。
ddos攻击有哪些方式?DDoS攻击通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。一般分为以下几种:
为了全面的防御ddos攻击,管理者们做了很多努力,但是新型的攻击时不时就会出现,管理者们防不胜防。对此,以下总结了七种相对常见的攻击类型,希望能对网站的防御工作起到一点作用。
1、Synflood: 该攻击以多个随机的源主机地址向目的主机发送SYN包,而在收到目的主机的SYN ACK后并不回应,这样,目的主机就为这些源主机建立了大量的连接队列,而且由于没有收到ACK一直维护着这些队列,造成了资源的大量消耗,最终导致拒绝服务。
2、Smurf:该攻击向一个子网的广播地址发一个带有特定请求(如ICMP回应请求)的包,并且将源地址伪装成想要攻击的主机地址。子网上所有主机都回应广播包请求而向被攻击主机发包,使该主机受到攻击。
3、Land-based:攻击者将一个包的源地址和目的地址都设置为目标主机的地址,然后将该包通过IP欺骗的方式发送给被攻击主机,这种包可以造成被攻击主机因试图与自己建立连接而陷入死循环,从而很大程度地降低了系统性能。
4、Ping of Death:根据TCP/IP的规范,一个包的长度最大为65536字节。尽管一个包的长度不能超过65536字节,但是一个包分成的多个片段的叠加却能做到。当一个主机收到了长度大于65536字节的包时,就是受到了Ping of Death攻击,该攻击会造成主机的宕机。
5、Teardrop:IP数据包在网络传递时,数据包可以分成更小的片段。攻击者可以通过发送两段(或者更多)数据包来实现TearDrop攻击。第一个包的偏移量为0,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。
6、PingSweep:使用ICMP Echo轮询多个主机。
7、Pingflood: 该攻击在短时间内向目的主机发送大量ping包,造成网络堵塞或主机资源耗尽。
被DDoS攻击并发现象
网站遭受DDOS、CC攻击后一般会表现出:网站掉包严重,访问网站时要么打不开,要么打开了提示“server unavailable”,刷新后情况依然如此,服务器远程困难,远程连接桌面非常卡,或者远程桌面进去后是黑屏。有的用户勉强能远程桌面连接进去了,但是操作困难,CPU处于100%,内存占用率也高,服务器已处于瘫痪状态。
1、保证服务器系统的安全
首先要确保服务器软件没有任何漏洞,防止攻击者入侵。确保服务器采用最新系统,并打上安全补丁。在服务器上删除未使用的服务,关闭未使用的端口。对于服务器上运行的网站,确保其打了最新的补丁,没有安全漏洞。
2、隐藏服务器的真实IP地址
不要把域名直接解析到服务器的真实IP地址,不能让服务器真实IP泄漏,服务器前端加CDN中转(免费的CDN一般能防止5G左右的DDOS),如果资金充裕的话,可以购买高防的盾机,用于隐藏服务器真实IP,域名解析使用CDN的IP,所有解析的子域名都使用CDN的IP地址。此外,服务器上部署的其他域名也不能使用真实IP解析,全部都使用CDN来解析。
如何有效防御DDoS攻击?Linux系统可以通过 Linux 自带防火墙防范攻击
以 DDOS SYN Flood 攻击为例,我们可以通过系统自带的iptables 防火墙来进行防护。
第一种方式是禁止攻击来源IP,但是通常攻击源都不只一个IP,这种方式防护比较弱。
$ iptables -I INPUT -s 192.168.0.2 -p tcp -j REJECT
第二钟方式是 限制syn并发的次数以及同一个IP 新建连接数的数量。
#限制 syn 并发数为每秒 1 次$iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT#限制单个 IP 在 60 秒新建立的连接数为 10$iptables -I INPUT -p tcp --dport 80 --syn -m recent --name SYN_FLOOD --update --seconds 60 --hitcount 10 -j REJECT
但是如果攻击源特别多,其实还是很难阻挡。SYN Flood 会导致 SYN_RECV 状态的连接急剧增大,可以通过调整半连接容量大小,例如调整为 1024
$ sysctl -w net.ipv4.tcp_max_syn_backlog=1024net.ipv4.tcp_max_syn_backlog = 1024
另外,每个SYN_RECV 如果失败,内核还会自动重试,默认是 5次,可以修改为1次。
$ sysctl -w net.ipv4.tcp_synack_retries=1net.ipv4.tcp_synack_retries = 1
此外,TCP SYN Cookies 是一种专门防御 SYN Flood 攻击的方法,其原理是基于连接信息(包括源地址、源端口、目的地址、目的端口等)以及一个加密种子(如系统启动时间),计算出一个哈希值(SHA1),这个哈希值称为 cookie。
这个 cookie 就被用作序列号,来应答 SYN+ACK 包,并释放连接状态。当客户端发送完三次握手的最后一次 ACK 后,服务器就会再次计算这个哈希值,确认是上次返回的 SYN+ACK 的返回包,才会进入 TCP 的连接状态。因而,开启 SYN Cookies 后,就不需要维护半开连接状态了,进而也就没有了半连接数的限制。
注意开启 TCP syncookies 后,内核选项 net.ipv4.tcp_max_syn_backlog 也就无效了。可以通过下面的方式开启:
$ sysctl -w net.ipv4.tcp_syncookies=1net.ipv4.tcp_syncookies = 1
优化网络相关的内核参数
当遭遇攻击时,请求数会较大,你可能会看到大量处于TIME. WAIT状态的连接。
linux查看tcp的状态命令:
netstat -nat查看TCP各个状态的数量;
lsof -i:port可以检测到打开套接字的状况;
sar -n SOCK查看tcp创建的连接数;
tcpdump -iany tcp port 6000对tcp端口为6000的进行抓包。
[root@centos ~]# netstat -antActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 0.0.0.0:22 0.0.0.0:* LISTENtcp 0 0 127.0.0.1:25 0.0.0.0:* LISTENtcp 0 0 192.168.10.58:22 13.136.182.140:23107 TIME_WAITtcp 0 48 192.168.10.58:22 13.136.182.140:61282 TIME_WAITtcp6 0 0 :::22 :::* LISTENtcp6 0 0 ::1:25 :::* LISTEN
TCP状态及其描述:
状态描述
LISTEN等待来自远程TCP应用程序的请求
SYN_SENT发送连接请求后等待来自远程端点的确认。TCP第一次握手后客户端所处的状态
SYN-RECEIVED该端点已经接收到连接请求并发送确认。该端点正在等待最终确认。TCP第二次握手后服务端所处的状态
ESTABLISHED代表连接已经建立起来了。这是连接数据传输阶段的正常状态
FIN_WAIT_1等待来自远程TCP的终止连接请求或终止请求的确认
FIN_WAIT_2在此端点发送终止连接请求后,等待来自远程TCP的连接终止请求
CLOSE_WAIT该端点已经收到来自远程端点的关闭请求,此TCP正在等待本地应用程序的连接终止请求
CLOSING等待来自远程TCP的连接终止请求确认
LAST_ACK等待先前发送到远程TCP的连接终止请求的确认
TIME_WAIT等待足够的时间来确保远程TCP接收到其连接终止请求的确认
它们会占用大量内存和端口资源。这时,我们可以优化与TIME_ WAIT状态相关的内核选项,比如采取下面几种措施:
增大处于 TIME_WAIT 状态的连接数量 net.ipv4.tcp_max_tw_buckets,并增大连接跟踪表的大小net.netfilter.nf_conntrack_max。
减小 net.ipv4.tcp_fin_timeout和net.netfilter.nf_conntrack_tcp_timeout_time_wait,让系统尽快释放它们所占用的资源。
开启端口复用 net.ipv4.tcp_tw_reuse。这样,被TIME_WAIT状态占用的端口,还能用到新建的连接中。
增大本地端口的范围 net.ipv4.ip_local_port_range。这样就可以支持更多连接,提高整体的并发能力。
增加最大文件描述符的数量。你可以使用fs.nr_open和fs.file-max,分别增大进程和系统的最大文件描述符数;或在应用程序的systemd配置文件中,配置LimitNOFILE,设置应用程序的最大文件描述符数。
总之,只要服务器的真实IP不泄露,5G以下小流量DDOS的预防花不了多少钱,免费的CDN就可以应付得了。如果攻击流量超过10G,那么免费的CDN可能就顶不住了,需要购买一个高防的盾机来应付了,而服务器的真实IP同样需要隐藏。
关于如何防御ddos攻击以及ddos攻击有哪些方式就为大家介绍到这里,每一种方式ddos防御方式都有一定的优势和劣势,像软件防火墙防御能力虽然小,但价格低甚至有免费的,高防服务器防御能力高,信息安全性强,都是成本高,高防IP虽然防御能力和成本都不错,但源IP一旦暴露那高防IP将完全失效。现在发起DDOS攻击越来越简单化,成本也越来越低,导致企业被攻击的风险越来越大,企业可以根据自身的实际情况去选择适合自己的高防方式,保障企业服务器正常运行。