2013/02/18

さくら VPS のサーバーに iptables の設定をしてみた


さくら VPS の1Gプランを契約してサーバーを立ち上げたので、備忘録代わりに載せておきます。

さくら VPS の恐ろしい仕様なのですが、IPv4, IPv6 が有効になっていて、iptables と ip6tables の両方が有効になっているのはいいのですが、デフォルトフルオープンになっていることです。

多分、サポートの負担を軽減するための措置だと思うのですが、いくらなんでもあんまりです。デフォルトは SSH だけオープンにしておく位がちょうどいいと思うのですけどね。

ネットを検索して、さくら VPS の iptables にどのような設定をしているのか確認してみたところ、皆さん iptables の設定はしているようですが ip6tables の設定はしていないようなのですが大丈夫なのでしょうか?

とりあえず私は IPv6 と ip6tables を無効にして、iptables の設定を行ったのでその方法になります。

IPv6, ip6tables を無効化

まずは、IPv6を無効にします。

# vim /etc/modprobe.d/disable-ipv6.conf

以下の行を追加して再起動。

options ipv6 disable=1

ip6tables を無効にします。

# /etc/init.d/ip6tables stop
# chkconfig ip6tables off

ちなみに IPv6 を無効にすると postfix が以下のようなエラーを出力するようになるので、IPv6 を無効にして IPv4 のみ動作するようにします。

warning: inet_protocols: IPv6 support is disabled: Address family not supported by protocol
warning: inet_protocols: configuring for IPv4 support only

以下のファイルを開きます。

vim /etc/postfix/main.cf

inet_protocols を all から ipv4 に変更して保存します。

inet_protocols = ipv4

サービスを再起動して設定終了。

# /etc/init.d/postfix restart

iptables の設定

iptables の設定を変更するために、以下のファイルを開きます。

# vim /etc/sysconfig/iptables

以下のコードを貼り付けます。SSH, HTTP, HTTPS のみ有効にしています。余計な改行やスペースが入るとだめなようなのでご注意ください。

*filter
:INPUT   ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT  ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH, HTTP, HTTPS, SSH(22)-> delete after
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80    -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443   -j ACCEPT


-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

前半に一部不明な設定があるのですが、これはさくら VPS 独自の設定なのでしょうか?みなさん同じ設定をしているようですが。あと SSH のポートは気をつけてください。SSH のポート番号を変更したのにポートが開いていないと何もできなくなってしまいますので。

以下のコマンドで設定反映。エラーがでなければ OK です。

# /etc/rc.d/init.d/iptables restart

一応、設定を確認するコマンドは以下のようになります。

# /sbin/iptables –L

 

他にもいろいろやることが多くて、VPS とはいえサーバーを1台立ち上げるというのは大変だなと改めて思いました。


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    現在、Enty で支援を受け付けています。もしよければご支援ください。



    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから