新しくサーバを作った場合に、firewalld周りでやることをいつも忘れるのでメモ書きとして。
httpを許可する
# デフォルトのゾーンを確認
firewall-cmd --get-default-zone
# ゾーンにhttpが追加されているか確認
firewall-cmd --list-service --zone=public
# 無かったら追加
firewall-cmd --add-service=http --zone=public --permanent
# リロードも忘れずに
firewall-cmd --reload
国別制限リスト用のチェインと、SSHGuard用のチェインを追加
# チェインの追加
firewall-cmd --permanent --direct --add-chain ipv4 filter sshguard
firewall-cmd --permanent --direct --add-chain ipv4 filter countries
firewall-cmd --permanent --direct --add-chain ipv6 filter sshguard
firewall-cmd --permanent --direct --add-chain ipv6 filter countries
# ルールにチェインを適用
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 2 -j sshguard
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 3 -j countries
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 2 -j sshguard
firewall-cmd --permanent --direct --add-rule ipv6 filter INPUT 3 -j countries
# リロードして反映させる
firewall-cmd --reload
国別制限のリストは、割とよく不正アクセスを狙ってくる国のIPはシャットダウンしているのでそれ用です。
そのままINPUTに追加してもいいんですが、定期的に更新する際のクリア処理で、他のルールまでクリアしてしまうのでチェインに対してクリアするようにしてます。
SSHGuardってfirewalld対応してなくない?って件は、自分でソースコード書き換えて対応させると良いです。
iptablesの部分を参考にしながら吐き出すコマンドに、firewalld版を追加すればできます。
記事として書いてもいいけど、需要なさそう。