ファイアウォールは外部からの攻撃や不正なアクセスを防ぐためのセキュリティ機能。
ファイアウォールの主要機能のパケットフィルタリングでは、パケットの送信元アドレス、宛先アドレス、ポート番号をチェックし、ルールに従ってパケットの通過を許可、破棄。アクセスリストと同様の働きをする。
●iptables
Linuxカーネルにはnetfilterというパケット処理機能が組み込まれている。
iptables(IPv6環境ではip6tables)は、netfilterを利用してパケットフィルタリングやNAT(ネットワークアドレス変換)の設定を行う機能およびコマンド。CentOS6までのデフォルトのファイアウォールの仕組み。
設定内容によって書式が異なるが、基本的なフィルタリングの書式:
iptables [-t テーブル] -[A|D] チェイン ルール
テーブル...iptablesで作成するルール群(チェイン)の使用目的を決定するもの。デフォルトはfilter(パケットフィルタリング用)
A|D...ルールの追加|削除
チェイン...パケットの処理方法を定義したルール群。また、どのタイミングでルールを適用するかを表す
※iptablesの設定はシステム再起動を行うと消えてしまう。再起動後も同じ設定にしたい場合は、設定をファイルへ保存し、再起動後には復元する必要がある。
●firewalld
CentOS7からは、iptablesの代わりにfirewalldがデフォルトのファイアウォール機能として実装。firewalldもnetfilterを利用しますが、iptablesより簡単に設定できる。
firewalldサービスはデフォルトでは有効だが、以下のコマンドでステータス確認、有効化、起動。
・firewalldのステータス確認
systemctl status firewalld
・firewalldの自動起動の有効化
systemctl enable firewalld
・firewalldの起動
systemctl start firewalld
●ゾーン
firewalldには「ゾーン」という概念があります。パケットフィルタリングのルールをゾーンごとに定義しておき各NICに割り当てる、テンプレートのようなもの。
firewalldでは同じ性質のインタフェースに同じルール定義のゾーンを割り当てることができる。
デフォルトでは9種類のゾーンがあり、それぞれの用途を想定したルールが設定されている。ゾーンは作成して追加することも可能。
public...公共領域での利用(デフォルト)
work...業務での利用
home...家庭での利用
internal...ファイアウォールの内部ネットワーク側での利用
external...ファイアウォールの外部ネットワーク側での利用
dmz...ファイアウォールのDMZ(外部から内部ネットワークを守る緩衝地帯)での利用
block...受信パケットを拒否。外部への通信と戻りパケットだけを許可
drop...受信パケットを廃棄。外部への通信と戻りパケットだけを許可
trusted...全ての通信を許可
●firewall-cmdコマンド
firewall-cmdコマンドを使用してfirewalldを設定。
基本的なコマンド
・firewalldサービスのステータス確認
firewall-cmd --state
・ゾーンの設定を確認
firewall-cmd [--zone=ゾーン] --list-all
「--zone=ゾーン」を指定しない場合は、デフォルトのゾーン(初期値はpublic)
デフォルトのゾーンは「--get-default-zone」オプションで確認。
firewall-cmd --get-default-zone
・ゾーンにサービスを追加
firewall-cmd [--zone=ゾーン] --add-service=サービス
・ゾーンからサービスを削除
firewall-cmd [--zone=ゾーン] --remove-service=サービス
設定は即時反映されるが、firewalldサービスやシステムを再起動すると消える。
恒久的に設定したい場合は「--permanent」オプションを指定して設定した後に、「firewall-cmd --reload」で再読み込みさせる必要がある。
firewall-cmd --reload