access_logを眺めていたら、世界中からアタックされていたと言う話

以前アタックを受けてた事が発覚してから、定期的にaccess_logをチェックするようにしていたら、
思った以上に頻繁にアタックを受けている事がわかった。
これまでもあったんかなー。
どんな調査をしていたかといえば、access_logの中で
自分以外では本来アクセスしそうにないページにアクセスしているログを抽出した。
こんな感じ。
$ sudo grep -v <自宅マシンのIPアドレス> /etc/httpd/logs/access_log|awk '{gsub("[?&].*", "", $7); gsub(".*/", "", $7); print $7}'|grep \.php|sort|uniq -cd|sort -nr|head 4330 wp-login.php 374 xmlrpc.php 302 wp-cron.php 88 wp-comments-post.php 40 index.php 30 dl-skin.php 25 upload.php 25 admin-ajax.php 24 download.php 10 content-summary.php
左の数字はアクセス数、右のファイル名は直接アクセスされたページ。
wp-login.phpなんか、モロにアタックされてる感じだよね。
特に上位3つはWordPressでは頻繁にアタックされるページらしい。
と、言うわけで上位3ファイルと
セキュリティ上アクセスされない方が良さそうな「wp-config.php」は
.htaccessでアクセス拒否設定を行う。
ただし、wp-login.phpとwp-cron.phpは自宅マシンとElastic IPのアドレス、localhostだけはアクセス可能にしておく。
#アクセス制限 Options -Indexes <files ~ "(wp-config.php|xmlrpc.php)"> order deny,allow deny from all </files> <files ~ "(wp-login.php|wp-cron.php)"> order deny,allow deny from all allow from <自宅マシンのIPアドレス> allow from <Elastic IPのアドレス> allow from 127.0.0.1 </files>
さて、よからぬ事を考える人はあの手この手でアタックをしかけてくるだろうから、
そう言う人はIPアドレスでフィルタリングしておきたい。
いちいちaccess_logを見るのは億劫なので、
ログイン時に怪しいアクセスをしてきたIPアドレスを自動で表示するようにしてみた。
具体的には「xmlrpc.php」「wp-login.php」「wp-cron.php」の3ファイルに
複数回アクセスしているIPアドレスをaccess_logから抽出するようにした。
こんな感じ。
$ sudo grep -v <自宅マシンのIPアドレス> /etc/httpd/logs/access_log|grep "xmlrpc.php\|wp-login.php\|wp-cron.php"|tail -1000|awk '{print $1}'|sort|uniq -cd|sort -nr|head 604 46.119.125.xxx 333 195.154.250.xxx 12 52.193.226.xxx 2 103.28.192.xx
後はここに出てきたIPアドレスをフィルタリングするように設定する。
フィルタリングは.htaccessでやるとサーバ負荷になってしまうので、
ここいら辺を参考にAWSのネットワークACLで設定する。
AWSのEC2+ELBで、ロードバランサへのアクセス時点で特定IPからのアクセスを弾く
こうやってせっせとフィルタリングした結果、
サイトのアクセス数が半分になってしまったと言うオチ。
orz…
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント