URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 3982
[ Назад ]

Исходное сообщение
"iptables+RHEL5 - зависает работа"

Отправлено BearMK , 22-Сен-08 13:52 
Вообщем настроена машина шлюзом в интернет под RedHat Enterprise 5 - iptables фаервол
Разрешенно определённым машинам (по мак адресам) по определённым портам (80,81,110,25) доступ в интернет
Всё работает, но проявляется неприятная ситуация
через промежуток времени перестают на клиентских машинах открываться странички и получаться почта
В чём может быть проблема? И ещё может конфиг как то усовершенствовать? Зарание благодарен за помощь!
Вот конфиг iptables:
# Generated by iptables-save v1.3.5 on Mon Sep 22 11:05:08 2008
*nat
:PREROUTING ACCEPT [160:17336]
:POSTROUTING ACCEPT [126:7719]
:OUTPUT ACCEPT [139:10053]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Sep 22 11:05:08 2008
# Generated by iptables-save v1.3.5 on Mon Sep 22 11:05:08 2008
*filter
:INPUT DROP [196:22233]
:FORWARD DROP [3:136]
:OUTPUT DROP [0:0]
:allowed - [0:0]
:bad_tcp_packets - [0:0]
:icmp_packets - [0:0]
:tcp_packets - [0:0]
:udp_packets - [0:0]
-A INPUT -s 192.168.0.0/255.255.0.0 -i eth1 -j ACCEPT
-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
-A INPUT -s 192.168.2.88 -i lo -j ACCEPT
-A INPUT -s 192.168.2.3 -i lo -j ACCEPT
-A INPUT -i eth1 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A INPUT -d 192.168.2.3 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -j tcp_packets
-A INPUT -i eth0 -p udp -j udp_packets
-A INPUT -i eth0 -p icmp -j icmp_packets
-A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT_INPUT_packet_died:" --log-level 7
-A FORWARD -i eth1 -m mac --mac-source 00:04:4B:80:80:03 -j ACCEPT
-A FORWARD -i eth1 -j DROP
-A FORWARD -o eth1 -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT_FORWARD_packet_died:" --log-level 7
-A OUTPUT -p tcp -j bad_tcp_packets
-A OUTPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -s 192.168.2.88 -j ACCEPT
-A OUTPUT -s 192.168.2.3 -j ACCEPT
-A OUTPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT_INPUT_packet_died:" --log-level 7
-A allowed -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A allowed -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A allowed -p tcp -j DROP
-A bad_tcp_packets -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j LOG --log-prefix "NEW_NOT_SYN:"
-A bad_tcp_packets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A icmp_packets -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A icmp_packets -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A tcp_packets -p tcp -m tcp --dport 25 -j allowed
-A tcp_packets -p tcp -m tcp --dport 110 -j allowed
-A tcp_packets -p tcp -m tcp --dport 53 -j allowed
-A tcp_packets -p tcp -m tcp --dport 80 -j allowed
-A tcp_packets -p tcp -m tcp --dport 81 -j allowed
COMMIT
# Completed on Mon Sep 22 11:05:08 2008

Содержание

Сообщения в этом обсуждении
"iptables+RHEL5 - зависает работа"
Отправлено Andrey Mitrofanov , 22-Сен-08 15:01 
>Разрешенно определённым машинам (по мак адресам) по определённым портам (80,81,110,25) доступ в интернет

У Вас либо ошибка в конфиге, либо в том, что Вы о нём думате...(-->1)

>через промежуток времени перестают на клиентских машинах открываться странички и получаться почта

Про это не скажу...

>И ещё может конфиг как то усовершенствовать?

...а про это есть пара мыслей.

>-A POSTROUTING -o eth0 -j MASQUERADE

Усов.#1: Если внешний адрес статический, -j SNAT --to-source E.X.T.IP -- быстрее, чем маскарад.

