iptablesの勉強をしよう part1

人様の書いたサンプルを全く理解せずに使うのもどうかなと思ったので、iptablesについて勉強することにしました。ちなみに、私はiptablesについて無知ですので基礎の基礎から学んでいきます。勉強しながら書きますので、おそらく間違ったことを書いてしまうと思います。間違いを発見した方はやんわり指摘していただけるとありがたいです。

そもそも、iptablesとは何かといいますと、パケットの制御を行うためのプログラムです*1。パケットの制御を行うことで、知らない人からのアクセスを弾いたり、特定のIPアドレスからのアクセスだけを許可するといったことができるようになります。

iptablesにはテーブルというもの?が存在します。主なテーブルは次の3つです。今回はfilterテーブルのみ勉強したいと思います。

  • filter
  • nat
  • manage

filterテーブルにはチェインと呼ばれるパケットを処理するルールを集めおくためのリスト?があります。filterテーブルにあるチェインは次の通りです。

  • filterテーブル
    • INPUTチェイン:マシンから出ていくパケットを処理する
    • FORWARDチェイン:マシンを経由するパケットを処理する
    • OUTPUTチェイン:マシンから出ていくパケットを処理する

filterテーブルはパケットの入出力を制御するためのチェイン(ルール)を集めたもの、と言うことができると思います。filterテーブルの各チェインにルールを追加することで、知らない人からのアクセスを防いだり許可したりすることができるという訳です。なるほど!

次はiptablesの使い方を少しだけ勉強したいと思います。チェインやルールの追加、確認などはiptablesというコマンドを使用します。ちなみに、iptablesを使うときはrootになるか、sudoコマンドを使用しましょう。

# iptables
iptables v1.3.5: no command specified
Try `iptables -h' or 'iptables --help' for more information.

iptablesは基本的に引数にいろいろなオプションを指定して使用するので、オプションを知らないと何も使うことができません。今日はテーブルを指定するオプションとチェインのルールを確認するオプションの使い方だけを勉強します。

# iptables -t filter -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCET)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

この上記のオプションの意味は次の通りです。

オプション 意味 備考
-t もしくは --table テーブルの指定 -t でテーブルを指定しないとデフォルトではfilterが選択される
-L もしくは --list 選択されたチェインにあるルールをすべて表示する

上記の例はわざと長く書いたのですが、通常、filterテーブルのルールを確認する場合は次のように入力します。

# iptables -L
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

これで、チェインにあるルールを確認する方法が分かりました。ちなみに、上記の実行例からはルールが存在しないのでパケットの送受信はやりたい放題ですよ、ということが読み取れます。実行結果の読み方については次回勉強したいと思います。ちなみに、この状態でブロードバンドルータなどを介さずに直接ネットに接続するとどえらいことになりますので、気を付けないといけません。

次回はiptables -Lの実行結果の読み方、すべての送受信パケットを拒否する設定を行い、どうなるかを試しつつ勉強を進めたいと思います。

参考サイト様

*1:厳密ではありません