お世話になります。
AWS+EC2+Ubuntu+nginxでWebサーバーを立てています。
ALBでロードバランサーを建ててACMで証明書を取ってHTTPS化しました。
HTTPポートはHTTPSポートにリダイレクトしています。
EC2のインスタンスはSSHとHTTPポートが空いている状態です。
EC2のインスタンスとALBはHTTP接続しています。
お名前.comでDNS名を取って、Route53でALBのAレコードを作っています。
今日、error.logを見たら、以下のようなエラーが大量に(数秒に一回)吐き出されていました。
$ tail /var/log/nginx/error.log
2021/10/23 10:32:45 [error] 1793#1793: *32690 open() "/usr/share/nginx/html/(doc_root)/m/item/itemShw.php" failed (2: No such file or directory), client: 172.31.40.3, server: (domain), request: "GET /m/item/xxxx.php?cd=xxxxxx HTTP/1.1", host: "xxx.xxxxxxxxxx.xx"
※(doc_root)は自分で掘ったドキュメントルート。(domain)はお名前.comで取ったDNS名です。
エラーメッセージ通り、/usr/share/nginx/html/(doc_root)/の下にm/item/xxxx.phpというファイルはありませんし、mというディレクトリも作っていません。
xxx.xxxxxxxxx.xxというサイト(企業)に用事もありません。
ググったら、m/item/xxxxxx.phpというプログラムは、www.xxxxxxxxx.xx配下の、何らかのECサイトのプログラムらしいです。
これですが、何らかの攻撃を外部から受けていると考えていいでしょうか?
すでに、何らかの踏み台サーバーやトロイの木馬的なものを仕込まれていると考えたほうがいいでしょうか?
上記のようなエラーが出ないようにセキュリティを強化する方法はあるでしょうか?
よろしくお願いします。
★
(同日17時半追記)
情報提供・修正依頼をいただいて、誰かのクライアントが私のサイトを某ECサイトと間違って叩いているのではないかと予想し、ロードバランサーのアクセスログを取ってみました。
すると、ログを取得し始めた13時ごろから、この追記を書いている17時半までの間に、以下のようなリクエストが、数秒ごとに、数百回発生していることが分かりました。
(ログの解析は以下の記事を参考にしました)
https://dev.classmethod.jp/articles/alb-log-to-s3/
https [リクエストタイプ]
2021-10-23T04:09:39.511097Z [リクエストがあった時間]
app/(load balancer name)/xxxxxxxxxxxxx [私のサーバーのロードバランサー情報]
XXX.XXX.XXX.XXX:52695 [クライアントのIPアドレス:ポート番号]
172.31.xxx.xxx:80 [私のターゲットのIPアドレス:ポート番号(プライベートIP)]
0.000 [ロードバランサーがリクエストを受け取った時点からターゲットに送信するまでの合計経過時間]
0.000 [ロードバランサーがターゲットにリクエストを送信した時点から、そのターゲットが応答ヘッダーの送信を開始した時点までの合計経過時間]
0.000 [ロードバランサーがターゲットから応答ヘッダーを受け取った時点から、クライアントへの応答の送信を開始した時点までの合計経過時間]
404 [ロードバランサーからの応答のステータスコード]
404 [ターゲットから応答のステータスコード]
360 [クライアントから受け取ったリクエストのサイズ (バイト単位)]
705 [クライアントに返される応答のサイズ(バイト単位)]
"GET https://www.sonymusicshop.jp:443/m/arti/artiItm.php?cd=60022866&ima=3931&site=SHTTP/1.1" [クライアントからのリクエスト]
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36" [リクエスト元のクライアントを特定する User-Agent 文字列]
xxxxxxxxxxxxxxxxx [HTTPSリスナーのSSL暗号]
TLSv1.2 [HTTPSリスナーのSSLプロトコル]
arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxx:targetgroup/(target group name)/xxxxxxxx [私のターゲットグループのAmazonリソースネーム(ARN)]
"Root=1-xxxxxxxxxxxxxxxx" []
"XXX.XXXXXXXXXXXXX.XX" [TLS ハンドシェイク中にクライアントから提供されるSNIドメイン]
"arn:aws:acm:ap-northeast-1:xxxxxxxxxxxx:certificate/xxxxxxxxxxxxxxxxxxxxxxx" [クライアントに提示される私の証明書のARN]
0 [リクエストに一致したルールの優先度の値]
2021-10-23T04:09:39.510000Z [ロードバランサーがクライアントからリクエストを受け取った時刻]
"forward" [リクエストの処理時に実行されるアクション]
"-" [HTTPレスポンスのロケーションヘッダーのリダイレクトターゲットのURL]
"-" [エラー理由コード]
"172.31.xxx.xxx:80" [私のターゲットのIPアドレス:ポート番号(プライベートIP)]
"404" [ターゲットの応答からのステータスコード]
"-" []
"-" []
すべて同じ「XXX.XXX.XXX.XXX」というIPアドレスからのアクセスです。
また、「 "XXX.XXXXXXXXXXXXX.XX" [TLS ハンドシェイク中にクライアントから提供されるSNIドメイン]」は、nginx側に残っていたのと同じECサイトを運営している名のある企業です。
ということで、以下は私の質問です。
0. 現状は、持っていないリソースにアクセスを掛けられて、持ってないよ(404)と返事をしているだけ、ということなので、特に問題はないということでしょうか。
0. クライアント「XXX.XXX.XXX.XXX」を拒否すればいいだけの話でしょうか。(イタチゴッコになるような。。)
0. 大企業「"XXX.XXXXXXXXXXXXX.XX"」に何か言った方がいいでしょうか。(AWS配下らしい?)
0. Amazonに何か問い合わせてもいい案件でしょうか。(こちらの不手際で問い合わせるのは気がすすまないので。。)
0. その他、私がセキュリティを強化し、エラーログを見やすくする上でアドバイスがあればお願いします。
以上、よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー