「さくらのVPS」ファイアーウォール設定

iptablesについて調べて*1設定してみた。初期設定ではiptablesプロセスは起動するが全部通しになっている。

方針は、

  • 中継は使わないのでDROP
  • 送信はとりあえず全部通しだが、ブロードキャストだけDROPしておく
  • 受信は必要と思われる物だけ通して、他はDROP
  • DROPしたものはログに書いておく(件数制限も)


設定する方法として、

  1. iptablesコマンドで設定する
  2. ファイルに書いてiptables-restoreで読み込む

の二通りの方法があるようだが、コマンドは面倒なので後者のやり方で。

*filter
# INPUTチェーンのデフォルトは条件に合わない物は後でDROPするのでどっちでも良いがDROPと書いておく
:INPUT DROP [0:0]
# 中継はDROP
:FORWARD DROP [0:0]
# OUTPUTチェーンのデフォルトはACCEPT
:OUTPUT ACCEPT [0:0]
# ログに書いてDROPするというユーザー定義チェーンを作る
:DROPLOG - [0:0]
##### 入力パケットについて
# loopbackからはACCEPT
-A INPUT -i lo -j ACCEPT
# ICMPはとりあえずACCEPTにしておく。やっぱり止めるかも
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
# 通信途中の物はACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 開始パケットはsshとhttpとsmtpはACCEPT。sshのポート番号は22でなく変更した物を書く
-A INPUT -p tcp -m state --state NEW -m tcp --dport sshポートの番号 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
# それ以外の物はログに書いてDROP
-A INPUT -j DROPLOG
##### 出力パケットについて
# ブロードキャストはログに書いてDROP
-A OUTPUT -d 255.255.255.255 -j DROPLOG
-A OUTPUT -d 自分のサブネットのブロードキャストアドレス -j DROPLOG
##### ユーザー定義チェーンの内容
# ログに書くのは1時間に3件まで。メッセージ先頭に目印を付ける
-A DROPLOG -m limit --limit 3/hour -j LOG --log-prefix "DROP:"
# ログを書いた後DROP
-A DROPLOG -j DROP
# 反映する
COMMIT

上記をファイル /root/iptables に書いて、

# iptables-restore < /root/iptables

この状態で一通りテストする。間違えてsshセッションが切れた場合は、管理パネルのコンソールからリブートすれば元に戻る。
問題がなければ、起動時に読み込む設定ファイルに書き込む。これで次回起動からも設定が生きる。

# iptables-save > /etc/sysconfig/iptables

Dropbox攻撃

ログを見てみると、そばのサーバーから17500ポートへUDPパケットが30秒ごとに2つずつ来ている。
ググルと、Dropbox のオプションによりそうなるようだ。
さくらへ、問い合わせフォームから要望を出しておく。

xx.xx.xx.xx から 30秒ごとに2回、ポート 17500 にUDPでブロードキャストが来ます。

上記サーバーのユーザに下記のメッセージを送ってください。
========================================
xx.xx.xx.xx の管理者殿

あなたのサーバーから周りの他のサーバーに大量の無駄なネットワーク通信が行われています。
通信内容から、Dropboxの設定で「Enable LAN sync」をオンにしていると思われますが、そのオプションは、同一LAN内の他のコンピューター上のDropboxと同期するための物です。
「あなたが xx.xx.xx.xx と同じLANに別のサーバーを借りていて両方のサーバーでDropboxを動かしていて、その間で同期をしたい」
と言うことでない限り、無意味なオプションですので、すぐにオフにして、他のサーバーへの迷惑を停止してください。

何が迷惑かというと、せっかくDROPしたパケット情報をログに書くことにしたのに、このパケットだらけになって無意味。