iptables ビルダー

Linux iptables ファイアウォールルールビルダー&シェルスクリプト生成ツール

INPUT/FORWARD/OUTPUTチェーン、ステートフルパケット検査、SYN Flood防御、NATポートフォワーディング、自動シェルスクリプト出力。

ファイアウォールプリセット
ファイアウォールルールの追加
設定済みルール (5)チェックボックスで有効/無効を切り替え
#1INPUTTCP :22
ACCEPT
#2INPUTTCP :80
ACCEPT
#3INPUTTCP :443
ACCEPT
#4INPUTTCP :9100 from 10.0.0.0/16
ACCEPT
#5INPUTALL
LOG
#!/usr/bin/env bash
# ==============================================================================
# Linux iptables Firewall Configuration Script
# Generated by ToolsAA iptables Rule Generator (https://toolsaa.com)
# 100% Client-Side Netfilter Firewall Builder
# ==============================================================================
set -euo pipefail

# Verify root privileges
if [[ $EUID -ne 0 ]]; then
   echo "Error: This script must be executed as root (e.g. sudo bash $0)" >&2
   exit 1
fi

# Find iptables binaries
IPTABLES="$(command -v iptables || echo '/sbin/iptables')"
SYSCTL="$(command -v sysctl || echo '/sbin/sysctl')"

echo "==> Applying Linux iptables firewall rules..."

# ------------------------------------------------------------------------------
# 1. Kernel Parameter Hardening & Anti-Spoofing (sysctl)
# ------------------------------------------------------------------------------
$SYSCTL -w net.ipv4.tcp_syncookies=1 >/dev/null
$SYSCTL -w net.ipv4.conf.all.rp_filter=1 >/dev/null
$SYSCTL -w net.ipv4.conf.default.rp_filter=1 >/dev/null
$SYSCTL -w net.ipv4.conf.all.accept_source_route=0 >/dev/null
$SYSCTL -w net.ipv4.conf.all.accept_redirects=0 >/dev/null
$SYSCTL -w net.ipv4.icmp_echo_ignore_broadcasts=1 >/dev/null
$SYSCTL -w net.ipv4.icmp_ignore_bogus_error_responses=1 >/dev/null

# ------------------------------------------------------------------------------
# 2. Flush Existing Rules & Reset Counters
# ------------------------------------------------------------------------------
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F || true
$IPTABLES -t nat -X || true
$IPTABLES -t mangle -F || true
$IPTABLES -t mangle -X || true
$IPTABLES -t raw -F || true
$IPTABLES -t raw -X || true

# ------------------------------------------------------------------------------
# 3. Set Default Chain Policies
# ------------------------------------------------------------------------------
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

# ------------------------------------------------------------------------------
# 4. Core Defensive Rules: Loopback, Conntrack & Invalid Drops
# ------------------------------------------------------------------------------
# Allow unlimited loopback traffic (localhost)
$IPTABLES -A INPUT -i lo -j ACCEPT -m comment --comment "Allow all loopback inbound"
$IPTABLES -A OUTPUT -o lo -j ACCEPT -m comment --comment "Allow all loopback outbound"
# Drop packets in INVALID connection state immediately
$IPTABLES -A INPUT -m conntrack --ctstate INVALID -j DROP -m comment --comment "Drop invalid packets"
# Stateful connection tracking: Allow established and related traffic
$IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Stateful allow established/related"
$IPTABLES -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Stateful allow established/related"

# ------------------------------------------------------------------------------
# 5. Anti-DDoS: TCP SYN Flood Protection Chain
# ------------------------------------------------------------------------------
$IPTABLES -N SYN_FLOOD || true
$IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD
$IPTABLES -A SYN_FLOOD -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A SYN_FLOOD -j DROP -m comment --comment "Drop excess SYN flood packets"

# ------------------------------------------------------------------------------
# 6. Port Scan & Malicious Flag Mitigation
# ------------------------------------------------------------------------------
# Drop NULL packets (no flags set)
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP -m comment --comment "Drop NULL scan packets"
# Drop XMAS packets (FIN, PSH, URG flags)
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP -m comment --comment "Drop XMAS scan packets"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP -m comment --comment "Drop XMAS variants"
# Drop SYN-FIN scans
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP -m comment --comment "Drop SYN-FIN packets"
# Drop SYN-RST scans
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP -m comment --comment "Drop SYN-RST packets"

# ------------------------------------------------------------------------------
# 7. ICMP / Ping Echo-Request Control
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 2 -j ACCEPT -m comment --comment "Rate-limited ICMP ping"
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP -m comment --comment "Drop excess ICMP pings"

# ------------------------------------------------------------------------------
# 8. SSH Anti-Bruteforce Rate Limiter (iptables recent module)
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name SSH_ATTEMPTS
$IPTABLES -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP -m comment --comment "Drop SSH bruteforce flood"

