web-dev-qa-db-ja.com

nginxで私のサイトにアクセスしているIPを確認してください

私はこれについて本当に知りたくありません。なぜなら、それを本当にプライベートに保ち、訪問者に可能な限りプライバシーを与えたいからです(私のブログが人気があるわけではありません)。

Ghost がプリインストールされたDigital Oceanからnginxを使用してUbuntuをインストールしましたが、以前はWordpressを使用していました。今(私が書いているこの瞬間)私はこのログを見続けます

POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 3ms - 19b
POST /wp-admin/admin-ajax.php 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 3ms - 19b
GET /winBid?erid=EzLM7nyV0n&eid=2&cpm=1.45449&bid=1628&w=1384697998 301 2ms
POST /bidRequest?exchange=smaato 500 2ms - 19b
POST /bidRequest?exchange=smaato 500 1ms - 19b
POST /bidRequest?exchange=smaato 500 3ms - 19b
POST /bidRequest?exchange=smaato 500 2ms - 19b

あなたが見ることができるようにそれは毎秒来ています、そして彼らはこれで止まることはありません、そして私がWordpressまたは何かが起こっている間、彼らは私のサイトをハッキングしようとしているかどうかだと思いますこれらのリクエスト。これらの攻撃について調べ、これが何か悪いことが起こっている場合はIPをブロックしたいと思います。この種の動作を防ぐために、ボックスに何らかのモジュール/プラグインを見つける方法、またはインストールする必要があります。 ?

4
alicoding

通常、ログをオンにして、パスをnginx.conf/etc/nginx/nginx.confに設定できます。

vimまたはエディターを使用してそのファイルを編集し、この行を変更または確認する場合

access_log  /var/log/nginx/access.log  main;
2
Ali

NGINXは、興味深いと思われるIPやその他の情報をログに記録できますが、ここに表示しているログには、その情報が含まれるように構成されていないようです。 nginxログを調整すると、有効にできるはずです。ヘルプが必要な場合は、ここにnginxロギング構成を投稿してください。私のはこのように見えます:

    log_format main
            '$remote_addr - $remote_user [$time_local] '
            '"$request" $status $bytes_sent '
            '"$http_referer" "$http_user_agent" '
            '"$gzip_ratio"';

そして、ログに次のようなログを記録します。

76.113.215.212 --- [17/Nov/2013:10:19:19 -0600] "GET/HTTP/1.1" 200 15411 "-" "Mozilla/5.0(Macintosh; Intel Mac OS X 10_8_5)AppleWebKit/537.36(KHTML 、Geckoのように)Chrome/31.0.1650.57 Safari/537.36 "

問題のIPを見つけたら、いくつかの方法でそれらをブロックできるはずです-最も効果的なのはおそらくファイアウォール(iptables)の一部としてであるか、再起動までの一時的なブロックが許容できる場合は、基本的にコンピュータがそのホストとの通信をまったく拒否するREJECTルーティングエントリを使用します。それが少し重いと思うなら、おそらくさまざまな方法でnginxでブロックするルールを作成できます(レート制限が頭に浮かびます)。

2
Daniel Farrell

ウェブサーバーがAmazonELBなどのロードバランサーの背後にある場合、$ remote_addrはnotクライアントIPを提供します。代わりに、すべてのエントリがアップストリームの負荷分散デバイスのIPになります。

これを回避するには、$ remote_addrを$ http_x_forwarded_forに置き換えます。

log_format main
'$ http_x_forwarded_for- $ remote_user [$ time_local] "$ request"'
'$ status $ body_bytes_sent "$ http_referer"'
'"$ http_user_agent"';

1
nandoP