スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

iptablesの設定を試行錯誤

iptablesの設定で、俺は悩んでいました。

だって、ネット上に多々ある設定例って、どれもサーバーかルーターとして動作させる場合について書いているようで…iptablesの設定…のつもり。という記事で一応の設定はしてはいましたが、これが俺にとって適切だとは限らないわけで。

で、思ったんです。俺は難しく考えすぎなのではと。

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

上のコマンドで許可される入力パケットは、応答に関するものであるようですが。外部との接続はウェブ閲覧・メール送受信など完全にクライアント用途に限っていて、外部へのサーバープログラムを動かしていない以上、これだけ許可をしてしまえば問題なく使えてしまうのではと。



というわけで実践。

# iptables -F

ルールをクリアして、

# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT

これでこちらからのパケット送信は可能だが、パケット受信が不可能な状態となったはず。ウェブブラウザを起動して読み込みが一切できなくなっていることを確認する。

で、応答パケットの受信許可を。

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

これでウェブブラウザを起動してみる。問題なく読み込んでくれる。
自分宛にメールを送信してみる。送信はできたみたいだ。
メール受信をしてみる。さっき送ったメールが届く。

# apt-get update ; apt-get dist-upgrade -d

iceweasel3.0.6とその周辺パッケージが落ちてくる。

うわー何の問題もないじゃん。今までブログで間違った知識を流布していたんだ俺は。

# iptables-save > /etc/iptables.up.rules
# iptables-save > /etc/iptables.down.rules

このコマンドで今日の変更を保存して…



というわけで今日は良い勉強になりました、シャットダウンしましょ…

シャットダウンできない。portmap daemonなるものが正常に終了しないようだ。うーん、sidを使っているからまたバグのあるパッケージを掴まされたか?あれ?でも、さっきのアップグレードではこれに関連する更新はなかったぞ?一番最近システムの設定をいじったのは…

俺じゃん!

いつまで待ってもそこから進まない、応答を待っているんだろうか?もし俺がいじったシステム設定がいけないならば、その応答は永遠にこないことになる。仕方がないからリセットキーを押して再起動。設定やり直さなきゃ…

起動が途中で止まってしまう。画面の表示を見てみると、iptablesが起動して、portmap daemonが動き出したと思われるところで固まっている。しかも、リセットしてシングルユーザーモードで起動してもログインするところまで行かない。

俺、焦る。



あ、そういえばKnoppixがあるじゃないか!アレで起動して、ハードディスクをマウントして、設定ファイルを書き換えてやれば良いんだ。

knoppixのディスクを挿入してリセット。起動したらコンソールを立ち上げて、

$ su
# mount /dev/hdb1 /media/hdb1
# vi /media/hdb1/etc/iptables.up.rules

で、

# Generated by iptables-save v1.4.2 on (省略)
*filter
:INPUT DROP [25:1124]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1623:195825]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on (省略)

の、三行目のDROPをACCEPTに書き換え、六行目を削除し保存。

/media/hdb1/etc/iptables.down.rulesも同様に処理。



で、再起動。問題なく立ち上がる。つまり、さっきの設定がいけないということでした。

では、何が問題だったのか。今まで/etc/iptables.up.rulesと/etc/iptables.down.rulesに書いて許可していたのは、

-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

これだけ。だから、上三行をのどれかもしくは複数を削除したから問題が起きたのだ。

この中では、二行目がクサいかな…。最初にiptablesの設定をしたときに参考にしたページiptables・設定・ファイアウォール・セキュリティさんによると、自端末からの入力ってことだそうだが、確かにこれを取り消したらportmap daemonなるものの動きに影響が出そうな気もする。

しかし、これを許可すると、iptablesの設定ルールの表示コマンドiptables -Lを入力したときの返しが

target prot opt source destination
ACCEPT all -- anywhere anywhere

この様に、何もかもを許可しているように見えるんだよね…これ、大丈夫なのかしら。



まあ、でも試行錯誤だ。やってみて、これで全ての通信が許可されるなんていうバカな事態が生じたら他の方法を考えれば良い。

# iptables -F
# iptables -P INPUT DROP
# iptables -A INPUT -i lo -j ACCEPT

で、ウェブブラウザを立ち上げてみる。読み込まない。つまり、全ての通信を許可しているというわけではなさそうだ。

では、これに

# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

この許可を追加すれば何の問題も起こるまい。

# iptables-save > /etc/iptables.up.rules
# iptables-save > /etc/iptables.down.rules

保存して再起動。

普通に立ち上がってくれた。OSの動作はこれで問題がなさそうだから、あとはアプリケーションで何か問題があったときにその都度ポートを開けてあげれば良いか。



ふー、しかし、このiptablesというやつ、使いこなすにはやはり通信の知識が必要っぽいな。デスクトップ向けにちょうどいいテンプレートでもあれば良いんだけれど。

それと、現在OUTPUTが完全に開けっぴろげなんだけど、これはマルウェアを仕込まれた場合に困るよね…。GNU/Linuxシステムを使っている以上メールやUSBメモリから感染する心配は少ないし、iceweasel(Firefox)はNoscriptをかまし、rootは必要最小限に止め、通常使うユーザーにはsudo権限を与えていないけれど…。

…もしかして、Windowsファイアーウォールとかセキュリティソフトに騙されているだけで、適切に設定されているルーターさえあればパソコンにインストールするファイアーウォールなんかいらないんじゃ…

関連記事

テーマ : セキュリティ
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ざっぱー

Author:ざっぱー
(この画像について)

当ブログについて
メール
(このメールアドレスへの特定電子メール (迷惑メール) の送信はお断りします)

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。