《DDOS防御》比较实用 【网络安全】【网络防御】

发布时间 2023-09-20 11:32:18作者: 刘贵庆
是否被攻击:(洪水攻击)
1、网站打不开,登录失败
2、ping域名 不通
3、服务器连接不上。无法登录。
4、强制重启服务失败,启动不了。
 
CC类攻击、SYN类攻击
1、CPU占用极高
2、每秒接收大量包
 
攻击入口:
1、提交信息
2、网友评论
3、ajax中URL
4、信息验证功能
5、后台API接口
6、后台交互设备
 
防御措施:
1、增加带宽500M-1000M,越高越强越昂贵。
2、增强DNS安全,隐藏或匿名ip地址、并拦截可疑ip段。
3、转义所有对外api接口。
4、增强进出入站规则,关闭无需的端口。
5、增加集群地:最少有两地配置集群,最好支持多地多容灾。
6、增强CDN应用和负载均衡。
7、增加硬件设备服务器、路由器、交换机,主要是提高CPU和内存。
8、优化自身软件应用。
9、用DDOS清洗技术。用DDOS防御服务。增强防御协议。
10、查询并处理:可疑网络日志信息。
11、NAT(网络地址转换)也可以防御但是占用cup高,必要时可以考虑。
12、使用安全产品。高仿ip、高仿CDN服务等。
13、需要定时清洗流量。
注意:
1、DDOS防御服务。如:带宽100G-600G的DDOS高仿服务。价格二十到几百万/年。
2、只能防御%70-90%,剩余暂时无解。
3、若有效避免直接做静态页面,一般是单宣传、极少和用户交互的页面。
4、若经济有限,带宽和硬件不足,就无能为力了。做单机版吧。
 
 
Linux系统用netstat命令查看DDOS攻击具体命令用法如下:
redhat/centos判断服务器是否被ddos攻击可以使用下面这条命令
netstat  -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 
IP连接数高的就一般不正常,比如超过1百个的。
 
代码如下:netstat -na
显示所有连接到服务器的活跃的网络连接
代码如下:netstat -an | grep :80 | sort
只显示连接到80段口的活跃的网络连接,80是http端口,这对于web服务器非常有用,并且对结果排序.对于你从许多的连接中找出单个发动洪水攻击IP非常有用
代码如下:netstat -n -p|grep SYN_REC | wc -l
这个命令对于在服务器上找出活跃的SYNC_REC非常有用,数量应该很低,最好少于5.
在dos攻击和邮件炸弹,这个数字可能非常高.然而值通常依赖于系统,所以高的值可能平分给另外的服务器.
代码如下:netstat -n -p | grep SYN_REC | sort -u
列出所有包含的IP地址而不仅仅是计数.
代码如下:netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'
列出所有不同的IP地址节点发送SYN_REC的连接状态
代码如下:netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
使用netstat命令来计算每个IP地址对服务器的连接数量
代码如下:netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
列出使用tcp和udp连接到服务器的数目
代码如下: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: -f 1|sort|uniq -c|sort -nk 1
显示并且列出连接到80端口IP地址和连接数.80被用来作为HTTP
如何缓解ddos攻击
当你发现攻击你服务器的IP你可以使用下面的命令来关闭他们的连接:
代码如下:iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
请注意你必须用你使用netstat命令找到的IP数替换$IPADRESS
 
当你发现攻击你服务器的IP你可以使用下面的命令来关闭他们的连接:
iptables -A INPUT 1 -s $IPADRESS -j DROP/REJECT
请注意你必须用你使用netstat命令找到的IP数替换$IPADRESS
在完成以上的命令,使用下面的命令杀掉所有httpd连接,清除你的系统,然后重启httpd服务。
killall -KILL httpd service httpd start #For Red Hat systems /etc/init/d/apache2 restar
 
 
CC类攻击检测
第一条命令:
tcpdump -s0 -A -n -i any | grep -o -E '(GET|POST|HEAD) .*' 
正常的输出结果类似于这样
POST /ajax/validator.php HTTP/1.1 
第二种类型:SYN类攻击
A.CPU占用很高
 
B.网络连接状态:netstat –na,若观察到大量的SYN_RECEIVED的连接状态
 
SYN类攻击检测
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地址和其他连接数
1、利用netstat 工具来检测查看SYN连接
netstat -n -p -t |wc -l
防护SYN类攻击措施
防范也主要从两方面入手,一是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或2
 
sysctl -w net.ipv4.tcp_syn_retries=2 # 外向syn握手重试次数,默认4
通过下列命令查看。
[root@localhost nginx]# sysctl -a|grep syn
 
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 60
 
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 120
 
net.ipv4.tcp_max_syn_backlog = 1024
 
net.ipv4.tcp_syncookies = 1
 
net.ipv4.tcp_synack_retries = 5
 
net.ipv4.tcp_syn_retries = 5
 
fs.quota.syncs = 25
第三种类型:UDP类攻击
A.观察网卡状况 每秒接受大量的数据包
 
B.网络状态:netstat –na TCP信息正常
 
UDP类攻击检测
检测udp端口
 
检测端口是否打开:nc -zuv ip 端口
 
服务器监听端口:nc -l -u ip 端口(可以发送和接受信息)
 
客户端检测端口:nc -u ip 端口(可以发送和接受信息)
 
查看监听的tup端口:ss -ant
 
查看监听的udp端口:ss -anu
 
查看所有协议端口:ss -ano
 
参考:https://blog.csdn.net/qq_40907977/article/details/106897732