The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"WEB-сервер 'iptables'"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Linux iptables, ipchains / Linux)
Изначальное сообщение [ Отслеживать ]

"WEB-сервер 'iptables'"  +1 +/
Сообщение от peering email(ok) on 30-Июл-12, 08:21 
Прочёл книгу Oskar Andreasson, форумы, практики мало, помогите советом.
WEB сервер на Debian 6, несколько сайтов на bitrix,netcat.
Подянт VirtualHost.
Нашёл небольшой пример, но кажись слабоват, как считаете что добавить или какой другой пример посоветуете:

#!/bin/sh
### Скрипт конфигурации IPTables ###
# Очищаем предыдущие записи
iptables -F
# Установка политик по умолчанию
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
# Разрешаем локальный интерфейс
iptables -A INPUT -i lo -j ACCEPT
# Простая защита от DoS-атаки
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
# Защита от спуфинга
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT -$
# Защита от попытки открыть входящее соединение TCP не через SYN
iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
# Закрываемся от кривого icmp
iptables -I INPUT -p icmp -f -j DROP
# REL, ESTB allow
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
# Разрешаем рабочие порты
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Разрешение главных типов протокола ICMP
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT
# Защита сервера SSH от брутфорса
iptables -A INPUT -p tcp –syn –dport 22 -m recent –name root –set
iptables -A INPUT -p tcp –syn –dport 22 -m recent –name dmitro –update –seconds 30 –hitcount 3 -j D$
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
# Просмотр
iptables -L --line-number
echo
echo "Adding DONE, maybe OK"
echo "Saving to rc, PSE wait!"
service iptables save
echo
service iptables restart
echo "Done"

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "WEB-сервер 'iptables'"  +1 +/
Сообщение от reader (ok) on 30-Июл-12, 11:53 
>[оверквотинг удален]
> Подянт VirtualHost.
> Нашёл небольшой пример, но кажись слабоват, как считаете что добавить или какой
> другой пример посоветуете:
> #!/bin/sh
> ### Скрипт конфигурации IPTables ###
> # Очищаем предыдущие записи
> iptables -F
> # Установка политик по умолчанию
> iptables -P INPUT DROP
> iptables -P FORWARD ACCEPT

если за этой машиной есть или ожидается еще подсеть, то FORWARD в DROP
>[оверквотинг удален]
> # Разрешение главных типов протокола ICMP
> iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
> iptables -A INPUT -p icmp --icmp-type 11 -j ACCEPT
> iptables -A INPUT -p icmp --icmp-type 12 -j ACCEPT
> # Защита сервера SSH от брутфорса
> iptables -A INPUT -p tcp –syn –dport 22 -m recent –name root
> –set
> iptables -A INPUT -p tcp –syn –dport 22 -m recent –name dmitro
> –update –seconds 30 –hitcount 3 -j D$
> iptables -A INPUT -p tcp –dport 22 -j ACCEPT

Защита сервера SSH от брутфорса не будет, потому что выше вы уже разрешили вход на 22 порт

> # Просмотр
> iptables -L --line-number
> echo
> echo "Adding DONE, maybe OK"
> echo "Saving to rc, PSE wait!"
> service iptables save
> echo
> service iptables restart
> echo "Done"

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "WEB-сервер 'iptables'"  +/
Сообщение от peering email(ok) on 30-Июл-12, 15:53 
>[оверквотинг удален]
> разрешили вход на 22 порт
>> # Просмотр
>> iptables -L --line-number
>> echo
>> echo "Adding DONE, maybe OK"
>> echo "Saving to rc, PSE wait!"
>> service iptables save
>> echo
>> service iptables restart
>> echo "Done"

Спасиб,,, а вот цепочка INPUT она требует неких вмешательств ???

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "WEB-сервер 'iptables'"  +1 +/
Сообщение от reader (ok) on 30-Июл-12, 17:00 
>[оверквотинг удален]
>>> # Просмотр
>>> iptables -L --line-number
>>> echo
>>> echo "Adding DONE, maybe OK"
>>> echo "Saving to rc, PSE wait!"
>>> service iptables save
>>> echo
>>> service iptables restart
>>> echo "Done"
> Спасиб,,, а вот цепочка INPUT она требует неких вмешательств ???

если поправите с 22 портом, то в целом для начала пойдет, а дальше будите смотреть по нагрузке. из косметических соображений я бы
# REL, ESTB allow
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT

опустил бы ниже разрешений по портам, что бы при необходимости видеть статистику по портам и если почты, ftp тут не будет, то ненужно под них и порты открывать

