モチベーション
EC2 でサービスを立てたはいいが、海外からアクセスがあるのが気持ち悪い EC2 のセキュリティグループでフィルタをかけたいが、GEO IP とか国内フィルタとかできそうになかっったので、お腹の中でなんとかしようと思った cloudfront とか使うと GEO IP で制限できるんだろうか?調べてない
参考
こちらと
こちらを参考にさせていただきました。
EC2 instance
手順
script 作って firewalld に登録するのは参考の記事にあるので省略 とはいえ、firewalld は最初からはいってなかったのでインストールはした
sudo yum install -y firewalld sudo systemctl start firewalld
service で dns を公開しているのでそのサービスを追加した
firewall-cmd --permanent --zone=domestic --add-service=dns firewall-cmd --reload
定期的に読み直し?
必要かもしれないので作った
sudo -s cd /root/iptables mkdir logs cat > update_ip_filter.sh #!/bin/bash set -e cd $(dirname $0) LOGD="logs" LFILE="${LOGD}/update_ip_filter.log.$(date +%Y-%m)" function t-log(){ echo -n "$(date -Ins) " >> ${LFILE} } t-log echo "START" >> ${LFILE} t-log ./jpip_setup.sh >> ${LFILE} 2>&1 echo "jpip updated" t-log; echo "input jpip file to domestic rule" >> ${LFILE} firewall-cmd --permanent --ipset=domestic --add-entries-from-file=/root/iptables/jpip >> ${LFILE} 2>&1 t-log; echo "reread ipset" >> ${LFILE} firewall-cmd --permanent --zone=domestic --add-source=ipset:domestic >> ${LFILE} 2>&1 t-log; echo "reload firewall" >> ${LFILE} firewall-cmd --reload >> ${LFILE} 2>&1 t-log echo "FINISHED" >> ${LFILE} exit 0 # Ctrl + D で抜ける chmod u+x update_ip_filter.sh
テストをこのタイミングでやっておくといい
crontab への登録
crontab -l crontab -l > crontab.$(date +%F) crontab -e # update jpip list # run 00:01 1st each month 1 0 1 * * /root/iptables/update_ip_filter.sh 40 * * * * /root/iptables/update_ip_filter.sh # 保存 # 確認 crontab -l # 動作確認 tail -f /root/iptables/logs/*.log # 問題なければ不要箇所を削除 crontab -e # update jpip list # run 00:01 1st each month 1 0 1 * * /root/iptables/update_ip_filter.sh # 確認 crontab -l
感想
なんとか国内IPだけに出来た EC2 のセキュリティは allow any にしておいて、EC2 でルールを完結させることが出来て嬉しい 次は何をしようかな