使い方
- テンプレート(Web サーバー(SSH、HTTP、HTTPS)など)を選ぶか、ルールを直接編集します。
- ルールごとに、ポート、プロトコル、送信元アドレス(空欄ならすべて)、許可またはブロックを入力します。
- SSH ポートを設定し、その他の受信トラフィックをすべてブロックするかどうかを決めます。
- ファイアウォールを選び、サーバー上の root シェルにコマンドをコピーして実行します。
オプションの説明
- ポート
- 単一のポート(22)、リスト(80,443)、範囲(8000-8100)のいずれかで指定します。
- 送信元
- 203.0.113.0/24 のような IPv4 または IPv6 のアドレスやネットワーク。IPv6 の送信元は ip6tables に出力されます。
- その他の受信トラフィックをすべてブロック
- 受信のデフォルトポリシーを拒否に設定します。送信トラフィックは許可されたままです。
出力例
SSH はポート 22 で、デフォルトポリシーは拒否とし、3 つのルールを設定します。SSH は 203.0.113.5 からのみ許可、TCP ポート 80 と 443 はどこからでも許可、198.51.100.0/24 からのポート 25 はブロックします。最初に一致したルールが優先されるため、ブロックルールが先頭に書かれます。
# ufw
ufw default deny incoming
ufw default allow outgoing
ufw deny from 198.51.100.0/24 to any port 25 proto tcp
ufw allow from 203.0.113.5 to any port 22 proto tcp
ufw allow 80,443/tcp
ufw enable
# iptables
iptables -A INPUT -p tcp -s 198.51.100.0/24 --dport 25 -j DROP
iptables -A INPUT -p tcp -s 203.0.113.5 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
iptables -P INPUT DROP
firewalld では、すべてのアドレスに開くポートには --add-port を使い、送信元の指定やブロックのあるルールにはリッチルールを使います。SSH のルールが送信元アドレス付きのものだけなので、firewalld のコマンドは、ゾーンから既定の ssh サービスも削除します。この手順がないと、ゾーンはポート 22 に誰でもアクセスできる状態のままになります。
よくある質問
自分が締め出されないようにするには?
SSH ポートを許可するルールを残してください。SSH を特定の IP に限定する場合は、先に現在の IP を確認します。クラウドプロバイダーの Web コンソールを開いたままにしておくと、戻る手段になります。
ポートを開けたのに接続できないのはなぜ?
クラウドサーバーでは、プロバイダーのコンソールにもセキュリティグループやネットワークファイアウォールがあるのが一般的で、そちらでもポートを開ける必要があります。また、ss -tlnp などでサービスが待ち受けているかも確認してください。
自分のサーバーはどのファイアウォールを使っている?
Ubuntu と Debian は通常 ufw、RHEL、Rocky、AlmaLinux、CentOS は firewalld を使います。どちらもカーネルのファイアウォールのフロントエンドなので、どちらか一方を使い、素の iptables コマンドを混ぜないでください。
プライバシー
このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。