海运的博客

用iptables自动封IP,防SSH被暴力破解

发布时间:April 14, 2012 // 分类:Shell,网络安全 // No Comments

此脚本用于分析统计secure日记文件,对ssh登录错误次数较多的IP用iptables封掉。

#!/bin/bash
#Created by https://www.haiyun.me
num=10 #上限
for i in `awk '/Failed/{print $(NF-3)}' /var/log/secure|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
do
       iptables -I INPUT -p tcp -s $i --dport 22 -j DROP
done

加入crontab计划任务

crontab -e
* */5 * * * sh /path/file.sh #5小时执行一次

分析nginx日记用iptables封IP防CC

发布时间:April 14, 2012 // 分类:Shell,网络安全 // 3 Comments

此方法用于被动分析nginx日记找出请求数较大的IP,并用iptables封掉,如需主动限制,可参考通过nginx限制ip连接数防CC

#!/bin/bash
#Created by https://www.haiyun.me
num=100 #上限
cd /home/wwwlogs
for i in `tail access.log -n 1000|awk '{print $1}'|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
#读取最新1000条记录,如果单IP超过100条就封掉。
do
      iptables -I INPUT -p tcp -s $i --dport 80 -j DROP
done

加入crontab计划任务

crontab -e
*/5 * * * * sh /path/file.sh #5分钟执行一次

用iptables自动封连接数较大的IP防CC

发布时间:April 14, 2012 // 分类:Shell,网络安全 // No Comments

此方法用于被动统计IP连接数,对连接数较大的IP用iptables封掉,如需主动限制,可参考通过iptables限制ip连接数防CC
Shell脚本如下:

#!/bin/bash
#Created by https://www.haiyun.me
num=100 #上限
list=`netstat -an |grep ^tcp.*:80|egrep -v 'LISTEN|127.0.0.1'|awk -F"[ ]+|[:]" '{print $6}'|sort|uniq -c|sort -rn|awk '{if ($1>$num){print $2}}'`
for i in $list
do
      iptables -I INPUT -s $i --dport 80 -j DROP
done

加入crontab计划任务

crontab -e
*/5 * * * * sh /path/file.sh #5分钟执行一次

Iptables限制同一IP连接数防CC/DDOS

发布时间:March 24, 2012 // 分类:网络安全 // No Comments

1.限制与80端口连接的IP最大连接数为10,可自定义修改。

iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

2.使用recent模块限制同IP时间内新请求连接数,recent更多功能请参考:Iptables模块recent应用

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'DDOS:' --log-ip-options
#60秒10个新连接,超过记录日志。
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP
#60秒10个新连接,超过丢弃数据包。
iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --set -j ACCEPT
#范围内允许通过。

Centos/Linux服务器防火墙/iptables简单设置。

发布时间:February 29, 2012 // 分类:Iptables // No Comments

#/bin/bash
sshport=`netstat -lnp|awk -F"[ ]+|[:]" '/sshd/{print$5}'`
iptables -F #清除自带规则
iptables -X
iptables -P INPUT DROP #进入本机数据包默认拒绝
iptables -P OUTPUT ACCEPT #本起外出数据包允许
iptables -A INPUT -i lo -j ACCEPT #允许本地环回
iptables -A INPUT -m state --state INVALID  -j LOG --log-prefix "INVALID" --log-ip-options
#记录无效的数据包并丢弃
iptables -A INPUT -m state --state INVALID  -j  DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
#允许已建立连接与出相关的数据包进入
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT 
#允许目标端口为80的新连接进入
iptables -A INPUT -m state --state NEW -p tcp --dport $sshdport -j ACCEPT
#允许目标端口为22的新连接进入
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/s --limit-burst 20 -j ACCEPT 
#允许ping回应,每秒5个,最多20个。
service iptables save #保存规则

注意:勿一条条执行,最好保存为脚本并运行,避免将自己关外面,也可设置定时任务5分钟后关闭Iptables防火墙,防止万一。

分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...