Start typing to search across invoices, services, domains, tickets, and more...
Web サイトやデータベース、アプリケーションを公開しても外部からアクセスできない場合、多くはファイアウォールがポートを遮断しています。本記事では Linux のファイアウォール設定でよく使われる 2 つのツール、CentOS・Rocky Linux・AlmaLinux 標準の firewalld と、Ubuntu・Debian でよく使われる ufw について、状態確認、ポート開放、送信元 IP の制限、ルール削除の方法を解説します。コマンドはすべて root で実行します。
1 台のサーバーで使うファイアウォール管理ツールは 1 つにしましょう。firewalld と ufw を同時に使うとルールが競合します。RHEL 系は通常 firewalld、Ubuntu は ufw(初期状態では無効のことが多い)、一部の Debian 最小イメージではどちらも入っていません。
systemctl is-active firewalld # CentOS / Rocky / AlmaLinux
ufw status # Debian / Ubuntu
firewalld は「ゾーン」単位でルールを管理し、通常メインの NIC は public ゾーンに属します。インストールして起動したら、--list-all で許可されているサービスとポートを確認します。初期状態では ssh のみ許可されていることが多いです。
# Install and start firewalld (CentOS / Rocky / AlmaLinux)
dnf install -y firewalld
systemctl enable --now firewalld
firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --list-all
http・https のようなサービス名でも、ポート番号や範囲でも許可できます。--permanent は恒久設定への書き込みで、--reload 後に有効になります。--permanent なしのルールはすぐ有効ですが、再起動すると消えます。
# Open by service name
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
# Open by port / range
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=10000-10100/udp
# Apply and verify
firewall-cmd --reload
firewall-cmd --list-ports
firewall-cmd --list-services
データベースや管理画面など重要なポートは全世界に公開すべきではありません。rich rule を使えば特定の IP やサブネットだけを許可できます。不要になったポートは --remove-port で削除します。
# Allow MySQL 3306 only from one subnet
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" port port="3306" protocol="tcp" accept'
# Remove a port
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
ufw は Ubuntu が提供するシンプルなファイアウォールツールです。有効化の前に必ず SSH を許可し、既定ポリシーを「受信は拒否・送信は許可」にします。ufw enable 実行時に SSH 接続が切れる可能性があると警告されますが、SSH を許可済みなら y で続行します。
# Debian / Ubuntu
apt update && apt install -y ufw
# Allow SSH FIRST (use your custom port if you changed it)
ufw allow 22/tcp
ufw default deny incoming
ufw default allow outgoing
ufw enable
ufw status verbose
allow でポートを開放し、ポート範囲ではプロトコルの指定が必要です。from で送信元 IP を制限できます。ルール削除は numbered で番号を確認し、番号で削除するのが簡単です。
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10000:10100/udp
ufw allow from 198.51.100.0/24 to any port 3306 proto tcp
# Delete a rule by number
ufw status numbered
ufw delete 3
ss -tlnp でアプリがそのポートを待ち受けているか、待ち受けアドレスが 127.0.0.1 ではなく 0.0.0.0 かを確認し、アプリ自体の設定やプラットフォーム側のセキュリティポリシーも確認してください。解決しない場合はチケットでご相談ください。
技術的には可能です(systemctl stop firewalld や ufw disable)が、インターネットに公開されたサーバーではおすすめしません。必要なポートだけ許可し、それ以外は拒否するのが安全です。
VNC コンソールでログインし、firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload または ufw allow 22/tcp を実行して SSH を許可すれば復旧できます。
上記の手順で解決しない場合は、サポートチケットを送信して IMIDC の 24 時間 365 日テクニカルサポートへお問い合わせください。サーバー IP、OS、実行したコマンド、エラー画面のスクリーンショットを添えていただくと、より迅速に対応できます。