0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

man ufw 日本語訳

Posted at

man ufw の日本語訳。

UFW:(8)

May 2023 UFW:(8)

NAME

ufw - ネットフィルターファイアウォールの管理プログラム

DESCRIPTION

当プログラムは Linux ファイアウォールを管理します。
ユーザーに優しい操作インターフェイスの提供を目標とします。

USAGE

ufw [--dry-run] enable|disable|reload

ufw [--dry-run] default allow|deny|reject [incoming|outgoing|routed]

ufw [--dry-run] logging on|off|LEVEL

ufw [--dry-run] reset

ufw [--dry-run] status [verbose|numbered]

ufw [--dry-run] show REPORT

ufw [--dry-run] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out] [log|log-all] [ PORT[/PROTOCOL] | APPNAME ] [comment COMMENT]

ufw [--dry-run] [rule] [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out [on INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME ]] [to ADDRESS [port PORT | app APPNAME ]] [comment COMMENT]

ufw [--dry-run] route [delete] [insert NUM] [prepend] allow|deny|reject|limit [in|out on INTERFACE] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT | app APPNAME]] [to ADDRESS [port PORT | app APPNAME]] [comment COMMENT]

ufw [--dry-run] [--force] delete NUM

ufw [--dry-run] app list|info|default|update

OPTIONS

--version

プログラムのバージョン番号を出力して終了します。

-h, --help

ヘルプメッセージを出力して終了します。

--dry-run

ルールの更新は行わずにコマンドの実行結果を出力します。

enable

ファイアウォールを再起動します。
OS のブート時にファイアウォールを有効化します。

disable

ファイアウォールを無効にします。
OS のブート時にファイアウォールを無効化します。

reload

ファイアウォールを再起動します。

default allow|deny|reject DIRECTION

DIRECTION へ向かう通信トラフィックの default ポリシーを変更します。
DIRECTION には受信、送信、またはルーティングされた通信のいずれかを指定します。
default ポリシーを変更した場合、既存ルールは手動で移行させる必要があります。
denyreject についての詳細は RULE SYNTAX を参照してください。

logging on|off|LEVEL

ロギングを切り替えます。ログ採取されたパケットは LOG_KERN シスログ機構を使用します。
rsyslog サポート用に構成されたシステムは /var/log/ufw.log へログ出力されます。
LEVEL は指定されたレベルへログ出力レベルを変更します。
既定のログレベルは low です。
詳細は LOGGING を参照してください。

reset

ファイアウォールを無効にして
インストール時の初期状態へ戻します。
--force オプションを指定することで
確認無しでリセットすることができます。

status

ファイアウォールの状態と ufw が管理しているルール群を出力します。
詳細な情報を出力する場合は ufw status verbose を使用してください。
status の出力に記載されている Anywhereany0.0.0.0/0 (IPv4)::/0 (IPv6) のシノニムです。
status 使用時はレポート出力のインターフェイスに少し違いがあります。
例えば下記のルール群を追加した場合:

ufw allow in on eth0 from 192.168.0.0/16
ufw allow out on eth1 to 10.0.0.0/8
ufw route allow in on eth0 out on eth1 to 10.0.0.0/8 from 192.168.0.0/16
ufw limit 2222/tcp comment 'SSH port'

ufw status は下記を出力します:

To                         Action      From
--                         ------      ----
Anywhere on eth0           ALLOW       192.168.0.0/16
10.0.0.0/8                 ALLOW OUT   Anywhere on eth1
10.0.0.0/8 on eth1         ALLOW FWD   192.168.0.0/16 on eth0
Anywhere                   LIMIT       Anywhere                 # SSH port

入出力ルールの場合、インターフェイスはファイアウォールシステムに対するエンドポイントとして報告されます。
一方、ルーティングのルールでは、パケットがファイアウォールを通過する方向に応じて報告されます。

show REPORT

動作中のファイアウォールに関する情報を出力します。
詳細は REPORTS を参照してください。

allow ARGS

