• 木. 11月 21st, 2024

~下町物語~

入り組んだ現代社会に鋭いメスを入れ、おもしろおかしく書く綴るブログである。

この記事を読む およそ時間 2

アタック!!

久しぶりにブログ書いてますが、errorログにアタックを検出したのでネタにしたいと思います。

まず下記がアタックされている様子のスクリーンショットです。222.185.238.250のGIPからアタックされていることが分かります。

アタック元

という事なので、これは中国からのアタックだという事が分かりますね。ウザイのでそろそろ対策を講じて行きたいと思います。方向性はアタックされるIPがある特定のルールに基づき自動BANされる仕組みをつくって行きます。

ブログを書きながら構成変更完了

○まずは、必要なツールをインストールをする。
sudo yum install fail2ban fail2ban-systemd

○次に、今回閉め出したいアクセスを検出するフィルターを作成する
sudo vi /etc/fail2ban/filter.d/wordpress_filter.conf

[Definition]
failregex = ^<HOST>.*POST.*(wp-login\.php|xmlrpc\.php).*$
            ^<HOST>.*"(GET|POST).*" (404|403) .*$
ignoreregex =

○フィルターを使っての動作を記述する
sudo vi /etc/fail2ban/jail.d/wordpress_jail.conf

[DEFAULT]
bantime  = 43200
findtime  = 3600
maxretry = 3
#banaction = firewallcmd-ipset
banaction = iptables-multiport
backend = gamin
action = %(action_mwl)s
ignoreip = 127.0.0.1/8

[recidive]
enabled = true
bantime = -1
findtime = 259200
maxretry = 2

[sshd]
enabled = true
port = 2345

[wordpress]
enabled = true
filter = wordpress_filter
logpath = /var/log/nginx/*access.log

この辺りで設定した正規表現で該当アクセスを検出できているか?確認
今回で言うと、下記の問題中国からのアタックを閉め出したい訳なので、該当アクセスにヒットしている事を確認

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/wordpress_filter.conf –print-all-matched

|  222.185.238.250 - - [06/May/2019:03:31:21 +0900] "GET /123131/index.php HTTP/1.1" 404 548 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0)" "-"
|  222.185.238.250 - - [06/May/2019:03:31:21 +0900] "GET /program/index.php HTTP/1.1" 404 548 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0)" "-"
|  222.185.238.250 - - [06/May/2019:03:31:21 +0900] "GET /shopdb/index.php HTTP/1.1" 404 548 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0)" "-"
|  222.185.238.250 - - [06/May/2019:03:31:21 +0900] "GET /phppma/index.php HTTP/1.1" 404 548 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0)" "-"
|  222.185.238.250 - - [06/May/2019:03:31:22 +0900] "GET /phpmy/index.php HTTP/1.1" 404 548 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0)" "-"

下記で動作をprocessをスタートして状況を確認する

systemctl start fail2ban
systemctl enable fail2ban.service
systemctl status fail2ban

動作確認

[hogehoge@vaaabbb-daada-gfgfldnfkjdbafndsanfdaslnfasdl ]# tail -f fail2ban.log
2019-05-06 16:02:54,087 fail2ban.server         [19532]: INFO    Exiting Fail2ban
2019-05-06 16:09:17,749 fail2ban.actions        [20201]: NOTICE  [wordpress] Ban 106.72.132.224
2019-05-06 16:09:18,066 fail2ban.actions        [20201]: NOTICE  [wordpress] Ban 66.249.71.52
2019-05-06 16:09:18,781 fail2ban.actions        [20201]: NOTICE  [wordpress] Ban 66.249.71.50
2019-05-06 16:09:31,315 fail2ban.actions        [20201]: NOTICE  [wordpress] Unban 106.72.132.224
2019-05-06 16:09:31,524 fail2ban.actions        [20201]: NOTICE  [wordpress] Unban 66.249.71.52
2019-05-06 16:09:31,736 fail2ban.actions        [20201]: NOTICE  [wordpress] Unban 66.249.71.50
2019-05-06 16:09:34,038 fail2ban.actions        [20367]: NOTICE  [wordpress] Ban 106.72.132.224
2019-05-06 16:09:34,462 fail2ban.actions        [20367]: NOTICE  [wordpress] Ban 66.249.71.50
2019-05-06 16:09:34,979 fail2ban.actions        [20367]: NOTICE  [wordpress] Ban 66.249.71.52
2019-05-06 16:22:53,371 fail2ban.actions        [20367]: NOTICE  [wordpress] Ban 126.247.226.253

後は、zabbixで上記BANされたIPの数とUNBANされた数をカウントしてグラフ化するかな!

cat fail2ban.log | grep Ban | wc -l この辺りをZabbixに叩かせてでた数字をグラフ化すると可視化できる。後ついでにslackにプッシュする設定を行う感じで外に出ている時に知る事が出来ますね。まあ、知った所で何もないんですがwひとまず、張り付いて見張っている訳にはいかないので、これでいったん自動運転をしようと思います。

という事で、ひとまず、実装はできたのでこれで様子をみようと思います。
それでは、何か参考にして頂ければ幸いです。

その後

いいですねぇ。順調にブロックされているGIPがキャッチ出来ています。ブロックされていても、パケットカウントが増えているので、おそらくクラックツールとかで、プログラム的にRETRYを繰り返しているのかなと思われます。まあ、ぶっちゃそんなツールを入れて直にクラックする奴なんて滅多にいないので、クラックされて侵入されてどこかのサーバやらPCやらの中で動いて居るのだと思いますけどね。まあ、ひとまず、不審な行動をするとBANされて一定時間くると開放されるけど、ある回数BANを繰り返すと、そのIPは永久にBANされたままになる様に設定をしています。とりあえず、他の寄生先を見つけて、違うGIPからアタックをするくらいしかないですが・・・。同様の状況になるので、あまり意味はなさげかなと思います。

 pkts bytes target     prot opt in     out     source               destination
   23  2261 REJECT     all  --  *      *       203.81.114.124       0.0.0.0/0            reject-with icmp-port-unreachable
   19  4476 REJECT     all  --  *      *       153.181.242.38       0.0.0.0/0            reject-with icmp-port-unreachable
   22  3400 REJECT     all  --  *      *       210.188.25.185       0.0.0.0/0            reject-with icmp-port-unreachable
   51  3387 REJECT     all  --  *      *       180.198.72.160       0.0.0.0/0            reject-with icmp-port-unreachable
   16   916 REJECT     all  --  *      *       60.149.92.77         0.0.0.0/0            reject-with icmp-port-unreachable
   16  4926 REJECT     all  --  *      *       118.241.130.248      0.0.0.0/0            reject-with icmp-port-unreachable
   12   552 REJECT     all  --  *      *       115.28.245.132       0.0.0.0/0            reject-with icmp-port-unreachable
  198 11928 REJECT     all  --  *      *       80.250.82.41         0.0.0.0/0            reject-with icmp-port-unreachable
   15  5122 REJECT     all  --  *      *       153.172.130.235      0.0.0.0/0            reject-with icmp-port-unreachable
   69  4140 REJECT     all  --  *      *       66.249.71.52         0.0.0.0/0            reject-with icmp-port-unreachable
   79  4740 REJECT     all  --  *      *       66.249.71.50         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       126.247.226.253      0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       123.217.103.91       0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       106.72.132.224       0.0.0.0/0            reject-with icmp-port-unreachable

 

Translate »