SSHの環境変数を利用してiptablesのポートを解放する

安いVPSなどを借りて、普段はSSHだけ解放しといて、SSH以外のポートは自宅(社内)からのみアクセスできるようにしたいと思いました。

アクセス元のIPが固定であれば特に問題ないのですが、動的に割り当てられる環境だと毎回変わってしまうので、SSHの環境変数を利用して、SSHログイン後に実行するとフィルターが解除されるような次のスクリプトを作ってみました。

#!/bin/bash
IP=`env | grep SSH_CLIENT | sed ‘s/SSH_CLIENT=\([0-9\.]*\) .*/\1/’`
sudo sed -i’.old’ -e “/–dport 80/c\-A INPUT -m state –state NEW -m tcp -p tcp -s ${IP} –dport 80 -j ACCEPT” /etc/sysconfig/iptables
sudo service iptables restart

SSHでログインした後で実行すると、環境変数を参照して「–dport 80」の記述をログイン元のIPからのみHTTPを解放するように変更します。そのため、事前に「–dport 80」に関する何らかの記述がないとエラーになるかもしれません。

その他のポートも解放したければsedの行を増せば良いと思います。

コメントを残す

メールアドレスが公開されることはありません。