allow ルールを追加します。
詳細は RULE SYNTAX を参照してください。

deny ARGS

deny ルールを追加します。
詳細は RULE SYNTAX を参照してください。

reject ARGS

reject ルールを追加します。
詳細は RULE SYNTAX を参照してください。

limit ARGS

limit ルールを追加します。
詳細は RULE SYNTAX を参照してください。

delete RULE|NUM

対応する RULE を削除します。

insert NUM RULE

対応する RULENUM 指定した番号へ追加します。

prepend RULE

対応する RULE をルールセットの先頭へ追加します。

RULE SYNTAX

ユーザーはルール群を単純な構文または完全な構文どちらでも指定することができます。
単純な構文は、ホスト上で許可または拒絶するポートを指定し、オプションでプロトコルを指定します。

どちらの構文もルールについてのコメントを指定することができます。
既存のルール群へ異なるコメントを指定した場合は内容を更新します。
'' を指定した場合はコメントを削除します。
(insertprepend はコメントの更新に使用することができないことに留意してください)

単純な構文を使用したルール群を例示します:

ufw allow 53

このルールでは送信元アドレスを問わずポート 53 番の tcp と udp を許可します。
プロトコルを指定する場合は /protocol をポート番号へ追加します。
記述例を示します:

ufw allow 25/tcp

この例では送信元アドレスを問わずポート 25 番の tcp を許可します。
サービス名が指定されている場合、
ufw は /etc/services を基にポート番号とプロトコルの確認します。
記述例を示します:

ufw allow smtp

ufw は送受信どちらのフィルタリングもサポートしています。
ユーザーは in (受信トラフィック)または out (送信トラフィック)を使用して通信の向きを指定します。
通信の向きについて指定が無い場合は受信トラフィックに対してルールが適用されます。
記述例を示します:

ufw allow in http
ufw reject out smtp
ufw reject telnet comment 'telnet is unencrypted'

さらに詳細な構文を使用して送信元アドレスとポート、送信先アドレスとポートを指定することができます。
この構文は OpenBSD の PF 構文に緩やかに基づいています。
記述例を示します:

ufw deny proto tcp to any port 80

この例ではホスト上の tcp 80 番ポートの全トラフィックを拒絶します。
別の例を提示します:

ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25

この例では RFC1918 クラス A ネットワークから 192.168.0.1 の tcp 25 番ポートへの全トラフィックを拒絶します。

ufw deny proto tcp from 2001:db8::/32 to any port 25

この例では IPv6 2001:db8::/32 から tcp 25 番ポートへの全トラフィックを拒絶します。
IPv6 を機能させるには /etc/default/ufw の IPv6 ファイアウォール機能を有効化しなければなりません。

ufw deny in on eth0 to 224.0.0.1 proto igmp

この例では eth0 インターフェイスへ向かう全ての igmp トラフィックを拒絶します。

ufw allow in on eth0 to 192.168.0.1 proto gre

この例では eth0 インターフェイスの 192.168.0.1 へ向かう全ての gre トラフィックを許可します。

ufw allow proto tcp from any to any port 80,443,8080:8090 comment 'web app'

上記の例では tcp 80、443、そして 8080 から 8090 までの全トラフィックを許可し、定義したルールへコメントを追加します。
複数のポートを指定する場合、ポートのリストは数値で記述してください。
ポートリストにはスペースを含めることはできません。
ルールの更新はルール全体を更新してください。
例えば上記の例では、後で 443 番ポートだけ削除することはできません。
15 個を超えてポートを列記することはできません。
(範囲指定で記述した場合は 2 つ分のポートとして数えられます。
上記の例では、ポート数のカウントは 4 つです)

ufw はいくつかの異なるプロトコルをサポートします。
下記のプロトコルはあらゆるルールに対して有効です。
プロトコルの指定が無い場合に自動的に適用されます:

  • tcp
  • udp

