連載第31回
2014年3月23日
iptables をどうにかしたいよホントにもう(1)

 初めてServersMan@VPSを使ってみる初心者が、まるでワケの分からない初歩的セキュリティ対策に振り回されるシリーズ?もいよいよ佳境となりました。今回は、以前ちょっと手を出そうと思ったけれど、関連記事を読み進めているうちに「もうちょっと時間を置こう…」と腰が引けてしまったiptablesの続きです。
 実は前回まで全6回続けたwebmin関連作業ですが、このwebminでコントロール出来るものの中に、今回のiptablesも含まれています。もしかしたらよく理解出来なかった複雑な設定も、webminなら簡単に済ませることが出来るかも…と期待したのですが、早速該当セクションを覗いてみたところ(↑)、やはり基本を押えていないと迂闊に手が出せないものだと分かりました。設定を間違えるとユーザーである自分自身もサーバーにアクセス出来なくなるとか聞きますし。

もう一度読み返して、まず用語など整理

 そんなわけで、以前も紹介した関連記事などをもう一度読み直し、全てを深く理解できないまでも、作業工程の流れと、要所要所の何となくの概念くらいは、イメージとしてちゃんと押えておこうと思いました。
 仕組みや用語を正確に理解出来ているかどうかは、とりあえずここでは問わないことにします。まず、頻出する用語の概要を自分なりに簡単な文章に書き起こしてみました。1→5に下るにつれ、細部に入ってゆく感じ。

1.iptablesとは?

iptablesはコンピューターに出入りするパケット(のヘッダ)について制御を行う。パケットの内部は変更しない。

2.iptablesには3つのテーブルがあるが、今回扱うのはfilterテーブル

テーブルとはチェインを束ねたもの。iptablesが持つ「filter」「nat」「mangle」という3つのテーブルのうち、今回の初歩的セキュリティ対策で扱うのはfilterテーブル。ちなみにfilterはiptablesコマンドのデフォルトのテーブルで、tオプションを指定しなかった場合はfilterが使用される。

3.filterテーブルには主要な3つのチェインがある

チェインとは「ルールの集合」で、パケットの主な取扱い(通すか、通さないか)を決める箇所。filterテーブルで扱えるチェインは次の3つ。
INPUT:入力(受信)パケットのチェイン。
OUTPUT:出力(送信)パケットのチェイン。
FORWARD:転送パケットのチェイン。
転送(?)はサーバーの内部処理セクションと解釈しました。違うかなあ。

4.target:パケットをどう処理するかを指定

主だったところでは次の2つ。ACCEPT(パケットの通過を許可)、DROP(パケットを破棄)。つまり「通すか、通さないか」の2択を決定します。

5.rule:上述のtargetを実行する為に、パケットの条件を与える

つまりruleとはフィルターそのもの。通すか通さないかの判定条件の要素は、パケットの種類、送信元・受信元IPアドレス、ポート番号etc.が用いられる。

運営サーバーの基本ポリシー、とは?

 上述の自分なりにまとめたみたリスト。我ながらとてつもなく稚拙で笑えてくるのですが、しかし、たったそれだけまとめるのにも参考記事を何本も読んで複雑な内容を咀嚼するのに苦労した甲斐あってか、ほんのちょっぴりだけ「見える」ようになってきました。

 いろいろ記事を読んでいると「まずは基本ポリシーを決める」という言葉に幾度か遭遇します。初めは意味が分からなかったのだけれど、要約すると「扱うサーバーの運営方針に沿ったパケット通信の取扱い指針(主に許可・不許可)を決める」というような事らしい。セキュリティ対策としてのポリシーなので、基本としては「INPUT、FORWARD、OUTPUTの全部受信拒否。でも提供したいサービスが使うパケットだけピンポイントで許可」という姿勢が推奨されているのですが、しかし、ユーザーそれぞれの考え方があって実に多彩なのです。例えば記事Aでは「INPUT×、FORWARD○、OUTPUT○」。記事Bでは「INPUT○、FORWARD×、OUTPUT○」。記事C記事Dは「INPUT×、FORWARD×、OUTPUT○」…。目的は同じなのに、手段が十人十色。

 ここまで来て、また改めてこちらの記事を読み返すと、以前よりは少し深めに理解できるようになったような気が…しないでもない(さすがプロの設定は細かい所まで配慮してるな、とか思う)。そこで手を抜いて、幾多の参考記事から自分のポリシーに近いものをコピペしようと思ったのだけれど、どれも設定内容が多彩過ぎて自分にとってどれが最適解なのか判断が出来ない、というか、やはり簡易でもいいから自分自身でポリシーを決めないと先に進めない感じがします。先を急ごうと思いましたが、早くも能力の限界なので、自分なりの運営ポリシーが言えるまで(でも複雑な設定は出来ませんよ!と事前に宣言しておく)しばらく下記のテンプレート集に目を通して過ごそうかと思います。4月ももうすぐですね。つづく。

引き続き参考にしている記事リスト(記事内との重複アリ)

DTI ServersMan@VPS 最初にやったこと(CreativeGear)
iptables(ファイアウォール)設定 – ServersMan@VPS(MAKIZOU.COM)
【セキュリティ】さくらVPSにファイアウォールを適用する。【iptables】(くずのは探偵事務所)
ServersMan@VPS iptablesを設定する(うーたんの小部屋)
CentOS 6.4 ファイアーウォール設定(ServersMan@VPS)(プログラムの書き方を覚える)
ServersMan@VPSでのiptables設定(state版)(誰得UNIX-BLOG)
[Serversman@VPS]エントリープランからサーバーを構築する(3)~iptables設定~(mani-lab)
VPS 借りたら、せめてこれくらいはやっとけというセキュリティ設定(dogmap.jp)
ServersMan VPSでWebサーバー構築#1(CentOS:初期設定)(しゃまとんの種)
ServersMan@VPSのメモ ~ ip6tables ~ (がちゃの紙くず同然なメモ)
Webminでiptablesの設定 (別館 子子子子子子(ねこのここねこ))
俺でも解るIPTABLES
iptablesの設定 入門編 (Murayama blog.)
iptablesによるフィルタ設定 (とみぞーノート)
iptablesによるパケットフィルタリング(コロのLinuxサーバー構築)
iptables(システムエンジニアのスキルアップ)
iptablesの設定(CENTOSでアリソンサーバー)
CentOS/iptables(ひつじ帳)
iptablesメモ。firewallとして(Quark)