Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / IPTables. Не работает почта через шлюз / 16 сообщений из 16, страница 1 из 1
28.11.2007, 10:30:35
    #34970836
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Добрый день. Помогите разобраться в проблемой. Не работает почта через NAT. Вот такой скрипт задает правила для iptables

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
#!/bin/bash
#
	clear
# Задаем переменую для быстрого обращения
	IPTABLES="/sbin/iptables"
        $IPTABLES -F
        $IPTABLES -X
#  Конфигурация инет интерфейса
	INET_IP="xxx.xx.xxx.xx"
	INET_IFACE="ppp0"
# Конфигурация локального интерфейса
	LAN_IP="192.168.0.123"
	LAN_IP_RANGE="192.168.0.0/24"
	LAN_IFACE="eth0"
# Loopback интерфейс
	LO_IFACE="lo"
	LO_IP="127.0.0.1"
# Задаем переменую для быстрого обращения
#	IPTABLES="/sbin/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
#  Включаем маршрутизацию пакетов
        echo "1" > /proc/sys/net/ipv4/ip_forward
        #echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
        #echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
        #echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# Установка политик по умолчанию
        $IPTABLES -P INPUT DROP
        $IPTABLES -P OUTPUT DROP
        $IPTABLES -P FORWARD DROP
# удаляем все имеющиеся правила
# МОЖЕТ ЭТО НАДО НАВЕРХ В САМОЕ НАЧАЛО СКРИПТА???
        $IPTABLES -F
	$IPTABLES -X
# создаем свои цепочки
# отбрасываем tcp с неправильными флагами
         $IPTABLES -N bad_tcp_packets
# tcp, прошедшие основную проверку
#         $IPTABLES -N allowed
# все пакеты соотв. протоколов
        $IPTABLES -N icmp_packets
# пакеты из локальной сети
	$IPTABLES -N fromlan-to-server	
# TCP пакеты из инета на сервер
	$IPTABLES -N TCP-from-inet-to-server	

# UDP пакеты из инета на сервер
	$IPTABLES -N UDP-from-inet-to-server	



# безусловно разрешаем соединения по локальному интерфейсу (loopback,  127 . 0 . 0 . 1 )
#         $IPTABLES -A INPUT -i lo -j ACCEPT
#         $IPTABLES -A OUTPUT -o lo -j ACCEPT

# сюда пойдут все tcp-пакеты, и будут отброшены имеющие статус NEW, но не имеющие флагов SYN,ACK
	# предохраняет от определенных типов атак, подробности в приложении B4 к Iptables Tutorial
        $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
#	$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 LOG --log-prefix "New not syn:"
	$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# сюда пойдут пакеты из локальной сети на сервер
	# на sqiud
        $IPTABLES -A fromlan-to-server -p tcp --dst $LAN_IP --src $LAN_IP_RANGE --dport 4480 -j ACCEPT
#	$IPTABLES -A fromlan-to-server -p tcp --dst $LAN_IP --src $LAN_IP_RANGE --dport 3128 -j ACCEPT
        # от меня на управление через SSH 
        $IPTABLES -A fromlan-to-server -p tcp --dst $LAN_IP --dport 22 --src 192.168.0.13 -j ACCEPT
#	$IPTABLES -A fromlan-to-server -p tcp --dst $LAN_IP --dport 22 --src 192.168.0.1 -j ACCEPT        
        # для номальной работы DHCP 
	$IPTABLES -A fromlan-to-server -p UDP --dport 67 --sport 68 -j ACCEPT
	# остальные убиваем
        $IPTABLES -A fromlan-to-server -p ALL -j DROP



# сюда пойдут паеты из инета
# UDP
#       	$IPTABLES -A UDP-from-inet-to-server -p UDP -s  0 / 0  --sport 53  -j ACCEPT
#       	$IPTABLES -A UDP-from-inet-to-server -j DROP


# TCP
# принимаем все пакеты, относящиеся к уже установленным соединениям
        $IPTABLES -A TCP-from-inet-to-server -p TCP --syn -j ACCEPT
        $IPTABLES -A TCP-from-inet-to-server -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT 
	# остальные убиваем
        $IPTABLES -A TCP-from-inet-to-server -j DROP