下記のプロトコルは一定の制限を持ち、プロトコルの指定が無い場合には有効化されません:

  • ah - ポート番号無しで有効です。
  • esp - ポート番号無しで有効です。
  • gre - ポート番号無しで有効です。
  • vrrp - ポート番号無しで有効です。
  • ipv6 - IPv4 アドレスに対して有効です。ポート番号無しで有効です。
  • igmp - IPv4 アドレスに対して有効です。ポート番号無しで有効です。

ホスト自身を到達先とするトラフィックのルール群で、
ファイアウォールを通じてルーティング/転送されるべきトラフィックは
ルールの前に route キーワードを指定します。
(ルーティングルールは PF 構文とは大きく異なります。
ネットフィルターの FORWARD チェインのように考えます)
記述例を示します:

ufw route allow in on eth1 out on eth2

この例では eth2 へルーティングされた全トラフィックが許可されます。
eth1 へ受信されたトラフィックはファイアウォールを横断します。

ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp

このルールでは eth0 へ受信され、 eth1 へ出ていく 12.34.45.67 の tcp 80 のあらゆるパケットが許可されます。

ルーティングされたルール群とポリシーは追加で IP 転送の設定が必須となります。
IP 転送の設定は下記の /etc/ufw/sysctl.conf の設定で行います:

net/ipv4/ip_forward=1
net/ipv6/conf/default/forwarding=1
net/ipv6/conf/all/forwarding=1

設定後にファイアウォールを再起動します:

ufw disable
ufw enable

調整可能なカーネル設定は OS が指定し、
ufw の sysctl 設定を上書きします。
詳細は sysctl のマニュアルページを参照してください。

ufw はコネクションレートの制限をサポートします。
ブルートフォースログイン攻撃に対する防衛に役立ちます。
limit ルールの使用時は、 ufw はコネクションを基本的に許可しますが、
一つの IP アドレスが 30 秒内に 6 回以上接続を試行した場合にコネクションを拒絶します。
詳細は http://www.debian-administration.org/articles/187 を参照してください。
一般的な使用例を例示します:

ufw limit ssh/tcp

場合によっては、トラフィックを単に無視するのではなく、トラフィックが拒否されたことを送信者に知らせることが望ましいことがあります。
トラフィックが拒否されたことを通知する場合、 deny の代わりに reject を使用してください。
記述例を示します:

ufw reject auth

デフォルトで ufw は使用可能なインターフェイス全てに対してルール群を適用します。
適用範囲を制限するには INTERFACE 上の DIRECTION を指定してください。
DIRECTION には in または out を指定します。
(インターフェイスのエイリアスはサポートしていません)
eth0 の http 接続の全受信を許可する場合を例示します:

ufw allow in on eth0 to any port 80 proto tcp

ルールを削除するには単純に元のルール(コメント付きまたはコメント無し)に delete を付加します。
例えば元のルールが下記の場合:

ufw deny 80/tcp

このようにルールを削除します:

ufw delete deny 80/tcp

status numbered で出力される NUM を指定してルールを削除することもできます。
例えばルール番号 3 を削除する場合を例示します:

ufw delete 3

IPv6 が有効化されていて IPv4 と IPv6 双方に適用されている汎用ルール(例えば ufw allow 22/tcp)の削除は、
ルール番号による削除を実行した場合、指定されたルール番号に該当するルールのみを削除します。
IPv4 と IPv6 双方に適用されているルールを一つのコマンドで削除するには、元のルールに delete を付加してください。

ルールを挿入するには通常通り新規ルールを指定します。
ただし、ルールの前に挿入位置を示すルール番号を付加してください。
例えば 4 つルールが登録されていて新規ルールをルール番号 3 として挿入したい場合:

ufw insert 3 deny to any port 22 from 10.0.0.135 proto tcp

同様に全ルールの先頭に IP に合致するルールを追加するには prepend を使用します:

ufw prepend deny from 1.2.3.4

これは IPS に見られるような動的ファイアウォールに特に役立ちます。
指定されたルールが IPv4 ルールである場合、他の全ての IPv4 ルールの前に新規ルールが挿入されます。
IPv6 ルールである場合は、あらゆる IPv6 ルールの前に新規ルールが挿入されます。

