bashで攻撃元IPを自動的にFWでdropしていたら数日後iptablesエラー発生

ExcelVBAで全ファイル削除 bash
この記事は約4分で読めます。

はじめに

CentOS7で構築したServerのログをjournalコマンドで見ていたところ、不正侵入をしつこく試みる輩(source ip)が後を絶たない。。

毎日やることが多くてじっくり対応できていませんでしたが、とりあえずbashで攻撃元IPをblacklistに登録し、firewall-cmdでアクセスを拒否するシェルを作ってcronで定期的に監視。

当初は上手く動作し攻撃元の接続をバンバン弾いてくれていたのですが、数日後急にiptablesのエラーが出ていることに気づきました。

dropゾーンに登録するipアドレス数に制限あり?

攻撃元IPアドレスをfirewall-cmdコマンドで自動的にdropゾーンに追加していたのですが、設定数に限りがあるためか以下のエラーが発生(一部のログを抜粋)。

ERROR: ‘/usr/sbin/iptables-restore -w -n’ failed: iptables-restore: line 5 failed
ERROR: COMMAND_FAILED: ‘/usr/sbin/iptables-restore -w -n’ failed: iptables-restore: line 5 failed

シェルスクリプト自体は動作確認済みなので問題ないとして、単純に登録する攻撃元IPアドレス数が多すぎ??

でも、言うほど多くなく「えっ!?この数しか登録できないの?」って正直思いましたが、1アドレス1アドレス登録するよりファイルを読み込む設定の方がやっぱりいいですよねぇ。。

だいぶ久しぶりに触ったので基本的なことも忘れてます。。

攻撃元IPをレンジで区切った方がいいかもしれませんが、source ip がランダムなので個別にピンポイントでブロックしたいんですよね。

bashで攻撃元IPアドレスをblacklistにまとめ、firewall-cmdコマンドでdropゾーンに読み込ます方に修正しますか。

攻撃元IPアドレス情報もDB化してと。

自分の好きな事を仕事にしたいなぁ。

今日はもう夜中なので、続きは明日以降にします。。

一日24時間って短いなぁ。。

IPセットタイプの確認

firewall-cmdでサポートしているIPセットタイプを確認します。

# firewall-cmd    --get-ipset-types

あれっ!?1個もサポートしていない。。マジですか。

yumでipsetをインストール

whichコマンドでipsetがなければyumでインストールします。

# yum install ipset

セットを作成

今回は毎日毎日不正アクセスをしてくる輩を排除したいので、「BLACKLIST_IP」というセット名で作成したいと思います。

# ipset create BLACKLIST_IP hash:ip
ipset v7.1: Cannot open session to kernel.
#

えっ!?なんで?

すんなり行こうよ、すんなり~、と心の中で叫びつつ頭を切り替えます。

ググりまくってもなかなか解決方法が載っていない。。

こういうのん、ホントにモチベーションを下げてくれますよね。

疲れてしんどいですが、継続調査します。。

原因判明

OpenVZではkernelのチューニングができないためKVMに切替える必要があります。

OpenVZはコンテナーなので利便性はよいのですがkernelはいじれません。

各コンテナーがkernelをいじれるようだと確かにまずいですし。

ただ、Linuxのkernelのチューニングができないのは少し物足りなさを感じますね。

そのため、OpenVZでipsetコマンドを使うのは諦め、先日KVMを新規契約してサーバ移行作業を実施しました。

メールサーバやDBサーバ、VSFTPサーバ等々、一から構築し直しましたので結構疲れましたねホント。。

とりあえず、kernelをチューニングしたい方はKVMを契約することをお勧めします。

コメント

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