The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Настройка  iptables, !*! undel, 24-Мрт-09, 01:19  [смотреть все]
Имеется сервер доступа в интернет для локальной сети. На нем поднята transparent-прокся (Squid)и необходимо настроить iptables для работы этой прокси, приема/отправки почты и разрешения DNS.

Интерфейсы:
eth0 - карточка на материке(глючит, не используется)
eth1 - карта, по которой подключен Интернет(выставлен DHCP)
eth2 - локалка(статика)
ppp0 - соединение с провайдером по PPPoE

Сейчас конфиг:
****************************************************************************************

#!/bin/sh

#
# Конфигурация Интернет-интерфейса.
#

INET_IP="0/0"
INET_IFACE="ppp0"

#
# Конфигурация LAN-интерфейса
#

LAN_IP="192.168.100.253"
LAN_IP_RANGE="192.168.100.0/24"
LAN_IFACE="eth2"

#
# Конфигурация localhost.
#

LO_IFACE="lo"
LO_IP="127.0.0.1"

#
# Конфигурация IPTables.
#

IPTABLES="iptables"

#Загрузка модулей
/sbin/depmod -a

#
# Необходимые модули
#
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
#
# Дополнительные модули
#
#/sbin/modprobe ipt_owner
#/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
#/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_conntrack_irc
#/sbin/modprobe ip_nat_ftp
#/sbin/modprobe ip_nat_irc


#
# Включаем FORWARDинг
#

echo "1" > /proc/sys/net/ipv4/ip_forward


#
# Политика по умолчанию
#

$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

#
# Создание собственных цепочек
#
$IPTABLES -N bad_tcp_packets
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets

#
# Заполнение собственных цепочек
#

#
# Цепочка bad_tcp_packets
#

$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

#
# Цепочка allowed
#

$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP

#
# Порты TCP
#

$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 25 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 110 -j allowed
$IPTABLES -A tcp_packets -p TCP -s 0/0 --dport 80 -j allowed

#
# Порты UDP
#

$IPTABLES -A udp_packets -p UDP -s 0/0 --destination-port 53 -j ACCEPT

#
# Правила ICMP
#

$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
$IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

#
# Цепочка INPUT
#

$IPTABLES -A INPUT -p tcp -j bad_tcp_packets

#
# Правила для LAN (разрешаем все)
#

$IPTABLES -A INPUT -p ALL -i $LAN_IFACE -s $LAN_IP_RANGE -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT

#
# Правила для пакетов из интернета
#

$IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p TCP -i $INET_IFACE -j tcp_packets
$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j udp_packets
$IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets


#
# Цепочка FORWARD
#

$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets

#
# FORWARDинг на всю локальную сеть.(Пользователи из локалки могут ходить в интернет)
#

$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Цепочка OUTPUT
#

$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets

#
# Правила цепочки
#

$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP -j ACCEPT


#
# Включаем IP Forwarding и трансляцию адресов(или маскарадинг)
#

$IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

$IPTABLES -t nat -A PREROUTING -i $LAN_IFACE -p tcp --dport 3128 -j REDIRECT --to-port 8080 #редирект на havp для проверки трафика на вирусы

************************************************************************************

Данный конфиг не работает. В чем косяк?

  • Настройка  iptables, !*! reader, 12:42 , 24-Мрт-09 (1)
    • Настройка  iptables, !*! undel, 20:00 , 24-Мрт-09 (2)
      >так а что не работает, как проверяете, как клиент настроен?
      >
      >если не ошибаюсь, то havp не работает в прозрачном режиме.

      С самого шлюза инет есть, а с клиентов - нет. Судя по tcpdump маскарадинг не работает.
      Про havp спасибо.

      • Настройка  iptables, !*! reader, 20:34 , 24-Мрт-09 (3)
        • Настройка  iptables, !*! undel, 09:57 , 25-Мрт-09 (4)
          >iptables-save -c    до и после проверки и будите видеть
          >какие правила сработали.

          спасибо, посмотрю
          >tcpdump запросы от клиентов видит?

          да.
          >чем проверяете? браузером? браузер настроен на работу через прокси? у клиента шлюз
          >и DNS прописан?

          Браузером, пингом. Прокси прописан, шлюз и ДНС прописаны.
          Еще имеется такая проблема, что при загрузке сервер неправильно выбирает гейт. По дефолту он выбирает карточку локальной сети. Если переподключить инет и -опустить-поднять интерфейсы, то гейт выбирается верно. Но даже когда сам начинает видеть инет, клиенты инет не видят. Веб после шаманства с роутингом начинает работать, а вот почта не ходит...


          • Настройка  iptables, !*! Undel, 15:06 , 25-Мрт-09 (5)
            • Настройка  iptables, !*! Andrey Mirofanov, 17:14 , 25-Мрт-09 (6)
              • Настройка  iptables, !*! reader, 18:06 , 25-Мрт-09 (7)
                • Настройка  iptables, !*! undel, 22:44 , 25-Мрт-09 (8)
                  >То что идет на 80 порт в инет, мимо прокси не пройдет,
                  >разве что мимо машины вообще. Все остальное пойдет через NAT, почему
                  >вам уже показали.

                  хм... может и правда на поксю идет... тогда все гуд
                  >Что значит не правельно выбирает гейт, сетевые карты eth0, eth1, eth2 меняет
                  >местами ( адреса присваивает не так как задумано) - смотрите правила
                  >udev.

                  не, с этим все верно. eth0 - вообще кабель не подключен, eth2 ghописан в /etc/network/interfaces явно и так как надо работает, eth1 - единственная карта, смотрящая наружу. Раз инет есть - значит все нормально.
                  >При прописывании прокси в браузере, nat не используется и так работу nat
                  >вы не проверите.

                  Возможно в этом все дело...





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру