fbpx

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アドレスが与えらています。

Basic-network

次のように確認してください。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一覧が確認できます。

Network-vlans

Public VLANとPrivated VLANで、それぞれサブネットと結ばれています。

サブネット構成

[Network→IP Magement→Subnets]を選択してください。VLANと関連付けられているサブネットが確認できます。サブネットは、PublicとPrivateにわかれています。

Network-subnets

標準のサブネットは、次のように構成されています。

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)は、同データセンター内で、次のインスタンスが立ち上がるときに使われます。

Public-ips

Private IPアドレスの詳細

Subnets画面でPrivate IPをクリックするとIPアドレスの一覧が確認できます。

Private Subnetには、トータルで64個のIPアドレスが与えられています。2つのIPアドレスはシステムが使っており、1つは仮想サーバに与えられていることがわかります。空いているIPアドレス(Primary ip for future server only)は、同データセンター内で、次のインスタンスが立ち上がるときに使われます。

Private-ips

サーバへのIPアドレス付与

SoftLayerは、ある種の内部ポリシー下でプロビジョニングされたサブネットからIPアドレスを割り当てています。次のような状況では、既定のサブネットからIPアドレスを割り当てているようです。

  • 同アカウント配下のユーザ
  • 同データセンター
  • 同じサーバタイプ

専用サーバ、ベアメタルサーバ、プライベートクラウドインスタンス、パブリッククラウドインスタンスは、それぞれ独自のサブネットが与えられ、IPアドレスの範囲も異なります。

例えば、複数のパブリッククラウドインスタンスを起動してみると、それぞれのPublic/Private IPアドレスは、サブネットのIPアドレスの範囲から順番で使っていくことが観察できます。

では、もし上記の条件を満たして上でサーバを5台起動したらどうなるのでしょうか。答えは簡単です。既存のPublic Subnetの中にIPアドレスが1個追加されます。

サーバを起動した直後のPublic IPアドレスの余分は、3つしかなかったはずです。

ネットワーク構成の例示

SoftLayerでは、現実の世界のミニチュアのように、現実世界に実在するハードウェアやソフトウェアをそのままSoftLayerの中で構築していくことができます。なお、何かつまづいたら、英語でのLive Chatやe-メール、チケット発行など、リアルタイムのサポートを受けながら進めることができます。

ベーシック構成

サーバの起動直後にソフトウェアファイアウォールで最低限のセキュリティを確保している構成です。なお、管理者はSSL VPNでサーバに接続しています。

Extent-network-1

ハードウェアファイアフォールの導入

こちらのハードウェアファイアフォールでセキュリティにより強化した構成の例です。

Extent-network-2

ハードウェアファイアフォール+ロードバランサーの導入

必要に応じてロードバランサーを追加できます。

Extent-network-3

マルチデータセンターへの分散システム構成

複数のデータセンターにまたがる分散システム構成も可能です。SoftLayerのデータセンター間は専用線で結ばれており、無料でPrivate WANが構成できます。

Extent-network-4

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のデフォルトのページが表示されるはずです。

Apache-1

ここで、次のようにインバウンドのポートから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-2-a

しかし、実際に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の構成などは、後の別の記事で紹介させて頂きます。

関連記事

Author

モダンアーキテクチャー基盤のソリューションアーキテクトとして活動しています。

[著書]
・Amazon Cloudテクニカルガイド―EC2/S3からVPCまで徹底解析
・Amazon Elastic MapReduceテクニカルガイド ―クラウド型Hadoopで実現する大規模分散処理
・Cypherクエリー言語の事例で学ぶグラフデータベースNeo4j
・Neo4jを使うグラフ型データベース入門(共著)
・RDB技術者のためのNoSQLガイド(共著)

leeの記事一覧

新規CTA