Redhat6をRedhat8へリプレイスを行った。
その際、RH6でiptableで行っていたパケットフィルタリングを、
RH8のFirewallで設定し直した。
とても勉強になったので、備忘のも兼ねて以下に残しておく。
◆使用NICの確認
# firewall-cmd –get-active-zones
pubic
interface: ensXXX
→ゾーンpulicはensXXXに割り当たっている意。
FWを割り当てたいNICを変更する場合、↓を実施。
◆NICにゾーンを割り当てる
# firewall-cmd –zone=public –change-interface=ensXXX –permanent
※–permanentは永続的に設定する場合に付ける。一時的な変更であれば不要。(サーバ再起動で消える)
# nmcli c mod “encXXX” connection.zone public
◆設定反映(良く使う)
# firewalld-cmd –reload
◆デフォルトゾーンをpublicに変更する場合
# firewall-cmd –set-default-zone=public –permanent
※ゾーンの概念については以下を参照
<【丁寧解説】Linuxのファイアウォール firewalld の使い方>
<https://eng-entrance.com/linux-centos-firewall>
◆ゾーンがちゃんと割り当たっているか確認
# firewall-cmd –list-all-zones
→ public”(active)”となっているか、interfaces: ensXXX となっているかを見る。
# nmcli -p c s ensXXX | grep zone
◆拒否した通信をログに出力させる。
# firewall-cmd -set-log-denied=all →/var/log/messagesに出力される。
◆許可設定コマンド
ゾーンの public はホワイトリスト形式。
つまりは何もしていなければ全て拒否。
許可させる分だけを設定していく。
①そのサーバ自身(192.168.1.1)から出ていく通信はすべて許可
# firewall-cmd –add-rich-rule=”rule family=”ipv4″ source address=”192.168.1.1/32″ accept ” –zone=public –permanent
→パッと見は嫌悪感満載だが、よく見ると割とイメージし易い。(iptableよりはマシ)
「 –add-rich-rule」は、”どこどこ”からの”どのIP”の通信、といった2個以上条件を付けたい場合、必要になる。”rule Family”というグループみたいな括りを定義する。
「”ipv4″」は必須。v4かv6はどちらか指定が必須。その他はオプションであり、あってもなくてもコマンドは通る。
「source address」は記載の通り。指定しない場合、ALLになる。(おそらく source address=”0.0.0.0/0″も同義。)
あとは記載の通り。
②自身のPingはすべて許可。
# firewall-cmd –add-port=53/udp –zone=public –permanent
→単一の条件の為、rich-ruleは必要ない。
※rich-ruleで設定しても良い。その場合は以下。
# firewall-cmd –add-rich-rule=”rule family=”ipv4″ port protocol=”udp” port=”53″ accept ” –zone=public –permanent
③外からのTCP HTTP通信を許可
# firewall-cmd –add-port=80/tcp –zone=public –permanent
④送信元が192.168.1.2/32で、TCP Port 21(FTP)の通信を許可
# firewall-cmd –permanent –zone=public –add-rich-rule=”rule family=”ipv4″ source address=”192.168.1.2/32″ port protocol=”tcp” port”21″ accept”
→しっかり読めば理解できる構文ではないだろうか。
他にも特定のPortを許可する設定を多数入れたが、
たぶん①か④のrich-ruleの形式さえ覚えれば、どの許可設定も可能ではないだろうか。
◆設定内容確認
# firewall-cmd –list-all
あと設定後にreloadを忘れない様にしてください。
今回は以上です。(疲れました)
ありがとうございました。