UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Ubuntu 26.04.01 Serverでメールサーバを作る firewall編

Ubuntu 26.04.01 Serverでメールサーバを作る firewall編


概要

更新履歴

  • 2026/10/09 初版
  • 2026/10/15 誤記修正

目次

はじめに

  • このドキュメントでは,Ubuntu 26にてメールサーバを運用するにあたり,セットアップ中に予め必要なファイアウォール設定を行う.
    • セットアップ中に意図しないネットワークから接続されないようにする.
    • 外部から許可する接続はSSH/HTTP/HTTPS/SMTP/SMTPS/IMAPS/submission
    • SSHでの接続制御をおこなう方法はOS標準のFirewallを使う方法とOpenSSHで制限する方法がある.
    • 今回はOS標準のファイアウォールを使う方法にする.

ファイアウォールの現状確認

  • Ubuntu 26.0のOS標準のファイアウォールはufwなのでバージョンと現在設定を確認する.
server@mail:~$ ufw --version🆑
ufw 0.36.2
Copyright 2008-2023 Canonical Ltd.
server@mail:~$
server@mail:~$ sudo ufw status numbered🆑
Status: inactive
server@mail:~$
  • 現在は動作してない模様.

SSHを指定されたネットワークからの み接続できるように設定

  • 今回は,ローカルネットワークの192.168.20.xからのみ接続できるように設定する.
server@mail:~$ sudo ufw allow from 192.168.20.0/24 to any port 22 proto tcp🆑
[sudo: authenticate] Password:🔑
Rules updated🈁
server@mail:~$
  • ファイアウォールのルール(定義)が更新された.

HTTP/HTTPSを指定されたネッ トワークからのみ接続できるように設定

  • 80及び443ポートを許可する.
server@mail:~$ sudo ufw allow from 192.168.20.0/24 to any port 80 proto tcp🆑
Rules updated
server@mail:~$ sudo ufw allow from 192.168.20.0/24 to any port 443 proto tcp🆑
Rules updated
server@mail:~$

メールサーバとして利用できるように設 定

  • 今回はIMAP4を使ったメールサーバに必要なポートを解放する.
  • まずはサーバ間のプロトコルであるSMTP(25)とIMAPS(933)を開放する.
server@mail:~$ sudo ufw allow 25/tcp🆑
Rules updated
Rules updated (v6)
server@mail:~$ # IMAPS (ポート 993 / 暗号化IMAP - 推奨)🆑
server@mail:~$ sudo ufw allow from 192.168.20.0/24 to any port 993 proto tcp🆑
Rules updated
server@mail:~$
  • POP3(110番)/POP3S(995番)/IMAP(143番)は,今回は使わないので定義を入れない.
  • 次に,メールクライアントにThunderbirdを使う場合を想定してsubmission(587)ポートや SMTPS(465)ポートを開放する.
server@mail:~$ # submission (ポート 587 / STARTTLS - 推奨)
server@mail:~$ sudo ufw allow from 192.168.20.0/24 to any port 587 proto tcp🆑
Rules updated
server@mail:~$ # smtps (ポート 465 / SSL/TLS - 必要な場合)
server@mail:~$ sudo ufw allow from 192.168.20.0/24 to any port 465 proto tcp🆑
Rules updated
server@mail:~$

ufwの設定内容の確認

  • 設定が追加されたか確認.
server@mail:~$ sudo ufw status numbered🆑
Status: inactive
server@mail:~$
  • ufwが稼働してないのでレスポンスがない.
  • ufwを起動前でも追加されたルールは確認できる.
server@mail:~$ sudo ufw show added🆑
Added user rules (see 'ufw status' for running firewall):
ufw allow from 192.168.20.0/24 to any port 22 proto tcp
ufw allow from 192.168.20.0/24 to any port 80 proto tcp
ufw allow from 192.168.20.0/24 to any port 443 proto tcp
ufw allow 25/tcp
ufw allow from 192.168.20.0/24 to any port 993 proto tcp
ufw allow from 192.168.20.0/24 to any port 587 proto tcp
ufw allow from 192.168.20.0/24 to any port 465 proto tcp
server@mail:~$
  • 定義ファイル /etc/ufw/user.rules の ### RULES ### 以下に書き込まれているか を確認.
