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

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

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

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