ファイアウォール
Ubuntu標準のファイアウォールであるUFWを設定するとともに、基本的な使い方を説明します。
基本的な考え方として「必要最小限のサービスを必要最小限のホストに開放する」ということを心がけましょう。絶対とは言えませんが、ある程度はセキュアに保つことができると思います。
UFW
Ubuntu 22.04 Serverの標準的なインストールを実施したのであれば、UFWはインストール済みのはずです。
有効化
UFWを有効化するには次のコマンドを実行します。
$ sudo ufw enable
ポートの開放
UFWを有効化すると、サーバーへの全ての通信が遮断されるので注意が必要です。
特に、SSHで遠隔操作している時は、次回からの接続ができなくなります。もしも、SSH接続ができなくなったら、サーバー本体のターミナルからポートの解放をしましょう。
SSHでUFWを有効にする場合は、最初にポートは22 を解放しましょう。
$ sudo ufw allow 22
Rule added
Rule added (v6)
UFWのポート 22 が有効化されているか確認してみましょう。
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 22 (v6) ALLOW IN Anywhere (v6)
この場合、IPv4アドレスに加えIPv6アドレスのポートも解放されました。
ポートの開放設定の削除
IPv4のポートのみ解放したい場合は、IPv6の22番ポートの設定を削除します。
UFWの設定を番号を指定して削除します。
この場合、番号2のポート22 IPv6 ポート22 ([ 2] 22 (v6) ALLOW IN Anywhere (v6) )を削除してみる。
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 22 (v6) ALLOW IN Anywhere (v6) <---削除したい
$ sudo ufw delete 2
Deleting:
allow 22
Proceed with operation (y|n)? y
Rule deleted (v6)
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 1] 22 ALLOW IN Anywhere だけになり、ポート22 IPv6 からアクセスはできなくなりました。
ポートとTCPの開放
通信には TCP と UDP があり、TCP の Port 22 のみを解放するには、
$ sudo ufw allow proto tcp to 0.0.0.0/0 port 22
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
ポートの閉鎖
UFWのデフォルトでは、すべてのポートは閉鎖されていますが、あえてポートを閉鎖するには、deny を使用します。
$ sudo ufw deny ポート番号
特定のIPアドレスに対するポートの開放
実際には特定のIPアドレスに対してSSHのポートを開放したい場合が多いでしょう。
その時は次のように実行します。
$ sudo ufw allow proto tcp from 192.168.0.2 to any port 22
特定のサブネットに対してSSHのポートを開放したい場合は、
$ sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22
特定のサブネット IP/24 ならば、192.168.0.0 – 192.168.0.255 のアドレス以外からの通信は遮断されます。
操作 | コマンド |
---|---|
ufwの状態確認 | $ sudo ufw status verbose |
ufwの停止 | $ sudo systemctl stop ufw |
ufwの起動 | $ sudo systemctl start ufw |
ufwの再起動 | $ sudo systemctl restart ufw |
設定のリロード | $ sudo systemctl reload ufw |
自動起動の有効化 | $ sudo systemctl enable ufw |
自動起動の無効化 | $ sudo systemctl disable ufw |
ufwの状態確認(デーモン) | $ sudo systemctl status ufw |
ufwの状態確認(設定) | $ sudo ufw status verbose |
ufwの設定の有効化 | $ sudo ufw enable |
ufwの設定の無効化 | $ sudo ufw disable |