pptpd+iptables+squid (Проблема прохождения пакетов.)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Deicide
Сообщения: 11

pptpd+iptables+squid

Сообщение Deicide »

не кидайтесь помидорками! прошарил все на форуме перепробовал все советы! чот непомогает :(
вобщем ситуация такая
есть сервер на ASP 10
на сервере стоит прозрачный Squid.
Весь HTTP траффик перенаправляется ему для подсчетов и кэширования.
также открыт ряд нужных портов.
Скрипт настройки iptables:

Код: Выделить всё

#! /bin/bash

IPT="/sbin/iptables"

EXT_IF="eth1"
LO_IF="lo"
LAN="xx.xx.xx.xx/23"
LOOPBACK="127.0.0.1/8"
PREF_IP="xx.xx.xx.xx/23"
INET_IP="yy.yy.yy.yy"
POLICY="DROP"

startfw() {
    /bin/echo 1 > /proc/sys/net/ipv4/ip_forward

    $IPT -F
    $IPT -X
    $IPT -F -t nat
    $IPT -P INPUT $POLICY
    $IPT -P FORWARD $POLICY
    $IPT -P OUTPUT ACCEPT
      $IPT -A INPUT -i $LO_IF -d $LOOPBACK -j ACCEPT
    $IPT -N allowed
      $IPT -F allowed
      $IPT -A allowed -m state --state ESTABLISHED,RELATED -j ACCEPT
      $IPT -A allowed -i $EXT_IF -m limit --limit 1/second -j ULOG --ulog-prefix "Bad packet from $EXT_IF"
      $IPT -A allowed -j $POLICY
       $IPT -N com-allow
       $IPT -F com-allow
       $IPT -A com-allow -p tcp -j ACCEPT
       $IPT -A com-allow -p udp -j ACCEPT
      $IPT -N icmp_in
      $IPT -F icmp_in
      $IPT -A icmp_in -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT
    $IPT -A icmp_in --fragment -p icmp -j DROP
    $IPT -A icmp_in -m state --state NEW -p icmp --icmp-type echo-reply -j ACCEPT
      $IPT -A icmp_in -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
      $IPT -A icmp_in -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
    $IPT -A icmp_in -m state --state NEW -p icmp --icmp-type source-quench -j ACCEPT
      $IPT -A icmp_in -p icmp -j ULOG --ulog-prefix "Bad ICMP"

      $IPT -N ssh-in
      $IPT -F ssh-in
      $IPT -A ssh-in -p tcp --dport 22 -j ACCEPT
      $IPT -N wmin-in
      $IPT -F wmin-in
      $IPT -A wmin-in -p tcp --dport 10000 -j ACCEPT


      $IPT -A ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport ssh -j ACCEPT
      $IPT -A ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport ssh -j ACCEPT
      $IPT -A ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport ssh -j ACCEPT
      $IPT -A ssh-in -m state --state RELATED,ESTABLISHED -p tcp --dport ssh -j ACCEPT

      $IPT -A INPUT -p tcp --dport 80 -j com-allow
      $IPT -A INPUT -p tcp --dport 139 -s $LAN -j com-allow
      $IPT -A INPUT -p tcp --dport 445 -s $LAN -j com-allow
      $IPT -A INPUT -p udp --dport 137 -s $LAN -j com-allow
      $IPT -A INPUT -p udp --dport 138 -s $LAN -j com-allow
      $IPT -A INPUT -p tcp --dport 411 -s $LAN -j com-allow
      $IPT -A INPUT -p tcp --dport 51234 -s $LAN -j com-allow
      $IPT -A INPUT -p udp --dport 8767 -s $LAN -j com-allow
      $IPT -A INPUT -p tcp --dport 22 -s $PREF_IP -j ssh-in
      $IPT -A INPUT -p tcp --dport 21 -s $PREF_IP -j ftp-in
      $IPT -A INPUT -p tcp --dport 10000 -s $PREF_IP -j wmin-in
      $IPT -A INPUT -m tcp -p tcp --dport 1723  -j ACCEPT
      $IPT -A INPUT -p gre -j ACCEPT
      $IPT -A OUTPUT -m tcp -p tcp --dport 1723  -j ACCEPT
      $IPT -A OUTPUT -p gre -j ACCEPT
      $IPT -A INPUT -p tcp --dport 5222:5223 -s $LAN -j com-allow
      $IPT -A INPUT -p tcp --dport 5280 -s $PREF_IP -j com-allow
      $IPT -A INPUT -p tcp --dport 3128 -s $LAN -j com-allow
      $IPT -A INPUT -p tcp --dport 25 -s $LAN -j com-allow
      $IPT -A INPUT -p tcp --dport 110 -s $LAN -j com-allow
      $IPT -A INPUT -s $LAN -p udp --dport domain -j com-allow
      $IPT -A INPUT -p tcp --dport 10001 -s $LAN -j com-allow
      $IPT -A INPUT -p icmp -j icmp_in
      $IPT -A INPUT -j allowed

$IPT -t nat -A PREROUTING -s $LAN -d ! $LAN -p tcp -m tcp --dport 80 -j  REDIRECT --to-ports 3128
$IPT -t nat -A POSTROUTING -s $LAN  -j SNAT  --to-source $INET_IP
$IPT -A FORWARD -s $LAN -d ! $LAN -j ACCEPT
$IPT -A FORWARD -d $LAN -m state  --state RELATED,ESTABLISHED -j ACCEPT

}

startfw

/etc/init.d/iptables save
/etc/init.d/iptables stop
/etc/init.d/iptables start


Появилась задача прикрутить к серверу еще и PPTP. Пользователь из инета должен попадать в нашу сеть.
PPTP поднят и настроен. Без iptables пакеты внутрь проходят! Как тока пускаю iptables соединение с сервером есть, но пакеты внутрь не идут!
Помогите ПЛЗ!
Спасибо сказали:
borin
Сообщения: 67

Re: pptpd+iptables+squid

Сообщение borin »

С удовольствием послушаю, как правильно прокинуть pptp, в локалку. Тоже поднимал pptp, чет видимо с правилами iptables у меня трабла была, всяко пробывал, ща для доступа к локалке использую ssh, но если поднять pptp то будет ваще гуд :)
ubuntu 8.04 | Debian lenny
Спасибо сказали:
Deicide
Сообщения: 11

