Firewalldのインストールと設定
カテゴリ:ファイヤーウォール
CentOS 7 以降ではファイヤーウォール機能はfirewalldがデフォルトとなっています。
Firewalldのインストール
Firewalldをインストールします。
CentOS 7 の場合:
# yum -y install firewalld
CentOS 8 以降の場合:
# dnf -y install firewalld
Firewalldの自動起動と起動
以下のコマンドでFirewalldの自動起動の有効化と起動を行います。
# systemctl enable firewalld # systemctl start firewalld
ファイヤーウォールの設定を書き換える
一般的にファイヤーウォールはホワイトリスト方式で設定するのがセオリーです。
そのため、iptablesではINPUTとFORWARDのデフォルトアクションはDROPにし、以下のように特定のポート、状態のみを受け付けるように設定します。
tcp dpt:20(ftp data) tcp dpt:21(ftp) tcp dpt:22(ssh) tcp dpt:25(smtp) tcp dpt:80(http) tcp dpt:110(pop3) tcp dpt:443(https) tcp dpt:465(urd) tcp dpt:587(submission) tcp dpt:993(imaps) tcp dpt:995(pop3s) tcp dpt:10000(webmin) tcp dpts:60000:60030(ftp passive mode) state RELATED,ESTABLISHED
現在の設定のバックアップ
念のため現在の設定をバックアップしておきます。
※デフォルト設定の場合はバックアップは不要です。
ファイヤーウォールを停止します。
# systemctl stop firewalld
設定ファイルをバックアップします。
# cp -R /etc/firewalld/zones/ ~/
ファイヤーウォールを開始します。
# systemctl start firewalld
ファイヤーウォール設定の追加
以下のコマンドを実行して、ファイヤーウォールの設定を書き換えます。
firewall-cmd --add-port=20/tcp --zone=public --permanent firewall-cmd --add-port=21/tcp --zone=public --permanent firewall-cmd --add-port=22/tcp --zone=public --permanent firewall-cmd --add-port=25/tcp --zone=public --permanent firewall-cmd --add-port=80/tcp --zone=public --permanent firewall-cmd --add-port=110/tcp --zone=public --permanent firewall-cmd --add-port=443/tcp --zone=public --permanent firewall-cmd --add-port=465/tcp --zone=public --permanent firewall-cmd --add-port=587/tcp --zone=public --permanent firewall-cmd --add-port=993/tcp --zone=public --permanent firewall-cmd --add-port=995/tcp --zone=public --permanent firewall-cmd --add-port=10000/tcp --zone=public --permanent firewall-cmd --add-port=60000-60030/tcp --zone=public --permanent
Note
firewalld ではネットワークインターフェースにゾーンを割り当て、そのゾーン単位で設定を行います。public ゾーン(デフォルト)は公共の場所(パブリックエリア)での使用に適しています。
public ゾーンは初期設定では着信は dhcpv6-client と ssh サービスのみが許可されており、それ以外はブロックします。許可したいポートを --add-port オプション、対象のゾーンを --zone オプションで指定して追加します。また、--permanent オプションを付与すると設定が恒久的に保持されます。
設定の再読込を行います。
# firewall-cmd --reload
結果:
# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens33 sources: services: ssh dhcpv6-client ports: 20/tcp 21/tcp 22/tcp 25/tcp 80/tcp 110/tcp 443/tcp 465/tcp 587/tcp 993/tcp 995/tcp 10000/tcp 60000-60030/tcp protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
設定のバックアップとリストア
firewalld のデフォルト設定は /usr/lib/firewalld/zones 内に配置されています。
# ls -la /usr/lib/firewalld/zones 合計 36 drwxr-xr-x. 2 root root 163 1月 1 2019 . drwxr-xr-x. 8 root root 98 1月 1 2019 .. -rw-r--r--. 1 root root 299 10月 31 2018 block.xml -rw-r--r--. 1 root root 293 10月 31 2018 dmz.xml -rw-r--r--. 1 root root 291 10月 31 2018 drop.xml -rw-r--r--. 1 root root 304 10月 31 2018 external.xml -rw-r--r--. 1 root root 369 10月 31 2018 home.xml -rw-r--r--. 1 root root 384 10月 31 2018 internal.xml -rw-r--r--. 1 root root 315 10月 31 2018 public.xml -rw-r--r--. 1 root root 162 10月 31 2018 trusted.xml -rw-r--r--. 1 root root 311 10月 31 2018 work.xml
そして、--permanent オプションを付与して設定した内容は、/etc/firewalld/zones/ 配下に保存されます。例えば public ゾーンの場合は、public.xml というファイル名で保存されます。
/etc/firewalld/zones/public.xml
Note
/etc/firewalld/zones/ 内の設定はデフォルト設定よりも優先されます。
バックアップ
/etc/firewalld/zones/ ディレクトリをコピーします。
# cp -R /etc/firewalld/zones/ ~/
リストア
バックアップした zones ディレクトリ内のファイルを /etc/firewalld/zones/ 内にコピーし、firewalld をリロードします。
# \cp -f ~/zones/* /etc/firewalld/zones/ # firewall-cmd --reload
firewalldの設定を初期化する
/etc/firewalld/zones/ 配下の設定を削除して、firewalld をリロードします。
※この場合デフォルト設定のみが読み込まれます。
# rm -fr /etc/firewalld/zones/* # firewall-cmd --reload
公開日時:2014年07月21日 11:14:49
最終更新日時:2021年08月22日 18:26:35