Ошибка в конфигурации iptables (не получет и не отправляет почту)

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

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

georgir
Сообщения: 4

Ошибка в конфигурации iptables

Сообщение georgir »

Доброго времени суток. Воспользовавшись данным на первой странице мануалом пытаюсь написать себе конфигурацию для шлюза, брандмауэра и почтового сервера в одном.

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

#                                               eth0                      eth1
#          Внутренняя сеть --------------------[ маршрутизатор ]---------------------- Internet
#         10.0.1.0/24              10.0.1.1           внешний ip-адрес           81.9.18.237



OUR_NET = "10.0.1.0/24"
IPT = "iptables"

sysctl -w net.ipv4.ip_forward="1"
# здесь можно использовать echo 1 > /proc/sys/net/ipv4/ip_forward

$IPT -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 81.9.18.237

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

#Разрешим входящие соединения на маршрутизатор с внутренней сети (для управления)

$IPT -A INPUT -i eth0 --source $OUR_NET --match state --state NEW,ESTABLISHED -j ACCEPT

#Разрешим маршрутизатору отвечать компьютерам во внутренней сети:

$IPT -A OUTPUT -o eth0 --destination $OUR_NET --match state --state NEW,ESTABLISHED -j ACCEPT

#Разрешим перенаправление пакетов из внутренней сети во внешнюю для установки соединений и установленных соединений:

$IPT -A FORWARD -i eth0 --source $OUR_NET --destination 0.0.0.0/0 --match state --state NEW,ESTABLISHED -j ACCEPT

#Разрешим перенаправление пакетов из интернета во внутреннюю сеть только для установленных соединений:

$IPT -A FORWARD -i eth1 --destination $OUR_NET --match state --state ESTABLISHED -j ACCEPT

#Разрешим подключатся к vpn

$IPT -A INPUT -p TCP --dport 1723 -j ACCEPT
$IPT -A INPUT -p 47 -j ACCEPT
$IPT -A OUTPUT -p TCP --dport 1723 -j ACCEPT
$IPT -A OUTPUT -p 47 -j ACCEPT

#Разрешим трафик SMTP, POP, IMAP, UDP, HTTP/HTTPS

$IPT -A INPUT -p TCP --dport 25,110,143,80,443 -j ACCEPT
$IPT -A OUTPUT -p TCP --dport 25,110,143,80,443 -j ACCEPT
$IPT -A INPUT -p UDP --dport 87 -j ACCEPT
$IPT -A OUTPUT -p UDP --dport 87 -j ACCEPT

#Блокируем icmp трафик, не нужен он нам вообще

$IPT -A INPUT --fragment -p ICMP -j DROP
$IPT -A OUTPUT --fragment -p ICMP -j DROP


Где в данной конфигурации закралась ошибка? Прошу дать более менее развернутое описание, или указание на неработающую цепочку
Спасибо сказали:
Tokra
Сообщения: 399

Re: Ошибка в конфигурации iptables

Сообщение Tokra »

georgir писал(а):
07.07.2009 12:46
Доброго времени суток. Воспользовавшись данным на первой странице мануалом пытаюсь написать себе конфигурацию для шлюза, брандмауэра и почтового сервера в одном.


$IPT -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 81.9.18.237

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

Первое, что бросилось в глаза. Первая должна идти политика по умолчанию, а потом все остальное. А у Вас сначало идет SNAT, а затем уже политика по умолчанию.

Все правила должны идти после блока
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
Спасибо сказали:
skor
Сообщения: 419
ОС: RTFM-OS v127.0.0.1

Re: Ошибка в конфигурации iptables

Сообщение skor »

georgir писал(а):
07.07.2009 12:46

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


$IPT -A INPUT -p TCP --dport 25,110,143,80,443 -j ACCEPT
$IPT -A OUTPUT -p TCP --dport 25,110,143,80,443 -j ACCEPT
$IPT -A INPUT -p UDP --dport 87 -j ACCEPT
$IPT -A OUTPUT -p UDP --dport 87 -j ACCEPT
Про DNS забыли (UDP 53) и зачем 87 UDP порт (это вообще чего такое)?
В логах почтового сервера должны были быть сообщения о невозможности определить MX-сервера для отправки почты.
С получением немного сложнее. Зависит от настроек почтового сервера, где расположен DNS-сервер обслуживающий ваш домен, и т.д. и т.п.
И пользователям дейстивтельно надо давать полный доступ через NAT в интрнет?
Может 25й порт, кроме своего сервера, стоит запретить? А то ведь поймает пользователь вирус и начнет слать всем и всюду.


Tokra писал(а):
07.07.2009 21:34
Первое, что бросилось в глаза. Первая должна идти политика по умолчанию, а потом все остальное. А у Вас сначало идет SNAT, а затем уже политика по умолчанию.

