アクセスログからわかるNginxでやりたいセキュリティ対策等(ワードプレス)
アクセスログを見るのは楽しいですね。
毎日のようにハッキングしてくるロボットがいて、攻め方が面白い。
そんなアクセスログからわかる、やっておきたい対策を語ります。
1、IP直打ちでのアクセスは拒否
IPなんかでアクセスしてくるのは悪いロボットだけ。
ドメイン以外のアクセスはALL拒否するように設定する。
#default.conf
server {
listen 80 default_server;
server_name _;
return 403;
}
Nginx独自のコード「444」でも良いですが、
それだとバックエンド側で使うとサーバーダウンとみなされるので注意。
フロントなら問題ないです。
「deny all;」もエラーログになるので、個人的には「return 403;」が好き。
なお、これだと「https(ssl)」でのアクセスは防げないですが、
そもそも表示されないので問題ないだろう。
2、xmlrpc.phpは絶対に拒否
「xmlrpc.php」はPOST送信で攻められます。
これはDDOS攻撃の踏み台として、探られているのだと思う。
だから、いろいろ試され回数が多い。
Nginxでは次のようにして拒否する。
location = /xmlrpc.php {
return 403;
}
レンサバだと「.htaccess」にて指定するか、
セキュリティ系のプラグインを使っても良い。
とにかく、これだけは絶対に拒否する。
3、ユーザーIDでのアクセスを拒否
「/?author=1」などでのアクセスはハッキングの定番手段。
これにてユーザー名がわかることが多く、
パスワードの突破のみでハッキングを目指すというもの。
location / {
if ($args ~* author=) {
return 403;
}
try_files $uri $uri/ /index.php?$args;
}
この場合は「if」でしかできないので、このやり方に。
「location /」の中に追加すればOKです。
上記は追加後の状態。「try_files」は最初からあると思います。
ユーザー別のページを利用しない場合、拒否しておくと良い。
留意点
前述しましたが「deny all;」にすると、エラーログが出る。
具体的にファイル名を指定して拒否する場合、エラーログは不要です。
そのため「return 403;」などにすると良い。
こうしないとログ監視が面倒になるので必須。
ロードバランサ構成にしている場合、フロントに絶対に返答しないといけません。
「return 444;」を使って謎のエラーに悩まされた人は多いだろう(自分
あとの細かいところ
攻撃かな?と思われるログは散見されます。
「phpmyadmin」系の攻撃は特に多いですね。
絶対に使ってはいけない名前代表格です。
基本的には英語名のファイルが狙われているので、
日本人ならローマ字でファイル名を書くのが安心。
かっこつけて英語で付けるほど、リスクが高まります。
「コピペでできる」的なやつは、ファイル名から狙われやすい。
プラグインやテーマなども攻撃の対象です。
データベースをいじるプラグインは特に攻撃対象ですね。
攻撃をするあたり、脆弱性はまだまだあるんだろうなと感じます。
余計なファイルはサーバーにおかない。
必要無いプラグインは停止ではなく削除する。
このあたりを意識して、今日も明日もアクセスログを見る。
そんな木曜日の夜。
是非ご感想・ご指摘等をください。