суббота, 13 июня 2009 г.

Фильтрация пакетов по процессам

Понадобилось узнать, что же за процесс рвётся с моей машины на 25-ый порт сервера 93.159.240.63.
С помощью Google быстренько нашёл, что с iptables это сделать просто: iptables ... -m owner --pid-owner $PID ...
Но параметр --pid-owner не поддерживается:
[root@lav ~]# iptables -m owner --help
...
owner match options:
[!] --uid-owner userid[-userid] Match local UID
[!] --gid-owner groupid[-groupid] Match local GID
[!] --socket-exists Match if socket exists


Исследование исходного кода iptables показало, что --pid-owner доступно для revision 0, а у нас действует revision 1. Как я понимаю, эти revision относятся к соответствующему коду в ядре Linux.

Дальнейшие поиски ни к чему не привели. Нашёлся только TuxGuardian - An application-based firewall, разработка которого свернулась в 2006, и который требует от ядра собранности с LSM.
Так же каким-то сложным способом ограничения под конкретному процессу можно проводить с помощью SELinux.
В общем, пришлось просто разрешить соединения на 25 порт и засечь злодея простым netstat -ap | grep :25
Им оказался... ktorrent из kde4-ktorrent-3.2.1-alt1 (то же и в kde4-ktorrent-3.2.2-alt1)

Комментариев нет: