Ubuntuのパッケージマネージャーから入れられるファイアーウォールはfirewalld
の他にも、ufw
(Uncomplicated FireWall)というソフトウェアがあるらしい。
名前からして単純らしいのでその使い方を調べた時のメモ。
ufw
のインストール
$ sudo apt install ufw
状態の確認 (ufw status
)
ufw
が有効になっているのかどうか、また空けているポートの確認が可能。
$ sudo ufw status Status: active To Action From -- ------ ---- 3000 ALLOW Anywhere 22/tcp ALLOW Anywhere 3000 (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6)
無効な場合には、以下のようにinactive
と表示される。
また、設定によって開けているポートも表示されることはない。
$ sudo ufw status Status: inactive
ファイアーウォールの無効化 (ufw disable
)
$ sudo ufw disable Firewall stopped and disabled on system startup
ファイアーウォールの有効化 (ufw enable
)
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
ポートの追加
通信を許可するポートを追加 (ufw allow
)
3001/tcp
を許可するように設定する。
nariba@ubuntu2204lts:~$ sudo ufw allow 3001/tcp Rule added Rule added (v6)
通信を拒否するポートの追加 (ufw deny
)
3001/tcp
を拒否するように設定する。
なお、似たようなオプションとしてreject
もあるが、セキュリティ的にはdeny
のほうが好ましい。
$ sudo ufw deny 3001/tcp Rule updated Rule updated (v6)
設定の削除 (ufw delete
)
ufw status numbered
で設定の番号を確認し、その番号をufw delete NUM
で削除する。
$ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 3000 ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 3001/tcp DENY IN Anywhere <--- これを削除したい [ 4] 3000 (v6) ALLOW IN Anywhere (v6) [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 3001/tcp (v6) DENY IN Anywhere (v6) <--- これを削除したい $ sudo ufw delete 3 Deleting: deny 3001/tcp Proceed with operation (y|n)? y Rule deleted $ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 3000 ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 3000 (v6) ALLOW IN Anywhere (v6) [ 4] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 5] 3001/tcp (v6) DENY IN Anywhere (v6) $ sudo ufw delete 5 Deleting: deny 3001/tcp Proceed with operation (y|n)? y Rule deleted (v6)
通信を拒否する場合には、deny
とreject
どちらが好ましいのか?
ufw
を使ってあるポートにdeny
, reject
それぞれの設定をかけた場合、ポートスキャナであるnmap
コマンドを使うとどう見えるのかを調べる。
以下のようにreject
を設定した場合ほかのユーザーから設定が見えてしまうので、reject
よりもdeny
を設定したほうがよさそう。
reject
を設定した場合
ufw
の設定とその確認
$ sudo ufw reject 3001/tcp Rule added Rule added (v6) $ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 3000 ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 3001/tcp REJECT IN Anywhere [ 4] 3000 (v6) ALLOW IN Anywhere (v6) [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 3001/tcp (v6) REJECT IN Anywhere (v6)
ポートスキャンの結果
$ sudo nmap -Pn 192.168.XXX.XXX Starting Nmap 7.92 ( https://nmap.org ) at 2022-08-08 15:10 JST Nmap scan report for XXXXXXX (192.168.XXX.XXX) Host is up (0.00018s latency). Not shown: 997 filtered tcp ports (no-response) PORT STATE SERVICE 22/tcp open ssh 3000/tcp open ppp 3001/tcp closed nessus <----- ポートが見えている MAC Address: XX:XX:XX:XX:XX:XX (QEMU virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 4.23 seconds
deny
を設定した場合
ufw
の設定とその確認
$ sudo ufw deny 3001/tcp Rule updated Rule updated (v6) $ sudo ufw status numbered Status: active To Action From -- ------ ---- [ 1] 3000 ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 3001/tcp DENY IN Anywhere [ 4] 3000 (v6) ALLOW IN Anywhere (v6) [ 5] 22/tcp (v6) ALLOW IN Anywhere (v6) [ 6] 3001/tcp (v6) DENY IN Anywhere (v6)
ポートスキャンの結果
$ sudo nmap -Pn 192.168.XXX.XXX Starting Nmap 7.92 ( https://nmap.org ) at 2022-08-08 15:10 JST Nmap scan report for XXXXXXX (192.168.XXX.XXX) Host is up (0.00019s latency). Not shown: 998 filtered tcp ports (no-response) PORT STATE SERVICE 22/tcp open ssh 3000/tcp open ppp MAC Address: XX:XX:XX:XX:XX:XX (QEMU virtual NIC) Nmap done: 1 IP address (1 host up) scanned in 4.54 seconds