ルール群のリスト番号を確認するには status numbered を使用します:

ufw status numbered

ufw はルール毎のロギングをサポートしています。
デフォルトではパケットがルールに合致してもロギングされません。
log を指定すると、ルールに合致する全ての新規コネクションをログ出力します。
log-all を指定すると、ルールに合致する全パケットをログ出力します。
例えば、新規 ssh 接続を全て許可してログ出力する場合を例示します:

ufw allow log 22/tcp

ロギングについての詳細は LOGGING を参照してください。

EXAMPLES

ポート 53 番への接続を全て拒絶します:

ufw deny 53

tcp ポート 80 番への接続を全て許可します:

ufw allow 80/tcp

RFC1918 ネットワークからの接続を全て許可します:

ufw allow from 10.0.0.0/8
ufw allow from 172.16.0.0/12
ufw allow from 192.168.0.0/16

ホスト 1.2.3.4 から udp ポート 514 番への接続を拒絶します:

ufw deny proto udp from 1.2.3.4 to any port 514

1.2.3.5 ポート 5469 番から 1.2.3.4 ポート 5469 番への udp 接続を許可します:

ufw allow proto udp from 1.2.3.5 port 5469 to 1.2.3.4 port 5469

REMOTE MANAGEMENT

ufw を初期化スクリプトから有効化または起動する時、 ufw はチェインを破棄します。
チェインの破棄は ufw が一貫性のある状態を保つ為に必要です。
ただし既存のコネクション(例えば ssh)を切断する可能性があります。
ufw はファイアウォール有効化前のルール登録をサポートしています。
管理者は ufw enable の実行前にルールの登録を行うことができます:

ufw allow proto tcp from any to any port 22

ルール群は破棄されたままですが、ファイアウォール有効化後に ssh ポートが開放されます。
一度 ufw が有効化されると、ルールの登録または削除が行われてもチェインの破棄を実行しないことに注意してください。
(ただしルールの改訂または default ポリシーの変更時は例外です)
ssh 実行中にファイアウォールを有効化する場合、デフォルトでは ufw は確認を行います。
ufw --force enable を使用することで確認を無効化することができます。

APPLICATION INTEGRATION

ufw は /etc/ufw/applications.d 配下のプロファイル群を読み込むことで、アプリケーションの統合をサポートします。
ufw が認識しているアプリケーションプロファイルの名前を一覧するには下記を使用します:

ufw app list

ユーザーはルールの登録時にアプリケーション名を指定することができます。
(プロファイル名をスペースの後に指定してください)
単純な構文を使用する場合を例示します:

ufw allow <name>

拡張構文を使用することもできます:

ufw allow from 192.168.0.0/16 to any app <name>

どちらの構文においてもユーザーはプロトコルを指定するべきではありません。
拡張構文においてはポート句の代わりに app を使用します。

特定のアプリケーションプロファイルについての詳細をファイアウォール上で確認することができます:

ufw app info <name>

<name> には app list コマンドで確認したアプリケーションの名前を指定します。
ユーザーは all を指定して既知のアプリケーションプロファイルを全てみることもできます。

アプリケーションプロファイルの構文は単純な .INI 形式です:

[<name>]
title=<title>
description=<description>
ports=<ports>

ports フィールドは | 区切りでポート/プロトコルを指定します。
プロトコル部分はオプションです。
複数のポートを指定する為に , 区切りのリスト、または範囲指定(start:end の指定)を使用することもできます。
一括指定する場合はプロトコル指定が必須となります。
記述例を示します:

[SomeService]
title=Some title
description=Some description
ports=12/udp|34|56,78:90/tcp

上記の例では SomeServiceapp ルールの中で使用され、
UDP ポート 12 番、ポート 34 番の TCP と UDP、 TCP ポート 56 番と 78-90 番が指定されます。