# настал черед ICMP
# разрешаем необходимые типы
        $IPTABLES -A icmp_packets -p ICMP -s  0 / 0  --icmp-type 3 -j ACCEPT # Dest unreachable
        $IPTABLES -A icmp_packets -p ICMP -s  0 / 0  --icmp-type 11 -j ACCEPT # Time exceeded
        $IPTABLES -A icmp_packets -p ICMP -s  0 / 0  --icmp-type 12 -j ACCEPT # Parameter problem
# и отбрасываем пинг (в принципе, он и так отбрасывается действием # по умолчанию, но это правило для возможного редактирования)
        $IPTABLES -A icmp_packets -p ICMP -s  0 / 0  --icmp-type 8 -j DROP # Ping
# следующим правилом можно заменить предыдущее, тогда при пинговании 
# нашей машины вместо сообщения о таймауте будет приходить сообщение 
# Host unreachable
#$IPTABLES -A icmp_packets -p ICMP -s  0 / 0  --icmp-type 8 -j REJECT --reject-with icmp-host-unreachable



# разводим пакеты по соотв. цепочкам
# Если из локальной сети с указанного диапазона адресов 
        $IPTABLES -A INPUT -p ALL -i $LAN_IFACE --src $LAN_IP_RANGE -j fromlan-to-server
# Для уже установленных соединений пропускаем иначе обрубаем
	$IPTABLES -A INPUT -p ALL -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
# Если из инета TCP
	# сразу отбрасываем плохие пакеты
        $IPTABLES -A INPUT -p TCP -i $INET_IFACE -j bad_tcp_packets	
	$IPTABLES -A INPUT -p TCP -i $INET_IFACE -s $LAN_IP_RANGE -j DROP # пакеты 
	# для Loopback интерфейса. Разрешаем во все направления с сервера отправлять пакеты 
	$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 TCP -i $INET_IFACE -j TCP-from-inet-to-server
# Если из инета UDP
#	$IPTABLES -A INPUT -p UDP -i $INET_IFACE -j UDP-from-inet-to-server
# Если из инета ICMP
        $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets

# Для нормальной работы почты и DNS запросов (NAT)
# Цепочка FORWARD
        $IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
	# Почта
	$IPTABLES -A FORWARD -i $LAN_IFACE -p tcp  --dport 25 -j ACCEPT
	$IPTABLES -A FORWARD -i $LAN_IFACE -p tcp  --dport 110 -j ACCEPT
	$IPTABLES -A FORWARD -i $LAN_IFACE -p tcp  --dport 143 -j ACCEPT
	# DNS
	$IPTABLES -A FORWARD -i $LAN_IFACE -p udp --dport 53 -j ACCEPT
	# Осел входящие
#	$IPTABLES -A FORWARD -i $INET_IFACE -p tcp --sport 4662  -j ACCEPT
#	$IPTABLES -A FORWARD -i $INET_IFACE -p udp --sport 4672 -j ACCEPT
	# ---
#        $IPTABLES -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
	# а может так все-таки так
	$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
        $IPTABLES -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG \
--log-level DEBUG --log-prefix "IPT FORWARD packet died: "
	$IPTABLES -A FORWARD -j DROP

      	# Производим сетевую трансляцию адресов (NAT)
	$IPTABLES -t nat -A POSTROUTING -s $LAN_IP_RANGE -o $INET_IFACE -j SNAT --to-source $INET_IP
	    
	# Для нормальной трансляции пакетов для ОСЛИКА из инета на мою тачку
	# TCP порты
#	$IPTABLES -t nat -A PREROUTING -p tcp -i $INET_FACE --dport  4662-j DNAT --to-destination 192.168.0.13
	# UDP порты                                                     
#	$IPTABLES -t nat -A PREROUTING -p udp -i $INET_FACE --dport 4672 -j DNAT --to-destination 192.168.0.13
# Цепочка OUTPUT
       	$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
