君は心理学者なのか?

大学時代に心理学を専攻しなぜかプログラマになった、サイコ(心理学)プログラマかろてんの雑記。

僕が借りているサーバが、世界各国から「1日900回」不正アクセスされている話〜/var/log/secureからみえる攻撃者の影〜

f:id:karoten512:20180210104805p:plain

私用で使っているサーバの/var/log/secureをみてみた

f:id:karoten512:20180210112501p:plain

見に覚えのないアクセスが大量にある。。。

しかも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)

おおー。

世界各国から狙われている笑

攻撃元を特定するのは難しい

ただ、これだけだと発信元を特定するのは難しい。

攻撃者はいくつもの踏み台サーバを使って攻撃することにより、

自分の発信元を特定しにくくしているから。

なので、世界各国からアクセスされているからと言って、

本当に世界各国の人が狙っているかどうかはわからない。

攻撃を回避するには

色んな方法があるが、

今回はポート番号を変えてみた(次回)