server@mail:~$ sudo cat /etc/ufw/user.rules🆑
*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###🈁ここから

### tuple ### allow tcp 22 0.0.0.0/0 any 192.168.20.0/24 in
-A ufw-user-input -p tcp --dport 22 -s 192.168.20.0/24 -j ACCEPT

### tuple ### allow tcp 80 0.0.0.0/0 any 192.168.20.0/24 in
-A ufw-user-input -p tcp --dport 80 -s 192.168.20.0/24 -j ACCEPT

### tuple ### allow tcp 443 0.0.0.0/0 any 192.168.20.0/24 in
-A ufw-user-input -p tcp --dport 443 -s 192.168.20.0/24 -j ACCEPT

### tuple ### allow tcp 25 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 25 -j ACCEPT

### tuple ### allow tcp 993 0.0.0.0/0 any 192.168.20.0/24 in
-A ufw-user-input -p tcp --dport 993 -s 192.168.20.0/24 -j ACCEPT

### tuple ### allow tcp 587 0.0.0.0/0 any 192.168.20.0/24 in
-A ufw-user-input -p tcp --dport 587 -s 192.168.20.0/24 -j ACCEPT

### tuple ### allow tcp 465 0.0.0.0/0 any 192.168.20.0/24 in
-A ufw-user-input -p tcp --dport 465 -s 192.168.20.0/24 -j ACCEPT

### END RULES ###🈁ここまで

### LOGGING ###
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
### END LOGGING ###

### RATE LIMITING ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING ###
COMMIT
server@mail:~$

ufwを起動(active)にする

  • ufwを起動する.
server@mail:~$ sudo ufw enable🆑
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y🆑
Firewall is active and enabled on system startup
server@mail:~$
  • 警告が出ているが,無視できる.多分.
    • SSHを接続しているときに間違うとSSHの接続ができなくなるよ,という警告.
  • 現在の設定を確認する.
server@mail:~$ sudo ufw status numbered🆑
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    192.168.20.0/24
[ 2] 80/tcp                     ALLOW IN    192.168.20.0/24
[ 3] 443/tcp                    ALLOW IN    192.168.20.0/24
[ 4] 25/tcp                     ALLOW IN    Anywhere
[ 5] 993/tcp                    ALLOW IN    192.168.20.0/24
[ 6] 587/tcp                    ALLOW IN    192.168.20.0/24
[ 7] 465/tcp                    ALLOW IN    192.168.20.0/24
[ 8] 25/tcp (v6)                ALLOW IN    Anywhere (v6)

server@mail:~$
  • ローカルからのみ接続許可されている.

新しいターミナルからSSHで接続できるか確認

  • 正しくufwが動作しているか確認のため,新規で作成したターミナルから接続してみる.
ujpadmin@metis2026 ~ % ssh server@192.168.20.56🆑
server@192.168.20.56's password:🔑
Welcome to Ubuntu 26.04.1 LTS (GNU/Linux 7.0.0-34-generic x86_64)

 * Documentation:  https://docs.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Mon Sep 28 03:06:02 PM UTC 2026

  System load:  0.0               Temperature:             60.0 C
  Usage of /:   8.3% of 97.87GB   Processes:               145
  Memory usage: 13%               Users logged in:         0
  Swap usage:   0%                IPv4 address for enp4s0: 192.168.20.56

 * Canonical Workshop gives developers fast, composable, reproducible, and
   secure developer environments that are perfect for agentic workflows.

   https://ubuntu.com/workshop

Expanded Security Maintenance for Applications is not enabled.

20 updates can be applied immediately.
2 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


