CentOS★firewalldの設定

2020年12月15日

セキュリティ対策の基本、FireWallを設定してみましょう。CentOSではfirewalldというサービス名です。

firewalldの予備知識

CentOS6まではiptablesが使われていましたが、CentOS7からはfirewalldが採用されました。iptablesでは複雑だった設定がfirewalldでは少し簡素化されたので私のような素人でも扱いやすくなりました。

それではfirewalldを使用するにあたり必要な知識を確認していきましょう。

ゾーンとは

firewalldは予めいくつかのカテゴリーに分けた設定がデフォルトで存在します。それがゾーンと呼ばれる物で以下の9種類があります。

zone名役割デフォルト許可サービスzoneの可変
block外部からのネットワーク接続が拒否。IPv4ではicmp-host-prohibited、IPv6ではicmp6-adm-prohibitedを返す。内部からのネットワーク(外部への通信)のみ接続可。なし固定
dmz内部ネットワークへのアクセスに制限があるエリア。特定の着信接続のみ接続可。ssh可能
drop着信パケットを全て遮断、返信も無し。発信接続のみ接続可。なし固定
externalマスカレードにより外部ネットワークとの接続を行う。 選択された接続のみ許可。ssh可能
home家庭での利用を想定。ネットワーク上の他のコンピューターを信頼。選択された接続のみ許可。dhcpv6-client mdns samba-client ssh可能
internalFW内部ネットワーク用。自分のコンピューターを保護するため、ネットワーク上の他のコンピューターを信頼します。選択された着信接続のみ許可。dhcpv6-client mdns samba-client ssh可能
publicデフォルトのエリア。サーバーを公開する為のゾーン。選択した着信接続のみが許可される。dhcpv6-client ssh可能
trusted全てのネットワークの接続を許可なし固定
work業務エリア用。 ネットワーク内のほとんどのコンピューターを信頼し、選択された着信接続のみ許可。dhcpv6-client ssh可能
用語解説

DMZ(DeMilitarized Zone)

社内のサーバをインターネットからアクセスさせたいけど、社内の他のサーバとは分離したいときに使う NW 構成

【図解】初心者にも分かるDMZの目的と仕組み

firewalldの設定

それではfirewalldを設定していきます。まずはfirewalldを起動して自動起動の設定をしましょう。firewalldの起動コマンドは次の通りです。

systemctl start firewalld

つづいて自動起動の設定を行います。コマンドは次の通りです。

systemctl enable firewalld

これでfirewalldは起動しました。

firewalldの設定の為のコマンド

firewalldを設定する為のコマンドを見ていきましょう。

コマンド解説

firewall-cmd

--get-services以外のコマンドに対して"--zone=zone名“の指定を省略すると全てpublicゾーンと見なされます。

サービス関連のコマンドオプション

コマンドオプション内容
--get-servicesサービス一覧の表示
--list-services許可されているサービスの表示
--add-service=サービス名サービスの追加
--remove-service=サービス名サービスの削除

ゾーン関連のコマンドオプション

コマンドオプション内容
--get-zonesゾーン一覧の表示
--list-all-zonesゾーン一覧を詳細に表示
--list-all指定したゾーンを詳細に表示
--get-active-zonesアクティブゾーンの表示
--get-default-zoneデフォルトゾーンの表示

共通のコマンドオプション

コマンドオプション内容
--reloadfirewalldのリロード
--zone=zone名zoneの指定
--permanent永続的な設定

httpd(apache)のFireWallを設定

実際にhttpd(apache)にFireWallを設定してみましょう。

まずはブラウザにアドレスを入力して何も開かないことを確認してください。firewalldが正しく機能している証拠です。

httpdにFireWallを設定して正しく表示させる為には、publicゾーンにhttpのサービスを追加する必要があります。その為のコマンドは次の通りです。

firewall-cmd --add-service=http --zone=public --permanent

“success"が表示されれば成功です。

firewalldの再起動いるっぽいのでしときます。

systemctl restart firewalld

次のコマンドでhttpが追加されたことを確認してみましょう。

firewall-cmd --list-services --zone=public

次のように表示されているはずです。

dhcpv6-client http ssh

httpが無事追加されました。それではブラウザでもう一度確認してみましょう。正しく表示されれば成功です。

CentOSCentOS,firewalld,FW

Posted by Bright_Noah