iptables -A INPUT -p udp --sport 53 -j ACCEPT
это не очень красивое правило, если это для ответов , то добавте -m state --state ESTABLISHED

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "WEB-сервер 'iptables'"  +1 +/
Сообщение от LSTemp (ok) on 01-Авг-12, 03:57 
>[оверквотинг удален]
>>>> service iptables restart
>>>> echo "Done"
>> Спасиб,,, а вот цепочка INPUT она требует неких вмешательств ???
> если поправите с 22 портом, то в целом для начала пойдет, а
> дальше будите смотреть по нагрузке. из косметических соображений я бы
> # REL, ESTB allow
> iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
> iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
> опустил бы ниже разрешений по портам, что бы при необходимости видеть статистику
> по портам

ни к чему уже установленные соединения ч/з лишний десяток правил пропускать (SYN-один потом пакетов много). для "косметических целей" можно использовать правило с -j LOG в крайнем случае, которое в любое место цепочки ставится и удаляется по мере необходимости.

> и если почты, ftp тут не будет, то ненужно
> под них и порты открывать

а если уж открывать, то проверяя флаг SYN (на установку соединения) - все остальное потом ч/з EST,REL пролетит. по старинке это выглядело так:
-A INPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT
с новым модудем --state может как-то по другому, но суть надеюсь ясна. иначе рискуете получить ч/з ACCEPT на этот порт (и все другие TCP) от всемирного зла по полной.


> iptables -A INPUT -p udp --sport 53 -j ACCEPT
> это не очень красивое правило, если это для ответов , то добавте
> -m state --state ESTABLISHED

это ненужное правило. из вышеуказанного очевидно - своего ДНС нет => все ДНС-соединения будут исходящими изначально и после пакеты попадут под условие RELATED,ESTABLISHED.

2peering - для передачи больших объемов информации (зон например) ДНС может использовать и TCP-протокол, а не только UDP.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "WEB-сервер 'iptables'"  +/
Сообщение от reader (ok) on 01-Авг-12, 12:54 
>[оверквотинг удален]
>> дальше будите смотреть по нагрузке. из косметических соображений я бы
>> # REL, ESTB allow
>> iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
>> iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
>> опустил бы ниже разрешений по портам, что бы при необходимости видеть статистику
>> по портам
> ни к чему уже установленные соединения ч/з лишний десяток правил пропускать (SYN-один
> потом пакетов много). для "косметических целей" можно использовать правило с -j
> LOG в крайнем случае, которое в любое место цепочки ставится и
> удаляется по мере необходимости.

но это уже будет постфактум, поэтому тут кому как нравится, главное не нагородить сотни последовательных правил.

>[оверквотинг удален]
> с новым модудем --state может как-то по другому, но суть надеюсь ясна.
> иначе рискуете получить ч/з ACCEPT на этот порт (и все другие
> TCP) от всемирного зла по полной.
>> iptables -A INPUT -p udp --sport 53 -j ACCEPT
>> это не очень красивое правило, если это для ответов , то добавте
>> -m state --state ESTABLISHED
> это ненужное правило. из вышеуказанного очевидно - своего ДНС нет => все
> ДНС-соединения будут исходящими изначально и после пакеты попадут под условие RELATED,ESTABLISHED.
> 2peering - для передачи больших объемов информации (зон например) ДНС может использовать
> и TCP-протокол, а не только UDP.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "WEB-сервер 'iptables'"  +/
Сообщение от LSTemp (ok) on 03-Авг-12, 03:00 
>[оверквотинг удален]
>>> iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
>>> iptables -A INPUT -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
>>> опустил бы ниже разрешений по портам, что бы при необходимости видеть статистику
>>> по портам
>> ни к чему уже установленные соединения ч/з лишний десяток правил пропускать (SYN-один
>> потом пакетов много). для "косметических целей" можно использовать правило с -j
>> LOG в крайнем случае, которое в любое место цепочки ставится и
>> удаляется по мере необходимости.
> но это уже будет постфактум, поэтому тут кому как нравится, главное не
> нагородить сотни последовательных правил.

ИМХО сам факт попадания пакета в цепочку правил интересен ТОЛЬКО для отладки самих правил, ибо никакой дополнительной информации не несет (разве, что Вы еще трафик по iptables считаете). При желании всю статистику успешных подключений можно получить по логам сервиса, который висит на соответствующем порту.