Last login: Mon Sep 28 14:15:05 2026 from 192.168.20.45
server@mail:~$
  • 接続ログを確認.
server@mail:~$ sudo journalctl -u ssh -n 5🆑
Sep 28 14:15:00 mail.deimos.ujp.jp sshd-session[36706]: Failed password for server from 192.168.20.45 port 50851 ssh2
Sep 28 14:15:05 mail.deimos.ujp.jp sshd-session[36706]: Accepted password for server from 192.168.20.45 port 50851 ssh2
Sep 28 14:15:05 mail.deimos.ujp.jp sshd-session[36706]: pam_unix(sshd:session): session opened for user server(uid=1000) by server(uid=0)
Sep 28 15:06:02 mail.deimos.ujp.jp sshd-session[37607]: Accepted password for server from 192.168.20.45 port 51689 ssh2
Sep 28 15:06:02 mail.deimos.ujp.jp sshd-session[37607]: pam_unix(sshd:session): session opened for user server(uid=1000) by server(uid=0)
server@mail:~$ date🆑
Mon Sep 28 03:11:02 PM UTC 2026
server@mail:~$
  • 接続できていることを確認.
  • 接続失敗と成功のログを表示する.
server@mail:~$ sudo journalctl -u ssh | grep "Failed"🆑
Sep 28 14:15:00 mail.deimos.ujp.jp sshd-session[36706]: Failed password for server from 192.168.20.45 port 50851 ssh2
server@mail:~$ sudo journalctl -u ssh | grep "Accepted"🆑
Sep 26 16:19:19 himuro sshd-session[1708]: Accepted password for server from 192.168.20.45 port 50254 ssh2
Sep 27 06:17:17 mail.deimos.ujp.jp sshd-session[20701]: Accepted password for server from 192.168.20.45 port 54082 ssh2
Sep 28 14:15:05 mail.deimos.ujp.jp sshd-session[36706]: Accepted password for server from 192.168.20.45 port 50851 ssh2
Sep 28 15:06:02 mail.deimos.ujp.jp sshd-session[37607]: Accepted password for server from 192.168.20.45 port 51689 ssh2
server@mail:~$
  • SSH関連のログを表示.
server@mail:~$ sudo grep sshd /var/log/auth.log | tail -n 10🆑
2026-09-27T21:53:49.625528+00:00 mail sshd-session[20701]: pam_unix(sshd:session): session closed for user server
2026-09-27T21:53:49.626608+00:00 mail sshd-session[20701]: syslogin_perform_logout: logout() returned an error
2026-09-28T14:14:57.910035+00:00 mail sshd-session[36706]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.20.45  user=server
2026-09-28T14:15:00.421780+00:00 mail sshd-session[36706]: Failed password for server from 192.168.20.45 port 50851 ssh2
2026-09-28T14:15:05.085497+00:00 mail sshd-session[36706]: Accepted password for server from 192.168.20.45 port 50851 ssh2
2026-09-28T14:15:05.087979+00:00 mail sshd-session[36706]: pam_unix(sshd:session): session opened for user server(uid=1000) by server(uid=0)
2026-09-28T15:06:02.464627+00:00 mail sshd-session[37607]: Accepted password for server from 192.168.20.45 port 51689 ssh2
2026-09-28T15:06:02.471710+00:00 mail sshd-session[37607]: pam_unix(sshd:session): session opened for user server(uid=1000) by server(uid=0)
2026-09-28T15:27:47.852281+00:00 mail sudo: server : TTY=/dev/pts/0 ; PWD=/home/server ; USER=root ; COMMAND=/usr/bin/grep sshd /var/log/auth.log
2026-09-28T15:28:07.245077+00:00 mail sudo: server : TTY=/dev/pts/0 ; PWD=/home/server ; USER=root ; COMMAND=/usr/bin/grep sshd /var/log/auth.log
server@mail:~$
  • 問題ないので,設定終了.

広告スペース
Google