是否被攻击:(洪水攻击) 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