Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

【RHEL9】firewalldで特定のIPアドレスからの通信を完全に拒否(ドロップ)する方法

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

ふと、zabbixサーバの管理画面にあるIPから大量のログイン失敗履歴があることに気づいたので、以下、対策。

Linuxサーバー(Red Hat Enterprise Linux 9 / RHEL9)を運用していると、特定のIPアドレスから不審なアクセスを受け、即座に通信を遮断したい場面に遭遇することがあります。

今回は、RHEL9の標準ファイアウォールである firewalld を使い、特定のIPアドレスからの通信を安全かつ確実に拒否する手順を解説します。

スポンサーリンク
バッチ処理の自動化スキルは市場価値が高いです。今の自分の単価を調べてみませんか?
顧客常駐はもう嫌だ!社内SEへ転職するなら【社内SE転職ナビ】
Cursor・Claude Code・Codex AIスキルを学ぶなら
環境構築不要!AIエージェント開発を非エンジニアでも即実践【AI Agent Camp】

なぜ「drop」アクションがおすすめなのか?

firewalldで通信を拒否する場合、主に rejectdrop の2つのアクションが選べます。

  • reject: 送信元に対して「拒否しました」という応答(ICMPエラーなど)を返します。

  • drop: 応答を一切返さず、パケットを完全に無視(破棄)します。

セキュリティの観点からは、drop アクションを指定するのが最もおすすめです。サーバーが存在していること(パケットが到達していること)自体を攻撃者に対して完全に隠蔽できるため、よりセキュアな状態を作ることができます。

1. 特定のIPアドレスからの通信を拒否する手順

firewalldで細かい条件を指定して制御を行うには、リッチルール(--add-rich-rule)を使用します。

STEP 1:拒否ルールの追加(永続化)

以下のコマンドを実行し、指定したIPアドレス(例として 192.168.1.100)からのすべての通信を遮断するルールを追加します。後で再起動しても消えないように --permanent オプションを付与します。

Bash

sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.1.100" drop'

STEP 2:設定のリロード(反映)

ルールを追加しただけではまだ反映されていません。設定をリロードしてシステムに適用します。

Bash

sudo firewall-cmd --reload

2. 【応用】その他の便利な設定・運用オプション

実務でよく使う、リッチルールの応用操作をまとめました。

■ 特定のポート(サービス)のみを拒否する場合

「すべての通信を遮断するのではなく、特定のIPからのSSH接続(22番ポート)だけを拒否したい」という場合は、以下のようにポート番号とプロトコルを指定します。

Bash

sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.1.100" port port="22" protocol="tcp" drop'
sudo firewall-cmd --reload

■ 設定されているルールの確認方法

現在適用されているリッチルールの一覧を表示して、意図したIPアドレスが正しく登録されているか確認します。

Bash

sudo firewall-cmd --list-rich-rules
rule family="ipv4" source address="xxx.xxx.xxx.xxx" drop

■ 設定したルールを削除(解除)したい場合

誤って設定してしまった場合や、ブロックを解除したい場合は、追加時と同じ条件を指定して --remove-rich-rule を実行します。

Bash

sudo firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address="192.168.1.100" drop'
sudo firewall-cmd --reload

まとめ

RHEL9のfirewalldで特定のIPを弾くには、リッチルールの drop を使うのが最も手軽で安全です。

不審なログを見つけたら、二次被害を防ぐためにも迅速に firewall-cmd で対処できるようにしておきましょう。より詳細なパラメータの指定方法や、複数のIP帯(CIDR表記)での一括拒否などについては、Red Hatの公式ドキュメントも併せて確認してみてください。

タイトルとURLをコピーしました