Re: pptpd+iptables+squid

Сообщение Deicide »

Никто не поделится светлой идеей?
Спасибо сказали:
Аватара пользователя
n2j2r
Сообщения: 494
Статус: najar

Re: pptpd+iptables+squid

Сообщение n2j2r »

Deicide
разрешить пакеты с ppp+ интерфейсов.
Спасибо сказали:
Аватара пользователя
Ariasp
Сообщения: 254
Статус: NixLander

Re: pptpd+iptables+squid

Сообщение Ariasp »

всё просто; предположим, что eth0 - внешний интерфейс шлюза и 192.168.1.200 - PPTP-сервер в локальной сети; тогда правила iptables такие:
iptables -t nat -A PREROUTING -i eth0 -p tcp -d внешний_IP_шлюза --dport 1723 -j DNAT --to-destination 192.168.1.200:1723
iptables -t nat -A PREROUTING -i eth0 -p 47 -d внешний_IP_шлюза -j DNAT --to-destination 192.168.1.200
но это ещё не всё; в ядре должны быть собраны и загружены такие модули:
modprobe ip_gre
modprobe ip_conntrack_pptp
modprobe ip_nat_pptp
(в старых ядрах были ещё нужны ip_nat_proto_gre и ip_conntrack_proto_gre)
Спасибо сказали:
borin
Сообщения: 67

Re: pptpd+iptables+squid

Сообщение borin »