# ------------------------------------------------------------------------------
# 9. User-Configured Filter Chain Rules
# ------------------------------------------------------------------------------
# Rule 1: SSH administration (protected by recent anti-bruteforce)
$IPTABLES -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT -m comment --comment "SSH administration (protected by recent anti-bruteforce)"
# Rule 2: Standard HTTP Web traffic
$IPTABLES -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT -m comment --comment "Standard HTTP Web traffic"
# Rule 3: Encrypted HTTPS / TLS Web traffic
$IPTABLES -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT -m comment --comment "Encrypted HTTPS / TLS Web traffic"
# Rule 4: Prometheus node exporter restricted to private VPC
$IPTABLES -A INPUT -i eth0 -p tcp -s 10.0.0.0/16 --dport 9100 -j ACCEPT -m comment --comment "Prometheus node exporter restricted to private VPC"
# Rule 5: Log dropped unsolicited incoming packets
$IPTABLES -A INPUT -m limit --limit 5/min -j LOG --log-prefix "[IPT-DROP-WEB]: " --log-level 4 -m comment --comment "Log dropped unsolicited incoming packets"

echo "==> Linux iptables firewall rules successfully applied!"
echo "==> Active rules summary:"
$IPTABLES -L -v -n --line-numbers | head -n 35
有効フィルタールール数
5 ルール · 0 NAT ポート
NATディレクティブ数
SYN Flood · Anti-SSH
セキュリティ防御項目数
Bash .sh · rules.v4 · systemd

100% クライアントサイドのプライベート生成

外部サーバーへの通信やテレメトリは一切ありません。サーバーIPアドレス、サブネット、内部ポート、ネットワークトポロジはすべてブラウザのローカルメモリ内でのみ安全に処理されます。

ステートフル検査とDDoS対策の堅牢化

ステートフルパケットインスペクション(conntrack)、SYNフラッド緩和、無効パケットの破棄、ループバック許可、スプーフィング防止(rp_filter)を簡単に構築できます。

本番シェルスクリプトとSystemdエクスポート

安全なロールバックタイマー付きの本番向けBashシェルスクリプト、iptables-saveダンプ互換形式、systemd永続化コマンドをワンクリックで出力します。

技術リファレンス&アーキテクチャガイド

Linux iptables ファイアウォールルール構築・シェルスクリプト生成 — リファレンスガイド

INPUT/FORWARD/OUTPUTチェーン、ステートフルパケット検査、SYN Flood防御、NATポートフォワーディング、自動シェルスクリプト出力。

主要パラメータ&設定項目

チェーンとデフォルトポリシー文字列 (Enum)

対象Netfilterチェーン (INPUT, FORWARD, OUTPUT) とベースラインのデフォルトポリシー (-P DROP, ACCEPT, REJECT)。

初期値: INPUT DROP
プロトコルと拡張マッチモジュール文字列

トランスポート層プロトコル (-p tcp, udp, icmp, all) とカーネル拡張モジュール (-m conntrack, -m multiport, -m limit)。

初期値: tcp -m conntrack
送信元 / 送信先フィルタIPv4/CIDR / ポート一覧

送信元 (-s) / 送信先 (-d) IPアドレス範囲およびポート指定 (--sport, --dport, --dports)。

初期値: -s 0.0.0.0/0 --dport 22,80,443
接続状態 (ctstate)文字列リスト

ステートフルトラッキング状態 (NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED) に基づく双方向フィルタリング判定。

初期値: ESTABLISHED,RELATED
ジャンプターゲット (アクション)文字列 (Enum)

ルール一致時に実行する処理 (-j ACCEPT, DROP, REJECT, LOG, MASQUERADE, DNAT, SNAT, REDIRECT)。

初期値: ACCEPT

プロの活用テクニック&推奨設定

ステートフル Conntrack 最適化

必ずルールセットの先頭に 'iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT' を配置してください。確立済み接続の全パケット評価をバイパスし、高トラフィック時のCPU負荷を激減させます。

SSH締め出し防止(自動ロールバックタイマー)

リモートサーバーでINPUTポリシーをDROPに変更する前に、別端末で自動復帰タイマーを実行してください: 'sleep 300 && iptables -P INPUT ACCEPT && iptables -F'。または 'iptables-apply' コマンドで安全に検証してください。

SYN Flood 攻撃のレートリミット対策

未完了TCPハンドシェイクを制限することでSYN Flood攻撃を緩和します: 'iptables -A INPUT -p tcp --syn -m limit --limit 25/s --limit-burst 100 -j ACCEPT' を設定した後にDROPルールを定義します。

ループバックインターフェースとICMPの許可

ローカルデーモン間の通信を維持するため、ループバックトラフィック ('-i lo -j ACCEPT') は絶対にDROPしないでください。また、ネットワーク診断を確保するため制限付きでICMP Echo Request ('-p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT') を許可することを推奨します。

よくあるトラブルと解決策

ルール適用直後にリモートSSH接続が切断されログイン不能になる

