OS:CentOS 7.0
セキュリティスキャンの結果によると、ファイアウォール( CVE-1999-0524 )を使用してICMPタイムスタンプとタイムスタンプ応答メッセージをブロックすることが推奨されています。 Firewalldを使用して、SSHの基本的なIPフィルタリングをセットアップし、HTTPSを許可しましたが、これで困っています。
私が考えることができた唯一のことはfirewall-cmd --add-icmp-block
ですが、タイムスタンプまたはタイムスタンプの返信に関連すると思われるicmptype
が見つかりません。
利用可能なタイプ(firewall-cmd --get-icmptypes
) 以下の通り: destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded
。
ICMPタイムスタンプ要求をfirewalld
でブロックするにはどうすればよいですか?
firewalld
には、すぐに使用できる定義済みのICMPタイプのデフォルトセットが付属しています。
_# firewall-cmd --get-icmptypes
destination-unreachable echo-reply echo-request parameter-problem redirect router-advertisement router-solicitation source-quench time-exceeded timestamp-reply timestamp-request
_
ただし、パーサー(_/usr/lib/python2.7/site-packages/firewall/core/io/icmptype.py
_)はこれらのタイプに限定されず、拡張することができます。
まず、man iptables-extensions(8)
、セクションicmp
のとおり:
icmp(IPv4固有)この拡張機能は、「-protocol icmp」が指定されている場合に使用できます。次のオプションがあります。
_[!] --icmp-type {type[/code]|typename} This allows specification of the ICMP type, which can be a numeric ICMP type, type/code pair, or one of the ICMP type names shown by the command iptables -p icmp -h
_icmp6(IPv6固有)この拡張機能は、_
--protocol ipv6-icmp' or
_-- protocol icmpv6 'が指定されている場合に使用できます。次のオプションがあります。_[!] --icmpv6-type type[/code]|typename This allows specification of the ICMPv6 type, which can be a numeric ICMPv6 type, type and code, or one of the ICMPv6 type names shown by the command ip6tables -p ipv6-icmp -h
_
参照する2つのタイプはIPv4固有であるため、以下を使用して、iptables
によって認識される適切な名前を見つける必要があります。
_# iptables -p icmp -h | grep timestamp
timestamp-request
timestamp-reply
_
ここで、firewalld
パッケージの内容を確認すると、定義済みのICMPタイプが格納されている場所がわかります。
_# rpm -ql firewalld | grep icmptype
/etc/firewalld/icmptypes
/usr/lib/firewalld/icmptypes/destination-unreachable.xml
/usr/lib/firewalld/icmptypes/echo-reply.xml
/usr/lib/firewalld/icmptypes/echo-request.xml
/usr/lib/firewalld/icmptypes/parameter-problem.xml
/usr/lib/firewalld/icmptypes/redirect.xml
/usr/lib/firewalld/icmptypes/router-advertisement.xml
/usr/lib/firewalld/icmptypes/router-solicitation.xml
/usr/lib/firewalld/icmptypes/source-quench.xml
/usr/lib/firewalld/icmptypes/time-exceeded.xml
/usr/lib/firewalld/xmlschema/icmptype.xsd
/usr/share/man/man5/firewalld.icmptype.5.gz
_
上記のパーサーを確認すると、iptables
と通信するときにICMPタイプとしてXMLファイル名を使用していることがわかります。そのため、ICMPを使用して使用するICMPタイプの2つの新しいファイルを書き込む必要があります。上記のタイプ。ユーザーが作成したICMPタイプは_/etc/firewalld/icmptypes
_に保存する必要があります。
_# cat timestamp-request.xml
<?xml version="1.0" encoding="utf-8"?>
<icmptype>
<short>Timestamp Request</short>
<description>This message is used for time synchronization.</description>
<destination ipv4="yes"/>
<destination ipv6="no"/>
</icmptype>
# cat timestamp-reply.xml
<?xml version="1.0" encoding="utf-8"?>
<icmptype>
<short>Timestamp Reply</short>
<description>This message is used to reply to a timestamp message.</description>
<destination ipv4="yes"/>
<destination ipv6="no"/>
</icmptype>
_
あなたは次のようになります:
_# ll -Z /etc/firewalld/icmptypes
-rw-r--r--. root root system_u:object_r:firewalld_etc_rw_t:s0 timestamp-reply.xml
-rw-r--r--. root root system_u:object_r:firewalld_etc_rw_t:s0 timestamp-request.xml
_
提供されたXSDを使用してそれらを検証します。
_# xmllint --schema /usr/lib/firewalld/xmlschema/icmptype.xsd timestamp-request.xml
timestamp-request.xml validates
# xmllint --noout --schema /usr/lib/firewalld/xmlschema/icmptype.xsd timestamp-reply.xml
timestamp-reply.xml validates
_
ファイアウォールをリロードします。
_# firewall-cmd --reload
_
そして最後にそれらを追加します:
_# firewall-cmd --add-icmp-block=timestamp-request
# firewall-cmd --add-icmp-block=timestamp-reply
# firewall-cmd --list-icmp-blocks
timestamp-reply timestamp-request
_
iptables
ルールを直接見て、それらが追加されていることを確認できます。
_iptables -nvL | grep icmp
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-Host-prohibited
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-Host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 13 reject-with icmp-Host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 14 reject-with icmp-Host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 13 reject-with icmp-Host-prohibited
0 0 REJECT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 14 reject-with icmp-Host-prohibited
_
タイプ13と14は、新しく追加された ICMPタイプ です。
参考として、firewalld.icmptypes(5)
のマンページを参照してください。
これらのICMPタイプは含まれています pstream 。