ipset で安心安全サーバライフ
日頃サーバをいじっていると、ちょっと気を抜いただけで中国南北朝鮮ロシアあたりからアタックを試みられます。
もう面倒くさいので ipset でブロックしましょう。
ついでにsshは日本だけ許可しましょう。
yum install ipset ipset-service
ipdenyから国別IPを取得してきて、リストを作成するシェルスクリプトを作ります。
#!/bin/sh BLACK_COUNTRIES=("cn" "kr" "kp" "ru") ipset create -exist BLACKLIST hash:net ipset flush BLACKLIST for COUNTRY in ${BLACK_COUNTRIES[@]}; do echo ${COUNTRY} # Download Country ip address list(ipv4) if [ -s ${COUNTRY}.zone ]; then mv ${COUNTRY}.zone ${COUNTRY}.zone.old fi wget http://www.ipdeny.com/ipblocks/data/countries/${COUNTRY}.zone # Register specific country ip address to BLACKLIST group while read ADDRESS; do echo "ipset add BLACKLIST $ADDRESS" # FOR DEBUG ipset add BLACKLIST $ADDRESS done < ${COUNTRY}.zone done
同様にjpのWHITELISTを作成します。
設定を保存します。
ipset save WHITELIST > /etc/sysconfig/ipset ipset save BLACKLIST >> /etc/sysconfig/ipset
※保存先は /usr/libexec/ipset/ipset.start-stop の IPSET_DATA 参照
サービスに登録します。
systemctl enable ipset
リストをフラッシュしてみて・・・
ipset flush WHITELIST ipset flush BLACKLIST
restart して設定がロードされていればOK
systemctl restart ipset
こんなふうに使います。
/sbin/iptables -A INPUT --match-set BLACKLIST src -j DROP /sbin/iptables -A INPUT -p tcp -m state --state NEW --destination-port 22 -m set --match-set WHITELIST src -j ACCEPT