2.2 OSファイアウォールの設定方法は？

（2016年時点での内容をアーカイブとして掲載しているため、一部の掲載内容が最新情報とは異なる場合がありますので、ご了承ください。最新のIBM Cloudのアップデート情報は[IBM Cloud アップデート情報](https://www.ibm.com/cloud-computing/jp/ja/cloud-update/) や [柔らか層本](https://ibm.ent.box.com/v/ibmcloud-yawaraka)をご参照ください。）

概要
ここでは、サーバーの注文時にOSファイアウォールを選択する方法と、WindowsとLinuxそれぞれのルール設定をご説明します。 OSファイアウォールは、個別のOS上で実行されるもので、設定方法を知っていれば、OS標準の機能でサーバーを保護することができます。
 

OSファイアウォールの種類
LinuxとWindowsで選択できるOSファイアウォールの特徴と設定方法をご説明します。

Linuxの場合

Linuxでは、APF (Advanced Policy Firewall)を利用できます。 APFは、OS標準のiptables(netfilter)をベースとしたファイアウォールシステムです。 iptablesの複雑なルールを自分で書くよりも、比較的簡単にルールを書けるという利点があります。

Windowsの場合

Windowsでは、OSに標準で搭載されているファイアウォールが利用できます。 アプリケーションごとにファイアウォールを設定する方法と、ポート番号を指定して設定する方法があります。
 

LinuxにOSファイアウォールを導入するには
Linuxの場合のOSファイアウォールの導入方法をご説明します。 Linuxの仮想サーバーや物理サーバーを注文する時のオーダー・フォームで、APFを選択して注文します。 この選択をするには、「System Addons」の「HARDWARE&SOFTWARE FIREWALLS」の一覧から、「APF Software Firewall for Linux」をクリックします。

このようにして作成されたサーバーは初期状態からAPFが起動しており、すぐに利用できます。 APFの動作を確認してみましょう。 コマンドラインから、apf --list を実行すると、次の画面のようにテキストエディターのnanoでAPFのルール一覧が表示されます。

以上で、LinuxにOSファイアウォールが導入できました。 次にルールの設定を見ていきます。

APFのルールの設定方法
ここでは、APFのルールの設定方法をご説明します。 導入後の設定はデフォルトの値が設定されているため 、サーバーの用途に合わせて変更する必要があります。 ここでは、インターネットからSSH(TCP/22)でログインできないようにします。 ルール設定は、すべてVPN経由でプライベート・ネットワークからログインした状態で行います。 ルール設定後はインターネットからサーバーにSSH(TCP/22)でログインができなくなるからです。 VPNの導入方法は、2.7 VPN接続でプライベートIPにアクセスするには？－パブリックIPからのログインを禁止するを参照してください。

次の画面は、OSファイアウォールを選択して作成したばかりのLinuxの脆弱性テストの結果です。 この結果の3行目にssh(22/tcp)が表示されており、インターネットからSSHでログインができる状態であることがわかります。

それでは、実際に、APFを使ってインターネットからログインできないように設定していきます。 これには、APFの設定ファイルの/etc/apf/conf.apfを編集します。 このファイルをrootユーザーで開いて、IG_TCP_CPORTSの22を削除して保存します。 これは、SSH(TCP/22）を通過するという設定のためです。 次の画面は、削除前の初期の状態です。

ここで変更した設定は、プライベート・ネットワークからの接続には影響を与えません。 初期状態では、プライベート・ネットワークからの接続は、信頼されているネットワークとして設定されているからです。 このルールは、/etc/apf/conf.apfのIFACE_TRUSTEDに、eth0が設定されています。 そのため、SSH(TCP/22)を閉塞する設定をしても、プライベート・ネットワーク側からの接続はできます。

変更後は設定を反映させるためAPFの再起動をする必要があります。 rootユーザーで、次のコマンドを実行します。

では、APFの設定が期待通りに働いているかどうか確認します。 次の画面の脆弱性テストの結果を見ると、閉塞前に表示されていたssh(22/tcp)がなく、インターネット側にログインするためのポートが開いていないことがわかります。

これで、Linuxへの接続は、プライベート・ネットワークからの接続に限定されて、インターネットからのログインはできないようになりました。

しかし、IG_TCP_CPORTSでは、それ以外のポートも開かれています。 必要に応じてさらに設定を追加して、脆弱性検査で確認しましょう。

APFの設定方法の詳細は、次のサイトを参照してください。
https://www.rfxn.com/projects/advanced-policy-firewall/

 

WindowsにOSファイアウォールを導入するには
ここでは、Windowsファイアウォールの導入方法をご説明します。 Windowsの仮想サーバーや物理サーバーを注文する時のオーダー・フォームで、Windowsファイアウォールを選択することができます。 オーダー・フォームの「System Addons」の「HARDWARE&SOFTWARE FIREWALLS」から、「Microsoft Windows Firewall」を選択します。 これによって、Windowsファイアウォールが有効化されたサーバーが作成されます。

次の画面は、サーバー作成後の、Windowsファイアウォールの画面です。 この画面は、コントロールパネルを開き、System and SecurityからWindows Firewallをクリックして表示します。 Windows Firewall StateがOnでファイアウォールが有効になっていることがわかります。

以上で、WindowsにOSファイアウォールが導入できました。 次にルールの設定を見ていきます。
 

Windowsファイアウォールの設定方法
WindowsのOSファイアウォールを設定する方法をご説明します。 Linuxと同じようにOSファイアウォールの導入後の設定はデフォルトの値が設定されている為、サーバーの用途に合わせて変更する必要があります。 ここでは、リモートデスクトップ(TCP/3389)のログインをプライベート・ネットワークからの接続に限定するルールを例にご説明します。 Linuxの設定と同じようにこちらもVPN経由でログインした状態で行います。

ルールを設定する前に、初期状態を確認してみます。 次の画面は、OSファイアウォールを選択して作成したばかりのWindowsの脆弱性テストの結果です。 この結果の5行目に表示されているms-wbt-server(3389/tcp)により、インターネットからも接続ができることが確認できます。

次に、リモートデスクトップ(TCP/3389)への接続をプライベート・ネットワークに限定する設定に進みます。 まず、コントロールパネルを開き、System and SecurityからWindows Firewallをクリックして、Windowsファイアウォールの画面を表示します。

次の詳細画面を表示するには、Windowsファイアウォール画面の左にあるAdvanced settingsをクリックします。 この画面の左のInbound Rulesをクリックすると、右側の一覧が表示されます。 この中からRemote Desktop - User Mode(TCP-in)をダブルクリックしてプロパティを開きます。

次の画面は、開いたプロパティのScopeタブをクリックしたものです。 この画面から、リモートデスクトップ(TCP/3389)に接続できるサブネットを設定していきます。 この画面の下のRemote IP addressのThese IP address:を選択しAddをクリックします。

クリックにより次の画面が開きます。 この画面のThis IP address or subnet:の入力欄に、サブネットの10.0.0.0/8を入力してOKをクリックして閉じます。 SoftLayerではユーザIDごとにアクセス制限がかかっているため、この設定で他のユーザがサーバーにアクセスすることはできません。

最後に、プロパティのApplyをクリックして、ファイアウォールの設定は完了です。

では、Windowsファイアウォールの設定が期待通りに働いているかどうか確認します。 次の画面は、ルール変更後の脆弱性テストの結果です。 初期状態で表示されていたms-wbt-server(3389/tcp)がなく、インターネットからログインできないことが確認できます。


これで、Windwosへの接続は、プライベート・ネットワークからの接続に限定されて、インターネットからのログインはできないようになりました。

脆弱性検査でリモートデスクトップ(TCP/3389)以外のポートは検出されませんでした。 しかし、Windowsファイアウォールの画面では、それ以外のポートが開いていることが確認できました。 これはサービスが止まっているためと考えられます。 必要に応じてさらにファイアウォールの設定を追加して、脆弱性検査で確認しましょう。