設定 - ファイヤーウォール
概要
優れたファイアウォールシステムが、ネットワークセキュリティシステムへの不正アクセスを防ぐことができる。
firewalldは、Netfilterと呼ばれる非常に強力なフィルタリングシステムが搭載されており、カーネルモジュールに組み込まれて、システムに渡る全てのパケットをチェックする。
これは、受信、送信、転送等のあらゆるネットワークパケットを、宛先に到達する前にプログラムで検査、変更、拒否、削除できることを意味する。
例えば、CentOS6ではiptablesだったが、CentOS7以降では、firewalldは、ホストベースのファイアウォールサービスを管理するための標準のツールになっている。
firewalldとiptablesは共存できないため、どちらかを選択することに注意する。
firewalldの設定の確認
firewalldの自動起動に設定されているかどうかを確認する。
sudo systemctl is-enabled firewalld
firewalldのステータスを確認する。
sudo systemctl status firewall
firewalldを開始する
firewalldを開始する。
sudo systemctl start firewalld
firewalldを再起動する。
sudo systemctl restart firewalld
firewalldを停止する
一時的にfirewalldを停止する。(firewalldがsystemdで管理されている場合)
sudo systemctl stop firewalld
firewalldの自動起動を有効にする
firewalldを自動起動する。
sudo systemctl enable firewall
firewalldの自動起動を無効にする
firewalldの自動起動を停止する。
sudo systemctl disable firewalld
自動起動が停止されているかどうかを確認する。
sudo systemctl is-enabled firewall
firewall-cmdコマンドのオプション
--permanentオプション
設定変更を永続化して、再起動後も維持させる。
このオプションを付加しない場合、変更は一時的で再起動すると失われる。
永続設定と実行中の設定は別々に管理される。
--zoneオプション
ファイアウォールゾーンを指定する。
代表的なゾーンを以下に示す。
- public
- 外部からの接続を制限する。(デフォルト)
- trusted
- 全ての接続を許可する。
- home
- 内部ネットワーク向け。
- dmz
- 一部のサービスのみ公開する。
特に、--permanentオプションと--zoneオプションの2つのオプションは組み合わせて使用することが多い。
--stateオプション
ファイアウォールの稼働状態を確認する。
running または not running という形式で状態が表示される。
これは、サービスの正常性確認やトラブルシューティング時に使用する。
--runtime-to-permanentオプション
現在実行中の一時的な設定を永続設定に変換する。
例えば、--permanentオプションを付加せずにポート開放した後に、その設定を永続化する場合に使用する。
これにより、再起動後も設定が維持される。
一般的に、--permanentオプションを付加して直接永続設定を行うが、一時設定を試した後に永続化する場合等に使用する。
ファイアーウォールのポート開放
sudo firewall-cmd --permanent --zone=public --add-service=ftp # FTPを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=http # HTTPを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=https # HTTPSを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=smtp # SMTPを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=pop3 # POP3を永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=imap # IMAPを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=smtps # SMTPsを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=pop3s # POP3sを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-service=imaps # IMAPsを永続的に開放 sudo firewall-cmd --permanent --zone=public --add-port=49152/tcp # TCPポート49152番を開放 sudo firewall-cmd --permanent --zone=public --add-port=4000-4029/tcp # TCPポート4000から4029番を開放
以下に示すように、複数のポートを同時に開放、あるいは、閉じることもできる。
# httpとhttpsを同時に開放 (80/tcp および 443/tcp) sudo firewall-cmd --permanent --zone=public --add-service={http,https} # 任意の複数ポートを同時に開放 sudo firewall-cmd --permanent --zone=public --add-port={139/tcp,445/tcp,137/udp,138/udp}
ファイアーウォールのポート遮断
sudo firewall-cmd --permanent --zone=public --remove-service=ssh # SSHを永続的に遮断 sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp # TCPポート22番を永続的に遮断 sudo firewall-cmd --permanent --zone=public --remove-port=4000-4029/tcp # TCPポート4000から4029番を永続的に遮断
firewalldの設定を反映する
Firewalldの設定を反映するには、以下のコマンドを実行する、または、OSを再起動する。
sudo firewall-cmd --reload
firewalldの設定の確認
firewalldの設定を全て確認する。
sudo firewall-cmd --list-all
特定のゾーンに記載されているルールを確認する。
sudo firewall-cmd --list-all --zone="<ゾーン名>" 例. sudo firewall-cmd --list-all --zone="public" # 初期状態ではdhcpv6-clientおよびsshがファイアウォールサービスを通して許可されている
利用可能な全てのゾーンを確認する。
sudo firewall-cmd --get-zones # 利用可能な各ゾーン名の一覧のみを表示 # または sudo firewall-cmd --list-all-zones # 利用可能な各ゾーンの詳細な設定も個別に表示
デフォルトのゾーンを特定のゾーンに変更する。
# まず、特定ゾーンに変更する前に、現在のデフォルトのゾーンを確認する sudo firewall-cmd --get-default-zone # デフォルトのゾーンの変更 sudo firewall-cmd --set-default-zone=<ゾーン名> # デフォルトのゾーンが変更されているかどうかを確認する sudo firewall-cmd --get-default-zone
特定のネットワークインターフェースを別のゾーンに変更する。
例えば、システムに2つのネットワークインターフェイスがある場合(例. enp1s0とenp1s1)、デフォルトでは全てのネットワークインターフェイスはデフォルトゾーンに割り当てられている。
sudo firewall-cmd --zone=<ゾーン名> --change-interface=<ネットワークインターフェイス名> # ゾーンを確認する sudo firewall-cmd --get-active-zones
ゾーンの種類
firewalldでは、ゾーンという概念がある。(カテゴリとテンプレートのようなもの)
ゾーンをNICごとに適応して運用することになる。
初期状態では、9種類のゾーンが存在する。
- drop
- 全てのパケットを破棄する。
- 内部から外部へのパケットは許可されるが、返信されてきたパケットも破棄してしまうので実質的に通信不可となる。
- block
- 外部からのパケットは基本的に破棄される。
- 内部からの通信パケットの返信は許可されるようになっている。
- public
- 初期状態では、sshとdhcpv6-clientのみ許可されている。
- external
- 初期状態では、sshのみ許可される。
- ipマスカレードが有効になる。
- dmz
- 初期状態では、sshのみ許可されている。
- work
- 初期状態では、dhcpv6-client、ipp-client、sshが許可される。
- home
- 初期状態では、dhcpv6-client、ipp-client、mdns、samba-client、sshが許可される。
- internal
- 初期状態では、dhcpv6-client、ipp-client、mdns、samba-client、sshが許可される。
- trusted
- 全てのパケットが許可される。