LINUX.ORG.RU
ФорумAdmin

Помогите с IPTABLES 1.4.8 + SQUID3


1

1

Доброго времени суток!

Прошу вашей помоши, неделю бьюсь с айпитейблом и прозрачным прокси.
Имеется шлюз (192.168.111.1) с eth0 (интернет) eth1 (локалка), необходимо:
1. Дать доступ к ssh из интернета и локальной сети соответственно.
2. Дать доступ по RDP к AD (висит на 192.168.111.2)
3. Завернуть трафик 80 и 8080 портов через сквид (для формирования блеклистов всяких нехороших сайтов vk и т.д.).
4. Все остальное запретить.

Подскажи как правильно переписать данный, всеразрешающий скрипт:

firewall.sh:

#!/bin/bash
# включаем проброс пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

# описываем переменные
cmd="/sbin/iptables -A"
inif="eth1"
outif="eth0"
our_net="192.168.111.0/24"

# очищаем правила
iptables -F
iptables -F -t nat
iptables -F -t mangle
iptables -X
iptables -Z

# все разрешаем
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

#пропускать ответы на запросы инициированные из внутренней подсети
$cmd FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#проброс пакетов из внутренней подсети на внешний интерфейс
$cmd POSTROUTING -s 192.168.111.0/24 ! -d 192.168.111.0/24 -j SNAT --to-source внешний_ип -t nat

# вход сам на себя
$cmd INPUT -i lo -j ACCEPT
$cmd INPUT -s 127.0.0.1 -j ACCEPT
$cmd INPUT -s 192.168.111.1 -j ACCEPT

# открытиые порты для внутренней подсети
$cmd INPUT -s $our_net -p tcp -m multiport --dport 22,53,80,123,3128 -j ACCEPT -m state --state NEW --syn -i $inif
$cmd INPUT -s $our_net -p icmp -j ACCEPT -i $inif

# ssh на внешний интрефейс
$cmd INPUT -p tcp --dport 22 -j ACCEPT $outif
$cmd INPUT -p tcp --dport 80 -j ACCEPT -i $outif

# переадресация RDP на контроллер домена
$cmd INPUT -p tcp --dport 3389 -j ACCEPT -i $outif
$cmd PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.111.2:3389 -t nat
$cmd FORWARD -p tcp --dport 3389 -j ACCEPT

#разрешенные порты для прямого доступа в интернет (почта, почта с ssl. браузер, браузер через https, icq, jabber, Gtalk)
#$cmd FORWARD -s 192.168.111.0/24 ! -d 192.168.111.0/24 -p tcp -m multiport --dport 25,80,8080,110,443,465,995,5190,5222,5223 -j ACCEPT -m state --state NEW --syn -i $inif

#полный прямой доступ
$cmd FORWARD -s 192.168.111.0/24 -j ACCEPT -i $inif

#только браузер
#$cmd FORWARD -p tcp --dport 80 -j ACCEPT -i $inif

#логирование
$cmd INPUT -j ULOG
$cmd FORWARD -j ULOG

#дропать все, что явно не разрешено
iptables -P FORWARD DROP
iptables -P INPUT DROP

/sbin/iptables-save > /etc/iptables


Не вижу правил "-t nat PREROUTING -p tcp -m multiport --dports 80,8080 -j REDIRECT ..."

vel ★★★★★ ()

Зачем сначало

# все разрешаем
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
потом
#дропать все, что явно не разрешено
iptables -P FORWARD DROP
iptables -P INPUT DROP
не лучше в начале все DROP, а потом разрешай все что можно.

P.S. если не секрет, а как вы злобные вк.ком и тд блочить будете??

julixs ★★ ()

Какой интерфейс squid слушает????

julixs ★★ ()
Ответ на: комментарий от julixs

julixs

Если я правильно понял вопрос (я нуб %), то - сквид слушает внутренний интерфейс, то бишь «http_port 192.168.111.1:3128 intercept», сквид расположен на той же машине. Повторюсь, я новичок в линуксе, но (покурив форумы и мануалы) в принципе разобрался как распределить доступ к тем или иным ресурсам по средствам acl
Но вот с iptable я вошел в штопор, уже каша в голове, принцип - все запретить, а затем то что нужно разрешить - я понимаю, но пока херово получается =)))

vel

Правильно ли я понял последовательность:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Затем:
-t nat PREROUTING -p tcp -m multiport --dports 80,8080 -j REDIRECT ip_squid:3128

all

$cmd FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$cmd INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
можете объяснить действие этих строк на пальцах ?

AROR ()
Ответ на: комментарий от AROR

Завернуть все на сквид по мне лучше

$IPT -t nat -A PREROUTING -i eth1 -p tcp ! -d "свой ip" --dport http -j DNAT --to-destination "свой ip":3128

Правильно ли я понял последовательность:

Да сначало все дропаешь потом разрешашь все что разрешено. Для ssh достаточно оставить 22 порт открытым на двух интерфейсах.

RDP на AD прокинуть:

IPT -t nat -A PREROUTING -d out_ip -p tcp -m multiport --dports rdp -j DNAT --to-destination if_ip

julixs ★★ ()

По поводу блокировки vk.com и т.д. вроде squid не может https, если вы смогли настроить кеширование https хотелось бы узнать подробности.

julixs ★★ ()
Ответ на: комментарий от dimderbin

Это средствами фаервола, а если по средствам squid?? меня больше статистика посещений интересует чем блокировка, ее на стол а там пусть руководитель думает как наказовать) Находил вот такое правило

-t nat -A PREROUTING -s 192.168.0.8 -p tcp --dport 443 -j REDIRECT --to-port 3129
Много читал про сборку squid c ssl-bump, но до конца так и не вкурил че там к чему.

julixs ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.