CentOS の firewalld にて特定の送信先のみにアウトバウンド通信を制限してみた

インターネットにアクセスする際に特定のプロキシサーバ経由でないとアクセスできないことを想定し、CentOS の firewalld にてアウトバウンド宛の通信を特定のアドレス(Proxyサーバ)のみに制限してみました。

なお、アウトバウンドの通信を制限するには、ダイレクトルールというものを利用しなければならないようです。

1.特定のIPアドレス宛のアウトバウンド通信を許可する

10.XX.XX.XX宛の通信を優先度1で許可します。この時、制御するNICのインターフェイスを “-o”オプションで指定しています。

$ sudo firewall-cmd --permanent --direct  --add-rule
ipv4 filter OUTPUT 1 -d 10.XX.XX.XX/32 -o enp0s5 -j ACCEPT

ちなみにACCEPTはすべて大文字にする必要がありそうです。
小文字にしていると、リロードするときにエラーが発生します。

2.それ以外の宛先のアウトバウンド通信をブロックする

それ以外の通信をどう表現するのか少し悩みましたが、”0.0.0.0/0″で良さそうでしたので、優先度2として下記のとおり設定しています。

$ sudo firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 2 -d 0.0.0.0/0 -o enp0s5 -j DROP

3.設定を確認する

1.2.の設定は “/etc/firewalld/direct.xml”に書かれるので確認してみます。

$ sudo  vi /etc/firewalld/direct.xml

ちなみに直接このファイルを編集してみましたが、うまくいかなかったことがあるので、1.2.のようにコマンドで設定するのがようさそうです。

4.設定を有効化(リロード)する

3.で確認した設定を”–reload”オプションで有効化します。

$ sudo firewall-cmd --reload
success

5.有効化された設定を確認する

“–get-all-rules”で有効化されているルールを確認することが可能です。

$ sudo firewall-cmd --direct --get-all-rules
ipv4 filter OUTPUT 1 -d 10.XX.XX.XX/32 -o enp0s5 -j ACCEPT
ipv4 filter OUTPUT 2 -d 0.0.0.0/0 -o enp0s5 -j DROP

Mac OS からParallels上のゲストOS(CentOS 8)にアクセスしてみた

前回、Parallels上のゲストOSからMacOS上のWebサーバにアクセスできることを確認しました。

http://k2-ornata.com/mac_parallels_guest-os_to_mac-os_access/

そこで今回は、その逆、Mac OSからゲストOSにアクセスできるか確認してみました。

結論としては無事に接続できましたが、CentOS ではデフォルトで firewalld というホスト型のファイアウォールソフトがインストールされているらしく、そのソフトに穴を開けてあげる必要がありました。

1.ゲストOSのIPアドレスを確認

まずはゲストOS上で自身のIPアドレスを確認します。

私の環境では、”enp0s5″というのがインターフェイス名になっているようで、IPアドレスは”10.211.XX.XX”となっておりました。

ゲストOSのIPアドレス

2.Mac OS 上からゲストOSにとりあえずアクセスしてみる

先ほどのIPアドレスにpingを打ってみます。

すると以下のように問題なく応答が返ってきました。

ゲストOSにpingを打った結果(OK)

そこで今度はゲストOS上のWebサーバにアクセスしてみます。

するとなぜか、接続に失敗してしまいます。

ゲストOS上のWebサーバにアクセスした結果(NG)

3.ゲストOSのfirewalld設定を確認&変更

上記の現象が発生したので、ああダメなのかとすこし諦めかけていたのですが、CentOS(Linux)なのでHost型のファイアウォールが動作しているのではないかと思い立ち、調べてみました。

その結果、CentOS ではデフォルトでfirewalldというものが動作していることが分かってきました。

そこで以下のコマンドを実行し、現在のfirewalldの設定を確認してみました。

$ firewall-cmd --list-all

すると、実行結果の”services”や”ports”の部分を見ていただくと分かる通りhttpに関するサービスが許可されていないことが分かります。

firewall-cmd 実行結果

そこで以下のコマンドにより8443/tcpのポートに穴を開け、その結果を確認しました。

$ firewall-cmd --add-port=8443/tcp --zone=public

これにより、”ports”の部分に”8443/tcp”が追加されています。

firewall-cmd 実行結果

4.再度、ゲストOS上のWebサーバにアクセス

その後、再度、ゲストOS上のWebサーバにアクセスすると、無事接続することができました。

ゲストOS上のWebサーバに無事アクセス

これでMac OS上のアプリからゲストOS上のアプリを操作できるようになったので、いろいろ試して見たいとおもっております。