|
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を指定されたネッ
トワークからのみ接続できるように設定
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)にする
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:~$
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:~$
|
|