シェルスクリプトを利用して、iptablesに特定のIPを拒否するスクリプト

2021-07-07

シェルスクリプトの引数に特定のIPを指定して、そのIPをF/Wに追加する

iptablesのF/Wで特定のIPアドレスを拒否(DROP)したい場合に、その都度コマンドを入力するのが面倒なので、シェルスクリプトで引数に拒否したいIPアドレスを指定して、そのIPアドレスをiptablesで拒否(DROP)するシェルスクリプトを作りました

以下のシェルスクリプトが、引数に指定したIPアドレスをiptablesで拒否するIPアドレスに追加するシェルスクリプトです。
途中で引数で指定したIPアドレスが間違っている可能性もあるので、「Enter」キーを押さないと先に進まないようにしています。途中で処理を中止したい場合は「Ctrl」+「C」で処理を止めることができます

$ vim iptables_drop.sh
#!/bin/bash

if [ $# -ge 1 ]; then
   IPADDR=$1
else
   echo "usage ./iptables_drop.sh [ip address]"
   exit
fi

echo "iptables -I INPUT -s $IPADDR -j DROP"
echo "iptablesに${IPADDR}を拒否する為に上記のコマンドを実行します"
echo "宜しければ「Enter」キーを押してください"
read Wait

iptables -I INPUT -s $IPADDR -j DROP
/etc/rc.d/init.d/iptables save

iptables -nL INPUT --line-numbers | head

上記のシェルスクリプトに実行権限を与えてシェルスクリプトが実行できるようしています。
シェルスクリプトを実行するには「ファイル名(iptables_drop.sh) 「拒否するIPアドレス」とすれば、指定したIPアドレスがiptablesで拒否されるようになります

$ sudo chmod +x iptables_drop.sh
$ sudo ./iptables_drop.sh 192.168.10.200