Uncomplicated Firewall

提供: ArchWiki
移動先: 案内検索

プロジェクトのホームページより:

Ufw は Uncomplicated Firewall の略であり、netfilter ファイアウォールを管理するためのプログラムです。コマンドラインインターフェースが存在し、あまり複雑にならず簡単に使えるように作られています。

インストール

ufw公式リポジトリからインストールできます。

起動するには ufw を systemdサービスとして起動して下さい。起動時に自動的に実行されるようにするにはサービスを有効にします。

基本設定

デフォルトで全てを拒否して、192.168.0.1-192.168.0.255 LAN のプロトコルを許可し、どこからでも Deluge と SSH の通信ができるようにするシンプルな設定:

# ufw default deny
# ufw allow from 192.168.0.0/24
# ufw allow Deluge
# ufw allow SSH

パッケージを最初にインストールしたときは次を実行する必要があります:

# ufw enable

そして systemctlufw サービスを有効化してください。

最後に、status コマンドで適用されているルールを確認します:

# ufw status
Status: active
To                         Action      From
--                         ------      ----
Anywhere                   ALLOW       192.168.0.0/24
Deluge                     ALLOW       Anywhere
SSH                        ALLOW       Anywhere

status レポートはユーザーによって追加されたルールを示します。ほとんどの場合これで十分ですが、始めから入っているルールが存在していることに気をつけることは悪いことではありません。UPNP, AVAHI, DHCP を許可するフィルターが含まれています。全てのルールを表示するには:

# ufw show raw 

レポートではトラフィックも手短に示されますが、読むのが難しいと感じるかもしれません。承認されたトラフィックの確認をする別の方法:

# iptables -S | grep ACCEPT

レポートとしては動作しますが、iptables を管理するのに ufw を使っている間は iptables サービスは有効化しないようにしてください。

ノート: 特殊なネットワーク変数を /etc/sysctl.d/* で設定している場合、この設定によってデフォルト設定が上書きされてしまうため、それにあわせて /etc/ufw/sysctl.conf を修正する必要があります。

他のアプリケーションの追加

パッケージには多数のデーモンやプログラムのデフォルトのポートに基づいてデフォルトの設定が付いています。/etc/ufw/applications.d ディレクトリを見たりプログラムを使ってリストアップすることでオプションを確認できます:

# ufw app list

標準のポートを使わないアプリケーションを実行している場合、デフォルトを見ながら /etc/ufw/applications.d/custom に必要なデータを記述するのを推奨します。

警告: パッケージに含まれているルールセットを編集した場合、ufw パッケージを更新したときに変更した部分が上書きされてしまいます。従って、上記のようにパッケージファイルにはないカスタム定義を使うことを推奨します。

例えば、tcp ポートが 20202-20205 の範囲にカスタマイズされた deluge の場合:

[Deluge-my]
title=Deluge
description=Deluge BitTorrent client
ports=20202:20205/tcp

同じアプリケーションで tcp と udp ポートを両方定義する場合、以下のようにパイプで区切って下さい。tcp ポート 10000-10002 と udp ポート 10003 を開く例:

ports=10000:10002/tcp|10003/udp

範囲を指定するかわりに、カンマを使って複数のポートを指定することもできます。tcp ポート 10000-10002 (inclusive) と udp ポート 10003 と 10009 を開く例:

ports=10000:10002/tcp|10003,10009/udp

アプリケーションの削除

上の Deluge の例を利用するときは、以下のコマンドで標準の Deluge のルールを削除して上の例にあるルールで置き換えます:

# ufw delete allow Deluge
# ufw allow Deluge-my

status コマンドで結果を確認します:

# ufw status
Status: active
To                         Action      From
--                         ------      ----
Anywhere                   ALLOW       192.168.0.0/24
SSH                        ALLOW       Anywhere
Deluge-my                  ALLOW       Anywhere

ufw によるレート制限

ufw には30秒間の間に6回以上接続を試みた IP アドレスを拒否する機能があります。このオプションは sshd などのサービスに使うと良いでしょう。

上記の基本設定を使って、レート制限を有効にするには、allow パラメータを limit パラメータで置き換えます。新しいルールは以前のルールを置き換えます。

# ufw limit SSH
Rule updated
# ufw status
Status: active
To                         Action      From
--                         ------      ----
Anywhere                   ALLOW       192.168.0.0/24
SSH                        LIMIT       Anywhere
Deluge-my                  ALLOW       Anywhere

ユーザールール

全てのユーザールールは /etc/ufw/user.rules (IPv4) と /etc/ufw/user6.rules (IPv6) に保存されます。

pacman によるアップグレード時にも表示されますが、バージョン 0.34 以前では置き場所が /usr/lib/ufw/user.rules/usr/lib/ufw/user6.rules でした。バージョン 0.35 にアップグレードしたときに、ルールを新しい置き場所にコピーしてください。

GUI フロントエンド

Gufw

gufw は Ufw の GTK であり、出来るかぎり簡単に Linux のファイアウォールを管理できるように作られています。一般的なポートや p2p アプリケーションのプリセットが存在します。pythonufw、そして GTK のサポートが必要です。

kcm-ufw

kcm-ufwAUR は ufw の KDE4 コントロールモジュールです。以下の機能をサポートしています:

  • ファイアウォールの有効化・無効化
  • ファイアウォールのデフォルト設定の設定
  • ルールの追加・編集・削除
  • ドラッグアンドドロップによるルールの並び替え
  • ルールのインポート・エクスポート
  • iptables モジュールの設定

このモジュールは "Network and Connectivity" カテゴリ下に表示されます。

Tips and tricks

リモート ping を無効化

以下の行の ACCEPTDROP に変更してください:

/etc/ufw/before.rules
# ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

IPv6 を使っている場合、同じルールが /etc/ufw/before6.rules に存在します。

UFW のログ出力を無効化

ログ出力を無効化することで UFW によってメッセージログ (dmesg) が埋まってしまうのを防ぐことができます:

# ufw logging off

参照