国別のIPアドレス制限(firewalld,ipset)
メールサーバが海外からのアクセスがうっとおしいので、日本だけの制限する。
いろいろググっていろんなパターンがあるのを参考にさせてもらいましたが、ゾーンを新しく作成してipsetを作ってファイルから読み込ませるのが自分的にすっきりしていたので、以下のような感じ。
#!/bin/sh set -x IPLIST=cidr.txt #ホワイトリストなどあれば touch ip.txt #echo 127.0.0.1 > ip.txt #echo xxx.xxx.xxx.xxx/24 >> ip.txt #cidr.txt あれば一応退避 if [ -e $IPLIST ]; then mv $IPLIST "${IPLIST}_${date}" fi # IPリストを取得する wget http://nami.jp/ipv4bycc/$IPLIST.gz gunzip -d $IPLIST.gz # JPだけ抜き出す sed -n 's/^JP\t//p' $IPLIST >> ip.txt # 新しいゾーンを作成 firewall-cmd --permanent --new-zone=JP firewall-cmd --permanent --zone=JP --set-target=ACCEPT # 制限したいサービスを作成したzoneにいれる firewall-cmd --permanent --zone=JP --add-service=smtp firewall-cmd --permanent --zone=JP --add-service=submission firewall-cmd --permanent --zone=JP --add-service=pop3 # ipsetを作成し、ファイルから取り込む # deleteはエラーがでますが作り直す用にいれてあります firewall-cmd --permanent --delete-ipset=jp_ip firewall-cmd --permanent --new-ipset=jp_ip --type=hash:net firewall-cmd --permanent --ipset=jp_ip --add-entries-from-file=ip.txt firewall-cmd --permanent --zone=JP --add-source=ipset:jp_ip # firewalldの再読み込み firewall-cmd --reload firewall-cmd --list-all-zone
<参考URL>
firewalldで国内IPのみ許可(システムエクスプレス株式会社)
カテゴリー: Linux
最近のコメント