Glide Note

glidenote's blog

DynamicDNSを利用し、iptablesとhosts.allowのルールに自宅IPを自動で追加する

最近急に自宅のIPがころころ変わるようになって、さくらのVPSでhosts.allowとiptablesで接続元のIP制限をかけてると ssh接続出来なくなるので自動でルールが変更になるように対応。環境はCentOS 5.7です

やりたいこと

  • iptablesとhosts.allowの両方で接続元のIPを制限したい
  • 自宅に割り当てられているIPが変更になったら自動でルールを変更

前提条件

私はダイナミックDNSを利用して、自宅IPとドメインを紐付けしているので、ISPから割り当てられているIPが変わっても、 ダイナミックDNSで利用しているドメインは変わりません。以前書いているので、参考にしてください。
そのほかにsshd.configやiptablesの設定は完了済みです。

/etc/hosts.allow の動的変更

@tnmtに教えてもらった、hosts.allowのinclude設定を利用して、自宅IPを動的に登録

/etc/hosts.allow にinclude設定

hosts.allowを下記のように設定。hosts.allowを直接変更するのではなく、includeしているファイルに変更をかけます。

cronに下記のように設定。hostコマンドで自宅IPを割り出し、ファイルに書き込み。 hogehoge.comは自分のダイナミックDNSで利用しているドメインを指定

1
00 * * * * /usr/bin/host hogehoge.com | awk '{print $4}' > /etc/hosts.allow.d/my_home_ip

iptablesのルールを動的に追加

下記のようなスクリプトを用意し、これもcronに追加

cronの設定は下記のような感じ

1
2
@reboot    /bin/sh /root/bin/allow_ip.sh
00 * * * * /bin/sh /root/bin/allow_ip.sh

これで自宅IPが変わっても、iptablesとhosts.allowで許可されるようになりました。

参考

Comments