封锁IP和解封IP

例14

需求:封锁一分钟内请求次数大于100 的IP,半个小时候,如果该IP请求数小于100,那么解除封锁。

#!/bin/bash
block_ip()
{
        t1=`date -d "-1 min" +%Y:%H:%M`
        log=/sbin/iptables/access1.log
        egrep '$t1:[0-9]+' $log >/tmp/lastmin.log
        awk '{print $1}' access.log | sort | uniq -c | sort -n |awk '$1>100 {print $2}' >/tmp/block_ip.txt
        n=`wc -l /tmp/block_ip.txt`
        if [ $n -gt 0 ]
        then
                for ip in `cat /tmp/block_ip.txt`
                do
                        iptables -I INPUT -s $ip -j REJECT
                done
        fi
}

unblock_ip()
{
        iptables -nvL INPUT | sed '1,2d' | awk '{print $8}'>/tmp/good_ip.txt
        n1=`wc -l /tmp/good_ip.txt`
        if [ ! $n1 -eq 0 ]
        then
                for i in `cat /tmp/good_ip.txt`
                do
                        iptables -D INPUT -s $ip -j REJECT
                done
        fi
        iptables -Z
}

t2=`date +%M`
if [ $t2 == "00" ] || [ $t2 == "30" ]
then
        unblock_ip
        block_ip
else
        block_ip
fi

知识点:iptables -I INPUT 插入一条记录到INPUT链;iptables -D INPUT 删除INPUT链的一条记录;iptables -Z清空pkts和bytes

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
封锁IP通常是通过防火墙或者网络设备来实现的,可以使用Python的socket库和iptables(Linux防火墙工具)来实现封锁IP的功能。 首先,你需要安装iptables: ``` sudo apt-get install iptables ``` 然后,使用socket库来监听网络连接,当有恶意IP连接时,使用iptables封锁IP: ```python import socket import os # 监听的IP和端口 HOST = '0.0.0.0' PORT = 8080 # 创建一个TCP socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 将socket绑定到指定的IP和端口 s.bind((HOST, PORT)) # 开始监听 s.listen(1) print('Listening on {}:{}'.format(HOST, PORT)) while True: # 等待连接 conn, addr = s.accept() print('Connected by', addr) # 获取远程IP地址 remote_ip = addr[0] # 检查IP是否在黑名单中 if remote_ip in ['1.2.3.4', '5.6.7.8']: print('Blocked IP:', remote_ip) os.system('iptables -A INPUT -s {} -j DROP'.format(remote_ip)) # 与客户端通信 while True: data = conn.recv(1024) if not data: break conn.sendall(data) # 关闭连接 conn.close() ``` 在上面的代码中,我们监听了指定的IP和端口,并且当有连接时,获取远程IP地址并检查是否在黑名单中,如果是,则使用iptables封锁IP。注意,你需要使用sudo运行Python脚本才能执行iptables命令。 当然,这只是一个简单的示例,实际情况中,你可能需要更复杂的逻辑来判断是否需要封锁IP。而且,封锁IP并不是解决网络安全问题的万能方法,还需要其他的安全措施来保护你的网络。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值