Ariasp писал(а):
23.10.2008 09:15
всё просто; предположим, что eth0 - внешний интерфейс шлюза и 192.168.1.200 - PPTP-сервер в локальной сети; тогда правила iptables такие:
iptables -t nat -A PREROUTING -i eth0 -p tcp -d внешний_IP_шлюза --dport 1723 -j DNAT --to-destination 192.168.1.200:1723
iptables -t nat -A PREROUTING -i eth0 -p 47 -d внешний_IP_шлюза -j DNAT --to-destination 192.168.1.200
но это ещё не всё; в ядре должны быть собраны и загружены такие модули:
modprobe ip_gre
modprobe ip_conntrack_pptp
modprobe ip_nat_pptp
(в старых ядрах были ещё нужны ip_nat_proto_gre и ip_conntrack_proto_gre)


Это для случая когда у нас есть уже настроенный pptp сервер в локальной сети, и тут мы просто натим к нему запросы.
Как быть вот в таком случае. Пусть у нас inet_ip=yy.yy.yy.yy, lan_ip=192.168.2.50,net_lan=192.168.2.0/24, pptp поднят на этом же сервере, при подключении клиента из вне он получает pptp_ip=192.168.5.30 net_pptp=192.168.5.0/24. Нужно чтоб клиент 192.168.5.30 мог получать доступ к сети 192.168.2.0/24

Прошу прощения конечно, что влез в чужую тему, но думаю что Deicide как раз про это и спрашивал, а мне проста по путно интереcно :)
ubuntu 8.04 | Debian lenny
Спасибо сказали:
Аватара пользователя
Ariasp
Сообщения: 254
Статус: NixLander

Re: pptpd+iptables+squid

Сообщение Ariasp »

borin писал(а):
23.10.2008 10:08
Пусть у нас inet_ip=yy.yy.yy.yy, lan_ip=192.168.2.50,net_lan=192.168.2.0/24, pptp поднят на этом же сервере, при подключении клиента из вне он получает pptp_ip=192.168.5.30 net_pptp=192.168.5.0/24. Нужно чтоб клиент 192.168.5.30 мог получать доступ к сети 192.168.2.0/24

если pptp поднят на самом шлюзе, это ещё проще;
во-первых, к чему изощряться с другой подсетью - пусть pptp выдаёт адреса из той же подсети; варианты здесь возможны разные, в самом простом случае в /etc/pptpd.conf указываем
localip 192.168.2.50
remoteip 192.168.2.220-245
ну и второе уже было озвучено выше - надо разрешить FORWARD между ppp- и eth-интерфейсами
iptables -A FORWARD -i eth1 -o ppp+ -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth1 -j ACCEPT
Спасибо сказали:
borin
Сообщения: 67

Re: pptpd+iptables+squid

Сообщение borin »

Ariasp спасиб, на днях проверю отпишусь :)
ubuntu 8.04 | Debian lenny
Спасибо сказали:
Deicide
Сообщения: 11

Re: pptpd+iptables+squid

Сообщение Deicide »

#! /bin/bash

IPT="/sbin/iptables"

EXT_IF="eth1"
LO_IF="lo"
LAN="xx.xx.xx.xx/23"
LOOPBACK="127.0.0.1/8"
PREF_IP="xx.xx.xx.xx/23"
INET_IP="yy.yy.yy.yy"
POLICY="DROP"

