「Uncomplicated Firewall」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎参照: リンクを追加)
 
(5人の利用者による、間の13版が非表示)
1行目: 1行目:
 
[[Category:ファイアウォール]]
 
[[Category:ファイアウォール]]
 
[[en:Uncomplicated Firewall]]
 
[[en:Uncomplicated Firewall]]
  +
[[fa:Uncomplicated Firewall]]
  +
{{Related articles start}}
  +
{{Related|iptables}}
  +
{{Related|sshguard}}
  +
{{Related articles end}}
  +
 
プロジェクトの[https://launchpad.net/ufw ホームページ]より:
 
プロジェクトの[https://launchpad.net/ufw ホームページ]より:
: ''Ufw は Uncomplicated Firewall の略であり、netfilter [[ファイアウォール]]を管理するためのプログラムです。コマンドラインインターフェースが存在し、あまり複雑にならず簡単に使えるように作られています。''
+
: Ufw は Uncomplicated Firewall の略であり、netfilter [[ファイアウォール]]を管理するためのプログラムです。コマンドラインインターフェースが存在し、あまり複雑にならず簡単に使えるように作られています。
  +
  +
{{Note|UFW はバックエンドのファイアウォールとして {{pkg|iptables}} または {{pkg|nftables}} のどちらかを使用できることに注意してください。UFW を使用してルールを管理することに慣れているユーザーは、iptables や nftables への基本的な呼び出しを学ぶ必要はありません。これは、例えば {{ic|/etc/ufw/before.rules}} 内で {{ic|nft}} が iptables の構文を受け入れるためです。}}
   
 
== インストール ==
 
== インストール ==
   
{{Pkg|ufw}} は[[公式リポトリ]]から[[インストール]]できます
+
{{Pkg|ufw}} パッケー[[インストール]]してください
   
起動るには ufw を [[systemd|systemd]][[Daemons|サービス]]として起動してさい。起動時に自動的実行されるようにするにはサービスを有効にしま
+
起動時に有効化させるには ufw を[[起動]][[有効化]]してください。なお、{{ic|iptables.service}} や {{ic|ip6tables.service}} も有効にされていと動作しません
   
 
== 基本設定 ==
 
== 基本設定 ==
   
デフォルトで全てを拒否して、192.168.0.1-192.168.0.255 LAN のプロトコルを許可し、どこからでも Deluge と SSH の通信ができるようるシンプルな設定:
+
デフォルトで全てを拒否して、192.168.0.1-192.168.0.255 LAN のプロトコルを許可し、どこからでも Deluge と SSH の通信ができ、SSH [[#ufw によるレート制限|レート制限]]を設けるシンプルな設定:
   
 
# ufw default deny
 
# ufw default deny
 
# ufw allow from 192.168.0.0/24
 
# ufw allow from 192.168.0.0/24
 
# ufw allow Deluge
 
# ufw allow Deluge
# ufw allow SSH
+
# ufw limit ssh
   
 
パッケージを最初にインストールしたときは次を実行する必要があります:
 
パッケージを最初にインストールしたときは次を実行する必要があります:
23行目: 31行目:
 
# ufw enable
 
# ufw enable
   
  +
{{Note|{{ic|ufw.service}} が[[有効化]]されている必要があります。}}
そして [[Systemd#ユニットを使う|systemctl]] で {{ic|ufw}} サービスを有効化してください。
 
   
 
最後に、status コマンドで適用されているルールを確認します:
 
最後に、status コマンドで適用されているルールを確認します:
32行目: 40行目:
 
Anywhere ALLOW 192.168.0.0/24
 
Anywhere ALLOW 192.168.0.0/24
 
Deluge ALLOW Anywhere
 
Deluge ALLOW Anywhere
SSH ALLOW Anywhere
+
SSH LIMIT Anywhere
 
}}
 
}}
 
status レポートはユーザーによって追加されたルールを示します。ほとんどの場合これで十分ですが、始めから入っているルールが存在していることに気をつけることは悪いことではありません。UPNP, AVAHI, DHCP を許可するフィルターが含まれています。全てのルールを表示するには:
 
status レポートはユーザーによって追加されたルールを示します。ほとんどの場合これで十分ですが、始めから入っているルールが存在していることに気をつけることは悪いことではありません。UPNP, AVAHI, DHCP を許可するフィルターが含まれています。全てのルールを表示するには:
40行目: 48行目:
 
レポートとしては動作しますが、iptables を管理するのに {{ic|ufw}} を使っている間は {{ic|iptables}} サービスは有効化しないようにしてください。
 
レポートとしては動作しますが、iptables を管理するのに {{ic|ufw}} を使っている間は {{ic|iptables}} サービスは有効化しないようにしてください。
 
{{Note|特殊なネットワーク変数を {{ic|/etc/sysctl.d/*}} で設定している場合、この設定によってデフォルト設定が上書きされてしまうため、それにあわせて {{ic|/etc/ufw/sysctl.conf}} を修正する必要があります。}}
 
{{Note|特殊なネットワーク変数を {{ic|/etc/sysctl.d/*}} で設定している場合、この設定によってデフォルト設定が上書きされてしまうため、それにあわせて {{ic|/etc/ufw/sysctl.conf}} を修正する必要があります。}}
  +
  +
== Forward ポリシー ==
  +
  +
[[OpenVPN]] や [[WireGuard]] などの [[VPN]] を実行する必要のあるユーザは、{{ic|/etc/default/ufw}} 内の '''DEFAULT_FORWARD_POLICY''' 変数の値を '''"DROP"''' から '''"ACCEPT"''' に変更することで、ユーザインターフェイスの設定に関わらずすべてのパケットを転送することができます。以下の行を '''*filter''' ブロック内に追加することで、'''wg0''' のような特定のインターフェイスで転送することができます:
  +
  +
{{hc|/etc/ufw/before.rules|
  +
# End required lines
  +
  +
-A ufw-before-forward -i wg0 -j ACCEPT
  +
-A ufw-before-forward -o wg0 -j ACCEPT
  +
}}
  +
  +
また、場合によっては以下をアンコメントする必要があります:
  +
  +
{{hc|head=/etc/ufw/sysctl.conf|output=
  +
net/ipv4/ip_forward=1
  +
net/ipv6/conf/default/forwarding=1
  +
net/ipv6/conf/all/forwarding=1
  +
}}
   
 
== 他のアプリケーションの追加 ==
 
== 他のアプリケーションの追加 ==
49行目: 76行目:
 
標準のポートを使わないアプリケーションを実行している場合、デフォルトを見ながら {{ic|/etc/ufw/applications.d/custom}} に必要なデータを記述するのを推奨します。
 
標準のポートを使わないアプリケーションを実行している場合、デフォルトを見ながら {{ic|/etc/ufw/applications.d/custom}} に必要なデータを記述するのを推奨します。
   
  +
{{Warning|パッケージに含まれているルールセットを編集した場合、ufw パッケージを更新したときに変更した部分が上書きされてしまいます。従って、上記のようにパッケージファイルにはないカスタム定義を使うことを推奨します。}}
{{Warning|If users modify any of the PKG provided rule sets, these will be overwritten the first time the ufw package is updated. This is why custom app definitions need to reside in a non-PKG file as recommended above!}}
 
   
 
例えば、tcp ポートが 20202-20205 の範囲にカスタマイズされた deluge の場合:
 
例えば、tcp ポートが 20202-20205 の範囲にカスタマイズされた deluge の場合:
83行目: 110行目:
 
SSH ALLOW Anywhere
 
SSH ALLOW Anywhere
 
Deluge-my ALLOW Anywhere
 
Deluge-my ALLOW Anywhere
  +
}}
  +
  +
== IP アドレスのブロック ==
  +
特定の IP アドレスをブロックするには、{{ic|/etc/ufw/before.rules}} において ''COMMIT'' よりも手前に iptables DROP 行を書き加えます。
  +
  +
{{hc|/etc/ufw/before.rules|
  +
...
  +
## blacklist section
  +
  +
# block just 199.115.117.99
  +
-A ufw-before-input -s 199.115.117.99 -j DROP
  +
# block 184.105.*.*
  +
-A ufw-before-input -s 184.105.0.0/16 -j DROP
  +
  +
# don't delete the 'COMMIT' line or these rules won't be processed
  +
COMMIT
 
}}
 
}}
   
 
== ufw によるレート制限 ==
 
== ufw によるレート制限 ==
   
ufw には30秒間の間に6回以上接続を試みた IP アドレスを拒否する機能があります。このオプションは sshd などのサービスに使うと良いでしょう。
+
ufw には30秒間の間に6回以上接続を試みた IP アドレスを拒否する機能があります。このオプションは [[SSH]] などのサービスに使うと良いでしょう。
   
 
上記の基本設定を使って、レート制限を有効にするには、allow パラメータを limit パラメータで置き換えます。新しいルールは以前のルールを置き換えます。
 
上記の基本設定を使って、レート制限を有効にするには、allow パラメータを limit パラメータで置き換えます。新しいルールは以前のルールを置き換えます。
105行目: 148行目:
   
 
== ユーザールール ==
 
== ユーザールール ==
全てのユーザールールは {{ic|usr/lib/ufw/user.rules}} (IPv4) と {{ic|usr/lib/ufw/user6.rules}} (IPv6) に保存されます。
+
全てのユーザールールは {{ic|/etc/ufw/user.rules}} (IPv4) と {{ic|/etc/ufw/user6.rules}} (IPv6) に保存されます。
   
  +
pacman によるアップグレード時にも表示されますが、バージョン 0.34 以前では置き場所が {{ic|/usr/lib/ufw/user.rules}} と {{ic|/usr/lib/ufw/user6.rules}} でした。バージョン 0.35 にアップグレードしたときに、ルールを新しい置き場所にコピーしてください。
== GUI フロントエンド ==
 
   
  +
== ヒントとテクニック ==
=== Gufw ===
 
   
  +
=== リモート ping を無効化 ===
{{Pkg|gufw}} は Ufw の GTK であり、出来るかぎり簡単に Linux のファイアウォールを管理できるように作られています。一般的なポートや p2p アプリケーションのプリセットが存在します。{{Pkg|python}} と {{Pkg|ufw}}、そして GTK のサポートが必要です。
 
  +
以下の行の {{ic|ACCEPT}} を {{ic|DROP}} に変更してください:
   
  +
{{hc|/etc/ufw/before.rules|
=== kcm-ufw ===
 
  +
# 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 を使っている場合、同じルールが {{ic|/etc/ufw/before6.rules}} に存在します。
{{AUR|kcm-ufw}} は ufw の KDE4 コントロールモジュールです。以下の機能をサポートしています:
 
* ファイアウォールの有効化・無効化
 
* ファイアウォールのデフォルト設定の設定
 
* ルールの追加・編集・削除
 
* ドラッグアンドドロップによるルールの並び替え
 
* ルールのインポート・エクスポート
 
* iptables モジュールの設定
 
   
  +
=== UFW のログ出力を無効化 ===
このモジュールは "Network and Connectivity" カテゴリ下に表示されます。
 
  +
  +
ログ出力を無効化することで UFW によってメッセージログ ({{ic|dmesg}}) が埋まってしまうのを防ぐことができます:
  +
  +
# ufw logging off
  +
  +
=== UFW と Docker ===
  +
標準モードの Docker は独自の iptables ルールを書き込み、ufw のルールを無視します。これによりセキュリティの問題が発生する可能性があります。解決策は https://github.com/chaifeng/ufw-docker で見つけることができます。
  +
  +
{{Tip|{{ic|ufw-docker install}} を実行して iptables ルールを自動的に修正するために、{{AUR|ufw-docker}} をインストールすることができます。このパッケージは Docker 関連の ufw ルールも管理できます。詳細は {{ic|ufw-docker help}} を参照してください。}}
  +
  +
== GUI フロントエンド ==
  +
  +
=== Gufw ===
  +
  +
{{Pkg|gufw}} は Ufw の GTK であり、できるかぎり簡単に Linux のファイアウォールを管理できるように作られています。一般的なポートや p2p アプリケーションのプリセットが存在します。{{Pkg|python}} と {{Pkg|ufw}}、そして GTK のサポートが必要です。
   
 
== 参照 ==
 
== 参照 ==
   
  +
* [https://help.ubuntu.com/community/UFW Ubuntu UFW ドキュメント]
* [[sshguard|sshguard]]
 
  +
* {{man|8|ufw}} UFW マニュアル
* [http://help.ubuntu.com/community/UFW Ubuntu UFW ドキュメント]
 
  +
* ipset を使用して ufw にブロックリストを追加する: https://github.com/poddmo/ufw-blocklist
* [http://manpages.ubuntu.com/manpages/natty/en/man8/ufw.8.html UFW マニュアル]
 
  +
  +
{{TranslationStatus|Uncomplicated Firewall|2024-07-21|812732}}

2024年7月21日 (日) 19:43時点における最新版

関連記事

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

Ufw は Uncomplicated Firewall の略であり、netfilter ファイアウォールを管理するためのプログラムです。コマンドラインインターフェースが存在し、あまり複雑にならず簡単に使えるように作られています。
ノート: UFW はバックエンドのファイアウォールとして iptables または nftables のどちらかを使用できることに注意してください。UFW を使用してルールを管理することに慣れているユーザーは、iptables や nftables への基本的な呼び出しを学ぶ必要はありません。これは、例えば /etc/ufw/before.rules 内で nft が iptables の構文を受け入れるためです。

インストール

ufw パッケージをインストールしてください。

起動時に有効化させるには ufw を起動有効化してください。なお、iptables.serviceip6tables.service も有効にされていると動作しません。

基本設定

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

# ufw default deny
# ufw allow from 192.168.0.0/24
# ufw allow Deluge
# ufw limit ssh

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

# ufw enable
ノート: ufw.service有効化されている必要があります。

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

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

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

# ufw show raw 

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

# iptables -S | grep ACCEPT

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

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

Forward ポリシー

OpenVPNWireGuard などの VPN を実行する必要のあるユーザは、/etc/default/ufw 内の DEFAULT_FORWARD_POLICY 変数の値を "DROP" から "ACCEPT" に変更することで、ユーザインターフェイスの設定に関わらずすべてのパケットを転送することができます。以下の行を *filter ブロック内に追加することで、wg0 のような特定のインターフェイスで転送することができます:

/etc/ufw/before.rules
# End required lines 

-A ufw-before-forward -i wg0 -j ACCEPT
-A ufw-before-forward -o wg0 -j ACCEPT

また、場合によっては以下をアンコメントする必要があります:

/etc/ufw/sysctl.conf
net/ipv4/ip_forward=1
net/ipv6/conf/default/forwarding=1
net/ipv6/conf/all/forwarding=1

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

パッケージには多数のデーモンやプログラムのデフォルトのポートに基づいてデフォルトの設定が付いています。/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

IP アドレスのブロック

特定の IP アドレスをブロックするには、/etc/ufw/before.rules において COMMIT よりも手前に iptables DROP 行を書き加えます。

/etc/ufw/before.rules
...
## blacklist section

# block just 199.115.117.99
-A ufw-before-input -s 199.115.117.99 -j DROP
# block 184.105.*.*
-A ufw-before-input -s 184.105.0.0/16 -j DROP

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

ufw によるレート制限

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

上記の基本設定を使って、レート制限を有効にするには、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 にアップグレードしたときに、ルールを新しい置き場所にコピーしてください。

ヒントとテクニック

リモート 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

UFW と Docker

標準モードの Docker は独自の iptables ルールを書き込み、ufw のルールを無視します。これによりセキュリティの問題が発生する可能性があります。解決策は https://github.com/chaifeng/ufw-docker で見つけることができます。

ヒント: ufw-docker install を実行して iptables ルールを自動的に修正するために、ufw-dockerAUR をインストールすることができます。このパッケージは Docker 関連の ufw ルールも管理できます。詳細は ufw-docker help を参照してください。

GUI フロントエンド

Gufw

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

参照

翻訳ステータス: このページは en:Uncomplicated Firewall の翻訳バージョンです。最後の翻訳日は 2024-07-21 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。