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-clientssh サービスのみが許可されており、それ以外はブロックします。許可したいポートを --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

なお、VPS選びで迷ったらこちらの記事で主要VPSのメモリ容量ごとの月額、年額料金を比較していますので、是非参考にしてみてください。

ファイヤーウォールに戻る

このページのトップに戻る