Все правила должны идти после блока
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
Тут вроде все нормально, это разные таблицы, и указывать дефолтное состояние цепочки вроде все равно когда (это правило окажется "последним" в цепочке)
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Ошибка в конфигурации iptables

Сообщение butch »

перед правилами
$IPT -A INPUT -p TCP --dport 25,110,143,80,443 -j ACCEPT
$IPT -A OUTPUT -p TCP --dport 25,110,143,80,443 -j ACCEPT
ставим точно такие же но с -j LOG и смотрим логи.

и как то не принято внешний айпи демонстрировать.
но вообще никапли не похоже что на твоем хосте есть почта:

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

butch@anton-f:~$ telnet 81.9.18.237 25
Trying 81.9.18.237...
telnet: Unable to connect to remote host: Connection refused
butch@anton-f:~$ host 81.9.18.237
Host 237.18.9.81.in-addr.arpa. not found: 3(NXDOMAIN)

ни на 25 порту никто не ответил, ни птр нету. есть над чем работать ;)

georgir писал(а):
07.07.2009 12:46
#Блокируем icmp трафик, не нужен он нам вообще

$IPT -A INPUT --fragment -p ICMP -j DROP
$IPT -A OUTPUT --fragment -p ICMP -j DROP

ты уверен что блокируешь весь вообще icmp? =)

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

butch@anton-f:~$ ping -s 5800 81.9.18.237
PING 81.9.18.237 (81.9.18.237) 5800(5828) bytes of data.
5808 bytes from 81.9.18.237: icmp_seq=1 ttl=57 time=141 ms
5808 bytes from 81.9.18.237: icmp_seq=2 ttl=57 time=141 ms
5808 bytes from 81.9.18.237: icmp_seq=3 ttl=57 time=142 ms
^C
--- 81.9.18.237 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2006ms
rtt min/avg/max/mdev = 141.749/141.963/142.204/0.359 ms

* [!] -f, --fragment

Ограничение пр фрагментам: критерию соответствуют только фрагменты пакета, начиная со второго фрагмента. Знак «!» перед адресом изменяет критерий на противоположенный.

странно, но даже пакет размером >3000 пролезает =)
или чета я не понимаю.
или тырнет у тебя подымает другая железка.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Ошибка в конфигурации iptables

Сообщение butch »

а чуть не забыл.
netstat -an | grep -E '(25|110)'
на нужном интерфейсе порты открыты?
(чуть кавычки в греп не забыл -))
Спасибо сказали:
georgir
Сообщения: 4

Re: Ошибка в конфигурации iptables

Сообщение georgir »

Ну ip могли не сканировать я его вообще с потолка взял :) удивлен что попал :)
Действительно, проблема была в 53 порту, добавил и заработало. 87 порт это для клиент-банка
всем спасибо
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Ошибка в конфигурации iptables

Сообщение butch »

georgir, на будущее иксами заменяйте ;)
georgir писал(а):
08.07.2009 10:39
87 порт это для клиент-банка

и что делают правила для клиент банка в инпут\аутпут?
Спасибо сказали:
georgir
Сообщения: 4

Re: Ошибка в конфигурации iptables

Сообщение georgir »

butch писал(а):
08.07.2009 11:35
georgir, на будущее иксами заменяйте ;)
georgir писал(а):
08.07.2009 10:39
87 порт это для клиент-банка

и что делают правила для клиент банка в инпут\аутпут?

мм, а что не так? как понимаю соединения udp протокол не делает, то есть состояния established не имеет (хотя надо почитать), вот и открыл. Если не правильно, не откажусь выслушать совет ;)
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: Ошибка в конфигурации iptables

Сообщение butch »

georgir писал(а):
08.07.2009 12:30
соединения udp протокол не делает, то есть состояния established не имеет

oO как бы нет. но иптэблс всеравно понимает правила с established для удп.

клиент банк установлен на компе в локалке? тогда пакеты от компа в локалке, идущие к серверу банка не попадут в инпут\аутпут на пограничном шлюзе.
они будут в форвард ;)
Спасибо сказали:
georgir
Сообщения: 4

Re: Ошибка в конфигурации iptables

Сообщение georgir »

butch писал(а):
08.07.2009 15:56
georgir писал(а):
08.07.2009 12:30
соединения udp протокол не делает, то есть состояния established не имеет

oO как бы нет. но иптэблс всеравно понимает правила с established для удп.

клиент банк установлен на компе в локалке? тогда пакеты от компа в локалке, идущие к серверу банка не попадут в инпут\аутпут на пограничном шлюзе.
они будут в форвард ;)


о, так значит вообще правило не нужно. кстати, убрал, все равно работает. спасибо за подсказку :)
Спасибо сказали: