最近は仕事のほうが忙しくてなかなか更新できない状況ですが、今年最後にやっておかなければならないことがあるので、
またシェルを作ろうかと思います。題名にあるように「ApacheのBASIC認証」のエラー制御を実装します。
というのも、ここんところWordpressにログインしようとする人が多いんです。
で、Wordpressの管理者画面の前にユーザー認証を設けたのですが、これも辞書アタックされる可能性があるので認証エラーを
指定した回数出した場合はアクセス制御しようかと思います。
そもそもね、日本ではね、他人のID・パスワードを奪取・盗用するとね、不正アクセス禁止法でね処罰されるんですよ!
と言っても、多くは国外からのアタックなので言ってもしょうがないのだけれども・・・
もし、入られたらサイト改ざんされてしまうので、この対応をとっておこうと思います。
———-
やること
———-
Apacheのログを監視して予め決めた時間内に指定した回数の認証エラーを出したIPアドレスは一定期間アクセス拒否する。
一定の期間が過ぎた時は、アクセス拒否を解除する。
———-
処理概要
———-
・Apacheのエラーログからユーザなし、パスワードミスマッチを検知する
・その日付、時刻を取得する
・回数の判定(1時間以内に5回)を行う
・指定回数超えた場合は一定時間アクセス拒否する
・アクセス拒否の解除は自動的に行う
・アクセス制御したIPアドレスの情報をルート宛にメール送信する
———-
使用環境:
———-
ファイルの更新監視には「inotify」を使用しているので、inotifyがインストールされていること。
Debian、Ubuntuの場合、「apt-get install inotify-tools」でインストール!
※カーネル2.6.13 以降
「iptables」を使用しているのでインストールされていること。
———-
設置方法
———-
システムの起動時に実行させておく場合は
/etc/rc.localの「exit 0」の前に「/hoge/ApacheBasicAuthenticationWall.sh &」を記載する
Gist(何故、、背景が黄色い??。趣味わるっ。。)
———-
送信されるメール内容
———-
ApacheAuthentication! LOCK IP
country: JP source: APNIC role: SoftbankBB ABUSE country: JP source: APNIC
IP-ADDRESS= xxx.xxx.xxx.xxx
IPアドレスをロックしました。
iptables -I INPUT -s xxx.xxx.xxx.xxx -j DROP
ロック解除は自動的に行われます。
echo iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP|at now + 1 hours
現在ロックしているIPは以下です。
xxx.xxx.xxx.xxx
その他:atコマンド例
今日の指定時間に解除
touch AAAAAAA |at 17:02 today
今から1分後に解除
touch AAAAAAA |at now + 1 minutes
今から1時間後に解除
touch AAAAAAA |at now + 1 hours
atqでatに登録されているもの一覧を表示
at -c 「番号」 で実行される内容を確認