#	$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -d $LAN_IP_RANGE -j ACCEPT
       	$IPTABLES -A OUTPUT -p ALL -s $LAN_IP -d $LAN_IP_RANGE -j ACCEPT
       	$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
	$IPTABLES -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG \
                   --log-level DEBUG --log-prefix "IPT OUTPUT packet died: "
...
Рейтинг: 0 / 0
28.11.2007, 11:51:24
    #34971174
RAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Код: plaintext
1.
2.
# сюда пойдут все tcp-пакеты, и будут отброшены имеющие статус NEW, но _не_ имеющие флагов SYN,ACK
        # предохраняет от определенных типов атак, подробности в приложении B4 к Iptables Tutorial
        $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP

Вы это откуда с copy-paste'ли? Первым же правилом режутся именно SYN+ACK пакеты, в тоже время защита от досов типа SYN+FIN и т.д. в цепочке отсутствует, если под "определенными" атаками имелось именно это. Не морочьте голову людям, найдите более адекватный гид по iptables.
...
Рейтинг: 0 / 0
28.11.2007, 14:42:28
    #34971922
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
RAndrewПервым же правилом режутся именно SYN+ACK пакеты ....
Это в каком месте скрипта если не секрет? Может эта цепочка: bad_tcp_packets режет только новые пакеты? Поясните свое раздражение, пока ничем не подкрепленное...
...
Рейтинг: 0 / 0
28.11.2007, 15:40:30
    #34972216
RAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
раздражение? огорчение, что потратил 5 минут на попытки понять кучу, слепленную из подобных вещей:

Код: plaintext
1.
2.
3.
4.
5.
# сюда пойдут все tcp-пакеты, и будут отброшены имеющие статус NEW, но не имеющие флагов SYN,ACK
        # предохраняет от определенных типов атак, подробности в приложении B4 к Iptables Tutorial
        $IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP
#       $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 LOG --log-prefix "New not syn:"
        $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

Вы можете объяснить как комментарий к цепочке соотносится с тем, что делает эта цепочка на самом деле? Я вот, например, вижу, что пакет, к примеру, SYN+FIN благополучно пройдёт все эти правила, если у вас другое мнение, то укажите, какое правило отбросит этот пакет.

Возможно, что conntrack считает, что соединение установлено сразу после прихода SYN, а не после того как получено подтверждение на установку соединения, что, имхо, не совсем правильно, тогда единственное, что эта цепочка делает -- это отбрасывает пакеты SYN+ACK, на которые SYN запросы и не приходили, плюс отбрасывает не syn пакеты.

А учитывая, что ранее, по цепочке прохождения пакета, все ESTABLISHED и RELATED пакеты приняты, то великий смысл применения модуля state в цепочке bad_tcp_packets теряется, а за ним и весь смысл самой цепочки.
...
Рейтинг: 0 / 0
28.11.2007, 16:55:33
    #34972594
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Почему же почта не работает? Потому что это правило в начале цепочки FORWARD?
...
Рейтинг: 0 / 0
28.11.2007, 17:13:51
    #34972662
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Скрипт я брал первоначально из http://]http://www.opennet.ru/docs/RUS/iptables/misc/iptables-tutorial/scripts/rc.firewall.txt и в нет так и написанно как у меня.
...
Рейтинг: 0 / 0
28.11.2007, 18:06:42
    #34972883
RAndrew
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
НиктоСкрипт я брал первоначально из http://]http://www.opennet.ru/docs/RUS/iptables/misc/iptables-tutorial/scripts/rc.firewall.txt и в нет так и написанно как у меня.

А чем этот фаервол не нравится? Не самый лучший, скорее написан как более читаемый, чем оптимизированный, но рабочий.

У вас почта не работает, потому что вы взяли рабочий скрипт и наломали в нём дров. Судя по всему делали это по какому-то гиду, но то ли гид не понятный, то ли вы его не внимательно читали, поэтому я и говорю, найдите другой, покороче и попонятней, где меньше кода и больше идеологии, необходимой для понимания, благо гидов по iptables в инете навалом. Или есть другой вариант: вы говорите, что меняли в скрипте и какие цели преследовали и тогда на форуме кто-нить вам ответит в чём ваша ошибка, если будет время и желание.

