Windowsの Defender Firewall、RockyLinuxの firewalld のように、Ubuntuにもファイアウォールを設定しましょう。
こんにちは。
Ubuntuのデフォルトインストールでファイアウォールのソフトが入っているんですが、無効状態になっています。
でもサーバーでは有効にしておきたいですね。
これまでサーバーを作る時に設定が面倒臭くてやってなかったのですが、そろそろマズいかなと重い腰を上げることにしました。
対象の環境は Ubuntu Server 22.04.1 になりますが、他のバージョンや Desktopでも同じでしょう(多分)。
ufwコマンド(program for managing a netfilter firewall)がそれですよ、と言ってしまうと語弊がありますね。
実体は netfilter で、ufwコマンドでそれを操作するってことです。
作業前には通信ができていることを証明するため、何かサーバープロセスがないか見てみたら、先日インストールした code-server がありましたので、それにアクセスしてみます。
アクセスできていますね。
では、まず有効化から。
しかし早合点してやってしまってはいけません。
有効になった途端に sshのセッションが切れてしまいます。
遠隔地のサーバーにやらかした日には目もあてられません。
ファイアウォールが有効になるのは有効化した後にリブートしたときからですが、保険として先に sshだけは開けておきましょう。
subro@UbuntuServer2204:~$ sudo ufw allow 22/tcp
ルールをアップデートしました
これで大丈夫なはずですが、意識高い系のあわてんぼうさんはセキュリティのために sshのポートを変えていたりしますので、十分にご注意下さい。
では有効化。
subro@UbuntuServer2204:~$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y ファイアウォールはアクティブかつシステムの起動時に有効化されます。
ステータスを取ってみます。
subro@UbuntuServer2204:~$ sudo ufw status
状態: アクティブ
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
良さげですね。
自腹でのサーバールーム出張の準備はお済みでしょうか。
久し振りにコンソール作業を楽しめるかも知れません。
リブートします。
subro@UbuntuServer2204:~$ sudo reboot
リブートが済んで、改めて sshでログインすることができました。
他のポートはどうでしょうか。
code-serverにアクセスしてみます。
予想通りタイムアウトしました。
この際ログファイル /var/log/ufw.log には以下のようなメッセージが出力されていました。
Dec 5 20:41:20 ubuntuserver2204 kernel: [ 180.383885] [UFW BLOCK] IN=ens32 OUT= MAC=00:0c:29:16:22:22:00:0c:29:6c:ea:c0:08:00 SRC=192.168.1.45 DST=192.168.1.102 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=48994 DF PROTO=TCP SPT=48384 DPT=8080 WINDOW=64240 RES=0x00 SYN URGP=0
では、code-serverのために、8080/tcp を開けましょう。
subro@UbuntuServer2204:~$ sudo ufw allow 8080/tcp ルールを追加しました subro@UbuntuServer2204:~$ sudo ufw status 状態: アクティブ To Action From -- ------ ---- 22/tcp ALLOW Anywhere 8080/tcp ALLOW Anywhere
設定は良さげです。
code-serverに再びアクセスしてみます。
※画像は使いまわしですが、ちゃんとアクセスできたことを確認しています。
入れるようになりました。
他のサーバープロセスにも同様の手法で穴を開けていけば良いでしょう。
以上、大したネタではないのですが、記しておきました。