Решено: Помогите грамотно открыть почтовые порты в iptables

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

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

Drizzly
Сообщения: 19
ОС: Ubuntu 8.04.2

Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение Drizzly »

Добрый день.

C iptables пытаюсь подружиться совсем недавно. Изначально настроил чтобы по умолчанию все порты кроме 80 были закрыты, C 80 в свою очередь идет переброс на порт 3128 сквида и затем через него инет раздается в локалку.
Так вот сейчас стала задача открыть всем возможность пользования почтовыми программами.
По моей логике для этого нужно открыть в iptables порты 25 и 110.
Погуглил...нашел конструкции вида

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

iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

Или для отдельных IP адресов моей сети

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

iptables -t nat -A POSTROUTING -s 192.168.х.х -p tcp --dport 110 -j MASQUERADE


Однако они задачу не решили. Почта на машинах в локалке так и не заработала/
Можете посоветовать правильную команду для iptables, решающую мою задачу.

PS. B squid все необходимые порты открыты
PSS. Дистрибутив fedora 7
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение danger08 »

Drizzly писал(а):
21.07.2009 14:10
Изначально настроил чтобы по умолчанию все порты кроме 80 были закрыты, C 80 в свою очередь идет переброс на порт 3128 сквида и затем через него инет раздается в локалку.
Так вот сейчас стала задача открыть всем возможность пользования почтовыми программами.
Во-первых, squid к почте не причем, он не проксирует почтовый трафик.

Drizzly писал(а):
21.07.2009 14:10
По моей логике для этого нужно открыть в iptables порты 25 и 110.
Погуглил...нашел конструкции вида

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

iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

Командами, которые вы привели, открывается доступ к почтовому серверу, установленному на самой прокси-машине.
Если нужно давать доступ к сторонним почтовым серверам (mail.ru etc.), то надо писать правила для транзитных соединений

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

iptables -A FORWARD -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --dport 110 -j ACCEPT
не забывая при этом разрешить форвардинг, и

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

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


Drizzly писал(а):
21.07.2009 14:10
Или для отдельных IP адресов моей сети

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

iptables -t nat -A POSTROUTING -s 192.168.х.х -p tcp --dport 110 -j MASQUERADE

Эта конструкция будет работать, но:
- фильтрацию трафика, т.е. кому куда можно ходить, лучше делать в таблице filter. Например так:

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

iptables -A FORWARD -s 192.168.x.x -p tcp -m tcp --dport 110 -j ACCEPT


Не надо выборочно NAT-ить соединения, конструкция получается нелогичной и громоздкой. Зачастую все соединения, исходящие к провайдеру, надо NAT-ить, и проще это оформить одной командой:

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

iptables -t nat -A POSTROUTING -o <provider_iface> -j MASQUERADE
а фильтровать соединения (кому куда можно) в таблице filter - она для этого и предназначена.
Блогосайт - http://www.fateyev.com
Спасибо сказали:
Drizzly
Сообщения: 19
ОС: Ubuntu 8.04.2

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение Drizzly »

