Day After Day
tsurezure naru mamani...
ANOTHER DECADE

from 2021 when it's begining after/with CORONA Virus.

ファイアウォール (iptables) を管理する

1月
8
2026
Back
HOME


iptables を使ったファイアウォールを構築する機会が有り一段落したので、その管理をする体制を構築してみた。

既に、iptables によるルールが適用されファイアウォールが稼働しているものとする。

また、AlmaLinux をメインとして Raspberry Pi OS の場合の差分を書き添える。




このページはChatGPTとの問答をこれからの運用のためまとめたものである。

前提条件の確認




Fail2ban をインストールする


  1. iptabels や ipset のログを収集し管理しやすいようにしてくれる超軽量のアプリ

  2. # dnf install -y epel-release   # 未インストールなら(多分GWには入っている)
    # dnf install -y fail2ban 

  3. 有効化する

  4. systemctl enable -now fail2ban.service    # -now は enable と start を同時にする


設定ファイルを編集して最小構成で確実に起動させる


  1. 設定ファイルの有るフォルダでの作業

  2. nano /etc/fail2ban/jail.local     # jail.conf はオリジナルとして保存
      GNU nano 5.6.1                  /etc/fail2ban/jail.local
    [DEFAULT]
    bantime  = 3600     # or 1h
    findtime = 600      # or 10m
    maxretry = 5
    banaction = iptables-ipset-proto4
    ignoreip = 127.0.0.1/8 ::1 自分のIP(通常はグローバルアドレス)
    
    [sshd]
    enabled = true

  3. 設定を反映させ、稼働を確認する。

  4. systemctl restart fail2ban.service
    fail2ban-client status
    fail2ban-client status sshd     # SSH の失敗を表示する(3項にてテスト)

  5. 動作確認の為、SSH 別セッションでログイン、パスワードを敢えて撃ち間違え、設定した5回を越えて失敗させる

  6. 次のような表示が有れば成功で有る。

    Name: f2b-sshd
    Type: hash:ip
    Revision: 6
    Header: family inet hashsize 1024 maxelem 65536 bucketsize 12 initval 0x37xxxxxxx
    Size in memory: 216
    References: 1
    Number of entries: 0
    Members:


recidive(フランス語:レシディブ(ァ)=再犯)対策の追加


  1. jail.localに設定を追加する

  2.   GNU nano 5.6.1                  /etc/fail2ban/jail.local
    [recidive]
    enabled  = true
    bantime  = 86400    # 24hs
    findtime = 86400    
    maxretry = 5

  3. 設定を反映させて状況を見る

  4. systemctl restart fail2ban.service
    fail2ban-client status recidive
    
    Status for the jail: recidive       # status の表示例
    |- Filter
    |  |- Currently failed: 0
    |  |- Total failed:     0
    |  `- File list:        /var/log/fail2ban.log
    `- Actions
       |- Currently banned: 0
       |- Total banned:     0
       `- Banned IP list:


構築中の確認コマンド (ipset 使用)


    fail2ban 全体の状況          fail2ban-client status
    sshd 状態                   fail2ban-client status sshd
    recidive 状態               fail2ban-client status recidive
    実際の遮断リスト              ipset list
    iptables 連携               iptables -L INPUT -n
    ログ                        tail -f /var/log/fail2ban.log  


管理用のコマンド一覧


  1. 状態確認

  2. fail2ban-client status
    fail2ban-client status sshd
    fail2ban-client status recidive

  3. 手動 BAN 反映/解除

  4. fail2ban-client set sshd banip IP
    fail2ban-client set sshd unbanip IP

  5. BAN IP 実態確認

  6. ipset list

  7. 設定変更後の反映

  8. systemctl restart fail2ban

  9. デバッグ(設定確認)

  10. fail2ban-client -d

  11. 間接的ログ管理コマンド

  12. grep "Failed password" /var/log/secure          # AlmaLinux
    grep "Failed password" /var/log/auth.log        # Raspberry Pi OS
    パスワード・サーチされてミスした場合、ここにログが残ります。 SSH で敢えてパスワードをミスしてみると分かります。


運用上の注意




最後にこれらのルールをクリアしたいとChatGPTに訪ねた結果


今後の勉強のため聞いたので、コマンドの検証はしていない。

おはよう!
ipset の list や iptables の domestic.save を空に(クリア)して、今からの状況把握をしたいと思うのですが

おはようございます!
状況把握のために ipset / iptables を一度クリアしたい、という理解で合っています
以下に一般的で安全寄りの手順を書きますね。

1️⃣ ipset をクリアする方法

▶ すべてのエントリーを削除(セット自体は残す)
ipset flush
特定のセットだけなら:
ipset flush セット名
▶ セット自体を完全に削除したい場合
ipset destroy
または個別に:
ipset destroy セット名
💡 おすすめ
「今からの状況把握」が目的なら
👉 flush のみ(destroy しない) が無難です。

2️⃣ iptables をクリアする方法

▶ フィルタテーブルを空にする
iptables -F
▶ チェーンのカウンタも含めて初期化
iptables -Z
▶ nat / mangle なども含めて全部クリアしたい場合
iptables -t nat -F
iptables -t mangle -F
iptables -t raw -F
⚠ 注意 SSH 接続中の場合、DROP が消えて逆に安全になることもありますが、
デフォルトポリシーが DROP の環境だと 通信不能になることも あります。

確認:
iptables -L -n -v
iptables -S

3️⃣ domestic.save を空にしたい場合

もし /etc/iptables/domestic.save のような 保存用ファイルであれば:
: > /etc/iptables/domestic.save
または
echo "" > /etc/iptables/domestic.save
💡 実運用ルールにロードされるファイルの場合は、
・先にバックアップ
cp domestic.save domestic.save.bak.$(date +%F)
👉 を強くおすすめします。

4️⃣ 状況把握向けのおすすめ確認コマンド

ipset
ipset list
ipset list セット名
iptables(カウンタ重視)
iptables -L -n -v --line-numbers
ログを見たいなら:
journalctl -u iptables
dmesg | grep IPT


Back
HOME