P.S. почта не работает -- в чем это выражается?
...
Рейтинг: 0 / 0
29.11.2007, 09:19:27
    #34973742
DeBosheZz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
жесть ...

***

This is the end ...
...
Рейтинг: 0 / 0
29.11.2007, 10:06:02
    #34973849
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
RAndrewP.S. почта не работает -- в чем это выражается?
Пакеты уходят с моего компа на $INET_IFACE а вот назад не возвращаются.
Но я как понял мне никто здесь не поможет... Одни упреки. Все неправильно. Но ничего конкретного. Жаль...
...
Рейтинг: 0 / 0
29.11.2007, 10:07:00
    #34973854
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
С моего компа это всмысле из сети локальной - 192.168.0.x
...
Рейтинг: 0 / 0
29.11.2007, 14:52:37
    #34975156
Biz©
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Никто RAndrewP.S. почта не работает -- в чем это выражается?
Пакеты уходят с моего компа на $INET_IFACE а вот назад не возвращаются.
Но я как понял мне никто здесь не поможет... Одни упреки. Все неправильно. Но ничего конкретного. Жаль...
акцепт для эстаблишед, релэйтед - в начало всех трёх главных чейнсов
...
Рейтинг: 0 / 0
30.11.2007, 11:04:04
    #34977304
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Я всегда добавляю
# $IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

Кстати, а форвардинг включен?
...
Рейтинг: 0 / 0
01.12.2007, 16:28:39
    #34979756
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Вы скрипт смотрите? Читаете?
Код: plaintext
1.
2.
#  Включаем маршрутизацию пакетов
        echo "1" > /proc/sys/net/ipv4/ip_forward
и эта строчка
Код: plaintext
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
тоже у меня есть.
Дело в том что мне нужно форвадить только порты для почтовиков и dns запросов.
акцепт для эстаблишед, релэйтед - в начало всех трёх главных чейнсов
Цепочка bad_tcp_packets делает то же самое, только по принципу с точностью до наоборот. Предлагаете разрешить эстаблишед, релэйтед, я же просто дропаю NEW. Если он не новый пакет продолжает проверяться по следующим правилам, правильно? Кстати для цепочки FORWARD имеет значение вот этот параметр -i $LAN_IFACE или он игнорируется?
...
Рейтинг: 0 / 0
01.12.2007, 19:15:01
    #34979887
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
авторВы скрипт смотрите? Читаете?

# Включаем маршрутизацию пакетов
echo "1" > /proc/sys/net/ipv4/ip_forward
бегло, в линуксе форвардинг включается по другомуб, в /etc/sysctl.conf. Ну тогда
# tcpdump -npi eth1 port 25 and host xxx.xxx.xxx.xxx

и покажи результат.

где xxx.xxx.xxx.xxx например smtp.mail.ru
...
Рейтинг: 0 / 0
03.12.2007, 17:36:27
    #34983092
Никто
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
Заработало. не знаю что было не так. правила те же.
Включил вот этот параметр
Код: plaintext
1.
2.
# Controls IP packet forwarding
net.ipv4.ip_forward =  1 
из-за него. что очень вероятно... везде в примерах написанно что включать форвадинг вот так
Код: plaintext
echo "1" > /proc/sys/net/ipv4/ip_forward
Еще загрузился на прошлом ядре. но думаю что это не при чем.
Всем спасибо. Особенно ALex_hha. Натолкнул на мысль, что неправильно сделано.
...
Рейтинг: 0 / 0
05.12.2007, 15:15:47
    #34988514
ALex_hha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
IPTables. Не работает почта через шлюз
авторecho "1" > /proc/sys/net/ipv4/ip_forward
так можно на время тестирования включать. После перезагрузки, установится значение, прописанное в /etc/sysctl.conf

автор# Controls IP packet forwarding
net.ipv4.ip_forward = 1
а так, если нужно постоянно
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / IPTables. Не работает почта через шлюз / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]