先日、どこかで「VPSは使いたいけどiptablesがよく分からない」というのを聞いたので記事にしてみました。
前置き
まず、VPSは月額900円とかで利用できるレンタルサーバの一種です。
VPSを利用するなら"さくらのVPS"がおすすめです。
自宅サーバと違い、UPS(無停電電源装置)の設置や騒音問題、排熱問題など気にしなくてもいいので筆者もいくつか利用しています。<ご利用は計画的に
※自宅にもサーバ用途のPCはあるんですけどね…
しかし、VPSは低料金ということもありサービス提供者が提供してくれるファイアウォールサービスはほとんどありません。
※ここがAWSのクラウドサービスと違うところで、付加サービスはVPSにはありません。
あくまで、インターネットに直付けされたサーバという位置づけですので。
さて、脱線しましたが、本題に戻ります。
先ほど、VPSにはファイアウォールサービスがないと言いましたが、では皆さんのサーバな野ざらしなのか?と言われるとそうではありません。
皆さん、サーバのOSに標準的に搭載されているファイアウォール機能を利用しているのです。
ファイアウォールについてお話
まあ、Windowsのファイアウォールは専門外ですので置いておくとしてここでは、Linuxのファイアウォールについて説明します。
Linuxのファイアウォールで多く使われているのは"iptables"というものです。
基本的にコマンドで設定を導入します。
GUIで設定できるミドルウェアもありますが、参考サイトも少ないのでコマンド(CLI)で設定することをおすすめします。
iptablesを使う
1 2 |
iptables -L -n |
を発行することで現在の状態が確認できます。
デフォルトでは何も入っていない状態か、SSH(22)のみ許可された設定がほとんどだと思います。
これでは、セキュリティ上あまりよろしくないので、自分の拠点IPからのみに制限する方法を紹介します。
1 2 |
iptables -F |
設定を一度、空にします。
※このままでは、無防備です。
1 2 |
iptables -A INPUT -i lo -j ACCEPT |
サーバ内部での通信は無条件で許可してあげます。
1 2 |
iptables -A INPUT -p icmp -j ACCEPT |
PINGを許可してあげます。
1 2 3 4 |
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP iptables -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP |
攻撃対策のために攻撃性のあるパケットは破棄するようにします。
※インターネット上には様々な攻撃がありますが、全てを防げるわけではありません。
1つでも軽減する意味で導入しています。
1 2 |
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT |
通信中のパケットは許可してあげます。
※これがないとサーバから発信された通信の戻りがこれなくなり通信が成立しなくなります。
IP確認くんで"あなたのIPアドレス(IPv4)"を確認します。
1 2 |
iptables -I INPUT -s {**あなたのIPアドレス(IPv4)**} -j ACCEPT |
自分からの通信を許可します。
※当たり前ですが、これがないと自分が接続できなくなります。
1 2 3 |
iptables -A INPUT -j LOG --log-prefix "[DROP] : " --log-level 6 iptables -A INPUT -j DROP |
全ての条件に当てはまらなかったパケットは、ログに残したのち破棄するようにします。
※これがないと意味ありません。
1 2 |
service iptables save |
以上で、自分以外からの接続はされなくなります。
※自分のIPアドレスが変わると接続できなくなりますが…
接続できなくなった際は、以下をコンソールに接続して繰り返してください。
IP確認くんで"あなたのIPアドレス(IPv4)"を確認します。
1 2 3 4 |
iptables -D INPUT -s {**前回の"あなたのIPアドレス(IPv4)"**} -j ACCEPT iptables -I INPUT -s {**あなたのIPアドレス(IPv4)**} -j ACCEPT service iptables save |
最後に、ご自分でiptablesを勉強して詳しくなれば、さらに高度な設定にチャレンジしてみてくださいね
参考サイト
https://help.sakura.ad.jp/hc/ja/articles/206208121-iptables%E3%81%AE%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95
http://knowledge.sakura.ad.jp/beginner/4048/