среда, 8 августа 2012 г.

iptables vs php-proxy

Достану из заначки свой iptables:

#!/bin/bash
WHITELIST=guest.txt
iptables -A OUTPUT --dst 127.0.0.0/8 -m owner --uid-owner 33 -p ALL -m state --state RELATED,ESTABLISHED,NEW -j ACCEPT

       for x in `grep -v ^# $WHITELIST | awk '{print $1}'`; do
iptables -A OUTPUT -p tcp -m state --state NEW -m owner --uid-owner 33 --dst $x -j ACCEPT
       done

iptables -A OUTPUT -p tcp -m state --state NEW -m owner --uid-owner 33 -m multiport --dport 80,443 -j DROP
exit 0



А теперь - обьясню, что это. Есть такая гадкая вещь - php-proxy. Хостеры явно ее не любят. В файл guest.txt кладем ip или диапазоны, куда php прокся может ходить - к примеру, это какие-то локальные зоны или прочее.
Затем: разрешаем apache (uid = 33) ходить на localhost, то есть самостоятельно устанавливать соединения (на основе этого и работают php-proxy).
Затем из файла с разрешенными диапазонами построчно вбиваем правила, на какие ip наш apache может устанавливать соединения, иначе говоря - куда наша php-proxy может зайти.

И финал - запрещаем устанавливать новые соединения на порты 80 (http) и 443 (https) юзеру с uid=33 (apache).

При желании uid может быть любым, однако если у вас apache-itk - придеться помучаться, ибо uid будет не 33, а индивидуальный для каждого юзера.
Входящий трафик так резать не получиться, только исходящий, что в случае php-proxy нам и необходимо

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

Отправить комментарий