アプリケーションプロファイルを作成または編集した後は下記を実行します:

ufw app update <name>

このコマンドは、更新されたプロファイルの情報を使用してファイアウォールを自動的に更新します。
name 部分に all を指定した場合、全プロファイルが更新されます。
単一のプロファイルを更新して新規ルールをファイアウォールへ自動的に追加する場合は下記を実行します:

ufw app update --add-new <name>

update --add-new コマンドの挙動は、下記のコマンドを使用して設定することができます:

ufw app default <policy>

デフォルトのアプリケーションポリシーは skip です。
update --add-new コマンドは何も実行しません。
update --add-new コマンドでファイアウォールを自動的に更新するには
はポリシーとして allow または deny を指定します。

WARNING: アプリケーションプロファイルに対して default allow を使用した場合、セキュリティ上のリスクとなる可能性があります。
default allow ポリシーを使用する前にセキュリティへの影響を注意深く考慮してください。

LOGGING

ufw は複数のロギングレベルをサポートしています。
ログレベルを指定しない場合のデフォルトログレベルは low です。
ユーザーはログレベルを下記のように指定することができます:

ufw logging LEVEL

LEVEL には offlowmediumhighfull を指定します。
以下にログレベルの定義を示します:

  • off: ufw の管理するロギングを無効化します。

  • low: 定義されたポリシー(レート制限付き)に一致しないブロックされたパケットと、登録されたルールに一致するパケットをすべて記録します。

  • medium: ログレベル low の内容に加えて、定義されたポリシーに一致せず許可されたパケット、全ての不正なパケット、全ての新規接続を記録します。
    すべてのログ記録はレート制限付きで行われます。

  • high: ログレベル medium (レート制限無し)の内容に加えて、全パケットをレート制限付きで記録します。

  • full: レート制限無しのログレベル high を記録します。

medium より上のログレベルは大量のログ出力を生成し、
ディスク容量を早々に埋め尽くしてしまうことがあります。
ログレベル medium も大量のログ出力を生成し、システムをビジー状態にしてしまうことがあります。

ロギングが有効化されていない場合に単純に on を指定するとログレベル low を有効化してログを記録します。

REPORTS

以下のレポートがサポートされています。
それぞれ稼働しているシステムに基づいており、 listening レポートを除いて、生の iptables 形式です:

  • raw
  • builtins
  • before-rules
  • user-rules
  • after-rules
  • logging-rules
  • listening
  • added

raw レポートは完全なファイアウォールを表示します。
他のレポートは raw レポートのサブセットを表示します。

listening レポートは稼働しているシステム上のポート(待受け状態にある tcp と開放状態にある udp 、当該ポートで待受けているインターフェイスのアドレスと実行可能ファイル)を表示します。

* は、実行可能ファイルが全インターフェイスのポートに紐付けされた時に、インターフェイスのアドレスの置き換えに使用されます。

ポート上のコネクションに影響を与えるルール群の一覧を以下に示します。
カーネルによって評価される順にルール群を列記します。
デフォルトポリシーはリスト表示されず、 tcp6 と udp6 は IPV6 が有効化されている場合に限り表示されます。

added レポートは、コマンドライン上で追加されたルール群の一覧を表示します。
このレポートはファイアウォールの起動ステータスを表示しません。
(代わりに ufw status を使用してください)
ルール群は ufw によって標準化される為、登録した元のルールとは異なる見た目になることがあります。
また ufw はコマンドの順序を記録しません。
他のルール群の後に列記される IPv6 限定のルール群でも同様です。

NOTES

