SoftLayerのネットワークとセキュリティの基礎 #softlayer
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
今回の記事では、SoftLayerの基本的なネットワーク構成とネットワークセキュリティに関して触れてみたいと思います。
この記事を参考してSoftLayerに触れている読者のなかで、もしAWSのようなタイプのクラウド経験者であれば、ネットワークセキュリティは一体どのように保証してくれるのかと疑問に思っているかもしれません。今回の記事では、そのような疑問に対して入門レベルの答えをさせて頂きたいと思います。
なお、OSはLinuxを対象にしています。Windowsの場合はMicrosoft Windows Firewallになり、特に導入などで解説することがないので扱っておりません。
事前準備
サーバ起動
連載中の関連記事を参考にして、仮想サーバ(Publicクラウドインスタンス/Hourly)を1台起動してください。オプションの設定はデフォルトでもかまいませんが、次のようにAPF Software Firewallだけはかならず設定してください。設定しなかった場合、Install and Configure Advanced Policy Firewall (APF) にあるように手動でインストールと SoftLayer 用の設定を行わなければいけません。
項目 | オプション | 備考 |
---|---|---|
DATA CENTER | San Jose | |
OPERATING SYSTEM | CentOS 6.x | $0.000/h |
FIRST DISK | SAN(Default/25GB) | $0.000/h |
SECOND DISK | SAN(20G) | $0.007/h |
OS-SPECIFIC ADDON | RightLink | $0.000/h |
HARDWARE & SOFTWARE FIREWALLS | APF Software Firewall for Linux
(Windowsの場合は、Microsoft Windows Firewall) |
$0.000/h |
ADVANCED MONITORING | Monitoring Package - Basic | $0.000/h |
Apache HTTP Serverインストール
ファイアウォールの機能検証のために必要なのでApache HTTP Serverもインストールしてください。
# yum install httpd –y # service httpd start
SoftLayerのネットワーク構成
サーバ起動直後のネットワーク構成
SoftLayerでは、サーバは標準ではPublic VLANとPrivate VLANに接続された状態で起動します。そしてPublic VLANにはGlobal IPアドレスが、Private VLANにはPrivateIPアドレスが与えらています。
次のように確認してください。eth1にはGlobal IPアドレス、eth0にはPrivateIPアドレスが与えられています。
# ifconfig eth0 Link encap:Ethernet HWaddr 06:xx:xx:xx:xx:69 inet addr:10.xxx.xxx.130 Bcast:10.xxx.xxx.191 Mask:255.255.255.192 inet6 addr: fe80::xxxx:xxff:fexx:xx69/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5326 errors:0 dropped:0 overruns:0 frame:0 TX packets:2057 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5908309 (5.6 MiB) TX bytes:227241 (221.9 KiB) Interrupt:246 eth1 Link encap:Ethernet HWaddr 06:xx:xx:xx:xx:A7 inet addr:50.xxx.xxx.98 Bcast:50.xxx.xxx.103 Mask:255.255.255.248 inet6 addr: fe80::xxxx:xxff:fexx:xxa7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4108 errors:0 dropped:0 overruns:0 frame:0 TX packets:3334 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:672487 (656.7 KiB) TX bytes:663662 (648.1 KiB) Interrupt:245 以下略…
サーバ起動直後では、Linux標準のSoftware firewall(Iptables)が上がっていて、デフォルトでは、ウェルノウンポート(20,21,22,25,53,80,110,143,443,808,3306=FTP(データ)/FTP(制御)/SSH/SMTP/DNS/HTTP/POP3/IMAP/HTTPS/WinHole/MySQL)などが開いています。つまり、無防備状態ではありません(但し、OSの種類やテンプレートのバージョンによって異なる可能性があります)。
VLAN構成
[Network→IP Magement→VLANs]を選択するとVLAN一覧が確認できます。
Public VLANとPrivated VLANで、それぞれサブネットと結ばれています。
サブネット構成
[Network→IP Magement→Subnets]を選択してください。VLANと関連付けられているサブネットが確認できます。サブネットは、PublicとPrivateにわかれています。
標準のサブネットは、次のように構成されています。
Public IP アドレス | 50.xxx.xxx.96/29 | 8 個 |
Private IP アドレス | 10.xxx.xxx.126/26 | 64 個 |
Public IPアドレスの詳細
Subnets画面でPublic IPアドレスをクリックするとIP一覧が確認できます。
Public Subnetには、トータルで64個のIPアドレスが与えられています。3つのIPアドレスはシステムが使っており、1つは仮想サーバに与えられていることがわかります。そして空いている4つのIPアドレス(Primary ip for future server only)は、同データセンター内で、次のインスタンスが立ち上がるときに使われます。
Private IPアドレスの詳細
Subnets画面でPrivate IPをクリックするとIPアドレスの一覧が確認できます。
Private Subnetには、トータルで64個のIPアドレスが与えられています。2つのIPアドレスはシステムが使っており、1つは仮想サーバに与えられていることがわかります。空いているIPアドレス(Primary ip for future server only)は、同データセンター内で、次のインスタンスが立ち上がるときに使われます。
サーバへのIPアドレス付与
SoftLayerは、ある種の内部ポリシー下でプロビジョニングされたサブネットからIPアドレスを割り当てています。次のような状況では、既定のサブネットからIPアドレスを割り当てているようです。
- 同アカウント配下のユーザ
- 同データセンター
- 同じサーバタイプ
専用サーバ、ベアメタルサーバ、プライベートクラウドインスタンス、パブリッククラウドインスタンスは、それぞれ独自のサブネットが与えられ、IPアドレスの範囲も異なります。
例えば、複数のパブリッククラウドインスタンスを起動してみると、それぞれのPublic/Private IPアドレスは、サブネットのIPアドレスの範囲から順番で使っていくことが観察できます。
では、もし上記の条件を満たして上でサーバを5台起動したらどうなるのでしょうか。答えは簡単です。既存のPublic Subnetの中にIPアドレスが1個追加されます。
サーバを起動した直後のPublic IPアドレスの余分は、3つしかなかったはずです。
ネットワーク構成の例示
SoftLayerでは、現実の世界のミニチュアのように、現実世界に実在するハードウェアやソフトウェアをそのままSoftLayerの中で構築していくことができます。なお、何かつまづいたら、英語でのLive Chatやe-メール、チケット発行など、リアルタイムのサポートを受けながら進めることができます。
ベーシック構成
サーバの起動直後にソフトウェアファイアウォールで最低限のセキュリティを確保している構成です。なお、管理者はSSL VPNでサーバに接続しています。
ハードウェアファイアフォールの導入
こちらのハードウェアファイアフォールでセキュリティにより強化した構成の例です。
ハードウェアファイアフォール+ロードバランサーの導入
必要に応じてロードバランサーを追加できます。
マルチデータセンターへの分散システム構成
複数のデータセンターにまたがる分散システム構成も可能です。SoftLayerのデータセンター間は専用線で結ばれており、無料でPrivate WANが構成できます。
SoftLayerのSoftware Firewall
APF(Advanced Policy Firewall)とは
APFは、Linux標準のiptablesのセキュリティポリシーを管理するツールです。APF自体がファイアウォールの機能を持っているわけではでありませんが、Linux標準のipatableは多機能で難解という弱点を補うために採用されています。ただしAPFはセキュリティ機能の管理に特化しており、ネットワーク機能の設定までは実装していません。
次はiptablesの設定ですが、理解できるようになるまでかなりの学習コストがかかります。
# iptables –list …中略… ACCEPT all -- 123.123.123.0/23 anywhere ACCEPT all -- anywhere 123.123.123.0/23 ACCEPT all -- 123.123.123.0-static.reverse.softlayer.com/23 anywhere ACCEPT all -- anywhere 123.123.123.0-static.reverse.softlayer.com/23 ACCEPT all -- 123.123.123.0-static.reverse.softlayer.com/23 anywhere ACCEPT all -- anywhere 123.123.0-static.reverse.softlayer.com/23 ACCEPT all -- 123.123.123.0-static.reverse.softlayer.com/23 anywhere ACCEPT all -- anywhere 123.123. 123.0-static.reverse.softlayer.com/23 ACCEPT all -- localhost.localdomain anywhere ACCEPT all -- anywhere localhost.localdomain ACCEPT all -- 123.123.123.123.static.zoot.jp anywhere ACCEPT all -- anywhere 123.123.123.123.static.zoot.jp …中略…
それに対してAPFは、シンプルなコマンドの使用やポリシーファイルにパラメータを設定するだけで、サーバへのIPアドレスやポートのブロックを簡単に実現できます。
APFの起動
インスタンス起動時にAPFのオプションを選択しているのであれば、APFは構成済みの状態です。次のように起動してください。
# /etc/init.d/apf start
apfコマンドで状態を確認してください。
# apf --status APF Status Log: Apr 08 05:25:01 server2-a apf(6596): {glob} firewall offline Apr 08 05:25:01 server2-a apf(6596): {glob} flushing & zeroing chain policies Apr 08 05:20:01 server2-a apf(6139): {trust} allow all to/from xxx.xxx.xxx.161 Apr 08 05:20:01 server2-a apf(6139): {trust} allow all to/from 127.0.0.1 Apr 08 05:20:01 server2-a apf(6139): {trust} allow all to/from xxx.xxx.xxx.0/23 Apr 08 05:20:01 server2-a apf(6139): {trust} allow all to/from xxx.xxx.xxx.0/23 Apr 08 05:20:01 server2-a apf(6223): {glob} firewall offline …中略…
IPアドレスの許可およびブロック
特定IPアドレスのみの許可は、次のように行います。
# /usr/local/sbin/apf -a 123.123.123.161 apf(13104): (trust) added allow all to/from 123.123.123.161
特定IPアドレスのみのブロックは、次のように行います。
# /usr/local/sbin/apf -d 123.123.123.161 apf(13104): (trust) added allow all to/from 123.123.123.161
それぞれの設定の解除は、次のように行います。
# /usr/local/sbin/apf -u 123.123.123.161 apf(13309): {trust} removed 219.117.239.161 from trust system
apfコマンドの詳細は、次のように確認してください。
# apf APF version 9.7 <apf@r-fx.org> Copyright (C) 2002-2011, R-fx Networks <proj@r-fx.org> Copyright (C) 2011, Ryan MacDonald <ryan@r-fx.org> This program may be freely redistributed under the terms of the GNU GPL usage /usr/local/sbin/apf [OPTION] -s|--start ......................... load all firewall rules -r|--restart ....................... stop (flush) & reload firewall rules -f|--stop........................... stop (flush) all firewall rules -l|--list .......................... list all firewall rules -t|--status ........................ output firewall status log -e|--refresh ....................... refresh & resolve dns names in trust rules -a HOST CMT|--allow HOST COMMENT ... add host (IP/FQDN) to allow_hosts.rules and immediately load new rule into firewall -d HOST CMT|--deny HOST COMMENT .... add host (IP/FQDN) to deny_hosts.rules and immediately load new rule into firewall -u|--remove HOST ................... remove host from [glob]*_hosts.rules and immediately remove rule from firewall -o|--ovars ......................... output all configuration options
APFのポリシー設定
APFの設定ファイルは/etc/apf/conf.apfです。 次はデフォルトのインバウンドポートの設定です。
IG_TCP_CPORTS="20,21,22,25,53,80,110,143,443,808,3306"
これは、「FTP(データ)/FTP(制御)/SSH/SMTP/DNS/HTTP/POP3/IMAP/HTTPS/WinHole/MySQL」です。
ここでまず、80番ポートが開いている状態でApacheに接続してみましょう。Public IPでブラウザに接続します。
http://123.123.123.123
次のようにApacheのデフォルトのページが表示されるはずです。
ここで、次のようにインバウンドのポートから80番を外して見ましょう。
IG_TCP_CPORTS="20,21,22,25,53,110,143,443,808,3306"
APFの再起動してください。
# /etc/init.d/apf restart
再び、ブラウザからApacheに接続してみましょう。
http://123.123.123.123
しばらく後、次のように応答がない旨のメッセージが表示されるはずです。
しかし、実際にApache HTTP Serverのサービスを止めた訳ではありません。APFが80ポートをブロックしているだけです。
APFは、ほとんどデフォルトの設定で使えます。ここでは、ポート制限についてのみ簡単に紹介しておきます。
項目 | 説明 |
---|---|
IG_TCP_CPORTS | TCPのインバウント設定 |
IG_UDP_CPORTS | UDPのインバウンド設定 |
EG_TCP_CPORTS | TCPのアウトバウンド設定 |
EG_UDP_CPORTS | UDPのアウトバウンド設定 |
APFの設定などに関する詳細な情報は、SoftLayerのサイトを参照してください。
全般的な概要紹介とともにWhite Paperを提供します。
- How-to setup an APF Firewallもし、APFのオプション選択をしていなかった方は、上記のサイトを参照してインストールしてください。
APFのパラメータに関する詳しい説明があります。
APFのブート時の起動設定
サーバのブート時にAPFを自動起動するためには、次のように設定して下さい。
# chkconfig apf on
まとめ
今回はSoftLayerの基本的なネットワーク構成とセキュリティに関してほんの少し触れましたが、さらに疑問が増えているかもしれません。
本格的にハードウェアファイアウォールやロードバランサー、VLAN間通信、Private WANの構成などは、後の別の記事で紹介させて頂きます。