Linuxサーバを公開・運用するうえで、ファイアウォール設定は必須のセキュリティ対策です。不要な通信を遮断し、必要最小限のポートだけを開放することで、不正アクセスや攻撃リスクを大幅に低減できます。
本記事では、Linuxサーバでよく使われる
- iptables(低レベルで柔軟)
- ufw(Uncomplicated Firewall:設定が簡単)
の2つについて、サーバ運用を前提にした実践的な設定方法を解説します。
1. ファイアウォールの基本概念
1.1 なぜサーバにファイアウォールが必要か
サーバは常にインターネットからアクセス可能な状態にあるため、以下のようなリスクに晒されています。
- SSHへの総当たり攻撃
- 不要なサービスへの不正アクセス
- 脆弱なポートを狙ったスキャン
ファイアウォールを導入することで、
「そもそも通信を通さない」
という最も強力な防御を実現できます。
1.2 基本方針(サーバ向け)
サーバでは、次のポリシーが基本です。
- デフォルト拒否(DENY ALL)
- 必要なポートだけ許可(ALLOW)
例:
- SSH: 22(管理用)
- HTTP: 80
- HTTPS: 443
2. iptablesによるファイアウォール設定
2.1 iptablesとは
iptablesはLinuxカーネルのnetfilter機能を直接操作するコマンドで、
- 非常に柔軟
- 細かい制御が可能
という特徴があります。一方で、設定が複雑になりやすい点には注意が必要です。
2.2 現在のルール確認
iptables -L -n -v
-n:名前解決を行わない-v:詳細表示
2.3 デフォルトポリシーの設定
まずは全拒否を基本にします。
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
- サーバ自身からの通信(OUTPUT)は通常許可
2.4 ループバック通信の許可
iptables -A INPUT -i lo -j ACCEPT
2.5 既存通信・関連通信の許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
2.6 SSH / HTTP / HTTPSの許可
# SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
2.7 設定の保存
ディストリビューションにより方法が異なります。
例(Ubuntu系)
apt install iptables-persistent
netfilter-persistent save
3. ufwによるファイアウォール設定
3.1 ufwとは
ufw(Uncomplicated Firewall)はiptablesのラッパーで、
- コマンドが直感的
- 設定ミスが起こりにくい
ため、サーバ初心者〜中級者に特におすすめです。
3.2 ufwのインストールと状態確認
apt install ufw
ufw status
3.3 デフォルトポリシー設定
ufw default deny incoming
ufw default allow outgoing
3.4 必要なポートの許可
# SSH
ufw allow 22
# HTTP
ufw allow 80
# HTTPS
ufw allow 443
サービス名でも指定可能です。
ufw allow ssh
3.5 ufwの有効化
ufw enable
※ SSH接続中に有効化する場合は、SSH許可設定を必ず先に行うこと
3.6 状態確認
ufw status verbose
4. iptablesとufwの使い分け
| 項目 | iptables | ufw |
|---|---|---|
| 難易度 | 高い | 低い |
| 柔軟性 | 非常に高い | 中程度 |
| 設定速度 | 遅い | 速い |
| サーバ初心者 | △ | ◎ |
結論:
- 一般的なWebサーバ → ufw
- 特殊な要件・高度な制御 → iptables
5. サーバ運用での注意点
- SSHポート変更(22→任意)
- 特定IPのみSSH許可
- fail2banとの併用
- クラウド側FW(AWS/GCP)との二重管理に注意
6. まとめ
サーバ向けファイアウォール設定では、
- 最小限のポートだけを開ける
- デフォルト拒否を徹底する
ことが重要です。
ufwを使えば安全かつ簡単に設定でき、iptablesを理解すればより高度な制御が可能になります。
ぜひご自身のサーバ環境に合わせて、適切なファイアウォール運用を行ってください。
