設定 - ファイヤーウォール

2022年1月11日 (火) 12:27時点におけるWiki (トーク | 投稿記録)による版 (→‎ゾーンの種類)

概要

優れたファイアウォールシステムが、ネットワークセキュリティシステムへの不正アクセスを防ぐことができる。

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=4000-4029/tcp  # TCPポート4000から4029番を開放


以下の例では、SSHのポート開放および閉じている。

sudo firewall-cmd --permanent --zone=public --add-service=ssh     # SSHを永続的に開放
sudo firewall-cmd --permanent --zone=public --add-port=22/tcp   # TCPポート22番を永続的に開放
sudo firewall-cmd --permanent --zone=public --remove-service=ssh  # SSHを永続的に閉じる
sudo firewall-cmd --permanent --zone=public --remove-port=22/tcp  # TCPポート22番を永続的に閉じる



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
    全てのパケットが許可される。