Linuxのログで、 dmesg コマンドを実行すると、以下のようなイベントが表示されることがあります:
icmp6_send: no reply to icmp error
icmp6_send: no reply to icmp error
icmp6_send: no reply to icmp error
icmp: xxx.xx.xxx.xx: Source Route Failed
icmp: xxx.xx.xxx.xx: Source Route Failed
icmp: xxx.xx.xxx.xx: Source Route Failed
1. icmp6_send: no reply to icmp error
オペレーティングシステムがICMPv6エラーメッセージ(例:「Destination Unreachable」、「Time Exceeded」など)を送信しようとしましたが、応答を受け取れませんでした。
ほとんどの場合、これはエラーメッセージがファイアウォールによってブロックされているためです。
2. icmp: xxx.xx.xxx.xx: Source Route Failed
ノード xxx.xx.xxx.xx(ルーターまたはホスト)がソースルーティング(IPパケットのヘッダーでルートを指定)を試みましたが、失敗しました。
ソースルーティングは脆弱性と見なされ、最新のオペレーティングシステムやネットワークデバイスでは通常無効化されています。
3. 原因
- ソースルーティングを使用した攻撃の試み(例:スプーフィング)。
- ネットワークスキャン(例:ソースルーティングオプションを使ったtracerouteによる)。
4. 結論と対応
4.1 icmp6_send: no reply to icmp errorについて
IPv6プロトコルの設定と動作を確認してください(例:ping6 を使用)。また、iptablesファイアウォールでIPv6トラフィックの制限を設定できます:
iptables -A INPUT -p ipv6-icmp -m limit --limit 80/sec --limit-burst 80 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp6-adm-prohibited
制限がすでに設定されている場合、このメッセージは制限を超えようとした試みを通知として表示されます。
4.2 icmp: xxx.xx.xxx.xx: Source Route Failedについて
ソースルーティングが無効になっていることを確認するには、以下のコマンドを実行します:
sysctl net.ipv4.conf.all.accept_source_route
応答は0である必要があります(net.ipv4.conf.all.accept_source_route = 0)。
IP xxx.xx.xxx.xxからの疑わしい活動についてログを確認してください。おそらくスキャナーまたは悪意のある行為者です。
通常、特にアクションは必要なく、このメッセージは単なる通知です。
5. 追加の対応(任意)
5.1 IPのブロック
IPアドレスをブロックできますが、攻撃者は通常サブネット全体を持っているため、効果がない場合があります。上記の対策で十分ですが、必要であれば以下のようにブロックできます:
iptables -A INPUT -s xxx.xx.xxx.xx -j DROP
5.2 ログの有効化
iptables -A INPUT -m policy --pol ipsec --dir in -j ACCEPT
iptables -A INPUT -m rt --rt-type 0 -j LOG --log-prefix "SRC ROUTE ATTEMPT: "
iptables -A INPUT -m rt --rt-type 0 -j DROP
試行の記録は /var/log/syslog ファイルに表示されます。
5.3 すべてのインターフェースの設定確認
sysctl -a | grep accept_source_route
IPv4の場合、出力は以下のようなものになるはずです:
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
IPv6も同様です:
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.eth0.accept_source_route = 0
IPv6およびIPv4の最後の2つのコマンドは eth0 を使用していますが、ネットワークインターフェース名は異なる場合があります。 ifconfig または ip link show(ip l)コマンドで確認できます。
5.4 sysctl設定の変更
オペレーティングシステムの設定を変更し、再起動後も保持するには、/etc/sysctl.conf ファイルを編集する必要があります。変更を適用するには以下のコマンドを使用します:
sysctl -p
この場合、ファイルの行は以下のようになります:
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0