startfw() {
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward

$IPT -F
$IPT -X
$IPT -F -t nat
$IPT -P INPUT $POLICY
$IPT -P FORWARD $POLICY
$IPT -P OUTPUT ACCEPT
$IPT -A INPUT -i $LO_IF -d $LOOPBACK -j ACCEPT
$IPT -N allowed
$IPT -F allowed
$IPT -A allowed -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A allowed -i $EXT_IF -m limit --limit 1/second -j ULOG --ulog-prefix "Bad packet from $EXT_IF"
$IPT -A allowed -j $POLICY
$IPT -N com-allow
$IPT -F com-allow
$IPT -A com-allow -p tcp -j ACCEPT
$IPT -A com-allow -p udp -j ACCEPT
$IPT -N icmp_in
$IPT -F icmp_in
$IPT -A icmp_in -m state --state NEW -p icmp --icmp-type echo-request -j ACCEPT
$IPT -A icmp_in --fragment -p icmp -j DROP
$IPT -A icmp_in -m state --state NEW -p icmp --icmp-type echo-reply -j ACCEPT
$IPT -A icmp_in -m state --state NEW -p icmp --icmp-type time-exceeded -j ACCEPT
$IPT -A icmp_in -m state --state NEW -p icmp --icmp-type destination-unreachable -j ACCEPT
$IPT -A icmp_in -m state --state NEW -p icmp --icmp-type source-quench -j ACCEPT
$IPT -A icmp_in -p icmp -j ULOG --ulog-prefix "Bad ICMP"

$IPT -N ssh-in
$IPT -F ssh-in
$IPT -A ssh-in -p tcp --dport 22 -j ACCEPT
$IPT -N wmin-in
$IPT -F wmin-in
$IPT -A wmin-in -p tcp --dport 10000 -j ACCEPT


$IPT -A ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL RST --dport ssh -j ACCEPT
$IPT -A ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL FIN --dport ssh -j ACCEPT
$IPT -A ssh-in -m limit --limit 1/second -p tcp --tcp-flags ALL SYN --dport ssh -j ACCEPT
$IPT -A ssh-in -m state --state RELATED,ESTABLISHED -p tcp --dport ssh -j ACCEPT

$IPT -A INPUT -p tcp --dport 80 -j com-allow
$IPT -A INPUT -p tcp --dport 139 -s $LAN -j com-allow
$IPT -A INPUT -p tcp --dport 445 -s $LAN -j com-allow
$IPT -A INPUT -p udp --dport 137 -s $LAN -j com-allow
$IPT -A INPUT -p udp --dport 138 -s $LAN -j com-allow
$IPT -A INPUT -p tcp --dport 411 -s $LAN -j com-allow
$IPT -A INPUT -p tcp --dport 51234 -s $LAN -j com-allow
$IPT -A INPUT -p udp --dport 8767 -s $LAN -j com-allow
$IPT -A INPUT -p tcp --dport 22 -s $PREF_IP -j ssh-in
$IPT -A INPUT -p tcp --dport 21 -s $PREF_IP -j ftp-in
$IPT -A INPUT -p tcp --dport 10000 -s $PREF_IP -j wmin-in
$IPT -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT
$IPT -A INPUT -p gre -j ACCEPT
$IPT -A OUTPUT -m tcp -p tcp --dport 1723 -j ACCEPT
$IPT -A OUTPUT -p gre -j ACCEPT
$IPT -A INPUT -p tcp --dport 5222:5223 -s $LAN -j com-allow
$IPT -A INPUT -p tcp --dport 5280 -s $PREF_IP -j com-allow
$IPT -A INPUT -p tcp --dport 3128 -s $LAN -j com-allow
$IPT -A INPUT -p tcp --dport 25 -s $LAN -j com-allow
$IPT -A INPUT -p tcp --dport 110 -s $LAN -j com-allow
$IPT -A INPUT -s $LAN -p udp --dport domain -j com-allow
$IPT -A INPUT -p tcp --dport 10001 -s $LAN -j com-allow
$IPT -A INPUT -p icmp -j icmp_in
$IPT -A INPUT -j allowed

$IPT -t nat -A PREROUTING -s $LAN -d ! $LAN -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
$IPT -t nat -A POSTROUTING -s $LAN -j SNAT --to-source $INET_IP
$IPT -A FORWARD -i eth0 -o ppp+ -j ACCEPT
$IPT -A FORWARD -i ppp+ -o eth0 -j ACCEPT
$IPT -A FORWARD -s $LAN -d ! $LAN -j ACCEPT
$IPT -A FORWARD -d $LAN -m state --state RELATED,ESTABLISHED -j ACCEPT

}

startfw

/etc/init.d/iptables save
/etc/init.d/iptables stop
/etc/init.d/iptables start


Спасибо товарищу Ариаспу! Вариант приведенного скрипта у меня работает!
Спасибо сказали: