概要
所属サークルで借りている VPS のファイアーウォールを iptables から firewalld による管理に変更しました.
理由
所属しているサークルはアマチュア無線が目的であり, 数年に一度入ってきたコンピュータに比較的強い人間がサーバ管理を行っている状態です. そのため, VPS管理担当になった人の学習コストやサーバのメンテナンスコストを下げることが課題となっていました. 現在(2019/10/02) CentOS 7 の推奨のファイアーウォールは firewalld であることと firewalld は iptables に比べ設定が見やすくメンテナンスにかかる学習コストや現行の設定内容の調査がしやすいと考え, 移行を決定しました.
実行した大まかな手順
ファイアーウォールが動いている時間があるとセキュリティ的に不安だったので, 初めに firewalld を起動した後 iptables を停止しました.
その後 firewall-cmd --add-service=<service name>
でサービスを public ゾーンに追加しました.
Softether VPN, SSH のポート変更がされていましたので、 /etc/firewalld/services 以下に新しくそれぞれのサービスの設定ファイルを作成し, 設定しました.
また, 設定の永続化のため, --permanent
をつけて実行し firewall-cmd --reload
で永続化されていることを確認しました.
許可するサービスについては, 以前可動している Web サービスと公開する必要があるポートを調査したことがあり, 引き継ぎ用のドキュメントにその内容を記載していたため新たに調査することをほぼせず特定することができました.
本来ならば以下のようなコマンドを実行して一時的に設定を有効にし設定変更による影響をテストするべきでしたが, いざと慣れば VPS の仮想コンソールにログインできるので ファイアーウォールの設定であれば SSH を閉め出されてもそこから復旧できるはずなので行いませんでした.
# firewalld を60秒だけ有効化 systemctl start firewalld & time 60; systemctl stop firewalld # 1分間だけデフォルトのゾーンに ssh サービスを追加 firewall-cmd --add-service=ssh --timeout 1m
なお, firewalld によって設定されたフィルタリングルールは iptables もしくは nftables に落とし込まれるはずだったと思うので
iptables -nvL
で確認ができるはずです.