关于iptables封禁国外IP方法

0、背景说明

个人买的腾讯云或者阿里云的机器,部署了一些应用服务,“黑客”可能会恶意进行攻击,有的是使用国内IP,有的是模拟国外的IP。
本文主要针对封禁国外IP的方法。

1、安装依赖包

yum -y install iptables
yum -y install ipset

2、添加集合

ipset create china hash:net maxelem 65536

3、编写脚本

vim /home/china.sh

内容如下:

#!/usr/bin/env bash
##下载国内Ip网段并输入到~/cn.zone文件里面,可自定义(如不能访问该网址可自行百度找资源)。
wget --no-check-certificate -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /home/china.txt
##清空china集合
ipset flush china

ip=$(cat /home/china.txt)
for i in $ip
do
##批量将国内Ip网段添加进china集合。
ipset add china $i
done

4、给脚本赋予可执行权限

chmod +x /home/china.sh

5、执行脚本

sh /home/china.sh

等待一会儿,可以查看china.txt 文件中包含国内的IP段, cat /home/china.txt

6、检查是否将国内ip网段添加进china集合当中

ipset list china

7、设置crontab定时任务

例如:每天零点更新一次IP集合
crontab -e

添加一行定时任务,如下:

0 0 * * * /home/china.sh

8、配置iptables限制访问

添加iptables规则,如下:

iptables -A INPUT -m set --match-set china src -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

9、查询和外网交互的ip信息

iftop

你可能感兴趣的:(ip)