web-dev-qa-db-ja.com

FirewalldでICMPタイムスタンプとタイムスタンプ応答をブロックする

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でブロックするにはどうすればよいですか?

5
5ELuqLbb85Hk

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

17
dawud