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

Исходное сообщение
"iptables помогите проверить цепочку правил"

Отправлено xservices , 11-Окт-10 21:26 
Написал цепочку правил по мануалам в iptables

Есть сервер. на OUTPUT все разрешенно.
А вот на INPUT на до ограничить определенное количество портов, cделать проброс.
а так же защитить от возможных аттак и подбора пароля на ssh.
venet0 - внешний

Написал такую цепочку проверьте пожалуйста.


# Разрешаем прохождение любого трафика по интерфейсу обратной петли.
iptables -A INPUT -i lo -j ACCEPT

Запрещаем любые новые подключения с любых интерфейсов, кроме lo к компьютеру.
iptables -A INPUT -m state ! -i lo --state NEW -j DROP

# Если интерфейс не lo, то запрещаем входить в список его адресов.
iptables -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP

# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
iptables -A INPUT   -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP

# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED.
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
iptables -A INPUT   -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# SYN наводнение.
# Приводит к связыванию системных ресурсов, так что реальных обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# UDP наводнение
# Службы использующие UDP, очень часто становятся мишенью для атак с целью вывода системы из строя.
iptables -A INPUT -p UDP -s 0/0 --destination-port 138 -j DROP
iptables -A INPUT -p UDP -s 0/0 --destination-port 113 -j REJECT
iptables -A INPUT -p UDP -s 0/0 --source-port 67 --destination-port 68 -j ACCEPT  
iptables -A INPUT -p UDP -j RETURN

#Защита от подбора паролей ssh
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name radiator --set
iptables -A INPUT -p tcp --syn --dport 22 -m recent --name radiator --update --seconds 60 --hitcount 3 -j DROP

# ICMP - перенаправление
# ICMP - сообщение указывает системе изменить содержимое таблиц маршрутизации с тем, что бы направлять
# пакеты по более короткому маршруту. Может быть использовано взломщиком для перенаправления вашего трафика через свою машину.
iptables -A INPUT --fragment -p ICMP -j DROP

# Разрешаем  ICMP соединение. Значительная часть ICMP используется для передачи сообщений о
# том, что происходит с тем или иным UDP или TCP соединением.
iptables -A INPUT -p icmp -m icmp -i venet0 --icmp-type source-quench -j ACCEPT

# Разрешаем себе ping наружу - нас же не попингуешь - пакеты отбрасываются.
iptables -A INPUT -p icmp -m icmp -i venet0 --icmp-type echo-reply -j ACCEPT

# DNS сервер имен разрешаем.
iptables -A INPUT -p udp -m udp -i venet0 --dport 1024:65535 --sport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -i venet0 --dport 1024:65353 --sport 53 -j ACCEPT

# Открываем некоторые порты:
    
# SMTP клиент (25)
iptables -A INPUT -p tcp -m tcp -i venet0 --dport 1020:1023 --sport 25 -j ACCEPT ! --syn
    
# POP3 клиент (110)
iptables -A INPUT -p tcp -m tcp -i venet0 --dport 1020:1023 --sport 110 -j ACCEPT ! --syn
    
# IMAP4 клиент (143)
iptables -A INPUT -p tcp -m tcp -i venet0 --dport 1020:1023 --sport 2020 -j ACCEPT ! --syn
    
# SSH клиент (22)
iptables -A INPUT -p tcp -m tcp -i venet0 --dport 1020:1023 --sport 22 -j ACCEPT ! --syn
iptables -A INPUT -p tcp -m tcp -i venet0 --dport 1020:1023 --sport 22 -j ACCEPT ! --syn
    
# FPT клиент (21)
iptables -A INPUT -p tcp -m tcp -i venet0 --dport 1020:1023 --sport 21 -j ACCEPT ! --syn
    
# HTTP клиент
iptables -A INPUT -p tcp -m tcp -m multiport -i venet0 --dport 1020:1023 -j ACCEPT --sports 80 ! --syn

# mysql клиент
iptables -A INPUT -p tcp -m tcp -m multiport -i venet0 --dport 1020:1023 -j ACCEPT --sports 3306 ! --syn

#Делаем проброс внутрь
# 80 порт    
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.20.4

# 21 порт
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.20.4

# 20 порт
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 20 -j DNAT --to-destination 192.168.20.4

# 2020 порт
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2020 -j DNAT --to-destination 192.168.20.4

# 110 порт
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.20.5

# 3306 порт
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 3306 -j DNAT --to-destination 192.168.20.6

    


Содержание

Сообщения в этом обсуждении
"iptables помогите проверить цепочку правил"
Отправлено Aquarius , 12-Окт-10 00:17 
IMHO, бред
это что за диапазон:
--dport 1020:1023
все правила, где он указан, не представляют практической пользы, в них почти или совсем не будут попадать пакеты
поправьте меня, если ошибаюсь
на счет ! --syn в тех же правилах тоже есть сомнения, но утверждать ничего не берусь, не специалист по iptables

"iptables помогите проверить цепочку правил"
Отправлено xservices , 12-Окт-10 02:16 
> IMHO, бред
> это что за диапазон:
> --dport 1020:1023
> все правила, где он указан, не представляют практической пользы, в них почти
> или совсем не будут попадать пакеты
> поправьте меня, если ошибаюсь
> на счет ! --syn в тех же правилах тоже есть сомнения, но
> утверждать ничего не берусь, не специалист по iptables

Да насчет портов что то я упустил из виду



"iptables помогите проверить цепочку правил"
Отправлено xservices , 12-Окт-10 03:25 
начал с простого... скажите правильно ли?
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT
iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.20.4
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.20.4
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 20 -j DNAT --to-destination 192.168.20.4
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2020 -j DNAT --to-destination 192.168.20.4
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.20.5
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

