1. ファイヤウォールの設定
Linuxカーネルには、Netfilterというパケットフィルタリング機能が備わっています。通信経路を流れるパケットを検査し、パケット単位で処理を行います。主な通信経路には、外部からLinuxへ入ってくる「入力」、Linuxから外部へ出ていく「出力」、別のホストへ転送する「転送」があります。
外部から入ってくるパケットは、「入力」に設定されたルールと照合され、ルールにマッチすれば許可または拒否されます。すべてのルールにマッチしなかったパケットは、デフォルトの設定(ポリシー)に従って処理されます。ポリシーが「破棄」であれば、パケットは破棄されます。
パケットフィルタリングの仕組みは以下の図参照:
今回はufw
とそのGUI実装版のGufw
を用いたファイヤウォール設定を紹介します。
2. ufw
コマンドによるファイヤウォール設定
インストール
1
$ apt-get install ufw
ufw の稼働状況及び設定内容の確認
1
2
$ sudo ufw status
Status: active
ルールが設定される場合はルール一覧が表示されます。
ufw enable/disable
ufwを有効にしたい場合は
1
$ sudo ufw enable
ufwを無効にしたい場合は
1
$ sudo ufw disable
ファイヤウォール設定を向こうにしても、設定したルールは残されているので、次回有効にしたときに再現されます。
ufw default
ポリシーを設定します。
オプション | 説明 |
---|---|
allow | ルールにマッチしなかった通信を許可します |
deny | 通信を破棄します |
reject | 通信を拒否してエラーを返します |
デフォルトでは「incoming」のポリシーを設定しますが、内部から外部方向「outgoing」や転送「routed」のポリシーを設定したときは、オプションでそれを明示する。
Syntax
1
$ ufw default allow|deny|reject [incoming|outgoing|routed]
今回の設定
1
$ sudo ufw default reject
ufw logging
ログレベル、つまりログに記録する粒度を設定します。デフォルトはmediumです。ログは通常 /var/log/syslog
に出力されます。
Syntax
パラメーター | 説明 |
---|---|
off | ログを記録しない |
low | default以外でルールにマッチしてブロックされた通信を記録する |
medium | lowに加え、ポリシーにマッチせず許可された通信、不正なパケット、新規の接続を記録する |
high | mediumに加え、limit(後述)にマッチした通信も記録する |
full | limitを覗くすべての通信を記録する |
1
$ ufw logging off|low|medium|high|full
ufw allow
許可する通信を設定します。
Syntax
1
$ ufw allow サービス名|ポート番号|プロトコル|IPアドレス
サービス名とポート番号の対応づけは /etc/services
ファイルで確認することができます。
今回の設定
ラップトップからのssh接続を可能としたい場合は、
1
2
$ sudo ufw allow from 192.168.11.0/24 to any port ssh
Rule added
ルール番号付きで設定を表示 & 確認する
1
$ sudo ufw status numbered
ufw delete
指定したルールを削除します。「ufw status numbered」コマンドで表示されるルール番号を指定する方法が簡単です。
1
$ ufw delete ルール|ルール番号
ufw limit
指定したサービスへの繰り返される試行(同一IPアドレスから30秒間に6回以上)を拒否します。設定方法は、
1
$ sudo ufw limit ssh
3. グラフィカルユーザインタフェースによる設定: Gufw
まずGufw
のインストールを実施する。
1
$ sudo apt -yV install gufw
その後、settings
よりFirewall Configを開き、上述と同じ条件をGUIでポチポチして設定する。
References
(注意:GitHub Accountが必要となります)