SSH (ポート22) または ESTABLISHED 接続を明示的に許可する前にINPUTポリシーをDROPにしたことが原因です。クラウドのシリアル/VNCコンソールからログインし、'iptables -P INPUT ACCEPT' を実行後、ポリシー変更前にSSH許可ルールを先頭に追加してください。

カーネルエラー: 'nf_conntrack: table full, dropping packet'

パケット急増により接続追跡テーブルが枯渇しています。sysctl で上限を拡張 ('sysctl -w net.netfilter.nf_conntrack_max=262144') するか、タイムアウトを短縮 ('net.netfilter.nf_conntrack_tcp_timeout_established=600')、あるいは raw テーブルで '-t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK' を適用して特定ポートの追跡をスキップしてください。

Dockerコンテナ環境で自作のFORWARD/NATルールが上書きまたは無視される

Dockerはiptablesを直接書き換えて独自のチェイン (DOCKER, DOCKER-USER) を挿入します。FORWARDチェインを直接変更するのではなく、'DOCKER-USER' チェインにカスタムルールを注入することで、Dockerデーモン再起動時もフィルタリングルールを永続維持できます。

よくある質問 (FAQ)

iptables、nftables、UFW/firewalld の根本的な違いは何ですか?▼

iptables はLinuxカーネルの Netfilter フックを静的テーブル (filter, nat, mangle) で制御する従来型ツールです。nftables はバイトコードベースで動作する現代的な後継規格で、アトミックなルール更新に対応しています。UFW や firewalld はこれらをバックエンドとして自動操作する高レベル管理デーモンです。

外部向けインターフェースで REJECT より DROP が推奨される理由は何ですか?▼

DROP は応答パケットを一切返さずに破棄するため、攻撃者やポートスキャナはタイムアウトを待たざるを得ず、サーバーの存在自体を秘匿できます。一方 REJECT は ICMP port-unreachable や TCP RST を送り返すため、ホストが稼働していることを攻撃者に確認させてしまい、帯域も消費します。

NATの PREROUTING と POSTROUTING チェインの違いは何ですか?▼

PREROUTING はルーティング判定前に評価され、パケットの宛先アドレスを変更 (-j DNAT --to-destination IP:port) して外部からの通信を内部サーバーへ転送します。POSTROUTING はルーティング判定後に評価され、送信元アドレスを変更 (-j MASQUERADE または -j SNAT) して内部プライベートネットワークから外部への通信を中継します。

サーバー再起動後も iptables ルールを永続化するにはどうすればよいですか?▼

iptables のルールはカーネルメモリ上に保持されるため再起動で消失します。Ubuntu/Debian では 'iptables-persistent' を導入して 'netfilter-persistent save' を実行します。RHEL/CentOS/AlmaLinux では 'iptables-services' を導入し 'iptables-save > /etc/sysconfig/iptables' を実行して systemd サービスを有効化します。

アクティブなルールのパケット一致数やトラフィック量をリアルタイムで確認するには?▼

'iptables -nvL --line-numbers' を実行すると、各ルールのパケット数・バイト数・行番号が表示されます。負荷テスト中などにリアルタイム監視する場合は 'watch -n 1 iptables -nvL INPUT' を実行してカウンタの推移を確認します。

関連するおすすめ開発ツール

すべてのツール →
DNS SPF (Sender Policy Framework) レコードビルダー&解説 技術者ガイドセキュリティ

RFC 7208準拠のSPF TXTレコードを生成・検証。IPv4/IPv6 CIDRブロック、MX、A、includeメカニズム、SoftFail/HardFail強制ポリシーの設計とDNS 10回ルックアップ制限対策。

ツールを開く→
DNS DMARCポリシーレコードビルダー&構文バリデータセキュリティ

ポリシー適用(none/quarantine/reject)、rua/ruf集約レポート、アライメントタグを備えたRFC 7489準拠のDMARC DNS TXTレコードを生成・検証します。

ツールを開く→
DNS CAA(認証局承認)レコードジェネレーターセキュリティ

RFC 8659 に準拠した DNS CAA レコードを生成し、SSL/TLS 証明書の発行権限を信頼できる認証局(Let's Encrypt、DigiCert、Sectigo など)に限定します。

ツールを開く→
DNS DKIM TXTレコード生成&セレクタ設計 完全セキュリティ

RFC 6376準拠のDNS DKIM TXTレコード(v=DKIM1; k=rsa; p=...)の構築、セレクタ命名規則、255文字制限の分割手法、および認証検証手順を解説します。

ツールを開く→
MTA-STS ポリシー&TLS-RPT DNSレコードジェネレーターセキュリティ

RFC 8461準拠のMTA-STSポリシーファイル、_mta-sts DNS TXTレコード、およびRFC 8460 TLS-RPTレポートレコードの生成仕様と運用ベストプラクティス。

ツールを開く→
JWTトークンデコーダー&セキュリティインスペクターセキュリティ

ブラウザ上でJSON Web Tokenをデコードし、RFC 7519およびOIDCクレームの確認、有効期限の精密検査、HMAC署名のローカル検証を行う開発者向けユーティリティ。

ツールを開く→