Хитрое правило. Эдакий L7 firewall для linux + iptables, можно дропать пакеты на определенные адреса или определенные фразы.
Значек ! - отрицание.
Суть правила ниже: пользователю с uid=33 можно отправить запрос со словом "byfly.by" лишь на разрешенные IP. Все остальное - дропается.
#!/bin/bash
WHITELIST=guest.txt
for x in `grep -v ^# $WHITELIST | awk '{print $1}'`; do
#echo $x
iptables -A OUTPUT ! --dst $x -m owner --uid-owner 33 -m string --string "byfly.by" --algo
bm -j DROP
iptables -A INPUT ! -- dst $x -m string --string --algo bm -j DROP
done
exit 0
Запретим входящий трафик всему, кто не с 192.168.1.24 запрашивает "index.php"
iptables -A INPUT ! -s 192.168.1.24 -m string --string 'index.php' --algo bm -j REJECT
Запретим устанавливать новые исходящие соединения юзеру с uid=33, если там проскакивает "example.com". Такое можно использовать, чтобы, например, забанить php-прокси на шаред-хостинге, если apache без патча itk - работает от одного юзера у всех. В данном случае фаерволл дропнет проксю по двум признакам:
1. Апач инициализирует исходящее соединение.
2. Для блокирования конкретного юзера, надо лишь знаеть, на каком сайте стоит прокси.
iptables -A OUTPUT -m state --state NEW -m owner --uid-owner 33 -m string --string 'example.com' --algo bm -j DROP