服务器的攻击分为四类,cc攻击、syn攻击、udp攻击、tcp洪水攻击。那么当被攻击时会出现哪些症状呢,我们是如何来判断服务器是否被攻击,属于哪种攻击类型?
CC攻击是DDoS(分布式拒绝服务)的一种,这种一种比DDOS流氓行为更具有技术含量的一种攻击方式,CC攻击完全模拟正常访问行为,没有虚假IP,也没有大的流量异常,但一样会造成您的服务器无法正常连接,一条ADSL的普通用户发起的CC攻击就可以干掉一台高性能的服务器。
服务器呗CC攻击时,会出现80端口关闭的现象,即出现丢包和高延迟的现象, 因为80端口被大量的垃圾数据堵塞导致正常的连接被中止。可以通过在CMD命令窗口输入命令 netstat -an 来查看,如果看到类似如下大量显示雷同的连接记录基本就可以被CC攻击了:
……
TCP 192.168.1.3:80 192.168.1.6:2205 SYN_RECEIVED 4
A.网站出现service unavailable提示
B.CPU占用率很高
C.网络连接状态:netstat –na,若观察到
D.外部无法打开网站,软重启后短期内恢复正常,几分钟后又无法访问。
第一条命令:
tcpdump -s0 -A -n -i any | grep -o -E '(GET|POST|HEAD) .*'
正常的输出结果类似于这样
POST /ajax/validator.php HTTP/1.1
A.CPU占用很高
B.网络连接状态:netstat –na,若观察到
netstat -na 显示所有活动的网络连接netstat -an | grep :80 | sort 显示所有80端口的网络连接并排序。80端口为http端口netstat -n -p | grep SYN_REC | wc -l 查看当前有多少活动的SYNC_REC连接,最好值小于5.netstat -n -p | grep SYN_REC | sort -u 列出所有连接过的IP地址netstat -n -p | grep SYN_REC | awk ‘{print $5}’ | awk -F: ‘{print $1}’ 列出所有发送SYN_REC连接节点的IP地址netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n使用netstat命令计算每个主机连接到本机的连接数netstat -anp | grep ‘tcp|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n 列出所有连接到本机的udp或者tcp连接的数量netstat -ntu | grep ESTAB | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr 检查ESTABLISHED 连接并且列出每个IP地址的连接数量Netstat -plan|grep :80| awk {‘print $5’} | cut -d: -f1 | sort | uniq -c | sort -nk 1 列出所有连接到本机80端口的IP地址和其他连接数
netstat -n -p -t |wc -l
防范也主要从两方面入手,一是sysctl的自身的关于syn方面的配置,二是防火墙策略上。
sysctl -w net.ipv4.tcp_syncookies=1 # tcp syncookie,默认关闭sysctl -w net.ipv4.tcp_max_syn_backlog=1280 # syn队列,默认1024,》 1280可能工作不稳定,需要修改内核源码参数sysctl -w net.ipv4.tcp_synack_retries=2 # syn-ack握手状态重试次数,默认5,遭受syn-flood攻击时改为1或2sysctl -w net.ipv4.tcp_syn_retries=2 # 外向syn握手重试次数,默认4
通过下列命令查看。
[root@localhost nginx]# sysctl -a|grep synnet.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120net.ipv4.tcp_max_syn_backlog = 1024net.ipv4.tcp_syncookies = 1net.ipv4.tcp_synack_retries = 5net.ipv4.tcp_syn_retries = 5fs.quota.syncs = 25
如未受到攻击,上面的参数不建议修改。据说有增加主机的不稳定性的风险。
A.观察网卡状况 每秒接受大量的数据包
B.网络状态:netstat –na TCP信息正常
检测udp端口
检测端口是否打开:nc -zuv ip 端口服务器监听端口:nc -l -u ip 端口(可以发送和接受信息)客户端检测端口:nc -u ip 端口(可以发送和接受信息)查看监听的tup端口:ss -ant查看监听的udp端口:ss -anu查看所有协议端口:ss -ano
A.CPU占用很高
B.netstat –na,若观察到大量的
查看网络连接总数# netstat -an |wc -l查看某个特定ip的连接数# netstat -an |grep 8.8.8.8 |wc -l查看连接数等待time_wait状态连接数# netstat -an |grep TIME_WAIT|wc -l查看建立稳定连接数量# netstat -an |grep ESTABLISHED |wc -l查看不同状态的连接数# netstat -an | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'查看每个ip跟服务器建立的连接数# netstat -nat|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn(PS:正则解析:显示第5列,-F : 以:分割,显示列,sort 排序,uniq -c统计排序过程中的重复行,sort -rn 按纯数字进行逆序排序)查看每个ip建立的ESTABLISHED/TIME_OUT状态的连接数# netstat -nat|grep ESTABLISHED|awk '{print$5}'|awk -F : '{print$1}'|sort|uniq -c|sort -rn
root:~# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n1 114.226.9.xx1 174.129.237.xx1 58.60.118.xx1 Address1 servers)2 118.26.131.xx3 123.125.1.x
每个IP几个、十几个或几十个连接数都还算比较正常,如果像上面成百上千肯定就不正常了。
上述所讲到的判断分析,让我们能准确的判断存在的问题是什么,怎么第一时间来解决问题。让我们能更好的维护我们的网站安全。
# tail -f /var/log/messagesApr 18 11:21:56 web5 kernel: possible SYN flooding on port 80. Sending cookies.
检查连接数增多,并且SYN_RECV 连接特别多:
检查连接数增多,并且SYN_RECV 连接特别多:# netstat -n awk '/^tcp/ { S[$NF]} END {for(a in S) print a, S[a]}'TIME_WAIT 16855CLOSE_WAIT 21SYN_SENT 99FIN_WAIT1 229
根据经验,正常时检查连接数如下:
# netstat -n awk '/^tcp/ { S[$NF]} END {for(a in S) print a, S[a]}'
根据netstat查看到的对方IP特征:
# netstat -na grep SYN_RECV more
以下配置,第一段参数是最重要的,第二段参数是辅助的,其余参数是其他作用的:
# vi /etc/sysctl.confnet.ipv4.tcp_synack_retries=0#半连接队列长度net.ipv4.tcp_max_syn_backlog=200000#系统允许的文件句柄的最大数目,因为连接需要占用文件句柄fs.file-max=819200#用来应对突发的大并发connect 请求net.core.somaxconn=65536#最大的TCP 数据接收缓冲(字节)net.core.rmem_max=1024123000#最大的TCP 数据发送缓冲(字节)net.core.wmem_max=16777216#网络设备接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目net.core.netdev_max_backlog=165536#本机主动连接其他机器时的端口分配范围net.ipv4.ip_local_port_range=1000065535
# sysctl -p注意,以下参数面对外网时,不要打开。因为副作用很明显,具体原因请google,如果已打开请显式改为0,然后执行sysctl -p关闭。因为经过试验,大量TIME_WAIT状态的连接对系统没太大影响:#当出现 半连接 队列溢出时向对方发送syncookies,调大 半连接 队列后没必要net.ipv4.tcp_syncookies=0#TIME_WAIT状态的连接重用功能net.ipv4.tcp_tw_reuse=0#时间戳选项,与前面net.ipv4.tcp_tw_reuse参数配合net.ipv4.tcp_timestamps=0#TIME_WAIT状态的连接回收功能net.ipv4.tcp_tw_recycle=0
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
tcp_max_syn_backlog是SYN队列的长度,tcp_syncookies是一个开关,是否打开SYN Cookie 功能,该功能可以防止部分SYN攻击。tcp_synack_retries和tcp_syn_retries定义SYN 的重试次数。加大SYN队列长度可以容纳更多等待连接的网络连接数,打开SYN Cookie功能可以阻止部分 SYN攻击,降低重试次数也有一定效果。
增加SYN队列长度到2048:
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
打开SYN COOKIE功能:
sysctl -w net.ipv4.tcp_syncookies=1
降低重试次数:
sysctl -w net.ipv4.tcp_synack_retries=3sysctl -w net.ipv4.tcp_syn_retries=3
为了系统重启动时保持上述配置,可将上述命令加入到/etc/rc.d/rc.local文件中。
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人写作
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT--limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改
防止各种端口扫描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水攻击(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
查询到time_wait连接数过多情况下,调整内核参数:/etc/sysctl.conf
# vim /etc/sysctl.conf添加以下配置文件:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 300让配置生效# /sbin/sysctl -p参数详解:1.net.ipv4.tcp_syncookies = 1 表示开启 syn cookies 。当出现 syn 等待队列溢出时,启用 cookies 来处理,可防范少量 syn ***,默认为 0 ,表示关闭; 2.net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将 time-wait sockets 重新用于新的 tcp 连接,默认为 0 ,表示关闭;3.net.ipv4.tcp_tw_recycle = 1 表示开启 tcp 连接中 time-wait sockets 的快速回收,默认为 0 ,表示关闭。4.net.ipv4.tcp_fin_timeout 修改系靳默认的 timeout 时间
如果以上配置调优后性能还不理想,可继续修改一下配置:
# vim /etc/sysctl.confnet.ipv4.tcp_keepalive_time = 1200 #表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。net.ipv4.ip_local_port_range = 1024 65000 #表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。net.ipv4.tcp_max_syn_backlog = 8192 #表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。net.ipv4.tcp_max_tw_buckets = 5000 #表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于 Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。
怎么解决请求结束后依然存在大量ESTABLISHED没有被释放
初步推断是tomcat服务器回收session时出了问题,这个一般都跟服务器的Timeout设置有联系。
Copy<Connector />*****
检查配置得出20000毫秒的时候acceptCount=”100” ,明显不合理,最大连接数也太小了吧。
所以进一步优化:
改为 改为
**1. 过滤不必要的服务和端口:**可以使用Inexpress、Express、Forwarding等工具来过滤不必要的服务和端口,即在路由器上过滤假IP。比如Cisco公司的CEF(Cisco Express Forwarding)可以针对封包Source IP和Routing Table做比较,并加以过滤。只开放服务端口成为目前很多服务器的流行做法,例如WWW服务器那么只开放80而将其他所有端口关闭或在防火墙上做阻止策略。 **2. 异常流量的清洗过滤:**通过DDOS硬件防火墙对异常流量的清洗过滤,通过数据包的规则过滤、数据流指纹检测过滤、及数据包内容定制过滤等顶尖技术能准确判断外来访问流量是否正常,进一步将异常流量禁止过滤。单台负载每秒可防御800-927万个syn攻击包。
**3. 分布式集群防御:**这是目前网络安全界防御大规模DDOS攻击的最有效办法。分布式集群防御的特点是在每个节点服务器配置多个IP地址(负载均衡),并且每个节点能承受不低于10G的DDOS攻击,如一个节点受攻击无法提供服务,系统将会根据优先级设置自动切换另一个节点,并将攻击者的数据包全部返回发送点,使攻击源成为瘫痪状态,从更为深度的安全防护角度去影响企业的安全执行决策。
**4. 高防智能DNS解析:**高智能DNS解析系统与DDOS防御系统的完美结合,为企业提供对抗新兴安全威胁的超级检测功能。它颠覆了传统一个域名对应一个镜像的做法,智能根据用户的上网路线将DNS解析请求解析到用户所属网络的服务器。同时智能DNS解析系统还有宕机检测功能,随时可将瘫痪的服务器IP智能更换成正常服务器IP,为企业的网络保持一个永不宕机的服务状态。
参考链接 :
https://www.cnblogs.com/mydomain/archive/2013/05/14/3079002.html
https://www.cnblogs.com/hello-sky/p/11598954.html
五种简单CC攻击解决方案 http://www.anxinidc.com/faq/anquan/126.html
linux检测及防止DDOS攻击的技巧(2) http://www.xitongzhijia.net/xtjc/20150608/50328_2.html
TCP洪水攻击(DDOS)诊断与防护http://blog.sina.com.cn/s/blog_6f82cb740101j7z0.html
服务器被ddos攻击?分析如何防止DDOS攻击? :https://blog.csdn.net/weixin_34407348/article/details/86013716?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-10.nonecase
DDos攻击的常见方法及防御方法 https://www.cnblogs.com/larry-luo/p/10208074.html
据The Hacker News 12月24日消息,Apple 最近修复了 macOS 操作系统中的一个安全漏洞,攻击者可能会利用该漏洞“轻而易举地”绕过“无数 macOS 的基本安全机制”并运行任意代码。安全研究员Patrick Wardle在上周的一系列推...
漏洞恶意软件服务器安全macOS
美国电信网络遭遇DDOS攻击 全国网络几乎瘫痪!网络 电话 短信均已无法正常使用。至发稿时,还没有黑客组织声称对这个事件负责。这也不是第一次出现大规模的ddos攻击,美国断网的事件。2016全球首次大规模物联网攻击,导致美国东海岸大面积断网,严重影响当地人民生...
服务器安全网络安全黑客技术
随着国家政策、备案审查的越来越严格。现在许多站长朋友都特别喜欢使用香港空间。因为香港空间的话,不需要备案、网络质量方面和国内空间相差不大,不存在南北互通问题。但是现在IDC商那么多的选择下。香港空间哪家好?怎么选择香港空间呢?下面,根据现在主流香港主机具有的优...
虚拟主机香港空间