CentOS7 でファイアウォールを設定する (firewalld)
はじめに
CentOS7 のファイアウォールのフィルタを、firewalld で設定します。
注意事項
コマンドはすべて root 権限での操作です。
目次
環境
- VPS : さくらVPS 1G SSD
- OS : CentOS 7.3
firewalld とは
CentOS7 から、ファイアウォールの設定が iptables を使用したものから、firewalld を使用するものに変更されました。firewalld は、iptables のラッパーで、iptables のルールを簡単に管理できるようにしています。
iptables と firewalld の違い
iptables と firewalld との違いは、以下のようになっています。
- ゾーンとサービスによる設定
- 既存のセッションや接続を停止することなく更新できる
firewalld の起動
CentOS7 では、firewalld がデフォルトでインストールされているため、以下のコマンドで開始します。
1# systemctl start firewalld
サーバ起動時に、firewalld サービスが開始されるように設定します。
1# systemctl enable firewalld
firewalld の設定
firewalld の設定は、firewall-cmd コマンドで行い、設定を永続化するためには --permanent
オプションを付ける必要があります。コマンドには以下のようなものがあります。
再起動
firewalld を再起動します。
1# firewall-cmd --reload
ゾーンについてのコマンド
デフォルトのゾーンを確認します。
1# firewall-cmd --get-default-zone 2public
デフォルトのゾーンを変更します。
1# firewall-cmd --set-default-zone=internal 2success
使用しているネットワークインターフェースを確認します。
1# firewall-cmd --get-active-zones 2public 3 interfaces: eth0
指定したゾーンの設定を確認します。
1# firewall-cmd --zone=public --list-all 2public (active) 3 target: default 4 interfaces: eth0 5 sources: 6 services: dhcpv6-client http ssh 7 ports: 8 masquerade: no 9 foward-ports: 10 icmp-blocks: 11 rich rules:
サービスについてのコマンド
使用可能なサービスの一覧を確認します。
1# firewall-cmd --get-services 2RH-Satellite-6 amanda-client …
public ゾーンに、https のサービスを追加します。
1# firewall-cmd --zone=public --add-service=http --permanent
public ゾーンから、https のサービスを削除します。
1# firewall-cmd --zone=public --remove-service=http --permanent
ポート・プロトコルについてのコマンド
public ゾーンの TCP ポートの 12345 番を許可します。
1# firewall-cmd --zone=public --add-port=12345/tcp --permanent
public ゾーンの TCP ポートの 12345 番を拒否します。
1# firewall-cmd --zone=public --remove-port=12345/tcp --permanent
同一サーバ内で、80 番ポートから 12345 番ポートへ、ポートフォワーディングを行ないます。
1# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=12345
リッチルールについてのコマンド
IP アドレスが 192.168.0.1 の IPv4 トラフィックを許可します。
1# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" suorce address=192.168.0.1 accept'
IP アドレスが 192.168.0.2 で、ポートが 22 の IPv4 トラフィックを拒否します。
1# firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" suorce address=192.168.0.2 port port=22 protocol=tcp jeject'
iptables を直接設定するコマンド
カスタムチェインを確認します。
1# firewall-cmd --direct --get-all-chains
カスタムルールを確認します。
1# firewall-cmd --direct --get-all-rules