"iptables помогите проверить цепочку правил"
Отправлено PavelR , 12-Окт-10 09:14 
> начал с простого... скажите правильно ли?

1) излагаешь, а значит мыслишь,  мутно, правила группируются по цепочке. когда у тебя будет правил пара сотен то -A INPUT -j REJECT через сотню правил "в канце", мягко говоря, будет незаметен.


> iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport
> 22 -j ACCEPT
> iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

забыл интерфейс lo

>[оверквотинг удален]
> 80 -j ACCEPT
> iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport
> 22 -j ACCEPT
> iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport
> 21 -j ACCEPT
> iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport
> 2020 -j ACCEPT
> iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport
> 110 -j ACCEPT
> iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

не учитывается направление пакета, из локалки в мир или из мира в локалку
(не, я понимаю что тобой _предполагалось_  разрешить днат-нутные пакеты из мира, но предположение не верно)


> iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j
> DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -p tcp -m tcp --dport 21 -j
> DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -p tcp -m tcp --dport 20 -j
> DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -p tcp -m tcp --dport 2020 -j
> DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -p tcp -m tcp --dport 110 -j
> DNAT --to-destination 192.168.20.5

ну тут - чисто твоя реальность, оценить правильность невозможно.
Хотя, я предполагаю, что если 20 порт ты пробрасываешь как ftp-data, тогда это неправильное правило.



"iptables помогите проверить цепочку правил"
Отправлено PavelR , 12-Окт-10 09:15 
> iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j
> DNAT --to-destination 192.168.20.4

а, ну и и опять же, не учитывается направление движения пакета.


"iptables помогите проверить цепочку правил"
Отправлено xservices , 12-Окт-10 09:43 
Павел про lo поправил так
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state ! -i lo --state NEW -j DROP
20 порт затупил там его не должно быть.
А как тут указать направление пакета?
iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport2020 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.20.4


"iptables помогите проверить цепочку правил"
Отправлено PavelR , 12-Окт-10 10:06 
> Павел про lo поправил так
> iptables -A INPUT -i lo -j ACCEPT
> iptables -A INPUT -m state ! -i lo --state NEW -j DROP
> 20 порт затупил там его не должно быть.
> А как тут указать направление пакета?
> iptables -A FORWARD -p tcp -m state --state NEW -m tcp --dport2020
> -j ACCEPT
> iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j
> DNAT --to-destination 192.168.20.4

iptables -A FORWARD -i eth0 -o eth1 ... (уточнения -o - по вкусу и потребностям).
iptables -t -nat -A PREROUTING -i eth0 ...


"iptables помогите проверить цепочку правил"
Отправлено Andrey Mitrofanov , 12-Окт-10 10:30 
> начал с простого... скажите правильно ли?

Списывайте у Мастеров:
http://google.ru/search?hl=ru&q=firehol+debug+sorter+site:op...

:) У скрипта то есть+++
http://www.opennet.me/openforum/vsluhforumID1/81413.html#7
http://www.opennet.me/openforum/vsluhforumID3/56932.html#16

PS: Хотя да, _понимание_ приходит оооочень не сразу. Не мы $) такие, iptables такой.


"iptables помогите проверить цепочку правил"
Отправлено xservices , 12-Окт-10 13:00 
Сделал вот так.
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state ! -i lo --state NEW -j DROP
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 1194 -j ACCEPT
iptables -A INPUT -i tap0 -s 192.168.138.2 -j ACCEPT
iptables -A FORWARD -i venet0 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i venet0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A FORWARD -i venet0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i venet0 -p tcp -m state --state NEW -m tcp --dport 2020 -j ACCEPT
iptables -A FORWARD -i venet0 -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.20.4
iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.20.4
iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport 2020 -j DNAT --to-destination 192.168.20.4
iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.20.5
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

"iptables помогите проверить цепочку правил"
Отправлено PavelR , 12-Окт-10 17:56 
>[оверквотинг удален]
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 80 -j DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 21 -j DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 2020 -j DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 110 -j DNAT --to-destination 192.168.20.5
> iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
> iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

Повторяю еще раз.
Группируй правила по таблицам и цепочкам. Смотреть на правила, где -A FORWARD -j REJECT опущен в конец скрипта через стопиццот правил - ну иво нафиг.

Даже смотреть из-за этого не хочется, хотя есть некоторые советы которые можно было бы дать.


"iptables помогите проверить цепочку правил"
Отправлено reader , 12-Окт-10 21:33 
> Сделал вот так.
> iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
> iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> iptables -A INPUT -i lo -j ACCEPT
> iptables -A INPUT -m state ! -i lo --state NEW -j DROP

пакеты убъем, но будем надеется что они воскреснут

>[оверквотинг удален]
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 80 -j DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 21 -j DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 2020 -j DNAT --to-destination 192.168.20.4
> iptables -t nat -A PREROUTING -i venet0 -p tcp -m tcp --dport
> 110 -j DNAT --to-destination 192.168.20.5
> iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
> iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited


"iptables помогите проверить цепочку правил"
Отправлено PavelR , 12-Окт-10 21:53 
>> iptables -A INPUT -i lo -j ACCEPT
>> iptables -A INPUT -m state ! -i lo --state NEW -j DROP
> пакеты убъем, но будем надеется что они воскреснут

Более того, на второе правило пакетов с интерфейсом -i lo попасть уже не может, ибо они будут accept-нуты первыи правилом.


Рекомендую топикстартеру углублять внимательность и логику.


"iptables помогите проверить цепочку правил"
Отправлено s_dog , 13-Окт-10 12:27 
fwbuilder, советую