Ubuntu Server 標準でインストールされているファイアウォール ufw の設定方法を紹介します。
確認環境
- Ubuntu 22.04 LTS Server
ufw 状態確認および起動停止
ufwはインストール直後では停止した状態となっています。
ufw 状態確認( ufw status )
ufw status コマンド状態を確認できます。 active が有効 inactive と表示されていたら停止状態
1 2 3 |
test@ubuntu2204-1:~$ sudo ufw status Status: inactive test@ubuntu2204-1:~$ |
1 2 3 |
test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
詳細表示方法および番号リスト付きのファイアウォールのルールの表示として下記オプションがあります。
- sudo ufw status verbose
- sudo ufw status numbered
ufw 起動 ( enable )
ufw の起動方法 (自動起動の設定も同時に設定される)
1 2 3 4 |
test@ubuntu2204-1:~$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup test@ubuntu2204-1:~$ |
ufw 停止 ( disable )
ufwの停止方法 (自動起動の設定も同時に無効になります。)
1 2 3 |
test@ubuntu2204-1:~$ sudo ufw disable Firewall stopped and disabled on system startup test@ubuntu2204-1:~$ |
ufw ファイアウォール初期動作の確認および変更方法
ufw ファイアウォールは起動した状態では外部(incoming)からのパケットをdeny ( 廃棄 ) 状態となっています。
1 2 3 4 5 6 |
test@ubuntu2204-1:~$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip test@ubuntu2204-1:~$ |
Defaultの動作は、すべてのルールの条件をパスした結果の動作になります。従って、ルールがない状態だと外部(incommoing)からのパケットはdeny(廃棄)する動作となります。
これらの状態を変更には ufw default で変更することができます。
- deny (廃棄)
- reject (拒絶)
- allow (許可)
が選択できます。デフォルトの動作ufw default で変更することができます。下記は incoming をreject に変更になります。
1 2 3 4 5 6 7 8 9 10 |
test@ubuntu2204-1:~$ sudo ufw default reject Default incoming policy changed to 'reject' (be sure to update your rules accordingly) test@ubuntu2204-1:~$ test@ubuntu2204-1:~$ sudo ufw status verbose Status: active Logging: on (low) Default: reject (incoming), allow (outgoing), disabled (routed) New profiles: skip test@ubuntu2204-1:~$ |
ufw のルールの追加、削除
TCP/UDP 両方のポート番号許可 ルール追加
プロトコルを記載しない場合 TCP / UDP 両方が設定されます。 下記はポート53 (TCP/UDP)を許可する設定になります。
1 2 3 4 5 6 7 8 9 10 11 12 |
test@ubuntu2204-1:~$ sudo ufw allow 53 Rule added Rule added (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- 53 ALLOW Anywhere 53 (v6) ALLOW Anywhere (v6) test@ubuntu2204-1:~$ |
TCP / UDP 両方のポート番号許可 ルール削除
上記で設定した TCP/DUP ポート番号 53 のルールの削除は下記になります。
1 2 3 4 5 6 |
test@ubuntu2204-1:~$ sudo ufw delete allow 53 Rule deleted Rule deleted (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
TCPのみポート番号許可 ルール追加
TCPプロトコルを指定した上で特定のポート番号を許可 下記は 80/tcp の設定
1 2 3 4 5 6 7 8 9 10 11 12 |
test@ubuntu2204-1:~$ sudo ufw allow 80/tcp Rule added Rule added (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- 80/tcp ALLOW Anywhere 80/tcp (v6) ALLOW Anywhere (v6) test@ubuntu2204-1:~$ |
TCPのみポート番号許可 ルール削除
TCPプロトコルを指定した上で特定のポート番号を削除
1 2 3 4 5 6 |
test@ubuntu2204-1:~$ sudo ufw delete allow 80/tcp Rule deleted Rule deleted (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
UDPのみポート番号許可 ルール追加
UDPプロトコルを指定した上で特定のポート番号の許可 下記は ポート番号 51820 プロトコル UDP
1 2 3 4 5 6 7 8 9 10 11 12 |
test@ubuntu2204-1:~$ sudo ufw allow 51820/udp Rule added Rule added (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- 51820/udp ALLOW Anywhere 51820/udp (v6) ALLOW Anywhere (v6) test@ubuntu2204-1:~$ |
UDPのみポート番号許可 ルール削除
UDPプロトコルを指定した特定のポート番号のルール削除
1 2 3 4 5 6 |
test@ubuntu2204-1:~$ sudo ufw delete allow 51820/udp Rule deleted Rule deleted (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
連続したポート番号許可 ルール追加
連続したポート番号でルールの追加 今回の例は 10500-10599 連続したポート番号 かつ TCP の許可
1 2 3 4 5 6 7 8 9 10 11 12 |
test@ubuntu2204-1:~$ sudo ufw allow 10500:10599/tcp Rule added Rule added (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- 10500:10599/tcp ALLOW Anywhere 10500:10599/tcp (v6) ALLOW Anywhere (v6) test@ubuntu2204-1:~$ |
連続したポート番号許可 ルール削除
連続したポート番号でルールの削除
1 2 3 4 5 6 |
test@ubuntu2204-1:~$ sudo ufw delete allow 10500:10599/tcp Rule deleted Rule deleted (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
アドレス指定(送信元アドレス src) での許可 ルール追加
指定アドレス(ネットワーク)を許可するルールの追加 下記は 192.168.0.0/16 からの送信元パケットは許可します。
1 2 3 4 5 6 7 8 9 10 |
test@ubuntu2204-1:~$ sudo ufw allow from 192.168.0.0/16 Rule added test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- Anywhere ALLOW 192.168.0.0/16 test@ubuntu2204-1:~$ |
アドレス指定(送信元アドレス src) での許可 ルール削除
指定アドレス(ネットワーク)を許可したルールの削除します。
1 2 3 4 5 |
test@ubuntu2204-1:~$ sudo ufw delete allow from 192.168.0.0/16 Rule deleted test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
アドレス指定(送信先アドレス dest) での許可 ルール追加
指定アドレス(ネットワーク)を許可するルールの追加 下記は 192.168.0.0/16 への送信先パケットは許可します。
1 2 3 4 5 6 7 8 9 10 |
test@ubuntu2204-1:~$ sudo ufw allow to 172.16.0.0/12 Rule added test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- 172.16.0.0/12 ALLOW Anywhere test@ubuntu2204-1:~$ |
アドレス指定(送信先アドレス dest) での許可 ルール削除
指定アドレス(ネットワーク)を許可するルールの削除 下記は 192.168.0.0/16 への送信先パケットのルールを削除します。
1 2 3 4 5 |
test@ubuntu2204-1:~$ sudo ufw delete allow to 172.16.0.0/12 Rule deleted test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
インターフェイス(eth0)指定での許可 ルール追加
eth0インターフェイスに入ってくるパケットを許可するルールを追加する。
1 2 3 4 5 6 7 8 9 10 11 12 |
test@ubuntu2204-1:~$ sudo ufw allow in on eth0 Rule added Rule added (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- Anywhere on eth0 ALLOW Anywhere Anywhere (v6) on eth0 ALLOW Anywhere (v6) test@ubuntu2204-1:~$ |
インターフェイス(eth0)指定での許可 ルール削除
eth0インターフェイスに入ってくるパケットを許可するルールを削除する。
1 2 3 4 5 6 |
test@ubuntu2204-1:~$ sudo ufw delete allow in on eth0 Rule deleted Rule deleted (v6) test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
条件の組み合わせ
宛先やポート番号やインターフェイスを組み合わせてた条件のルールを設定することが可能です。下記は送信元 172.18.0.0/16 宛先 any ポート番号 80 の条件が全て一致した場合allow(許可)になります。
1 2 3 4 5 6 7 8 9 10 |
test@ubuntu2204-1:~$ sudo ufw allow from 172.18.0.0/16 to any port 80 Rule added test@ubuntu2204-1:~$ sudo ufw status Status: active To Action From -- ------ ---- 80 ALLOW 172.18.0.0/16 test@ubuntu2204-1:~ |
条件の組み合わせ
上記のルールの削除になります。
1 2 3 4 5 |
test@ubuntu2204-1:~$ sudo ufw delete allow from 172.18.0.0/16 to any port 80 Rule deleted test@ubuntu2204-1:~$ sudo ufw status Status: active test@ubuntu2204-1:~$ |
ufw 番号に基づくルール編集
ルールの番号確認 ufw status numbered
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
test@ubuntu2204-1:~$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] Anywhere DENY IN 10.0.0.0/8 [ 3] 80/tcp ALLOW IN Anywhere [ 4] 443/tcp ALLOW IN Anywhere [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 7] 443/tcp (v6) ALLOW IN Anywhere (v6) test@ubuntu2204-1:~$ |
ルールの左に[ number ] が番号になります。 上記の例では 番号4 は 443/tcp がルールになります。
ufw status number コマンドでufwのルールの番号を確認することができます。ufwのファイアウォールはこの若番から順番に評価されます。
上記の例では、「2」に10.0.0.0/8 からのパケットをdeny(廃棄)設定がはいっていますが、「1」の22/tcp SSH から先に記載されていますので、10.0.0.0/8であっても 22/TCPは許可されます。逆に「3」以降に80(http), 443(https)のallow(許可)を記載していますが、10.0.0.0/8からのhttpパケットは[2]のルールが先に記載されているのでdeny(廃棄)されます。
そのため、設定する際はルール番号を意識して設定する必要があります。
ルール番号を元に削除 ufw delete 番号
ルール番号から該当のルールを削除することができます。下記は 3 を削除した実行例になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
test@ubuntu2204-1:~$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] Anywhere DENY IN 10.0.0.0/8 [ 3] 80/tcp ALLOW IN Anywhere [ 4] 443/tcp ALLOW IN Anywhere [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 7] 443/tcp (v6) ALLOW IN Anywhere (v6) test@ubuntu2204-1:~$ sudo ufw delete 3 Deleting: allow 80/tcp Proceed with operation (y|n)? y Rule deleted test@ubuntu2204-1:~$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] Anywhere DENY IN 10.0.0.0/8 [ 3] 443/tcp ALLOW IN Anywhere [ 4] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 5] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 443/tcp (v6) ALLOW IN Anywhere (v6) test@ubuntu2204-1:~$ |
番号の任意箇所にルールの追加
ルールは小さい番号から評価して処理が決定されます。通常のルール設定では、番号の最終行に追加されます。番号を指定することで任意の場所にルールを追加することが可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
test@ubuntu2204-1:~$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] Anywhere DENY IN 10.0.0.0/8 [ 3] 443/tcp ALLOW IN Anywhere [ 4] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 5] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 443/tcp (v6) ALLOW IN Anywhere (v6) test@ubuntu2204-1:~$ sudo ufw insert 2 deny from 192.168.0.0/24 Rule inserted test@ubuntu2204-1:~$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 22/tcp ALLOW IN Anywhere [ 2] Anywhere DENY IN 192.168.0.0/24 [ 3] Anywhere DENY IN 10.0.0.0/8 [ 4] 443/tcp ALLOW IN Anywhere [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 80/tcp (v6) ALLOW IN Anywhere (v6) [ 7] 443/tcp (v6) ALLOW IN Anywhere (v6) test@ubuntu2204-1:~$ |
ufw reset ( 初期化 および ファイアウォール停止 )
設定したufwのルールおよびファイアウォールを無効を reset コマンドで実行できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
test@ubuntu2204-1:~$ sudo ufw reset Resetting all rules to installed defaults. This may disrupt existing ssh connections. Proceed with operation (y|n)? y Backing up 'user.rules' to '/etc/ufw/user.rules.20220716_142817' Backing up 'before.rules' to '/etc/ufw/before.rules.20220716_142817' Backing up 'after.rules' to '/etc/ufw/after.rules.20220716_142817' Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220716_142817' Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220716_142817' Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220716_142817' test@ubuntu2204-1:~$ sudo ufw status Status: inactive test@ubuntu2204-1:~$ |
参考サイト
Ubuntu 22.04 LTS Server 記事一覧
Ubuntu 22.04 LTS Server インストール
Ubuntu 22.04 LTS Server 環境変更
- Ubuntu 22.04 LTS Server タイムゾーン日本時間(JST)への変更手順
- Ubuntu 22.04 LTS Server システムのロケール 日本語(UTF-8)への変更手順
- Ubuntu 22.04 LTS Server ネットワークの設定 ( IPv4アドレス、DNS(resolve) 、デフォルトゲートウェイ、static route )
- Ubuntu 22.04 LTS Server ファイアウォール(ufw)の起動および設定手順