インストール時、 ufw はデフォルト受信ポリシー deny 、デフォルト転送ポリシー deny 、デフォルト送信ポリシー allow
新規受信コネクションと転送されたコネクションのステートフルトラッキング付きで無効化されています。
上記に加えて、次のことを実行するデフォルトのルールセットが導入されています:

  • RHo ヘッダー付きのパケットを破棄

  • 不正なパケットを破棄

  • 一定の icmp パケット(受信・転送)を受入。

    • IPv4
      • destination-unreachable
      • source-quench
      • time-exceeded
      • parameter-problem
      • echo-request
    • IPv6
      • destination-unreachable
      • source-quench
      • time-exceeded
      • parameter-problem
      • echo-request
  • ステートレス自動設定(INPUT)の icmpv6 パケットを受入

  • IPv6 リンクローカル(ffe8::/10)アドレス(INPUT)からの ping 返答を受入

  • DHCP クライアントトラフィック(INPUT)を受入

  • 非ローカルトラフィック(INPUT)を破棄

  • サービス検知(INPUT)の mDNS を受入

    • zeroconf
    • bonjour
    • avahi 224.0.0.251 for IPv4
    • ff02::fb for IPv6
  • サービス検知(INPUT)の UPnP を受入

    • 239.255.255.250 for IPv4
    • ff02::f for IPv6

ルールの順序は重要です。
最初に合致したルールが適用されます。
したがってルールを追加時は、より具体的なルールを最初に追加し、より一般的なルールを後から追加します。

ufw は、コマンドラインインターフェイスによる完璧なファイアウォール機能の提供を企図するものではありません。
シンプルなルール群の登録または削除をする為の、簡単な方法を提供します。

status コマンドは、ファイアウォールの状態に関する基本的な情報と、ufw コマンドが管理するルール群を表示します。
/etc/ufw 配下のファイルから取り込んだルール群は表示しません。
ファイアウォールの完全な状態を見るには、 ufw show raw を使用することができます。
これは次を使用して、filter 、 nat 、 mangle 、 raw テーブルを表示します:

iptables -n -L -v -x -t <table>
ip6tables -n -L -v -x -t <table>

詳細は iptablesip6tables のドキュメントを参照してください。

default ポリシーが REJECT に設定されている場合、
ufw フレームワームの外側で追加されたルール群へ ufw が影響を与えることがあります。
詳細は README を参照してください。

IPV6 は既定で許可されています。
ループバックインターフェイス上の IPv6 トラフィックのみ受け入れるように変更するには、
/etc/default/ufw 内の IPV6 を no に設定して
ufw を再起動します。
IPv6 が有効化されている場合、 IPv4 ルール群と同様の方法でルールを指定することがあります。
指定されたルール群は ufw status へ表示されます。
IPv4 アドレスと IPv6 アドレス双方に合致するルール群は、双方の IP バージョンへ適用されます。
例えば、 IPv6 が有効化されている場合、下記のルールは IPv4 トラフィックと IPv6 トラフィック双方のポート 22 番への接続を許可します:

ufw allow 22

IPv6 over IPv4 トンネルと 6to4 は ipv6 プロトコル(41)の使用によってサポートされています。
上記のプロトコルは完全な構文のみ使用できます。
記述例を示します:

ufw allow to 10.0.0.1 proto ipv6
ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ipv6

IPSec は esp (50)と ah (51)プロトコルの使用によってサポートされています。
上記のプロトコルは完全な構文のみ使用できます。
記述例を示します:

ufw allow to 10.0.0.1 proto esp
ufw allow to 10.0.0.1 from 10.4.0.0/16 proto esp
ufw allow to 10.0.0.1 proto ah
ufw allow to 10.0.0.1 from 10.4.0.0/16 proto ah

keepalived は vrrp (112)プロトコルの使用によってサポートされています。
上記のプロトコルは完全な構文のみ使用できます。
記述例を示します:

ufw allow to 224.0.0.0/24 from 10.0.0.1 proto vrrp

コマンドラインインターフェイスに加えて、 ufw は完全なネットフィルターと同様に管理者が既定の動作を修正するフレームワームを提供します。
詳細は ufw-framework マニュアルページを参照してください。

SEE ALSO

  • ufw-framework(8)
  • iptables(8)
  • ip6tables(8)
  • iptables-restore(8)
  • ip6tables-restore(8)
  • sysctl(8)
  • sysctl.conf(5)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?