The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Настройка  iptables"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"Настройка  iptables"  
Сообщение от undel email(ok) on 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 для проверки трафика на вирусы

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

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

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Настройка  iptables"  
Сообщение от reader (ok) on 24-Мрт-09, 12:42 
так а что не работает, как проверяете, как клиент настроен?

если не ошибаюсь, то havp не работает в прозрачном режиме.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Настройка  iptables"  
Сообщение от undel email(ok) on 24-Мрт-09, 20:00 
>так а что не работает, как проверяете, как клиент настроен?
>
>если не ошибаюсь, то havp не работает в прозрачном режиме.

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Настройка  iptables"  
Сообщение от reader (ok) on 24-Мрт-09, 20:34 
>>так а что не работает, как проверяете, как клиент настроен?
>>
>>если не ошибаюсь, то havp не работает в прозрачном режиме.
>
>С самогtcpо шлюза инет есть, а с клиентов - нет. Судя по
>tcpdump маскарадинг не работает.
>Про havp спасибо.

уверены?
iptables-save -c    до и после проверки и будите видеть какие правила сработали.
tcpdump запросы от клиентов видит?
чем проверяете? браузером? браузер настроен на работу через прокси? у клиента шлюз и DNS прописан?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Настройка  iptables"  
Сообщение от undel (ok) on 25-Мрт-09, 09:57 
>iptables-save -c    до и после проверки и будите видеть
>какие правила сработали.

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

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

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


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Настройка  iptables"  
Сообщение от Undel email on 25-Мрт-09, 15:06 
итак... кажется, разобрался почти... вот стаким конфигом все работает, но пользователи могут почему-то ходить напрямую в Интернет минуя проксю, хотя последняя строка явно дропает весь трафик, который не подходит под правила.
************************************************************
#!/bin/sh

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

INET_IP="0/0" #Ваш внешний IP - если динамический - то 0/0
INET_IFACE="ppp0" #Ваш интерфейс в интернет (ppp,ippp,eth)
#INET_BROADCAST="212.96.100.255" #Броадкаст(нужен, если есть статический ip в интернет)

#
# Конфигурация 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 FORWARD -p TCP --dport 25 -j ACCEPT
$IPTABLES -A FORWARD -p TCP --dport 110 -j ACCEPT
$IPTABLES -A FORWARD -p TCP --sport 25 -j ACCEPT
$IPTABLES -A FORWARD -p TCP --sport 110 -j ACCEPT
$IPTABLES -A INPUT -p TCP --dport 3128 -j ACCEPT
$IPTABLES -A OUTPUT -p TCP --dport 3128 -j ACCEPT
#$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 PREROUTING -i $LAN_IFACE -d ! $LAN_IP_RANGE -p tcp --dport 80 -j REDIRECT --to-port 3128

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

$IPTABLES -A INPUT -j DROP

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Настройка  iptables"  
Сообщение от Andrey Mirofanov on 25-Мрт-09, 17:14 
>итак... кажется, разобрался почти...
>могут почему-то ходить напрямую в Интернет
>последняя строка явно дропает весь трафик, который не

Кажется. Не разобрался, не последняя строка, не дропает, не весь, не все-в-Интернет.

>$IPTABLES -P FORWARD DROP

"Пользователей" по идее дропает это правило (политика), а не последнее...

>$IPTABLES -A FORWARD -p TCP --dport 25 -j ACCEPT
>$IPTABLES -A FORWARD -p TCP --dport 110 -j ACCEPT
>$IPTABLES -A FORWARD -p TCP --sport 25 -j ACCEPT
>$IPTABLES -A FORWARD -p TCP --sport 110 -j ACCEPT
>$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
>#$IPTABLES -A FORWARD -i $LAN_IFACE -j ACCEPT
>#$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

А вот почему "все ходють" -- не знаю. Лениво...

См.также
http:/openforum/vsluhforumID1/81486.html#4 && #5
+про "этот скрипт" http:/openforum/vsluhforumID10/3929.html#1
+про "стейтфул" http:/openforum/vsluhforumID10/4075.html#6

Соберусь - накропаю "бесплатных образцов", сейчас времени нет.

>$IPTABLES -A INPUT -j DROP

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Настройка  iptables"  
Сообщение от reader (ok) on 25-Мрт-09, 18:06 
То что идет на 80 порт в инет, мимо прокси не пройдет, разве что мимо машины вообще. Все остальное пойдет через NAT, почему вам уже показали.
Что значит не правельно выбирает гейт, сетевые карты eth0, eth1, eth2 меняет местами ( адреса присваивает не так как задумано) - смотрите правила udev.
При прописывании прокси в браузере, nat не используется и так работу nat вы не проверите.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Настройка  iptables"  
Сообщение от undel (ok) on 25-Мрт-09, 22:44 
>То что идет на 80 порт в инет, мимо прокси не пройдет,
>разве что мимо машины вообще. Все остальное пойдет через NAT, почему
>вам уже показали.

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

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

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


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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