設定 - ファイヤーウォール
概要
優れたファイアウォールシステムが、ネットワークセキュリティシステムへの不正アクセスを防ぐことができる。
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
ファイアーウォールのポート開放
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 --add-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
- 全てのパケットが許可される。