Не работает ни первый вариант ни второй:(

На Linux-машине почтовые клиенты исправно работают (работали еще до моих попыток ковыряния iptables), а вот аутлуки под виндой сообщают о том что в соединении отказано.

В каком направлении еще можно покопаться?
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение danger08 »

Drizzly писал(а):
21.07.2009 15:09
Не работает ни первый вариант ни второй:(

На Linux-машине почтовые клиенты исправно работают (работали еще до моих попыток ковыряния iptables), а вот аутлуки под виндой сообщают о том что в соединении отказано.

В каком направлении еще можно покопаться?

В направлении того, какие настройки ДНС на машинах клиентов. Правильно ли им назначены ДНС-сервера? Ресольвятся ли адреса с клиентских машин?
На шлюзе надо проверить, что ip-форвардинг включен (по умолчанию, выключен).
Блогосайт - http://www.fateyev.com
Спасибо сказали:
Drizzly
Сообщения: 19
ОС: Ubuntu 8.04.2

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение Drizzly »

Сервер ДНС и DHCP поднят на этой же машине, которая является сервером и шлюзом для интернета.
На всех клиентах настройки ДНС стоят "Получать адрес ДНС автоматически". Прописывание сервера ДНС вручную на клиентских машинах ничего не меняет.

Насчет третьего вопроса -сленг не понят, гугл не помог :(. Можете более по-русски сказать что значит слово "ресольвятся"?:)

ip-форвардинг на шлюзе включен.

Еще момент. Выяснилось что почтовые клиенты работали на всех машинах до того момента как я установил сквид и настроил переброс пакетов с порта 80 на 3128. То есть вопрос был даже не в закрытых портах....я запутался в чем искать причину.....:(
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение butch »

Drizzly писал(а):
21.07.2009 14:10
По моей логике для этого нужно открыть в iptables порты 25 и 110.
и наслаждаться рассылкой спама с компов в локалке =)
danger08 писал(а):
21.07.2009 14:42
Во-первых, squid к почте не причем, он не проксирует почтовый трафик.
человек и не пытался повесить на него этот функционал
Drizzly писал(а):
21.07.2009 15:09
В каком направлении еще можно покопаться?

действительно скорее всего ваши клиенты не могут срезолвить адреса почтовых серверов.
попробуйте выполнить telnet xxx.ru 25 (по доменному имени почтового сервера (мта)) и telnet x.x.x.x 25 (по ип адресу) с клиента.
Спасибо сказали:
Drizzly
Сообщения: 19
ОС: Ubuntu 8.04.2

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение Drizzly »

действительно скорее всего ваши клиенты не могут срезолвить адреса почтовых серверов.
попробуйте выполнить telnet xxx.ru 25 (по доменному имени почтового сервера (мта)) и telnet x.x.x.x 25 (по ип адресу) с клиента.

В обоих случаях выводится

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

"Не удалось открыть подключение к этому узлу на порт 25. Сбой подключения"


:(
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение danger08 »

Drizzly писал(а):
21.07.2009 16:01
Сервер ДНС и DHCP поднят на этой же машине, которая является сервером и шлюзом для интернета.
На всех клиентах настройки ДНС стоят "Получать адрес ДНС автоматически". Прописывание сервера ДНС вручную на клиентских машинах ничего не меняет.
А использование вашего DNS-сервера разрешено? Порты 53/tcp,udp открыты у вас на шлюзе? (вот теперь в цепочке INPUT).
Даже если он у вас стоит на шлюзе, он корректно настроен? (имена разрешает в IP?)

Drizzly писал(а):
21.07.2009 16:01
Насчет третьего вопроса -сленг не понят, гугл не помог :(. Можете более по-русски сказать что значит слово "ресольвятся"?:)
это калька с английского "resolve", т.е. "имена ресольвятся" = "имена разрешаются в IP-адреса" (данному имени находится соответствие в виде IP-адреса, посредством DNS-сервера).

Drizzly писал(а):
21.07.2009 16:01
Еще момент. Выяснилось что почтовые клиенты работали на всех машинах до того момента как я установил сквид и настроил переброс пакетов с порта 80 на 3128. То есть вопрос был даже не в закрытых портах....я запутался в чем искать причину.....:(
Наверно, когда делали организацию проброса, попутно закрыли DNS. Попробуйте nslookup-ом с клиента проверить ресольвинг имен вообще.
Блогосайт - http://www.fateyev.com
Спасибо сказали:
Drizzly
Сообщения: 19
ОС: Ubuntu 8.04.2

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение Drizzly »

уфффф.....я же только учусь :wacko:

Переброс осуществлял нагугленной командой

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

-A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth1 -j MASQUERADE

....вроде про ДНС тут ничего не сказано. Как я мог его закрыть7

danger08 будьте добры конкретно привести примеры команд и строчки в кофигурационных файлов
1) Для открытия 53 порта
2) Для проверки (или разрешения) ресольвинга имен

ЗЫ Результат выполнения nslookup на клиенте

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

Default server: server.workgroup
Adress. 192.168.10.24

Это значит что с ресольвингом все в порядке?

ЗЫЫ. На всякий случай текущее состояние iptables

Код:

# Generated by iptables-save v1.3.7 on Wed Jul 22 09:31:59 2009 *mangle :PREROUTING ACCEPT [809874:530601171] :INPUT ACCEPT [532691:463640362] :FORWARD ACCEPT [277178:66960424] :OUTPUT ACCEPT [435246:193755028] :POSTROUTING ACCEPT [713557:260862213] COMMIT # Completed on Wed Jul 22 09:31:59 2009 # Generated by iptables-save v1.3.7 on Wed Jul 22 09:31:59 2009 *nat :PREROUTING ACCEPT [65843:6046476] :POSTROUTING ACCEPT [1851:168661] :OUTPUT ACCEPT [4013:316690] -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 -A POSTROUTING -o eth1 -j MASQUERADE COMMIT # Completed on Wed Jul 22 09:31:59 2009 # Generated by iptables-save v1.3.7 on Wed Jul 22 09:31:59 2009 *filter :INPUT ACCEPT [458051:423836111] :FORWARD ACCEPT [277178:66960424] :OUTPUT ACCEPT [435222:193756139] :RH-Firewall-1-INPUT - [0:0] -A INPUT -i eth1 -j RH-Firewall-1-INPUT -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT -A FORWARD -p tcp -m tcp --dport 53 -j ACCEPT -A FORWARD -p udp -m udp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT -A RH-Firewall-1-INPUT -p ah -j ACCEPT -A RH-Firewall-1-INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Wed Jul 22 09:31:59 2009

Можете на его примере пояснить что именно и как именно мне поправить?
Спасибо сказали:
Аватара пользователя
Ленивая Бестолочь
Бывший модератор
Сообщения: 2760
ОС: Debian; gentoo

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение Ленивая Бестолочь »

Drizzly писал(а):
22.07.2009 09:49
ЗЫ Результат выполнения nslookup на клиенте
Код
Default server: server.workgroup
Adress. 192.168.10.24

Это значит что с ресольвингом все в порядке?

нет.

с резолвингом все в порядке - это если

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

nslookup www.mail.ru

отдает что-то типа:

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

Server:         172.16.116.240
Address:        172.16.116.240#53

Non-authoritative answer:
Name:   www.mail.ru
Address: 217.69.128.41
Name:   www.mail.ru
Address: 217.69.128.43
Name:   www.mail.ru
Address: 217.69.128.42
Name:   www.mail.ru
Address: 217.69.128.44

строки Server и Address сверху говорят о том, с какого днс сервера получина информация.
там должен быть ваш днс сервер, если он есть или днс вашего провайдера.
Солнце садилось в море, а люди с неоконченным высшим образованием выбегали оттуда, думая, что море закипит.
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение danger08 »

Drizzly писал(а):
22.07.2009 09:49
ЗЫ Результат выполнения nslookup на клиенте

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

Default server: server.workgroup
Adress. 192.168.10.24

Это значит что с ресольвингом все в порядке?
Это пока еще ничего не значит. Попробуйте в появившемся приглашении написать имя какого-нибудь интернетовского хоста, отресольвится ли оно у вас? Например так:

машина с Виндами

Microsoft Windows XP [Версия 5.1.2600] (С) Корпорация Майкрософт, 1985-2001. C:\Documents and Settings\Денис Фатеев>nslookup Default Server: login.toodep.org Address: 192.168.16.1 > ya.ru Server: login.toodep.org Address: 192.168.16.1 Name: ya.ru Address: 213.180.204.8 >
Если видите, ya.ru отресольвилось в IP - ваш DNS работает. Если нет - значит нет.

Drizzly писал(а):
22.07.2009 09:49
Можете на его примере пояснить что именно и как именно мне поправить?
Поправить - практически все (здесь я вижу скрипт, созданный установщиком, с дефолтными настройками). Абсолютно без понимания сути настроек, и с правилами, разбросанными, где попало. Я перепишу заново, как вижу (по приведенным условиям):

Код:

# -- nat table -- *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 -A POSTROUTING -o eth1 -j MASQUERADE # ------- eth1 - сетевая, смотрящая в сторону провайдера!! COMMIT # -- filter table -- *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset -A INPUT -p tcp ! --syn -m state --state NEW -j DROP -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT -A INPUT -p udp -m state --state NEW --dport 53 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 67 -j ACCEPT -A INPUT -p udp -m state --state NEW --dport 67 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT # # --- вот эти протоколы и порты, я не знаю зачем они вам нужны - но оставил -A INPUT -p esp -j ACCEPT -A INPUT -p ah -j ACCEPT -A INPUT -d 224.0.0.251 -p udp -m udp --dport 5353 -j ACCEPT -A INPUT -p udp -m udp --dport 631 -j ACCEPT -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A INPUT -p udp -m state --state NEW -m udp --dport 137 -j ACCEPT -A INPUT -p udp -m state --state NEW -m udp --dport 138 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 139 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 445 -j ACCEPT # ---- конец блока # -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT -A FORWARD -i eth0 -o eth1 -m tcp -p tcp --dport 25 -j ACCEPT -A FORWARD -i eth0 -o eth1 -m tcp -p tcp --dport 110 -j ACCEPT -A FORWARD -i eth0 -o eth1 -m tcp -p tcp --dport 53 -j ACCEPT -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT # ---- eth0 - сетевая, смотрящая в сторону локальной сети!! COMMIT

Примерно так.
Блогосайт - http://www.fateyev.com
Спасибо сказали:
Drizzly
Сообщения: 19
ОС: Ubuntu 8.04.2

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение Drizzly »

Спасибо за помощь! Все заработало :clap3:
Спасибо сказали:
Аватара пользователя
aov
Сообщения: 44
ОС: Ubuntu 9.04

Re: Решено: Помогите грамотно открыть почтовые порты в iptables

Сообщение aov »

Всем привет!
Помогите грамотно открыть почтовые порты. Структура сети:
внутрення сеть (192.168.0.0/24) - eth0 (192.168.0.8) - ubuntu 9.04 (squid3) - eth1 (192.168.1.7) - adsl modem

Сделал так, не работает:
/sbin/iptables -A INPUT -p tcp -s 192.168.0.112 -d 192.168.0.8 --dport 3128 -i eth0 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp -m tcp --dport 110 -j ACCEPT
/sbin/iptables -I FORWARD -s 192.168.0.112 -p tcp -m multiport --dports 25,110 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Почтовые клиенты на локлаьных машиных не работают
Спасибо сказали: