Blog

07.さくらインターネットVPSを使ってみる。~ファイヤーウォールを使ってみる~


注意事項
サーバー管理については全くの素人が調べながら書いているので、セキュリティ的に脆弱な設定方法などが多々あると思われます。詳しい方は優しくご指摘いただけると幸いです。

さて、最後に少しだけセキュリティを高める為にファイヤーウォールを設定してみます。iptablesというのを使って必要なポートだけを許可するのが良いよいうです。
ファイヤーウォールの設定はシェルスクリプトというテキストファイルを作っておいてそれを適用するのが常套手段?の様なのでまずはシェルスクリプトを作成します。「emacs /etc/sysconfig/iptables.sh」

1
emacs /etc/sysconfig/iptables.sh

開いたシェルスクリプトに下記のようにiptablesのルールを書いていきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#! /bin/sh                                                                                                                                                                    

# IPアドレス設定。
# 使い回すIPアドレスを変数に設定。                                                                                                                                                          
server='xxx.xxx.xxx.xxx/xx'
home='xxx.xxx.xxx.xxx/xx'
any='0.0.0.0/0'

# iptabalesのサービスを停止。
/etc/rc.d/init.d/iptables stop

# iptablesの設定を初期化。
iptables -F
iptables -X

# まずは全てのポートを閉じる。
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# サーバー内部で使用されるLoopbackを許可。
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# ssh接続用のポートを許可。                                                                                                                                                                        
iptables -A INPUT -p tcp -s $home -d $server --dport 40022 -j ACCEPT
iptables -A OUTPUT -p tcp -s $server --sport 40022 -d $home -j ACCEPT

# Web用のポートを許可。
iptables -A INPUT -p tcp -s $any -d $server --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -s $server --sport 80 -d $any -j ACCEPT

# その他のポートへのアクセスをログで取得。
iptables -N LOGGING
iptables -A LOGGING -j LOG --log-level warning --log-prefix "DROP:" -m limit
iptables -A LOGGING -j DROP
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING

# 再起動してもiptablesの設定が保持される様に保存。
/etc/rc.d/init.d/iptables save

# iptablesのサービスを開始。
/etc/rc.d/init.d/iptables start

あとは作ったシェルスクリプトに「chmod 700 /etc/sysconfig/iptables.sh」で実行権限を与えて「/etc/sysconfig/iptables.sh」でiptablesを設定します。

1
2
chmod 700 /etc/sysconfig/iptables.sh
/etc/sysconfig/iptables.sh

これでiptablesのポート制限は完了したはずです。でもiptablesを設定するとyumが使えなくなってしまいます。。。orz
色々と調べたんですけど、ネットの情報を適用しても上手くいきませんでした。何故なんでしょうね?

さくらインターネットVPSに色々なところから接続してみましたが、レスポンスも良かったです。
一番気に入ったのはコントロールパネルからいつでもディスクを初期状態に戻せる事ですかね。
レンタルサーバーの制限で悩まされる事もなくなり、且つ安価なのはやっぱり魅力的ですね。
まあ、それなりのサーバー管理の知識がないと難しいですが。。。



This Post Has 4 Comments

  1. yosei より:

    はじめまして。昨日のオープンラボの発表、大変興味深く聞かせて頂きました!

    iptablesの設定ですが、OUTPUTチェーンのポリシーを(LOGGING経由で)DROPにしているのが厳し過ぎるのではないでしょうか?これでは、yumの通信が出て行けないと思います。(私は大抵ACCEPTにしちゃいます、、)

    あと、sshのポートを変えるのはとても良い方法だと思いますが、変更後のポートを公開しちゃっては不味いのではw

  2. tochi より:

    >yosei
    ありがとうございます。
    そうなんですよyumだけ許可しようと色々と調べたんですけど、うまくいかなくて。
    一般的にはOUTPUTはすべてACCEPTにして運用する方が常套手段なんですかね?

    実はiptablesの存在をしったのはこの記事を書いた時が初めてでほとんど意味が分からずに書いていました。大変勉強になります。
    今度OLOでサーバーのノウハウを教えてください。期待しています。(笑
    ちなみに、さくらVPSはお試し期間で終了してしまったので現在は動いていません、なのでsshのポートを公開しても大丈夫?
    自分が本番機として公開する場合にはポート番号も漏れないように気をつけます。

  3. yosei より:

    運用するシステムにも依ると思うんですが、中に入られちゃったらどっちみちアウト、というかsshやhttpの通信路は既に奪われちゃってる筈なので、もう手遅れかな、と。いった半ば投げやり(?)な運用を私はしてます。それよりOUTPUT塞ぐと色々不便ですよね。

    ちょうど私も仕事でさくらVPSを試用していたものですから、一連の記事は大変参考になりました。

  4. tochi より:

    >yoseiさん

    >中に入られちゃったらどっちみちアウト
    >それよりOUTPUT塞ぐと色々不便ですよね。
    なるほど。勉強になります。
    たしかに、不便と天秤にかけると。決めました、僕もこれからはOUTPUTはACCEPTにします!

    >一連の記事は大変参考になりました。

    本当ですか?!僕サーバー管理は全くの素人なんですけど。
    ぜひともご教授ください。

Leave A Reply