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