Ubuntu/debian FW(ファイアウォール[ufw])の設定

IPテーブルの設定はかなり面倒くさいんです。とてもじゃないけどやっていられないところがあるのですが、UbuntuではufwというIPテーブルをかなり簡単に設定してくれるインターフェイスがあるのでたいていはそれを使います。IPテーブルの設定を直接やりたい人はそれはそれで構わないです。

まずはFWのステイタスを調べます。インストールしたての時などは無効になっています。
# sudo ufw status
Firewall not loaded (非アクティブ)

FWもICP Wrapperとか他のアクセス制限とだいたい同じで、

  • すべてを無効にして、一部を有効にする
  • すべてを有効にして、一部を無効にする

というどちらかの設定をしますが、たいていの場合前者で、すべてのポートを閉じていったん無効にしてから必要なポートを開けてゆくという考え方になります。

すべてを無効にする

いったんすべてのポートを閉じて無効にします。この状態ではすべてのポートが閉じているのでどんな通信もできません。(自分では試していませんが、仮に現在使用しているポートを閉じたらどうなるんでしょうか。SSHでリモート操作している人は充分注意する必要があるかもです。)
# sudo ufw default deny
Default policy changed to 'deny'
(be sure to update your rules accordingly)
(適用したい内容に基づいて必ずルールを更新してください。)

FWを使えるようにする

ufwの設定を有効にして使えるようにします。
# sudo ufw enable
Firewall started and enabled on system startup
(ファイアウォールはアクティブかつシステムの起動時に有効化されます)

逆にFWを停止する際には、
# sudo ufw disable
もう一度ステータスを確認すると有効になっています。

# sudo ufw status
Status: active

各ポートの設定をする(ポートを開ける)

当然ながら各ポートは各アプリケーションが使うポートなので、設定の仕方としてはアプリケーションとポートが対になっている筈です。というわけでufwでは設定の方法がいくつかあります。

サービス名で指定
Ubuntuのサービス名でアプリケーションとポートを設定します。この場合はアプリケーションで設定してあるポートを開きます。
# sysv-rc-conf
で表示されるのがUbuntuのサービス一覧になります。(CentOSにあるchkconfigがUbuntuにはない!)また、sysv-rc-confはデフォルトではインストールされていないかもしれないのでインストールしてください。
設定方法は以下のようにサービス名を指定するだけです。
# ufw allow ssh
# ufw allow ftp
# ufw allow http
# ufw allow https

ポート番号で指定
普通にポートを指定。tcpかudpとかも/で区切って指定します。
# ufw allow 22/tcp
# ufw allow 21/tcp
# ufw allow 80/tcp
# ufw allow 443/tcp

アプリケーション名で指定
"/etc/ufw/application.d/"に登録されているものがアプリケーション名になります。
# ufw allow openssh-server
# ufw allow vsftpd
# ufw allow apache

削除する
基本的には以下のように[allow/deny] [port]で指定して削除します。
ufw delete allow 21/tcp
あるいは、
ufw ufw delete 2
のように行番号で指定して削除します。行数間違えると他のが消えちゃうますのでご注意。

SSHのFWの設定

これがないと何もできないので、取り急ぎSSHの設定をします。まず、SSH接続の種類にもよりますが、私の場合はcronでrsyncの起動なんかやるので基本的にはSSHの鍵にパスワードを指定しません。なので、接続できるIPを限定してあげるのがよいと思うので、いくつかのIP以外からの接続はシャットアウトする設定にしています。
# ufw allow from 121.xxx.xxx.xxx to any port ssh
複数のIPアドレスを許可する場合は、IPアドレスを変えてそのままコマンドを打っていきます。ステイタスを確認すると許可した分だけ設定されています。
# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW 121.xxx.xxx.xxx
22 ALLOW 210.xxx.xxx.xxx
22 ALLOW 54.xxx.xxx.xxx
22 ALLOW 64.xxx.xxx.xxx

これでOKです。再起動して設定を反映させます。
# ufw reload
ここでは基本的な初期設定だけの紹介なのでサーバー運用が複雑になってくるともって面倒なのでいろいろ調べてみてください。

PostfixのFWの設定

Postfixは送信メールサーバー(SMTPサーバー)としてたいていのサーバーで稼働しているわけですが、踏み台にされる可能性が充分になるので、ある程度限定的にFWを設定しておきます。標準ポート25を使う場合は、自身のIPアドレス(サーバーのIPアドレス)など限定的に設定しておきます。また外部のホストからSMTPサーバーを使う場合はそのIPアドレスを個別に登録設定する方がいいです。
ufw allow from 123.456.789.10x to any port 25