>[оверквотинг удален]
>-A INPUT -s 192.168.2.3 -i lo -j ACCEPT
>-A INPUT -i eth1 -p udp -m udp --sport 68 --dport 67
>-j ACCEPT
>-A INPUT -d 192.168.2.3 -m state --state RELATED,ESTABLISHED -j ACCEPT
>-A INPUT -i eth0 -p tcp -j tcp_packets
>-A INPUT -i eth0 -p udp -j udp_packets
>-A INPUT -i eth0 -p icmp -j icmp_packets
>-A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT_INPUT_packet_died:"
>--log-level 7
>-A FORWARD -i eth1 -m mac --mac-source 00:04:4B:80:80:03 -j ACCEPT

(1-->) Проблема с конфигом или пониманием: "клиентов" пускают наружу вне зависимости от порта назначения. У пользователей есть доступ "к любым портам". (Быстрый фикс, с почти "тем" результатом, - "-j tcp_packets".)

>-A OUTPUT -p tcp -j bad_tcp_packets
>-A OUTPUT -s 127.0.0.1 -j ACCEPT
>-A OUTPUT -s 192.168.2.88 -j ACCEPT
>-A OUTPUT -s 192.168.2.3 -j ACCEPT
>-A OUTPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT_INPUT_packet_died:"
>--log-level 7
>-A tcp_packets -p tcp -m tcp --dport 25 -j allowed
>-A tcp_packets -p tcp -m tcp --dport 110 -j allowed
>-A tcp_packets -p tcp -m tcp --dport 53 -j allowed

Кстати, может оказаться эта--^^^ строка не нужна, может быть нужен ещё "-p udp --dport 53"... А может и нет.

>-A tcp_packets -p tcp -m tcp --dport 80 -j allowed
>-A tcp_packets -p tcp -m tcp --dport 81 -j allowed

Проблема#2: У Вас tcp_packets "зовётся" из INPUT и по факту открывает доступ "из большого плохого интернета" к перечисленным портам на этой машине (шлюзе). Это может быть проблемой безопасности.


"iptables+RHEL5 - зависает работа"
Отправлено BearMK , 22-Сен-08 15:15 
>>Разрешенно определённым машинам (по мак адресам) по определённым портам (80,81,110,25) доступ в интернет
>
>У Вас либо ошибка в конфиге, либо в том, что Вы о нём думате...(-->1)
>

Тоесть порты у меня открыты все? В чём ошибка?

>Усов.#1: Если внешний адрес статический, -j SNAT --to-source E.X.T.IP -- быстрее, чем
>маскарад.

Переделал на snat работает. спасибо...

>[оверквотинг удален]
>>-j ACCEPT
>>-A INPUT -d 192.168.2.3 -m state --state RELATED,ESTABLISHED -j ACCEPT
>>-A INPUT -i eth0 -p tcp -j tcp_packets
>>-A INPUT -i eth0 -p udp -j udp_packets
>>-A INPUT -i eth0 -p icmp -j icmp_packets
>>-A INPUT -m limit --limit 3/min --limit-burst 3 -j LOG --log-prefix "IPT_INPUT_packet_died:"
>>--log-level 7
>>-A FORWARD -i eth1 -m mac --mac-source 00:04:4B:80:80:03 -j ACCEPT
>
>(1-->) Проблема с конфигом или пониманием: "клиентов" пускают наружу вне зависимости от порта назначения. У пользователей есть доступ "к любым портам". (Быстрый фикс, с почти "тем" результатом, - "-j tcp_packets".)

Тоесть нужно -A FORWARD -i eth1 -m mac --mac-source 00:04:4B:80:80:03 -j tcp_packets ???

>Кстати, может оказаться эта--^^^ строка не нужна, может быть нужен ещё "-p
>udp --dport 53"... А может и нет.
>
>>-A tcp_packets -p tcp -m tcp --dport 80 -j allowed
>>-A tcp_packets -p tcp -m tcp --dport 81 -j allowed
>
>Проблема#2: У Вас tcp_packets "зовётся" из INPUT и по факту открывает доступ
>"из большого плохого интернета" к перечисленным портам на этой машине (шлюзе).
>Это может быть проблемой безопасности.

Что тут можно сделать? Как реализовать лучше?

