[[さくらのVPS]]

#contents

*ファイヤーウォールの設定 [#q970f6e4]
ファイヤーウォールを設定して、Webサーバへの不法侵入を防ぎましょう。
現在、Linuxのファイヤーウォールは、「iptables」というデーモン(プログラム)で管理されています。

[[iptables - Wikipedia>http://ja.wikipedia.org/wiki/Iptables]]
>iptables(アイピーテーブルズ)は、Linuxに実装されたパケットフィルタリング機能、またはその操作をするコマンドのこと。

(参考)
http://curiosity-drives.me/linux/sakura-vps-2-firewall/

** lokkitでデフォルトの設定を生成する [#ae95b6e9]
CentOSには、「lokkit」というファイヤーウォール管理ツールがあります。
これを利用すると、設定ファイルの雛形を簡単に作れます。
=雛形となるファイルがない場合、全部手入力で書かなきゃいけないので面倒&ミスが発生するかも?

[[GNOME Lokkit>http://www.jp.redhat.com/manual/Doc9/rhl-cg-ja-9/s1-basic-firewall-gnomelokkit.html]]
>GNOME Lokkitでは、基本的なiptablesネットワーク規則を作成することによって、標準的ユーザーのファイアウォール設定を行うことができます。このプログラムでは、規則を書き込む代わりに、ユーザーに対してシステムの使用に関する一連の質問を行い、それをファイル/etc/sysconfig/iptablesに書き込みます。
GNOME Lokkitを使用して複雑なファイアウォール規則を作成することはおすすめできません。

-lokkitの起動

 # lokkit
↓

- SELinuxは、とりあえず不要

 Security Level: (*) Enable(有効)でspaceキー
 SELinux: Disabled
↓

- 設定したい項目を選ぶ
とりあえず、以下の3つは雛形に入れたい。

 Customize(カスタマイズ)でspaecキー
↓

 Allow incoming:
 [*] SSH
 [*] WWW (HTTP)
 [*] Secure WWW (HTTPS)
でspaecキー
↓

「OK」でspaecキー

これで、以下の内容の設定ファイルが自動生成される。
(これを元に、さらに細かく編集する。)

- iptablesの設定ファイルをviで開く。

 # iptables -L
 # vi /etc/sysconfig/iptables

lokkitを使うことによって、以下のような雛形データが作成されているはず。

 # Firewall configuration written by system-config-securitylevel                 
 # Manual customization of this file is not recommended.
 *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
 -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

* SSHのポート番号、MySQLのポート番号を追加 [#h25de982]

 # iptables -L
 # vi /etc/sysconfig/iptables

以下のように追記する。以下の例では、
- SSHのポート番号を、標準の「22」から「12345」に変更。
- MySQLのポート番号「3306」を追加。

 # Firewall configuration written by system-config-securitylevel                 
 # Manual customization of this file is not recommended.
 *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
 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 12345 -j ACCEPT ← SSHのポート番号変更
 -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 -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT ← MySQLのポート番号追加
 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
 COMMIT

* iptablesを再起動 [#d677ee05]

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

* ファイヤーウォールの設定確認 [#s5fb487b]

 # iptables -L

これで、ファイヤーウォールを設定できました。
さらに詳細を知りたい方は、「iptables」等で検索してみてください。
設定の解説記事やサンプルがたくさん出てくるので、必要に応じて変更できます。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS