E-MOBILE + iptables

さっそくE-MOBILEUbuntuで使っているのですが、よくよく考えると使っている端末にはグローバルIPアドレスが割り振られているんですよね。ということでパケットフィルタリングくらいはしておこうという話。

  • ppp0にグローバルIPアドレスが振られている
  • 他にもeth0とかvmnet1とかのインターフェースがある
  • ppp0の通信以外はフィルタリングしたくない

最初はFirestarterを使ってたんですが、vmnet1とかeth0とかの通信もフィルタリングしちゃう*1ので使うのやめました。他によさそうなGUIツールも無いようなので自分でスクリプト書くことに。

#!/bin/sh
IPTABLES='/sbin/iptables'

# Initialize
$IPTABLES -F

# Default rule
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD DROP

# ppp0 rule
$IPTABLES -A INPUT -p udp -i ppp0 --dport 1024:65535 -s 0.0.0.0/0 --sport 53 -j ACCEPT
$IPTABLES -A INPUT -p tcp -i ppp0 --dport 1024:65535 -s 0.0.0.0/0 --sport 53 -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -i ppp0 -j DROP

こんな感じで。DNSサーバのアドレスを/etc/resolv.confから引っ張ってきてスクリプト内で指定してやればいいんだろうけどめんどくさいのでこのまま。これを/etc/ppp/ip-up.d/の中に実行権限を付けて置いておくとppp接続時に実行してもらえるようです。スクリプト名は数字+スクリプト*2という感じで置くみたいです。

ppp切断時にiptablesのルールをクリアしたいので下のスクリプトを用意しました。

#!/bin/sh
IPTABLES='/sbin/iptables'

# Initialize
$IPTABLES -F

$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT

これを/etc/ppp/ip-down.d/の中に置いてやるとppp切断時に実行されます。

これをやってからppp接続後に他のPCからping打ってみたらちゃんとパケットを弾いてたのでうまく機能しているようです。たまにSSHサーバ等を起動させることがあるので、E-MOBILE経由での不正侵入防止に役立つかな。

*1:設定のやりかたがよくわからなかった

*2:1iptablesとか1firewallとか