sendmail и iptables

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Vinyl
проходил мимо

sendmail и iptables

Непрочитанное сообщение Vinyl » 2013-04-06 14:51:35

Доброго времени.
Настраиваю iptables на сервере Debian 6 (VPS, KVM).
На сервере снаружи нужна видимость только nginx(80) и ssh(22).
Также, нужно обеспечить работу sendmail(25,587)

Установил правила

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

#!/bin/bash

# сбрасываем все ранее установленные правила
iptables -F
iptables -t nat -F
iptables -t mangle -F
 
iptables -X
iptables -t nat -X
iptables -t mangle -X


# по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

 
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT  -p tcp --dport 25 -j ACCEPT
iptables -A INPUT  -p tcp --sport 25 -j ACCEPT
 
iptables -A INPUT  -p udp --dport 25 -j ACCEPT
iptables -A INPUT  -p udp --sport 25 -j ACCEPT
 
iptables -A OUTPUT -p tcp --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 25 -j ACCEPT
 
iptables -A OUTPUT -p udp --dport 25 -j ACCEPT
iptables -A OUTPUT -p udp --sport 25 -j ACCEPT

iptables -A INPUT  -p tcp --dport 587 -j ACCEPT
iptables -A INPUT  -p tcp --sport 587 -j ACCEPT
 
iptables -A INPUT  -p udp --dport 587 -j ACCEPT
iptables -A INPUT  -p udp --sport 587 -j ACCEPT
 
iptables -A OUTPUT -p tcp --dport 587 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 587 -j ACCEPT
 
iptables -A OUTPUT -p udp --dport 587 -j ACCEPT
iptables -A OUTPUT -p udp --sport 587 -j ACCEPT
После установки таких правил sendmail не отправляет почту. Как только сбросишь настройки iptables, сразу начинают письма сыпаться в ящик (как будто в очереди стояли). В /var/log/mail.log, /var/log/mail.warn, /var/log/syslog и /var/log/messages ничего. Подскажите, где я ошибся. Спасибо.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

BlitzKrieg
ст. прапорщик
Сообщения: 538
Зарегистрирован: 2008-03-13 12:02:59

Re: sendmail и iptables

Непрочитанное сообщение BlitzKrieg » 2013-04-06 17:31:29

Прекратите бездумно копипастить правила с идиотских статей.

Сбрасывать ничего не нужно.
Не знаю как в дебиане подгружаются правила, но в убунте достаточно добавить в /etc/network/interfaces строку pre-up iptables-restore</etc/iptables/iptables.rules
Сам файл iptables.rules создается так iptables-save>/etc/iptables/iptables.rules
или с ключом -c Для того, чтобы сохранить счетчики (например удобно, когда нужно сократить кол-во порядком выросших правил).

По поводу правил. Для удобства давно существует conntrack.

Напирмер так будет выглядеть цепочка INPUT и OUTPUT для вашего ssh (без лишних заморочек с секурностью).

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

iptables -A INPUT LOG
iptables -A INPUT DROP
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT LOG
iptables -A OUTPUT DROP
iptables -I OUTPUT-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Теперь для того, чтобы открыть 25 порт достаточно в INPUT добавить одно правило.

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

iptables -I INPUT -p tcp --dport 25 -j ACCEPT
Почитайте например это для начала: https://help.ubuntu.com/community/IptablesHowTo

BlitzKrieg
ст. прапорщик
Сообщения: 538
Зарегистрирован: 2008-03-13 12:02:59

Re: sendmail и iptables

Непрочитанное сообщение BlitzKrieg » 2013-04-06 17:42:08

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

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

iptables -I INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -m conntrack --ctstate NEW -p tcp --dport 25 -j ACCEPT

Vinyl
проходил мимо

Re: sendmail и iptables

Непрочитанное сообщение Vinyl » 2013-04-06 17:58:58

BlitzKrieg писал(а):Прекратите бездумно копипастить правила с идиотских статей.
Я сколько не пытался вникнуть в iptables - все безуспешно. Так что пока это мой единственный выход.
BlitzKrieg писал(а):По поводу правил. Для удобства давно существует conntrack.

Напирмер так будет выглядеть цепочка INPUT и OUTPUT для вашего ssh (без лишних заморочек с секурностью).

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

iptables -A INPUT LOG
iptables -A INPUT DROP
iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

iptables -A OUTPUT LOG
iptables -A OUTPUT DROP
iptables -I OUTPUT-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Теперь для того, чтобы открыть 25 порт достаточно в INPUT добавить одно правило.

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

iptables -I INPUT -p tcp --dport 25 -j ACCEPT

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

Bad argument `LOG'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROP'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `LOG'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `DROP'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.8: Invalid rule number `conntrack'
Try `iptables -h' or 'iptables --help' for more information.
BlitzKrieg писал(а):Почитайте например это для начала: https://help.ubuntu.com/community/IptablesHowTo
Я на русском-то сколько книг-мануалов перечитал и никак, а тут на английском.. ))

BlitzKrieg
ст. прапорщик
Сообщения: 538
Зарегистрирован: 2008-03-13 12:02:59

Re: sendmail и iptables

Непрочитанное сообщение BlitzKrieg » 2013-04-06 18:43:41

Да я ошибся

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

iptables -A OUTPUT LOG
тут забыл добавить -j

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

iptables -I OUTPUT-m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
здесь пробела перед -m нет
говорю же прекратите тупо копипастить. Возьмите правила по одному и добавляйте. Параллельно проверяйте синтаксис.
По этой ссылке хауту и не какое-то идеотское.

BlitzKrieg
ст. прапорщик
Сообщения: 538
Зарегистрирован: 2008-03-13 12:02:59

Re: sendmail и iptables

Непрочитанное сообщение BlitzKrieg » 2013-04-08 10:08:37

Кстати если у вас такие проблемы с iptables воспользуйтесь fwbuilder http://www.fwbuilder.org/4.0/quick_star ... uick_start