スポンサーサイト

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

iptablesの設定…のつもり。

とりあえずiptablesの現在の設定を見てみる。

# iptables -L

これでiptablesのテーブル"filter"の設定の内容が見れる。「テーブル」という概念が分からないが、作業の場みたいな意味だろうか?これ以外に"nat"テーブルと"mangle"テーブルなるものがあるそうだが、全く意味がわからないのでとりあえず無視。

先ほどのコマンドの返答は、

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

というものだった。Chain INPUTというのはこのパソコンに入ってくるパケットに対するフィルターで、FORWARDはこのパソコンを経由するパケット、OUTPUTはこのパソコンで生成されて出ていくパケット用だそうだ。policyというのは原則だそうで、ACCEPTだと設定する例外を除いて全て許可、DROPだと破棄となる。

FORWARDはルーターとして動作させるときに使うものらしい。今回はパソコンであってルーターではないのでここにくるパケットは全て破棄してしまって良いだろう。

# iptables -P FORWARD DROP

-Pオプションはpolicyに対する命令を示し、それに続いてPolicyを設定するchainを指定、設定するpolicyを指定(全て破棄したいのでDROP)。

さらに、インターネットからの必要のない接続も全て拒絶したいので

# iptables -P INPUT DROP

これでこのパソコンは受信したパケットを全て破棄するようになる=全てのポートが閉じた状態となる。ただし、こうしてしまうと必要なものまで受信できなくなってしまう(この時点でwebブラウザを立ち上げネットに接続しようとすると、読み込もうとはしているものの何も読み込めない。)ので必要なポートを開ける。

ひとまずルール(この場合原則に対する例外になる)をクリアする。

# iptables -F

で、許可するべきなのはiptables・設定・ファイアウォール・セキュリティによると、ネットワークが継っているか否かを調べるping、自端末からの入力、Web、ファイル転送に使われるFTP、メール受信に使われるPOP、メール送信のsmtp、リモートコンピュータとの通信用のssh、ローカルの他端末からWebminでの接続、TCPの接続開始と応答、FTPデータなど、だそう。

ただし、リモートコンピュータで動かすことも動かされることも想定していないので、sshはいらない。Webminというのは聞きなれないけど、何だろうと思ってググったら、ブラウザ上から設定にアクセスできる便利なツールだそうですが…Debianには含まれていないようなので無視。



では、ここの指示に従って打ち込んでいくか。

# iptables -A INPUT -p icmp -j ACCEPT
# iptables -A INPUT -i lo -j ACCEPT

まずここではpingと自端末からの入力を許可した。

コマンドの解説(# iptables --help)によると、iptablesでiptablesプログラムを呼び出し、-A INPUTでChain INPUTの指定(tableを指定していないのでfilterテーブルになる)、-pオプションでプロトコル(訳すと通信規約、通信の種類みたいなものか?)の指定、-iオプションでネットワークインターフェース名の指定、-jオプションでこの入力をどう扱うか指定。

上段は、pingはicmpというプロトコルで送られてくるらしいので許可。下段はlo(これが自端末を表すのだろうか)からの入力を許可。

# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# iptables -A INPUT -p tcp --dport 110 -j ACCEPT
# iptables -A INPUT -p tcp --dport 25 -j ACCEPT

-pオプションにtcpを指定、tcpプロトコルで--dportに指定したポートに届くパケットを許可。通常webは80番、FTPは21番、popは110番、smtpは25番である。

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

このコマンドが何を表すのかいまいちよくわからないが、とりあえず先ほどのページには「TCPの接続開始と応答、FTPデータなど」と書いてある。これがないとTCPプロトコルが一切認められないということだろうか?実際にこのコマンドを入力しておかないと一切接続出来なかったので。

で、あとgaimとBitTorrentクライアントソフトが使うポートを調べて上の例に従ってポートを開けてやる。それぞれのアプリケーションが使うポートの番号はそれぞれの設定メニューで調べられるはず。



で、とりあえずINPUTの設定は完了。これでうちのパソコンが必要以上の命令を受け取る可能性を減らすことが出来たわけだけど…。しかし、もしトロイの木馬なんかを仕込まれたときのために、OUTPUTも制限しておきたいよね。例えば、Windows用のファイアーウォールで無料で使えることで名高いZoneAlarmなんかは、通信をするアプリケーションごとに制限をかけることが出来るんだよね。通信をさせたいプログラムは限られるので、指定した以外のプログラムによる通信を遮断できたらいいなって…。

でもその設定の仕方が分からない。ので後回し。



せっかく時間をかけてコマンド手入力までしたっていうのに、実はこのルール設定は再起動すると失われてしまうんだって。これを保存するためには、と調べてみるとまたしてもVineの話ばかり。そのコマンドをDebianで打ち込んでも「そんなコマンドはない」と言われるだけ。もうVineはいいだろ…メジャーなディストロはほとんど多言語環境が整備されていますよ。Software/iptables - Debian GNU/Linux スレッドテンプレによると…

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

そして、/etc/network/interfacesをテキストエディタで開いて

pre-up iptables-restore < /etc/iptables.up.rules
post-down iptables-restore < /etc/iptables.down.rules

と追記。

これが何を意味しているのかいまいちよく分からないけど、一応これをしたあと再起動するとちゃんとルールが残っていたのでまあこれでいいんでしょう。



追記

ブログのタイトルをいじりました。

さらに追記

たぶんこれがデスクトップ向けに最良の設定というわけではないと思い、試行錯誤しています。続きはこちら

関連記事

テーマ : UNIX/Linux
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

ざっぱー

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

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

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