さくらインターネットサーバ(sakura VPS)に限らず、ロリポップ等でも同様のことですが、Webサイトを公開していると必ずと言っていいほど海外・国内からのアタック攻撃を受けます。以下に、体験を元に対策方法へのヒントとなるよう箇条書きしておきます。
現象
CPU稼働率が100%近くになったり、HTTPレスポンスが異様に遅くなったりします。またサーバ侵入された場合はフィッシング詐欺の踏み台としてサイトが使用されてしまいます。
各詳細と対策方法
ファイアーウォール設定による対策
外部からの侵入をブロックする為、iptableの設定。
SSH不正アクセスとログイン対策
SSHログイン(Port22番)ではよくアタックを受けるので、SSHポート番号変更とrootのログインを無許可にします。
SSHの設定に関しては、『Linux インストール記録4』や以下参考にしてください。
不必要な国からのアクセスは以下のようなログがでます。DENY_COUNTRYと表示され、アクセス拒否されていることが分かります。
Nov 30 12:20:55 server kernel: [IPTABLES DENY_COUNTRY] : IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=114.80.93.71 DST=xx.xxx.xx.xxx LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=45886 DF PROTO=TCP SPT=41714 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0 Nov 30 12:20:58 server kernel: [IPTABLES DENY_COUNTRY] : IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=114.80.93.71 DST=xx.xxx.xx.xxx LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=45887 DF PROTO=TCP SPT=41714 DPT=80 WINDOW=5840 RES=0x00 SYN URGP=0
cronログチェック
サーバ公開後に、cronログをチェックします。覚えのないバッチや頻繁に起動される処理は怪しんでみます。[y2kupdate]というファイルが1分毎に実行されている場合は不正侵入された恐れがあるので要注意です。以下ログ内容です。CentOS5の場合、[y2kupdate]は/tmp or /tmp/.ICE-unix配下にapacheユーザで侵入されファイル展開されているようです。
Nov 27 04:17:01 server crond[2469]: (apache) CMD (/tmp/.ICE-unix/.b/y2kupdate >/dev/null 2>&1) Nov 27 04:18:01 server crond[2472]: (apache) CMD (/tmp/.ICE-unix/.b/y2kupdate >/dev/null 2>&1) Nov 27 04:19:01 server crond[2476]: (apache) CMD (/tmp/.ICE-unix/.b/y2kupdate >/dev/null 2>&1)
自サイトがフィッシング詐欺サイトとなってしまった場合
ISP(インターネットサービスプロバイダ,OCN,YahooBB,SO-NET等)や、アメリカのRSA(アメリカのRSA データセキュリティ社)からメールや電話で連絡があります。
対応策としては以下です。
- 公開サイトを閉じます。ファイルは削除せず、「ルータのポートを閉じる」か「apacheを停止させます」。
- フィッシングサイトをなっているURLを確認し、該当のファイルやデータベースを探し、取得します。
- apacheログを取っておきます。
- apacheログや詐欺対象となってしまったファイルはRSAが調査の為必要する場合があるので保存しておきます。
- バックアップできたら詐欺対象となったファイルを削除します。
- 二度と侵入されないようセキュリティ向上に努めます。
サイトの再度公開はあまりお勧めしません。できれば別ドメインを取得して再度公開する形がいいと思いますが、セキュリティ対策されない限りはまた侵入される可能性も否定できません。
wordpressのセキュリティ対策
wordpressは世界でもメジャーなCMSです。その為世界から決まったURLでアタックや不正侵入を試みたりされます。以下、対策案がまとめられています。
『WordPressの管理領域を守る10の方法』
wordpressの余計なヘッダーは削除
攻撃者に対して有効となりうる情報は削除します。参考:ワードプレス馬鹿の「WordPressカスタマイズ日記」
remove_action('wp_head', 'wp_enqueue_scripts', 1); remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0); remove_action('wp_head', 'feed_links_extra',3,0); remove_action('wp_head', 'rsd_link'); remove_action('wp_head', 'wlwmanifest_link'); remove_action('wp_head', 'wp_generator'); remove_action('wp_head', 'index_rel_link'); remove_action('wp_head', 'parent_post_rel_link'); remove_action('wp_head', 'start_post_rel_link'); remove_action('wp_head', 'rel_canonical');
mysqladminへのアタック
LAMP環境では、決まりきったURLで不正アクセスしてくるものもいます。アクセス元IPで調べると情報がでてきます。例として『49.212.37.121』を挙げます。攻撃IP一覧でその元サーバが特定できます。以下のようなログがサーバにあれば要注意です。
49.212.37.121 - - [dd/mm/yyyy:07:17:02 +0900] "GET /muieblackcat HTTP/1.1" 404 13193 49.212.37.121 - - [dd/mm/yyyy:07:17:24 +0900] "GET //mysql/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:24 +0900] "GET //mysqladmin/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:28 +0900] "GET //phpadmin/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:31 +0900] "GET //phpmyadmin/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:31 +0900] "GET //phpmyadmin1/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:32 +0900] "GET //phpmyadmin2/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:32 +0900] "GET //pma/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:39 +0900] "GET //php-my-admin/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:57 +0900] "GET //phpMyAdmin-2.5.1/scripts/setup.php HTTP/1.1" 301 - 49.212.37.121 - - [dd/mm/yyyy:07:17:58 +0900] "GET //phpMyAdmin-2.5.4/scripts/setup.php HTTP/1.1" 301 -
対策としては、.htaccessによるIP規制をかけてください。
### アクセス制限 order allow,deny allow from all deny from 49.212.37.121
検索エンジン(ボット)を装った頻繁なアクセス
Webサイトを公開するとGooglebotやYahoo、MSNのbot以外にも様々なbotが参照しにきます。robots.txtによる規制も可能ですが、robots.txtを無視してアクセスしてくる不正なボットも中にはいます。UKのボット(MJ12bot)を装ったものがあるそうで、そちらも上記同様に.htaccessによる規制をかけます。この偽装したbotはIPが公式サイトに公開されているので、こちらに対してもアクセス規制をかけて対策します。
参考サイト:
がんちゃんのブログ
Majestic-12
order allow,deny allow from all # MJ12bot fake対策 deny from 81.169.145.25 deny from 81.169.145.28 deny from 88.38.211.149 # reject fake mj12 SetEnvIfNoCase User-Agent "^MJ12bot/v?1\.[01]\.[0-9]{1,2}" block deny from env=block
アタック前の前準備段階
不正ログインや、サーバに攻撃をしかける方は事前にサーバチェックをしに来ます。HEADメソッドやOPTIONメソッドが指定されてきている場合は注意が必要です。
telnet等によるOPTIONタグ
Webサーバのバージョンの下調べの為telnet 80 でアクセスされる場合があるそうです。
参考:千年の風に吹かれて
xxx.xxx.xx.xxx - - [dd/mm/yyyy:18:02:53 +0900] "OPTIONS * HTTP/1.0" 403 289 xxx.xxx.xx.xxx - - [dd/mm/yyyy:18:05:36 +0900] "OPTIONS * HTTP/1.0" 403 274
CentOS5.xでRPMでApacheをインストールしている場合は、「/etc/httpd/conf.d/httpd.conf」を修正します。
ServerTokens OS → ServerTokens Prod
>>> その2へ続きます。
[…] さくらVPSへの攻撃と対応策 […]