В логе 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 (маршрутизатор или хост) пытался использовать source routing (указание маршрута в заголовке IP-пакета), но это не удалось.
Source routing считается уязвимостью и в большинстве случаев отключен в современных ОС и сетевых устройствах.
3. Причины
- Попытка атаки с использованием source routing (например, спуфинг).
- Сканирование сети (например, через traceroute с опцией source route).
4. Вывод и действия
4.1 Для icmp6_send: no reply to icmp error
Проверьте настройки и работу протокола Ipv6 например используя ping6, также можно установить лимиты на трафик IPv6 в фаерволе iptables
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
Проверьте чтобы source routing был отключен, выполнив команду:
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 используется 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