さくらのVPSでOSgridの運用設定-1
これまでのエントリでOpenSimを稼働する方法でしたが、さくらのVPSはグローバルIPアドレスを保持しています。そのため、firewallを設置して、リスクを軽減するのが望ましいです。
このエントリでは、ざっくりとしたOpenSim向けのfirewall(iptables)の設定について記述します。
内容
- OpenSimでの使用ポート
- スタンドアローン
- OSgrid
- iptablesの設定
- iptablesのコンフィグ投入
- ログの設定
- iptablesの起動、確認
- さくらのVPSでの注意点
OpenSimでの使用ポート
iptablesで必要なポートのみを開けるために、OpenSimで使用しているポートを確認します。
スタンドアローン
http://opensimulator.org/wiki/Network_Settings
を見ると、
UDP+TCP/9000 - Services and the single region simulator are used via this single port
とあり、OpenSimをスタンドアローンで動かす場合に必要なポートは、TCPの9000(デフォルト)とUDPの9000のようです。
複数のSimを上げる場合は、同じポートは使用できませんから、任意で変更する必要があります。
OSgrid
スタンドアローンと同様に、
http://opensimulator.org/wiki/Network_Settings
を見ると、
TCP/8002 - All externally and user accessible OpenSimulator services TCP/8003 - All internal OpenSimulator services
とあります。
Robustなどの(OSgrid)は、8002と8003のようです。8003は内部通信用との記述がありました。*1また、これに加えてスタンドアローン同様にOpenSimのTCPの9000(デフォルト)とUDPの9000が必要ポートです。
メガリージョンの場合は、任意のポートが更に必要となります。
SIP(Voicechat)を使用する場合は、http://opensimulator.org/wiki/Network_Settings
に記述してあるSIP用のポートを開ける必要がありますが、今回は使用しないため触れません。
iptablesの設定
OSgridに接続するためのiptablesの設定について書いていきます。
1年ほど前に、DTIのVPSを設定する際に参考にしたところを参考にしています。
http://daretoku-unix.blogspot.com/2010/05/serversmanvpsiptablesstate.html
念のため、iptablesをとめておきます。
[root@foo ~]# vi /etc/init.d/iptables stop
設定を作成します。
[root@foo ~]# vi /etc/sysconfig/iptables
以下に投入した設定を記述します。*2
#対応ポート:tcp7122,tcp/udp:9000-9015 #SSH: (7122)管理用に必須なので許可する。自宅、出先などいろいろなところからアクセスする必要があるので、すべてのIPアドレスからの接続を許可する #OpenSim tcp/udp:9000-9015での通信用。16SIM分を割り当てここは開けているポートに従ってください。 #icmpも許可。ident(auth)はtcp resetで拒否、その他のすべての通信はDROPで拒否する。 #ローカルから外部へはフリー。 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -N MYCHAIN -A MYCHAIN -m state --state RELATED,ESTABLISHED -j ACCEPT -A MYCHAIN -p icmp -j ACCEPT -A MYCHAIN -s 127.0.0.0/8 -d 127.0.0.0/8 -j ACCEPT -A MYCHAIN -p tcp -m state --state NEW -m tcp --dport 7122 -j ACCEPT -A MYCHAIN -p tcp -m state --state NEW -m tcp --dport 9000:9015 -j ACCEPT -A MYCHAIN -p udp --dport 9000:9015 -j ACCEPT -A MYCHAIN -p tcp -m tcp --dport 113 -j REJECT --reject-with tcp-reset -A MYCHAIN -j LOG --log-level debug --log-prefix "[iptables] " -A MYCHAIN -j DROP -A INPUT -j MYCHAIN COMMIT
詳しくは、他のiptablesについて説明しいるサイトを参考にしていただきつつ、私の参考にしたサイトを見ていただきながら、設定していただければ。
さくらのVPSは幸いなことにコンソールアクセスが可能ですので、もし失敗しだ場合もコンソールから入ってiptablesを止めれば、sshなどでアクセスできます。
dtiのはそうではなかったので、ヒヤヒヤしながら行いました。
まだ、iptablesは起動しません。
ログの設定
DROPしたものについて、ログを取る設定を入れていますので、その設定を行います。
ログは、/var/log/iptables.logに出力するようにします。ファイル名は任意です。
空のファイルを用意してあげます。
[root@foo ~]# cd /var/log/ [root@foo log]# touch iptables.log [root@foo log]# chmod 600 iptables.log
LOGLEVELをdebugとしていますので、rsyslog.confでログが出力されるように追加します。
[root@foo ~]# vi /etc/rsyslog.conf
場所はどこでもいいので、以下を追加します。ログは、/var/log/iptables.logに出るようにしています。
kern.=debug /var/log/iptables.log
ログのlogrotateの対象となるようにしてあげます。
[root@foo ~]# vi /etc/logrotate.d/syslog
/var/log/cron /var/log/maillog /var/log/messages /var/log/secure /var/log/spooler /var/log/iptables.log { sharedscripts postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript }
とし、
rsyslogを再起動してあげます。
[root@foo ~]# /etc/init.d/rsyslog restart
iptablesの起動、確認
準備ができた所で、iptablesを起動します。
[root@foo ~]# /etc/init.d/iptables start
うまく起動したら、自分の意図したようになっているか確認します。
[root@foo ~]# /etc/init.d/iptables status
テーブル: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 MYCHAIN all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain MYCHAIN (1 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 127.0.0.0/8 127.0.0.0/8 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:7122 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:9000:9015 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:8002:8003 7 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:9000:9015 8 REJECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:113 reject-with tcp-reset 9 LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 7 prefix `[iptables] ' 10 DROP all -- 0.0.0.0/0 0.0.0.0/0
こんな感じで出力されるはずです。
OpenSimの稼働に問題がないか確認します。
viewerでログインし、どこかにテレポートし、問題なく使用出来れば穴は開いているはずです。
また、DROPしたログが出ているかも確認しておきます。
さくらのVPSの場合は、iptablesを起動して30秒もすれば、何かDROPしているはずです。
[root@foo ~]# tail /var/log/iptables.log
さくらのVPSでの注意点
さくらのVPSでiptablesを設定してログを吐かせたら、UDPの17500をブロードキャストしているのをDROPしているログばかりでびっくりしました。同じネットワークにいる方が、dropboxのEnable LAN SyncをONにしていると発生するようです。30秒に一度きます。今日確認できた所で4つのIPアドレスから来ておりました。
ログが肥大化して、容量を圧迫する可能性がありますので、すこし運用して様子を見て、/etc/logrotate.confを編集して、調整するのがよいかと思われます。
さくらのVPSのデフォルトの環境だとEnable LAN SyncをOFFにして実行するのが、簡単ではないようなので場合によってはということも考えられますので、ご注意ください。
でも、OpenSim.logよりは少ないのかもしれないです。
次は、MySQLのバックアップについて書きたいと思っています。