概要
CentOS6でiptablesに慣れていた方は、CentOS7のfirewall設定をする際、非常に取っつきにくてストレスが溜まるのではないでしょうか。
私もその一人で「またコマンド覚えなきゃいけのかいっ!面倒だなぁ」って嘆いていますが、結局のところ覚えなければいけませんのでがんばって覚えます。。
ということで、基本的なコマンド類を載せてみましたが、適宜追記していきたいと思っています。
基本コマンド
firewalldのパケットフィルタリング基本書式
※基本書式
# firewall-cmd [--permanent] [--zone=<zone>] [<options>..] [--timeout=<timevalue>]
ヘルプ(コマンドの使い方)
※ヘルプコマンド
# firewall-cmd --help
サービスの起動/停止/状態確認
※「.service」は省略してもOK!です。
firewalldサービスの起動や停止は、systemctlコマンドを使用します。
1.firewalldの起動
# systemctl start firewalld.service
2.firewalldの停止
# systemctl stop firewalld.service
3.firewalldの状態確認(※詳細版)
# systemctl status firewalld.service
firewalldの状態確認(※簡易版)
# firewall-cmd --state
サービスの自動起動(有効化/無効化/状態確認)
4.firewalldの自動起動を有効化
# systemctl enable firewalld.service
5.firewalldの自動起動を無効化
# systemctl disable firewalld.service
6.firewalld自動起動設定の状態確認
# systemctl is-enabled firewalld.service
デフォルトゾーンの確認
永続設定を確認したい場合は「–permanent」オプションを付けて実行してください。
・全ゾーンを一覧表示
# firewall-cmd --list-all-zones
・デフォルトゾーンがどのゾーンに設定されているのかを確認
# firewall-cmd --get-default-zone
・現在のアクティブゾーンの設定確認
# firewall-cmd --get-active-zones
・デフォルトゾーンの設定確認
# firewall-cmd --list-all
・特定ゾーンの設定確認(※例としてdmzを指定)
# firewall-cmd --list-all --zone=dmz
・利用可能なゾーン名を一覧表示
# firewall-cmd --get-zones
・デフォルトゾーンを変更
# firewall-cmd --set-default-zone=dmz
パケットフィルタリング(その1)
現状のフィルタリング設定を確認
<ポート番号及びサービス名を含めた設定確認>
・デフォルトゾーンに指定されているruntime(再起動したら消える)の現状確認
# firewall-cmd --list-all
・デフォルトゾーンに指定されているpermanent(再起動しても消えない)の現状確認
# firewall-cmd --list-all --permanent
<ポート番号の確認>
・公開中のポート番号一覧
# firewall-cmd --list-ports
・デフォルトゾーンに指定されているポート番号の永続設定を確認
# firewall-cmd --list-port --permanent
・パブリックゾーンに指定されているポート番号の永続設定を確認(※ゾーン指定版)
# firewall-cmd --list-port --zone=public --permanent
<サービスの確認>
・デフォルトゾーンに指定されているサービスの確認
# firewall-cmd --list-service --permanent
・パブリックゾーンに指定されているサービスの確認(※ゾーン指定版)
# firewall-cmd --list-service --zone=public --permanent
ポートを開ける(任意のポート/サービスを許可)
任意のポート/サービス名を許可します。ポート番号で指定する方法とサービス名で指定する方法の2種類があります。
<ポート番号を指定する場合>
・80番ポート(HTTP)を許可
# firewall-cmd --add-port=80/tcp --permanent
・123番ポート(NTP)を許可
# firewall-cmd --add-port=123/udp --permanent
<サービス名を指定する場合>
・HTTPを許可
# firewall-cmd --add-service=http --permanent
・NTPを許可
# firewall-cmd --add-service=ntp --permanent
ポートを閉じる(任意のポート/サービスを拒否:受信拒否する場合)
事前に登録した許可設定を削除する場合
<ポート番号指定で削除する場合>
・80番ポート(HTTP)を拒否
# firewall-cmd --remove-port=80/tcp --permanent
・123番ポート(NTP)を拒否
# firewall-cmd --remove-port=123/udp --permanent
<サービス名を指定して削除する場合>
・HTTPを拒否
# firewall-cmd --remove-service=http --permanent
・NTPを拒否
# firewall-cmd --remove-service=ntp --permanent
設定を反映
・設定を反映
# firewall-cmd --reload
runtime設定を永続設定に上書きする
「–permanent」オプションなしで各コマンドを実行した場合、OS再起動や「# firewall-cmd –reload」を 実行するとruntime設定は破棄されてしまいます。
そのため、破棄される前に永続設定にしたい場合は
「–runtime-to-permanent」オプションを付けてコマンドを実行します。
・runtime設定を永続設定に上書きする
# firewall-cmd --runtime-to-permanent
runtime設定をリセット(永続設定を読み込む)
<永続設定を読み込む(既存セッションを維持)>
# firewall-cmd -reload
<永続設定を読み込む(既存セッションを破棄)>
# firewall-cmd --complete-reload
パケットフィルタリング(その2)
特定のIPアドレスからのアクセスをすべて拒否
サーバを運用していると世界中から不正アクセルされるので、ログを見ながら特定のIPアドレスからのアクセスを全て拒否します。
# firewall-cmd --zone=drop --add-source=xxx.xxx.xxx.0/24
上記コマンドはruntime用なので、永続設定にしたい場合は「–permanent」を付与してくださいね。
設定後はログを確認し、不正アクセスをしてくる輩のIPアドレスが弾かれていることを確認してください。
「–timeout」オプション
「–timeout」オプションは、runtime設定にしか登録できません。
また、指定した 通信を一定期間だけ許可することができます。
つまり、一定期間だけ通信を拒否することはできません。
・60分間のみhttpを許可
# firewall-cmd --add-service=http --timeout=60m
文字 | 単位 |
s | 秒 |
m | 分 |
h | 時間 |
サービス系コマンド
サービス名の一覧表示/公開/停止/公開中のサービス一覧表示コマンド
・サービス一覧の表示
# firewall-cmd --get-services
・サービスを公開(httpsの場合)
# firewall-cmd --add-service=https
・サービスの公開を停止(httpsの場合)
# firewall-cmd --remove-service=https
・公開されているサービス一覧を表示
# firewall-cmd --list-services
インターフェースとゾーン
現状確認や設定変更コマンド類
・インターフェースがどのゾーンに所属しているのか
# firewall-cmd --get-active-zones
・特定のインターフェースがどのゾーンに所属しているのか(runtimeの場合)。
# firewall-cmd --get-zone-of-interface=venet0
・特定のインターフェースがどのゾーンに所属しているのか(永続設定の場合)。
# firewall-cmd --get-zone-of-interface=venet0 --permanent
・インターフェースの所属ゾーンを変更
# firewall-cmd --zone=dmz --change-interface=venet0
※注意:上記コマンドではOS再起動をするとデフォルトゾーンに戻ってしまうので、
NICの所属ゾーン変更をする際はNetworkManegerの設定で行うこと。
設定ファイルの場所
publicゾーン用の設定ファイル
publicゾーン用の設定ファイルは下記ファイルになりますので、直接編集してもOK!です。
firewall-cmd –reloadコマンドを実行した際に反映されるファイルですね。
# vi /etc/firewalld/zones/public.xml
まとめ
基本的なコマンド等を載せてみましたが、まだまだ追記したい部分もありますので、適宜更新していきたいと思います。
コメント