И почему всётаки теряется соединение? Может останавливается маскарадинг?
В случае со SNAT таже истори с пропаданием соединения
хотя при этом на шлюзе странички продолжают открываться...



"iptables+RHEL5 - зависает работа"
Отправлено Andrey Mitrofanov , 22-Сен-08 16:29 
>>>Разрешенно определённым машинам (по мак адресам) по определённым портам (80,81,110,25) доступ в интернет
>>У Вас либо ошибка в конфиге, либо в том, что Вы о нём думате...(-->1)
>Тоесть порты у меня открыты все? В чём ошибка?

Клиентам Вы даёте (в приведённом конфиге) соединяться на любые порты, но говорите, что только на перечисленные. Ошибка либо в конфиге, либо в том, что Вы говорите, как я и написал.

>>(1-->) Проблема с конфигом или пониманием: "клиентов" пускают наружу вне зависимости от порта назначения. У пользователей есть доступ "к любым портам". (Быстрый фикс, с почти "тем" результатом, - "-j tcp_packets".)
>
>Тоесть нужно -A FORWARD -i eth1 -m mac --mac-source 00:04:4B:80:80:03 -j tcp_packets
>???

Как вариант (минимальными исправлениями...) - пользователей шлюз будет пускать только по перечисленным в цепочке tcp_packets tcp портам.

>>Проблема#2: У Вас tcp_packets "зовётся" из INPUT и по факту открывает доступ
>>"из большого плохого интернета" к перечисленным портам на этой машине (шлюзе).
>>Это может быть проблемой безопасности.
>Что тут можно сделать? Как реализовать лучше?

Лучше - не "принимать" соединения из интернета, от пользователей, из ЛВС - только к явно указанным (предоставляемым шлюзом) сервисам. Реализовать -- куча вариантов, начать с выкидывания строк с `-i eth1` в частности, продолжить изучением, где ещё -i eth1 неявно может пролезать.

>И почему всётаки теряется соединение? Может останавливается маскарадинг?
>В случае со SNAT таже истори с пропаданием соединения

Всё что угодно может "отваливаться" (= а не знаю что $) ). Может переполнение какой таблицы, может проблема с аппаратурой, может ещё чего... _В_лога_ ядра/системы никаких "подозрительных" ошибок не видно?

>хотя при этом на шлюзе странички продолжают открываться...

Локалка "видна" при этом со шлюза? Может быть "локальная" сетевая "отваливается"?...

...вариант "решения" совсем "от балды" - заменить сетевую RealTek на 3Com или Intel. Ж-)


"iptables+RHEL5 - зависает работа"
Отправлено Andrey Mitrofanov , 22-Сен-08 16:06 
>Вообщем настроена машина шлюзом в интернет под RedHat Enterprise 5 - iptables
>фаервол
>Разрешенно определённым машинам (по мак адресам) по определённым портам (80,81,110,25) доступ в
>интернет

Кстати %) , google.ru
firehol "бесплатные образцы" site:opennet.ru/openforum/
ENTER
-- я тут--^^^^^ всем советую FireHOL, как средство упрощения настройки фаервола (после того, как "понимание наступило")

Простейшая (dns "выпал") конфигурация firehol по мотивам Вашей могла бы выглядеть так:

---8<---
version 5

interface "eth0" lan src "192.168.0.0/16"
  protection full
  client all accept

interface "eth1" world
  protection full
  client all accept

server_http81_ports="tcp/81"
client_http81_ports="default"

router i inface "eth1" outface "eth0"
  masquerade reverse
  server "http http81 pop3 smtp" accept mac "00:04:4B:80:80:03"
--->8---

или... в конце... кривовато и так, и эдак выходит -

router i inface "eth0" outface "eth1"
  masquerade
  client "http http81 pop3 smtp" accept with knock MAC

iptables -A knock_MAC -i eth0 -m state --state NEW,ESTABLISHED -m mac --mac-source 00:04:4B:80:80:03 -j ACCEPT

>-A INPUT -s 192.168.0.0/255.255.0.0 -i eth1 -j ACCEPT

Кстати, маска сети действительно такая--^^^ ?