互联网服务器禁止国外IP访问
项目上服务器在互联网环境,开放了数据库3306端口,没几天就发现被
搞了,需要支付比特币? 幸运的是测试环境,没有生产数据。查了日志发现是
个国外IP搞的,于是就看了很多文章,确定了用ipset和iptables的白名单控制
input。
基本思路就是先创建IPSET国内IP地址表,之后防火墙阻断掉表内没有地址
的请求。
1. IPSET
yum install ipset
// 安装ipset
ipset create china hash:net hashsize 10000 maxelem 1000000
// 创建地址表
ipset add china 172.18.0.0/16
ipset list china
//测试添加一个段
接下来是获取国内IP地址段并导入:
vi ipset_china.sh
#!/bin/bash
rm -rf cn.zone
wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone
for i in `cat cn.zone`
do
ipset add china $i
done
~
ipset list china
// 查看是否导入成功
ipset list save
// 可能就是保存吧
2. iptables
service iptables status
vi /etc/sysconfig/iptables
*filter
:INPUT DROP [0:0]
// 默认禁止所有入局
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m set --match-set china src -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m set --match-set china src -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 172.16.0.0/16 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
service iptables restart
iptables -L
喝水不忘挖井人,挂个原文章连接:就在这