Ubuntu Server26.10 : SSH , ファイアウォール

1. SSHサービスのセキュリティ設定

SSHサービスはデフォルトでrootユーザーのログインを許可しています。rootユーザーはユーザー名が既に判明しているためパスワードが判明すると、管理者権限でサーバーへログイン出来るため、これを拒否する設定を行います

1.1 一般ユーザーの作成

サーバーに作成されているユーザーがrootのみの場合、SSHによるリモートログインが出来なくなりますので、OSのインストール時にユーザーを作成していない場合、事前にユーザーを作成する必要があります。OSのインストール時にユーザーを作成している場合は、本手順は不要です。
ユーザーの作成は"useradd"コマンドで行います。"-m"オプションでホームディレクトリの作成、"-p"オプションでパスワードを指定します。
例えばユーザーアカウント名として「ubuntuuser」、パスワードとして「123456」を設定する場合は、以下のように実行します。

# useradd -m -p 123456 ubuntuuser

1.2 SSHサービスの設定ファイル変更

SSHサービスの設定を変更するために設定ファイルを変更します。
今回はデフォルトのSSHポート22から2244に変更して進めます。

# vi /etc/ssh/sshd_config

36行目 : ssh接続ポート2244を追加
#port 22
Port 2244

38行目 : コメント解除
ListenAddress 0.0.0.0

56行目 : コメント解除(prohibit-passwordはrootについてはパスワード認証を無効にする)
PermitRootLogin prohibit-password
# vi /lib/systemd/system/ssh.socket

7-8行目の次のパラメータを選択したポート (例: 2244) に変更する
ListenStream=0.0.0.0:2244
ListenStream=[::]:2244

システムデーモンをリロードする

# systemctl daemon-reload  

SSHサービスの再起動

# systemctl restart ssh

このままでは再度SSH接続しても接続できないので、次のファイアウォールで変更したSSHポート2244を許可する

2. ファイヤーウォールの設定

Ubuntuでは「ufw」というソフトウェアを使ってファイアウォールを設定することが多いので、ufwを利用したファイアウォール設定を行います。
ufwはOSの導入時にインストールされています。インストール後に最低限のフィルタ設定を行う手順を紹介します。

2.1 ufwパッケージの確認

インストールされているUFWパッケージを確認

# dpkg -l | grep ufw
ii  ufw        0.36.2-10      all          program for managing a Netfilter firewall

インストールされている「ufwパッケージ」が表示されました
ufwの動作状況を確認

# systemctl status ufw
● ufw.service - Uncomplicated firewall
     Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; preset: enabled)
     Active: active (exited) since Fri 2026-10-16 09:45:43 JST; 41min ago
 Invocation: be44f9ac3a7c42e79cd2e2eab2d51259
       Docs: man:ufw(8)
   Main PID: 926 (code=exited, status=0/SUCCESS)
   Mem peak: 2.3M
        CPU: 5ms

Oct 16 09:45:43 lepard systemd[1]: Starting ufw.service - Uncomplicated firewall...
Oct 16 09:45:43 lepard systemd[1]: Finished ufw.service - Uncomplicated firewall.

ufwサービスが起動していることが「Active: inactive (exited)」と表示されていることから確認できます。

ufwを有効にします。

# systemctl enable ufw
# ufw enable

2.2 基本的なファイアウォールルールの設定

ufwを有効にするとデフォルトのファイアウォールルールが適用されます。このまま有効にするとサーバーと通信ができなくなる可能性がありますので、ufwを有効にする前に基本的なルールを設定しておきます。

2.2.1 受信パケット デフォルトルールの設定

まず受信パケットに対するルールを設定します。受信パケットは特定の通信以外、全てを拒否する形が一般的なルールになります。全ての受信パケットを基本的に拒否するように"ufw default deny incoming"を実行します。

# ufw default deny incoming
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
2.2.2 送信パケット デフォルトルールの設定

送信パケットは全てを許可する形が一般的なルールになります。送信パケットを基本的に許可するように"ufw default allow outgoing"を実行します。

# ufw default allow outgoing
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)

2.3 SSHポートの許可

SSH接続の許可を設定します。デフォルトのSSHポートは22です。次のコマンドで許可設定

# ufw allow ssh
# ufw reload

独自に2244ポート(例)に設定している場合は

# ufw allow 2244/tcp
# ufw reload

2.4 ufwの設定確認

有効後にファイアウォールに設定したルールの確認

# ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
123/udp                    ALLOW IN    Anywhere
22/tcp                     ALLOW IN    Anywhere
2244/tcp                   ALLOW IN    Anywhere
123/udp (v6)               ALLOW IN    Anywhere (v6)
22/tcp (v6)                ALLOW IN    Anywhere (v6)
2244/tcp (v6)              ALLOW IN    Anywhere (v6)

2.5 サーバーに入ってくるパケットを制限許可

ufwの設定で「ポート番号◯◯に来る通信を許可」としたい場合は以下のコマンド
# ufw allow [ポート番号]/tcp
逆に「ポート番号◯◯に来る通信を許可しない」としたい場合は以下のコマンド
# ufw deny [ポート番号]/tcp

①web等その他サービスの許可

ポート番号を指定して接続を許可する方法と、アプリケーションを指定しての設定も行えます。
以下のコマンドでアプリケーションの一覧が見れます。

# vi /etc/services

たとえばWEBサービスのhttpとhttpsを有効にするには

# ufw allow http
Rule added
Rule added (v6)

# ufw allow https
Rule added
Rule added (v6)

# ufw reload

➁ ipv6のufwを無効

# vi /etc/default/ufw
7行目
IPV6=yes → IPV6=no 書き換える

ファイアウオールを再起動

# systemctl restart ufw