1. まず、サービスごとのポートを理解する
サーバーが提供するサービスは外部と接続が発生します。外部からサーバーにアクセスするときには、SSH、FTP、HTTPSなどの様々なプロトコルでアクセスします。これらは通信時にポート番号を利用してアクセスしています。
サービスごとのポートの整理
SSH (SFTP 含む)
用途:
- 管理者が作成したユーザーによる SSH 接続
- SFTP によるファイル転送(SSH の仕組みを利用)
- ホスティング会社の Web 経由での root アクセス(必要な場合)
標準ポート: 22
注意: もしセキュリティ強化のためにカスタムポートに変更している場合、そのポート番号を許可する必要があります。特定の IP からのみアクセスを許可する(IP ホワイトリスト)とさらに安全です。
Apache2やNginx (Web サーバー)
用途:
- Web コンテンツの提供(HTTP と HTTPS)
- ホスティング会社による稼働チェック(通常は HTTP/HTTPS でのアクセス)
標準ポート: HTTP: 80、HTTPS: 443
Mail サーバー
用途:
- メールの送受信のため
一般的なポート例:
SMTP(受信側・送信側): 25
SMTP Submission: 587
SMTPS(SSL/TLS): 465(必要に応じて)
IMAP (SSL): 993
POP3 (SSL): 995
注意: 実際にどのプロトコルを使用しているかにより、必要なポートを選んで開放してください。
FTP
用途:
- ファイルのアップロードやダウンロード
標準ポート: 21, 30000~31000
注意: もし可能なら、FTP よりも SFTP を利用するほうが安全です。もし純粋な FTP を利用する場合は、制御用ポート 21 と、パッシブモード用のポートレンジ(例:30000~31000など)を開放する必要があります。
2. UFWの設定
まず、システムとソフトウェアの最新状態の維持
sudo apt update
sudo apt upgrade
UFW の設定例
以下は、上記のサービスを前提として、外部から不要なアクセスを遮断し、必要なポートのみを許可する UFW の設定例です。
1.デフォルトポリシーの設定
まず、すべての受信トラフィックを拒否し、送信トラフィックは許可するように設定します。
sudo ufw default deny incoming
sudo ufw default allow outgoing
※必要に応じて、特定の IP からのみアクセスを許可するように設定することも検討してください。
2.SSHやSFTPの許可
sudo ufw allow 22/tcp
※ もしカスタムポート(例:2222)を使っている場合は:
sudo ufw allow 2222/tcp
3.Apache2やNginxの許可 (HTTP/HTTPS)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
4.Mail サーバーの許可
※必要なサービスに合わせて、以下の例のうち該当するポートのみを許可してください。
sudo ufw allow 25/tcp # SMTP(メール受信/送信)
sudo ufw allow 587/tcp # SMTP Submission(認証付き送信)
以下は、メール受信に IMAP/POP3 を利用している場合
sudo ufw allow 993/tcp # IMAP over SSL
sudo ufw allow 995/tcp # POP3 over SSL
必要なら SMTPS の 465 番も:
sudo ufw allow 465/tcp
5.FTP の許可(必要な場合)
※ 可能なら SFTP(SSH経由)で代替するのが望ましいですが、FTP を使う場合は以下のように設定します。
sudo ufw allow 21/tcp # FTP制御用ポート
パッシブモードのためのポートレンジ(例: 30000~31000)
sudo ufw allow 30000:31000/tcp
その他のサービス
必要に応じて、その他のサービスのポートも開放しましょう。
3.設定の有効化
最後に UFW を有効化します。
sudo ufw enable
設定の確認
現在の UFW のルールを確認するには次のコマンドを実行します。
sudo ufw status verbose
UFWの状態確認
sudo ufw status
4.注意事項 & 補足
ホスティング会社のアクセスについて
ホスティング会社が管理コンソールやウェブ経由で SSH アクセス(root でのアクセス含む)を行う場合、SSH の許可ルール(22/tcp)が適用されます。
IPの指定
もし特定の IP からのみアクセスを許可したい場合は、次のように個別にルールを追加します(例として、ホスティング会社の IP が 203.0.113.10 の場合):
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
他サーバーへの SFTP 転送
これらは基本的に SSH(SFTP)を利用するため、22番ポートの許可ルールでカバーされます。
テストと調整
初めは必要最低限のポートだけを開放し、サービスが正常に動作することを確認してください。
その後、必要に応じて追加のポートを開放するなど、環境に合わせた調整を行ってください。
TCP と UDP の違い
TCP (Transmission Control Protocol)
接続指向: 通信を開始する前にコネクションの確立(ハンドシェイク)が必要です。
信頼性: データの送信順序や再送制御、エラー検出などの仕組みがあり、データが正しく届くように保証されます。
用途: SSH、HTTP/HTTPS、FTP(制御用)など、信頼性が重視されるプロトコルで使われます。
UDP (User Datagram Protocol)
非接続型: コネクションの確立なしにデータを送信でき、オーバーヘッドが少ないため、低遅延で通信が行えます。
信頼性なし: データが届いたかどうかの確認や順序の保証がありません。そのため、必要な場合はアプリケーション側でエラー処理を行います。
用途: DNS、DHCP、VoIP、動画や音声のストリーミング、一部のオンラインゲームなど、多少のパケットロスを許容できる通信で利用されます。
ですので、SSH、SFTP、Apache2やNginx: 両方とも TCP を利用するため、sudo ufw allow 22/tcp や Apache2 用の 80/tcp、443/tcp の設定で十分です。UDP の設定(例:sudo ufw allow 22/udp)は不要です。