まさかそこが間違っていたとは

しばらくメールを見ていなかったので気付かなかったのだが、LoadAverageが高いというメールが来ていたみたいだ。ウェブが見れなくなった状態にはなっていないようで、負荷もたいしたことないのでZabbixからはメールは来てなかった。

apacheのログを確認してみると、コメントスパムのプチDoS攻撃らしい(進行形である)。

ちょっと眠いし、ちょっと今は気分的にもそんなにかまってられないので、IPひろばで所有IPアドレスのリストを調べてセグメント単位でめめたぁーっとiptablesでDropしてやった。

こんな感じに、テキストエディタでずらっと書いて実行するとLinuxならまるっとやってくれる。

iptables -I INPUT -s ***.***.***.0/19 -j DROP
iptables -I INPUT -s ***.***.***.0/20 -j DROP
iptables -I INPUT -s ***.***.***.0/16 -j DROP
iptables -I INPUT -s ***.***.***.0/19 -j DROP

ひどいとこは/16でガッツリいってやった。

何もないIPも含めてごっそりとこれだけの数をDROPしたのですぐに収まったんだけど、GmailでLoadAverageの通知メールを見ると何故か時刻がおかしい。まさかのこのDoSでNtpdがやられてしまったのかと不安になった。

ntpdateで時計を合わせようとすると

the NTP socket is in use, exiting

というもんが表示されて調整ができないらしい。ググってみたらすでにntpdateプロセスが動いている状態で出来ないんだという事らしい。なんだそりゃあと仕方ないのでKILLして、/etc/ntpd.confには現在ntp1.sakura.ad.jpが入ってるけど、念のため別のパブリックなNTPサーバーも入れてntpdを再起動してみた。

しかし時間は変わらなかったのだあ。何故だ。

DoSの影響でまさかVPSそのものがやられてしまったのかと思ったけど、そんな訳はなかった。

いろいろ見ていると何かおかしい何かが。

まさかと思ったけど、Windowsがntpサーバーと同期できてなかった!

まさかこっちの環境とは。

こんなオチが待っているとは思わなかったけど、設定画面で別のntpサーバーにセットアップしたら即解決した。

あ~あ、部屋の時計を見たらもっと早く解決したのになあと今になって思うし、すこしだけ首をひねるだけのことだったんだけど、それを怠ってPC内(見えてる範囲)でやろうとしたことが今回な間抜けな騒動の原因になってしまったのだった。

 

うん、それでは。

対策もやってみよう。

Dosdetectorはもっとでかいやつに使いたいので閾値は変更せずに、今回はなによりfail2ban弾幕薄いぞ、何やってんの!状態だったのでwp-commentsのスパム対策にフィルターを作ってみましたってほどは出来ないので、ググったらムーバブルタイプのものがあったのでそれを改造したんです。

vi /etc/fail2ban/jail.conf

[apache-wpcm]
enabled  = true
filter   = apache-wpcm
action   = iptables-multiport[name=apache-wpcm, port="http,https", protocol=tcp]
logpath  = /var/log/httpd/access_log
findtime = 60
bantime  = 166400
maxretry = 2
vi /etc/fail2ban/filter.d/apache-wpcm.conf

[Definition]
failregex = ^<HOST> -.*"POST /wp-comments-post.php.*$

ignoreregex =

こんな感じになりました。

んでさ。これまたずっと気づいてなかった事があって、なおかついつから起きてたのかも分からないんだけど、fail2banでエラーが出ていたようで上手く動いてなかったらしい。んでそれはfalseで除外しました。

そしてまたまた今回初めて知ったんだけど、iptablesを再起動した後は、fail2banも再起動しないとiptablesを使ったものは有効になってないので、気を付ける必要があった。そして結構悩まされたんだけどフィルタの名前が長すぎてもエラーになるらしい。

 

ではでは修復完了~ってことで、iptables -Lでチェックすると今度はちゃんとIPアドレスが登録されていた。

Chain fail2ban-apache-wpcm (1 references)
target     prot opt source               destination
REJECT     all  --  192.187.112.42       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  204.12.239.210       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.151.152.90       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  142.54.174.162       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.187.106.242      anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.187.99.66        anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.151.152.106      anywhere            reject-with icmp-port-unreachable
REJECT     all  --  142.54.168.202       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  142.54.186.122       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.187.106.210      anywhere            reject-with icmp-port-unreachable
REJECT     all  --  173.208.136.34       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.151.145.250      anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.151.152.146      anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.151.147.62       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  192.151.152.122      anywhere            reject-with icmp-port-unreachable
REJECT     all  --  142.54.186.250       anywhere            reject-with icmp-port-unreachable
REJECT     all  --  198.204.230.130      anywhere            reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

ざーっとみるとセグメントで切ってもよさそうなものもあるけど、単品でやった方が、冤罪ではないが何もないユーザーが見れなくなるよりはずっと良い感じはする。

ただ、海外から見に来てくれることはほぼないので、やはりセグメントで切ってもよさそうなんだけどね。まあこのまま様子を見るとしますか。

あ、あとはfalseで除外にしたfail2banのフィルタもちょっと具合を見ないといけないなあ。PC自作についてもまた記事を見つけたのでちょっとやりたいけど、フルパワーを使うベンチがまだできないので少しおあずけでござるな。

 

Similar Posts:


2 thoughts on “まさかそこが間違っていたとは

  1. Pingback: CentOS6 fail2banでWordPressのコメントスパム対策

  2. Pingback: CentOS6 fail2banでWordPressのコメントスパム対策

Leave a Reply

Your email address will not be published. Required fields are marked *