2011年7月21日木曜日

オープンソースで構築する仮想ファイアーウォール

仮想ファイアーウォールというとイメージしにくいと思いますがVyattaを少し使ってみたので紹介したいと思います。

長くなるので3つぐらいに分けたいと思います。

Vyatta : ビアッタ

Vyattaでできること

  • Routing

  • NAT

  • VPN

  • ※F/W

  • ※IPS

  • Loadbalance

  • VRRP

  • CUI/GUI(Webベース)


今回紹介するのは※が付いている項目です。

 

Vyattaとはそもそもなに?

VyattaはDebianベースで作られておりiptablesやsnortなどを組み合わせた“物”です。

Juniperなどのアプライアンス製のF/Wに付いている機能が網羅されている感じです。

ルーティングプロトコルも充実しているので高性能なルータとしても十分機能させることができます。

またVyattaには有料サポートも準備されおりサポートが必要な場合はそちらを使うのもいいと思います。

無料版もVPNクライアントやアンチウイルス機能が無い程度ですので十分に使えます。

イメージの配布もクラウド環境用なども準備されているのですぐに試すことができます。

http://www.vyatta.org/

 

インストール

メモリ256M、HDD 5Gもあれば十分です。

今回は検証が目的なので利用環境に応じてリソースは変更してください。

インストール自体は非常に簡単なので省略します。

Live Installのままだとリブート後全て消えてしまうのでinstall-imageだけは行ってください。
$install-image

イメージをInstallした後は必ずリブートしてください。色々おかしくなります。

初期設定が終わるまでGUIは使えないのでCLIで進めます。

ユーザ名、パスワード共にvyattaでログインできます。

Linuxライクなプロンプトが表示されていると思いますが、通常のLinuxコマンドもそのまま使えます。

lsコマンドなどを実行するとファイル/ディレクトリリストが表示されると思います。

 

基本操作

Ciscoなどの製品を使ったことがある人ならすぐになじめると思います。

Vyattaの操作はLinuxコマンドで行うのではなくVyatta専用のコマンドを利用します。

show : showに続く項目の情報を表示する
set : setに続く項目を設定する
save : 設定を起動ファイルに書き込む(設定は再起動まで反映されない)
commit : 設定を反映させる(設定後必ず行う)

$ : operationモード
operationモードでは設定の変更は行えません。

F/Wやインタフェースなどの情報を確認したい場合に利用します。

 

# : configureモード
operationモード時にconfigureコマンドを実行することでcofigureモードに移行できます。

configureモードでは全ての設定の変更が行えます。

 

IPの設定

早速IPを割り振ってみましょう。

configureモードになったら次のコマンドを実行します。
$configure
#set interface ethernet eth0 address 192.168.1.2/24
#set system gateway-address 192.168.1.1
#commit

これでeth0に192.168.1.2が割り当てられました。

SSHを起動

SSHが使えないと色々不便なのでSSHを起動します。
$configure
#set service ssh
#commit

ここまでくるとGUIを利用できます。
#set service https
#commit

先ほど設定したIPアドレスにアクセスするとGUIモードで設定を変更できます。

NTP/DNS設定
$configure
#set system time-zone Asia/Tokyo
#set system ntp server ntp.nict.jp
#set system name-server 8.8.8.8
#commit

ユーザ追加

plaintext-passwordとなっていますが、入力はプレーンテキストなのでそのままで大丈夫です。
設定後暗号化されます。

levelは適宜変更してください。
$configure
#set system login user kojiro
#set system login user kojiro level admin
#set system login user kojiro authentication plaintext-password hogehoge
#commit

F/W設定
初期設定ができたところで、本題のF/Wの設定を行いたいと思います。

F/Wを設定する前に予めIPアドレスのグループを作っておくと後々の運用が楽になります。

VMGuet01というグループを作りIPアドレス172.16.0.10を参加させました。
$configure
#set firewall group address-group VMGuet01
#set firewall group address-group VMGuet01 address 172.16.0.10
#commit

VyattaのF/Wは親ノード⇒親ノード内のルール番号(1~1024)⇒許可/拒否⇒マッチ条件 のような流れで設定します。

HTTPという親ノードを作成します
$configure
#set firewall name HTTP

ルール番号を指定する。1~1024までならどれも大丈夫ですが1から評価されてゆきマッチした時点でそれ移行を評価しないので100や200など少し間を開けて登録するのがセオリーです。
また、どれにもマッチしなかった場合はF/W全般に言えることですが暗黙の拒否があり全て拒否されます。

今回は内側(LAN)から外側(WAN)に向けた設定をしてみます。

ルールは100から使ってきます。
$configure
#set firewall name HTTP rule 100

HTTPノードに対するルール100のアクションを指定します
$configure
#set firewall name HTTP rule 100 action accept

HTTPノードに対するルール100のマッチ条件を指定します
$configure
#set firewall name HTTP rule 100 source group address-group VMGuet01
#set firewall name HTTP rule 100 destination port 80,443

この設定は送信元がVMGuet01で宛先のポートが80番(HTTP)、443(HTTPS)を許可するという意味になります。

sourceをPortやGlobalIPなどにすることで外側から内側へのアクセス制御も行えます。

commit時にエラーがでる場合などは設定が抜けている事が殆どなのでshowコマンドで設定を確認しながらやっていくといいと思います。

次はIPSを設定してみます。

0 件のコメント:

コメントを投稿