TK です。
『エロマンガ先生』がとても面白いんですが、「見ている」って口に出して言いづらいんですよね、このタイトル。
さて、今年度からフロントエンドエンジニアからバックエンドエンジニア(自称)にジョブチェンジしました。 バックエンドエンジニアとしてのキャリアがほとんど無いので、怖い先輩達からありがたいご指導を受けながらながら日々精進しております。
先日、はじめて CentOS 7 でサーバ環境を構築していたのですが「あれっ? iptables は!?」と、まんまとハマってしまいました。
この記事を読んでいれば、無駄な時間を使わずに済んだのになぁ。。。
あぁ、やっぱり LIG ブログは普段からチェックしておかなきゃダメだなぁと思いつつ、自分なりに firewalld について調べた内容をまとめておこうと思います。
目次
fierwalldの概要
firewalld はファイアウォールのフロントエンド(ユーザインターフェイス部分)のひとつです。
フロントエンドを利用することで、ファイアウォールの複雑な設定が必要な場合でも人間らしく設定することができるのです。
個人的にへぇっと思った特徴
1. 動的
firewalld はサービスやデーモンの再起動を行う事なく動的な設定の変更が可能です。
「特定の時間だけファイアウォールの設定を変更したい」「一時的に変更を加えたい」などの柔軟な運用フローを実現できます。
2. ゾーン
firewalld では「ゾーン」という概念があり、フィルタリングの設定を定義したゾーンを準備しておき、各 NIC ポートへ割り当てするのです。
ゾーンは要件に合わせて独自に設定する事もできますが、あまり複雑でない内容であればデフォルトで定義されているゾーンをベースに設定しても問題なさそうです。
3. Python
firewalld のソースコードは Python で書かれています。胸熱ですね。
公式リポジトリが Github で公開されているので 興味がある方はぜひ覗いてみると知的欲求が満たされるかと思います。
基本的な使い方
1. firewalld サービスの操作
ヤスタカ先輩の記事にもあるように、 CentOS 7 ではサービスの操作は systemctl でおこないます。
両方のコマンドを知っておけばこわくない!CentOS 6系と7系の違い
firewalld の起動
systemctl start firewalld
firewalld の停止
systemctl stop firewalld
firewalld のサービス自動起動ON
systemctl enable firewalld
firewalld のサービス自動起動OFF
systemctl disable firewalld
2. ファイアウォールの確認
ファイアウォールの設定変更は firewall-cmd でおこないます。
アクティブなゾーンを確認する
ゾーンの割り当てされている NIC ポートの確認ができます。
firewall-cmd ––get-active-zones
デフォルトで割り当てられるゾーンを確認する
特に割り当てがされていない NIC ポートはこちらのゾーンが割り当てされます。
firewall-cmd ––get-default-zone
デフォルトゾーンのフィルタ内容を確認する
firewall-cmd ––list-all
指定ゾーンのフィルタ内容を確認する
(publicの内容を確認する場合)
firewall-cmd ––list-all ––zone=public
すべてのゾーンを確認する
定義されているゾーンとそのフィルタ内容を一覧で確認できます。
firewall-cmd ––list-all-zones
3. ゾーンのフィルタ内容を設定
ひととおりゾーンやフィルタの確認のできたら、次は要件に合わせてサービス・ポート・IPなどの追加・削除をおこないます。
サービス
登録できるサービスを確認する
firewall-cmd ––get-services
指定ゾーンへ指定サービスを追加する
(publicにhttpを追加したい場合)
firewall-cmd ––add-service=http ––zone=public
指定ゾーンから指定サービスを削除する
(publicからhttpを削除したい場合)
firewall-cmd ––remove-service=http ––zone=public
ポート
指定ゾーンへ指定ポートを追加する
(publicから80/tcpを追加したい場合)
firewall-cmd ––add-port=80/tcp ––zone=public
指定ゾーンから指定ポートを削除する
(publicから80/tcpを削除したい場合)
firewall-cmd ––remove-port=80/tcp ––zone=public
IP
指定ゾーンへ指定IPを追加する
(publicから192.168.0.0/24を追加したい場合)
firewall-cmd ––add-source=192.168.0.0/24 ––zone=public
指定ゾーンから指定IPを削除する
(publicから192.168.0.0/24を削除したい場合)
firewall-cmd ––add-source=192.168.0.0/24 ––zone=public
4. ゾーンの割り当て
ゾーンの割り当て
(ens0にpublicを割り当てたい場合)
firewall-cmd ––zone=public ––change-interface=ens0
デフォルトゾーンの割り当て
(publicをデフォルトゾーンとして割り当てたい場合)
firewall-cmd ––set-default-zone=public
5. 恒久的な変更
上記の設定変更は、再起動などおこなうとリセットされてしまいます。もしも恒久的に設定してしまいたい場合は permanent オプションを追加し、reload を実行する必要があります。
恒久的なゾーンの割り当て
(ens0にpublicを割り当てたい場合)
firewall-cmd ––zone=public ––change-interface=ens0 ––permanentfirewall-cmd ––reload
まとめ
調べているうちにふと気づいてしまったのですが、 firewalld って擬人化すると炎髪灼眼のツンデレ美少女だと思うんですよね、絶対。
「うるさいっうるさいっうるさ〜いっ!こんなリクエスト受け付けないんだからっ!」とか言いそうじゃないですか?
そのことに気づいてからは、もっと firewalld と仲良くなりたいなと思うようになりました。はぁ……firewalldたん……。
みなさんも firewalld たんと仲良くなって、セキュリティに強いエンジニアになりましょう。
(誰か擬人化イラスト描いてくれないかなぁ……)
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。