firewalldでの複数の条件を組み合せたルールの作成 [CentOS]
詳細は、以下の通りである。
1. ルールの作成方法
下記のいずれかの機能を使用する。
(1) direct option
(例) # firewall-cmd [--permanent] --direct --add-rule ipv4 filter INPUT 0 ...
iptables にルールを直接設定するようなものである。
(詳細は firewall-cmd(1) の man ページを参照)
(2) rich rule
(例) # firewall-cmd --add-rich-rule='rule family="ipv4" ...'
リッチ言語表現を使用したルール設定である。
指定できる主な項目は、下記の通りである。
(リッチ表現の詳細は、firewalld.zone(5) の man ページを参照)
(a) family
設定値: ipv4 | ipv6 指定方法: family="<value>"
(b) source address
設定値: <address>[/<range>] 指定方法: source address="<value>"
(c) destination address
source address と同様
(d) port
設定値: {<port>[-<port>]} {tcp | udp} 指定方法: port port="<value_1>" protocol="<value_2>"
(e) action
設定値: accept | reject | drop 指定方法: <value>
2. 使用例
ローカルネット(192.168.0.0/24) からの rsh でのアクセスを許可する。
(1) direct option を使用する場合
(a) 設定
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 \ -s 192.168.0.0/24 -p tcp --dport 513:514 -j ACCEPT success
(b) 追加されるルール
# iptables -L Chain INPUT_direct (1 references) target prot opt source destination ACCEPT tcp -- 192.168.0.0/24 anywhere tcp dpt:login:shell
(c) 補足
ルールの削除は、--add-rule を --remove-rule に変更して実行する。
(2) rich rule を使用する場合
(a) 設定
# firewall-cmd --add-rich-rule='rule family="ipv4" \ source address="192.168.0.0/24" port port="513-514" protocol="tcp" \ accept' success
(b) 追加されるルール
# firewall-cmd --list-all public (default, active) interfaces: enp2s0 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: rule family="ipv4" source address="192.168.0.0/24" \ port port="513-514" protocol="tcp" accept
(c) 補足
ルールの削除は、--add-rich-rule を --remove-rich-rule に変更して実行する。
3. 備考
(1) 参考情報
https://access.redhat.com/documentation/ja-JP/\
Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html
(2) 感想
通常は、iptables を使用(firewalld の無効化が必要)した方がよいように思われる。
・http://dan-project.blog.so-net.ne.jp/2015-09-12-1
コメント 0
コメントの受付は締め切りました