システムのセキュリティー保護が簡単に設定できるツール、Uncomplicated Firewall

 Linuxにはパケット・フィルターが組み込まれているが、その設定は初心者にとっては少々厄介だ。だが、Ubuntuの Uncomplicated Firewall (UFW)を使えば、初心者でも簡単かつ安全に設定することができる。

 パケット・フィルタリングを有効化/無効化するコマンドは、UFWでは、「sudo ufw enable」または「sudo ufw disable」とする。先頭にsudoコマンドが付いているのは、OSがUbuntuで、UFWコマンドをrootで実行する必要があるからだ。デフォルト・ポリシーを設定するコマンドは「sudo ufw default」で、引数はallowまたはdenyのいずれかとする。具体的には、デフォルトとしてすべての流入パケットを許容するなら、「sudo ufw default allow」とする。この場合、安全性はきわめて低くなるが、広範なサービスが利用できる。逆に、デフォルトとしてすべての流入パケットを阻止するなら、「sudo ufw default deny」とする。この場合、サービスを利用するにはそのサービスがフィルターを通れるように設定する必要がある。

 パケット・フィルタリングは管理者の指示により特定のサービスを許容または拒否する機能だ。Linuxシステムの場合、設定には通常iptablesが使われるが、UFWのルールの構文はiptablesに比べてはるかに簡単で、必要な情報を与えるだけで済む。たとえば、プロトコルを許容または拒否するという最も単純な例では、次のようにプロトコル定義を指定するだけだ。

sudo ufw allow 80/tcp
sudo ufw deny 21/tcp

 1番目の例は、ポート80上のTCPトラフィック(通常HTTPが使用する)を許容する。2番目の例は、ポート21上のTCPトラフィック(通常FTPが使用する)を拒否する。

 しかし、システム管理者でない人にとって、ポート番号とプロトコル名でルールを指定しなければならないとすれば、UFWはとても「uncomplicated(素人向き)」とは言えないだろう。そこで、名前でサービスを指定することもできるようになっている。

sudo ufw deny smtp
sudo ufw allow ssh

 なお、ファイル/etc/servicesに、サービスとその公式ポート番号(インターネット・プロトコルの名前と番号を管理しているIANAが割り当てた番号)の一覧がある。

より複雑なフィルタリング

 パケット・フィルタリングでは、何のパケットかということばかりでなくパケットの送信元も重要だ。したがって、パケットを発信元や送信先のアドレスでフィルタリングすることが多い。UFWでは、プロトコルのあとに発信元や送信先のアドレスを指定するだけで、そうしたフィルタリングを設定することができる。

sudo ufw allow|deny [proto protocol] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]
sudo ufw allow ssh from 192.168.2.3
sudo ufw allow smtp from 192.168.2.7 to 192.168.2.9

 ルールの削除も簡単だ。削除するルールの前にキーワードdeleteを付けるだけ。たとえば、上に例示したSSHトラフィックを許容するルールを削除するなら、次のようにする。

sudo ufw delete allow ssh from 192.168.2.3

 ほとんどの管理者はパケット・フィルターの動作をログに記録しており、これは何かと役に立つものだ。UFWにもログ機能があり、ログするかしないはコマンド「sudo ufw logging on|off」で切り替える。ログを記録している場合、「dmesg」でUFWの動作を確認することができる。

 しかし、パケット・フィルターがどれほど優れていたとしても、あるいはどれほど簡単だとしても、ルールを適切な順序で並べるのはそう簡単ではない。パケット・フィルター・ルールの構築方法については、Building Your Firewall Rulebase、Installing and Using a Firewall ProgramAdvice on Packet Filter Designなど、インターネット上に優れた情報が多数あるので参照してほしい。

 Ubuntuの次期バージョンIntrepid Ibexではパッケージが統合され、プログラムのアクセスを許容または拒否するのがさらに容易になる。具体的には、サービス名ではなくアプリケーションの名前が使えるようになり、次に示すように、ポート/プロトコルではなくプログラムのレベルで指定できるようになる。

sudo ufw apache default allow

 このように、UFWを使えば、Linuxのパケット・フィルタリング機能が容易に利用できるようになる。

Linux.com 原文(2008年10月1日)