【PR】最近楽天で購入した商品

こちらもなかなかのボリューム。子供が綺麗に折り紙を折れるようになると、成長が感じられて、嬉しい。かんたん・かわいい・楽しい! 決定版 おりがみ大図鑑 大ボリューム!190作品がオールカラーでわかる! [...]

この手のやつは、いったいどういう仕組みで絵とペンの音声をマッチさせているのか不思議。もの凄いボリュームなので、子供も飽きずに楽しめます。音で学べる!英語ことば図鑑5000 タッチペンつき [ アレン玉 [...]

いつの間にか、黎明篇の続きが!前回で完結したとばかり思っていたので、これは嬉しい。そして、めちゃくちゃ面白い!宇宙戦艦ヤマト 黎明篇 第2部 マリグナント・メモリー [ 塙 龍之 ]価格:1,650円 [...]

塗るタイプの方が効果大で長持ちする気がします。【医薬部外品】ギャツビー プレミアムタイプ デオドラントロールオン アクアティックシトラス 60ml価格:575円(税込、送料別) (2024/10/31 [...]

多摩にペン先がない!ってことがあるので。その後、運よく見つかってはいるのですが、予備を持っておいてもいいかも。エレコム Apple Pencil 用 交換ペン先 第1世代 第2世代 USB-C 対応 [...]

前は黒っぽいやつを使っていたのだが、これだとカビとか生えても分からないんじゃ、ということでもっと明るい色のものに変更。東和産業 ボディタオル すご泡銀抗菌ナイロンタオル メンズ グリーン 約28×12 [...]

まだこの最新版は使っていないのだが、前のバージョンは全然iPad用で使えているので、かなり重宝している。[数字LED・驚異の精度・最長使用時間]タッチペン アップルペンシル互換 IPAD用スタイラスペ [...]

最近はネットでデータを受け渡しできるのでCDRを焼くこともめっきり少なくなり、昔のCDRをハサミで切って捨てたりしているのですが、普通のはさみよりこちらの方が切れやすく手への負荷が少ないようです。が、 [...]

最初の方、マンネリかなぁと思いながらも、給食パワーなのか、やはり見入ってしまった。出てほしかった、神野ゴウくんにまた会えたのも嬉しい。おいしい給食 Road to イカメシ【Blu-ray】 [ 市原 [...]

子供に強請られて。そんなに高機能ではないので、すぐに飽きるかと思いきや、見た目やしぐさがツボにはまったらしく、意外と可愛がっている。Tcvents ロボット ラジコン ロボットおもちゃ ラジコンロボ [...]

IT関連サイト記事新着

「ROIが見通せない」という理由で生成AIの活用に後れを取っていた企業でも、その効果を享受できている実態が判明した。生成AIのROIはどの程度なのか。 [...]

「Windows 10」のサポート終了が迫る中、Windows 10ユーザーは「Windows 11」への移行を検討しなければならない。とはいえ、焦ってWind [...]

 2024年11月14日、クラフターは、静岡県伊豆の国市(以下、伊豆の国市)が、法人向け生成AI「Crew」を全庁導入したと発表した。  Crewは、ChatG [...]

はじめに 2024/10/17 に Yocto Project 5.1 がリリースされました。Yocto Project 5.x 系のマイナーリリースとなります [...]

 テックタッチは、大企業(従業員数1,000名以上)の情報システム担当者を対象に「2025年の崖」への対応策について調査を実施した。なお2025年の崖とは、20 [...]

[IMAGE] PayPal社はMLOpsプラットフォームCosmos.AIを拡張し、大規模言語モデル(LLM)を使用したジェネレーティブAIアプリケーションの [...]

 Nutanixは、同社のAIインフラストラクチャープラットフォームを拡張する最新のクラウドネイティブサービス「Nutanix Enterprise AI」を発 [...]

 GitHub Japanは、ファッションEC「ZOZOTOWN」とのコラボレーションによる、GitHubのファッションアイテムを受注販売する。受注期間は11月 [...]

IT関連Youtube

そら_新人社員の仕事効率化日記 2024-11-13 07:22:06 【再生時間】00:39 Favorite [...]

藤吉伶来 2024-11-12 20:58:35 【再生時間】00:07 Favorite [...]

「ただよび」理系チャンネル 2024-11-12 20:30:11 【再生時間】39:17 Favorite [...]

Popular Posts(last24hours)

fail2banでWordPressのログイン攻撃を防ぐ

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。

jetpackだとインストールしただけで簡単に防いでくれそうな感じでもあるのですが、jetpackの統計機能が無償では無くなったことと、jetpackは重い印象があるので、すでに使用しているfail2banでできないかと調査。1つのサーバで複数のWordPressサイトを運用している場合もWebサーバのログファイルは1つなのでまとめて対応できますしね。

Webで検索するとfilterがいくつか見つかったのですが、

failregex = ^<HOST> -.*"POST /wp-login.php HTTP.*$

だと

fail2ban-regex /var/log/httpd/access_log /etc/fail2ban/filter.d/apache-wplogin.conf --print-all-matched

Running tests
=============

Use   failregex filter file : apache-wplogin, basedir: /etc/fail2ban
Use         log file : /var/log/httpd/access_log
Use         encoding : UTF-8


Results
=======

Failregex: 2 total
|-  #) [# of hits] regular expression
|   1) [2] ^<HOST> -.*"POST /wp-login.php HTTP.*$
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [87470] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 87470 lines, 0 ignored, 2 matched, 87468 missed
[processed in 29.06 sec]

|- Matched line(s):
|  xxx.xxx.xxx.xxx - - [14/Jul/2024:04:37:43 +0900] "POST /wp-login.php HTTP/1.1" 200 11936 "-" "Mozilla/5.0"
|  xxx.xxx.xxx.xxx - - [14/Jul/2024:05:01:02 +0900] "POST /wp-login.php HTTP/1.1" 200 11936 "-" "Mozilla/5.0"

Missed line(s): too many to print. Use --print-all-missed to print all 87468 lines

で2件しかヒットせず、実際に動かしてみても一向に検知されていく気配がありません。

failregex = ^<HOST>.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200

だと

Results
=======

Failregex: 51 total
|-  #) [# of hits] regular expression
|   1) [51] ^<HOST>.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [87529] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-

Lines: 87529 lines, 0 ignored, 51 matched, 87478 missed
[processed in 30.26 sec]

|- Matched line(s):
|  xxx.xxx.xxx.xxx - - [14/Jul/2024:04:37:43 +0900] "POST /wp-login.php HTTP/1.1" 200 11936 "-" "Mozilla/5.0"
|  xxx.xxx.xxx.xxx - - [14/Jul/2024:05:01:02 +0900] "POST /wp-login.php HTTP/1.1" 200 11936 "-" "Mozilla/5.0"
|  xxx.xxx.xxx.xxx - - [14/Jul/2024:20:23:32 +0900] "POST /wp-login.php?jetpack-protect-recovery=true HTTP/1.1" 200 11929 "https://xxx.xxx/wp-login.php" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
|  xxx.xxx.xxx.xxx - - [15/Jul/2024:04:06:22 +0900] "POST //wp-login.php?jetpack-protect-recovery=true HTTP/1.1" 200 11930 "https://xxx.xxx//wp-login.php" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
|  xxx.xxx.xxx.xxx  - - [16/Jul/2024:22:32:48 +0900] "POST //wp-login.php HTTP/1.1" 200 11936 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
|  xxx.xxx.xxx.xxx  - - [16/Jul/2024:22:40:53 +0900] "POST //wp-login.php HTTP/1.1" 200 11937 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"

な感じで元のもの以外も多くヒットしたので後者を採用することにします。

という訳で

/etc/fail2ban/jail.d/apache-wplogin.local
[wplogin-iptables]
enabled = true
filter = apache-wplogin
action = iptables-multiport[name="403", port="http,https", protocol="tcp"]
logpath = /var/log/httpd/*access_log
ignoreip = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
maxretry = 5
findtime = 60
bantime = 1800
/etc/fail2ban/filter.d/apache-wplogin.conf
[Definition]
failregex = ^<HOST>.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
ignoreregex =

で始めて見て様子見。

fail2ban-client status wplogin-iptables
                                                              
Status for the jail: wplogin-iptables
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     14
|  `- File list:        /var/log/httpd/access_log /var/log/httpd/ssl_access_log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

という感じで検知はしている模様。

Tips,WordPress

Posted by admin