僕が借りているサーバが、世界各国から「1日900回」不正アクセスされている話〜/var/log/secureからみえる攻撃者の影〜
私用で使っているサーバの/var/log/secureをみてみた
見に覚えのないアクセスが大量にある。。。
しかもuserはrootだったりadminだったり。。。
これ、不正アクセスってやつか?
1日どれくらい不正アクセスを試みられているのか
2/4の不正アクセス回数を、すごい雑な方法だけどしらべてみた。
$ cat /var/log/secure | awk '/Feb 4/ && /Failed/' | wc -l 943
わお。943回。どこから不正アクセスされているんだろ。
いったんipだけ抽出して、
どこの国から狙われているか調査してみた。
使用unixコマンド
ここらへんを知っておくとログ調査に便利。
調査手順
ipアドレスのみ抽出
$ grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' /var/log/secure > ips.txt
-Eオプションで正規表現が使えます
40.69.203.57 40.69.203.57 40.69.203.57 172.31.32.142 94.183.180.86 94.183.180.86 94.183.180.86 ...
※ 念のためipアドレスは編集しております
ipの重複をなくす
sort ips.txt | uniq > unique_ips.txt
sortしてuniqして、ipをuniqueにします。
101.78.196.27 103.16.142.208 103.20.251.158 103.213.115.45 103.216.205.51 103.22.171.1 ...
ipがユニークになった。
ipジオロケーションサービスに投げる
$ curl http://api.hostip.info/get_html.php\?ip=40.69.203.57
これを投げると、
Country: UNITED STATES (US) City: (Unknown city) IP: 40.69.203.57
いい感じにデータが返ってきます。
#!/bin/bash while read ip do curl http://api.hostip.info/get_html.php\?ip=$ip\&position=true done < unique_ips.txt
run.shという名前で保存して、
$ sh run.sh > countries.txt
こんな感じで走らせ、結果をテキストファイルに保存します。
awkコマンドで国だけ抽出
$ cat countries.txt | awk '/Country/' | sort | uniq
とすると、先ほどの結果の「Country」だけ抽出できます。
結果
Country: (Private Address) (XX) Country: (Unknown Country?) (XX) Country: AUSTRALIA (AU) Country: AUSTRIA (AT) Country: BRAZIL (BR) Country: BULGARIA (BG) Country: CANADA (CA) Country: CHILE (CL) Country: CHINA (CN) Country: COLOMBIA (CO) Country: CROATIA (HR) Country: DENMARK (DK) Country: EUROPEAN UNION (EU) Country: FRANCE (FR) Country: GERMANY (DE) Country: HONG KONG (HK) Country: HUNGARY (HU) Country: INDIA (IN) Country: INDONESIA (ID) Country: IRELAND (IE) Country: ISRAEL (IL) Country: ITALY (IT) Country: JAPAN (JP) Country: KOREA, REPUBLIC OF (KR) Country: MALAYSIA (MY) Country: MEXICO (MX) Country: NETHERLANDS (NL) Country: NORWAY (NO) Country: PAKISTAN (PK) Country: PERU (PE) Country: PHILIPPINES (PH) Country: POLAND (PL) Country: RUSSIAN FEDERATION (RU) Country: SENEGAL (SN) Country: SLOVENIA (SI) Country: SPAIN (ES) Country: SWITZERLAND (CH) Country: TAIWAN (TW) Country: THAILAND (TH) Country: UKRAINE (UA) Country: UNITED KINGDOM (GB) Country: UNITED STATES (US) Country: VIET NAM (VN)
おおー。
世界各国から狙われている笑
攻撃元を特定するのは難しい
ただ、これだけだと発信元を特定するのは難しい。
攻撃者はいくつもの踏み台サーバを使って攻撃することにより、
自分の発信元を特定しにくくしているから。
なので、世界各国からアクセスされているからと言って、
本当に世界各国の人が狙っているかどうかはわからない。
攻撃を回避するには
色んな方法があるが、
今回はポート番号を変えてみた(次回)