Для анализа возможной угрозы -j LOG придется врубать (или держать его постоянно, мирясь с засиранием логов - дело сугубо личное).

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "WEB-сервер 'iptables'"  +/
Сообщение от peering (ok) on 10-Авг-12, 10:20 
>[оверквотинг удален]
> с новым модудем --state может как-то по другому, но суть надеюсь ясна.
> иначе рискуете получить ч/з ACCEPT на этот порт (и все другие
> TCP) от всемирного зла по полной.
>> iptables -A INPUT -p udp --sport 53 -j ACCEPT
>> это не очень красивое правило, если это для ответов , то добавте
>> -m state --state ESTABLISHED
> это ненужное правило. из вышеуказанного очевидно - своего ДНС нет => все
> ДНС-соединения будут исходящими изначально и после пакеты попадут под условие RELATED,ESTABLISHED.
> 2peering - для передачи больших объемов информации (зон например) ДНС может использовать
> и TCP-протокол, а не только UDP.

Не BIND9  уже есть, вроде работает чёт я запутался куда нужно перенести правила ???

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

9. "WEB-сервер 'iptables'"  +/
Сообщение от reader (ok) on 10-Авг-12, 10:36 
>[оверквотинг удален]
>> TCP) от всемирного зла по полной.
>>> iptables -A INPUT -p udp --sport 53 -j ACCEPT
>>> это не очень красивое правило, если это для ответов , то добавте
>>> -m state --state ESTABLISHED
>> это ненужное правило. из вышеуказанного очевидно - своего ДНС нет => все
>> ДНС-соединения будут исходящими изначально и после пакеты попадут под условие RELATED,ESTABLISHED.
>> 2peering - для передачи больших объемов информации (зон например) ДНС может использовать
>> и TCP-протокол, а не только UDP.
> Не BIND9  уже есть, вроде работает чёт я запутался куда нужно
> перенести правила ???

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

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "WEB-сервер 'iptables'"  +/
Сообщение от LSTemp (ok) on 11-Авг-12, 00:28 
>[оверквотинг удален]
>> TCP) от всемирного зла по полной.
>>> iptables -A INPUT -p udp --sport 53 -j ACCEPT
>>> это не очень красивое правило, если это для ответов , то добавте
>>> -m state --state ESTABLISHED
>> это ненужное правило. из вышеуказанного очевидно - своего ДНС нет => все
>> ДНС-соединения будут исходящими изначально и после пакеты попадут под условие RELATED,ESTABLISHED.
>> 2peering - для передачи больших объемов информации (зон например) ДНС может использовать
>> и TCP-протокол, а не только UDP.
> Не BIND9  уже есть, вроде работает чёт я запутался куда нужно
> перенести правила ???

для начала поставьте правила ESTABLISHED,CONNECTED после правил, которые разрешают соединения на доступные сервисы. посмотрите по счетчикам , как срабатывают Ваши правила на установку соединения. Если все хорошо, то правила ESTABLISHED,CONNECTED можно перенести и поставить их перед правилами на установку соединения с сервисами.

на пальцах:
1)
iptables -A INPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
для тестов

2)
iptables -A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT
для работы

в первом случае ssh-пакет будет ВСЕГДА обрабатываться двумя правилами.

во втором случае, пакет будет обрабатываться двумя правилами ТОЛЬКО на этапе установки соединения (SYN-пакет). поскольку SYN-пакет всего один раз (в идеале) приходит, то налицо выгода поместить разрешение на его прохождение ниже, чем разрешение прохождения пакетов для уже установленных соединений. после этого все остальные ssh-пакеты будут сразу попадать в правило RELATED,ESTABLISHED и обрабатываться им (до второго правила дело не дойдет - выгода очевидна. тем более если десяток сервисов запущен, то прогонять каждый пакет ч/з такое же количество лишних правил в условиях большой нагрузки смысла нет).

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

5. "WEB-сервер 'iptables'"  +/
Сообщение от LSTemp (ok) on 01-Авг-12, 04:24 
>[оверквотинг удален]
>>> # Просмотр
>>> iptables -L --line-number
>>> echo
>>> echo "Adding DONE, maybe OK"
>>> echo "Saving to rc, PSE wait!"
>>> service iptables save
>>> echo
>>> service iptables restart
>>> echo "Done"
> Спасиб,,, а вот цепочка INPUT она требует неких вмешательств ???

ИМХО - молодец (это честно - без приколов). Хорошо книжку почитал. Правильно задал вопрос, показал свою работу. Сам на практике потом разберешься, где и что упустил - это нормально.


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру