CentOS★firewalldの設定

セキュリティ対策の基本、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 | 可能 |
internal | FW内部ネットワーク用。自分のコンピューターを保護するため、ネットワーク上の他のコンピューターを信頼します。選択された着信接続のみ許可。 | 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 | デフォルトゾーンの表示 |
共通のコマンドオプション
コマンドオプション | 内容 |
---|---|
--reload | firewalldのリロード |
--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が無事追加されました。それではブラウザでもう一度確認してみましょう。正しく表示されれば成功です。