Vesta Control Panel - Forum

Community Forum

Skip to content

Advanced search
  • Quick links
    • Main site
    • Github repo
    • Google Search
  • FAQ
  • Login
  • Register
  • Board index Language specific forums Russian (Русский) Общие вопросы
  • Search

Настройки Iptables для сервера

Общие вопросы о панели управления Vesta
Post Reply
  • Print view
Advanced search
52 posts
  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Next
Deeryo
Posts: 190
Joined: Tue Nov 05, 2013 1:55 pm

Re: Настройки Iptables для сервера
  • Quote

Post by Deeryo » Thu Mar 06, 2014 11:24 am

demian wrote:1. зачем нам больше коннектов с одного ip на порты сервера? - sync flood однако --> обработка запросов службой --> увеличение потребления памяти службой --> свал сервера в swap(если он есть) --> потеря контроля над сервером
2. правило не отбрасывает соединения, а лишь тормозит их... по вашему примеру... они будут блокироваться почти на 10 минут + при действительно ddos атаке получится stack owerflow(не увеличить системные лимиты ip стека), а тогда поможет только reset
3. в ваших простых правилах вообще нет ограничений....т.о. весь траф пойдет на службы.... так и так заваливая их
1. В примере с hashlimit ограничена частота соединений с одного ip на 400/min. Я только не указал следующее правило с DROP:
-A INPUT -m tcp -p tcp --dport 80 -m hashlimit --hashlimit-upto 400/min --hashlimit-burst 500 --hashlimit-mode srcip --hashlimit-name ratelimit -j ACCEPT
-A INPUT -m tcp -p tcp --dport 80 -j DROP
Вообще я предложил только подумать над hashlimit, так как мне кажется, что 600/min запросов на весь сервер будет мало. Это всего 6 запросов в секунду на все сайты сервера.

2. Правило limit 600/min будет принимать 600 соединений в секунду, а если будет больше, то такие пакеты он не будет акцептить и они будут рассматриваться с след. правилах. Там дальше нет правил для dport 80, поэтому пакеты попадут в последнее правило с REJECT.

3. да, тут я не приводил ограничений. но если поставить слишком низкие limit, то сервер не загнется, он просто не будет обрабатывать http запросы при самых минимальных атаках. Логичней мне кажется будет сделать комбинацию из ограничений на ip и общий лимит вот так:
-A INPUT -p tcp -m tcp --dport 80 -m limit --limit 20/sec --limit-burst 10 -j ACCEPT
-A INPUT -m tcp -p tcp --dport 80 -m hashlimit --hashlimit-upto 200/min --hashlimit-burst 200 --hashlimit-mode srcip --hashlimit-name ratelimit -j ACCEPT
-A INPUT -m tcp -p tcp --dport 80 -j DROP
Last edited by Deeryo on Thu Mar 06, 2014 11:44 am, edited 1 time in total.
Top

Deeryo
Posts: 190
Joined: Tue Nov 05, 2013 1:55 pm

Re: Настройки Iptables для сервера
  • Quote

Post by Deeryo » Thu Mar 06, 2014 11:40 am

правило не отбрасывает соединения, а лишь тормозит их... по вашему примеру... они будут блокироваться почти на 10 минут
Ааа, я понял, вы подумали, что правила limit или hashlimit умеют задерживать пакеты. Но это не верно. Эти правила акцептят пакеты с указанной частотой, а превышающие эту частоту пакеты они не рассматривают, поэтому такие пакеты идут в следущие правила iptables. Вот у меня ссылка на мануал под рукой http://ipset.netfilter.org/iptables-extensions.man.html
Top

belka2007
Posts: 20
Joined: Mon Mar 03, 2014 11:12 pm

Re: Настройки Iptables для сервера
  • Quote

Post by belka2007 » Thu Mar 06, 2014 11:43 am

Чет я еще больше запутался ))
Можете в кучу собрать настройки какие вписать. Было бы еще не плохо с краткими комментариями что делают по блокам например.
Top

Deeryo
Posts: 190
Joined: Tue Nov 05, 2013 1:55 pm

Re: Настройки Iptables для сервера
  • Quote

Post by Deeryo » Thu Mar 06, 2014 12:01 pm

Попробую добавить лимиты. (тут я объединил разные порты http/https smtp/smtps и pop/imap, но это возможно неправильно)

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type echo-request -m limit --limit 1/sec -j ACCEPT
-A INPUT -m state --state INVALID -j DROP

-A INPUT -p tcp -m tcp --dport ftp -m limit --limit 10/min --limit-burst 10 -m comment --comment "FTP" -j ACCEPT
-A INPUT -p tcp -m tcp --dport ssh -m limit --limit 2/min --limit-burst 2 -m comment --comment "SSH" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8083 -m limit --limit 2/min --limit-burst 2 -m comment --comment "Vesta" -j ACCEPT

-A INPUT -p tcp -m tcp -m multiport --dports http,https -m hashlimit --hashlimit-above 200/min --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name ip-http -j DROP

-A INPUT -p tcp -m tcp -m multiport --dports smtp,smtps,submission -m hashlimit --hashlimit-above 50/min --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name ip-smtp -j DROP

-A INPUT -p tcp -m tcp -m multiport --dports pop3,pop3s,imap,imaps -m hashlimit --hashlimit-above 30/min --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name ip-pop -j DROP

-A INPUT -p tcp -m tcp -m multiport --dports http,https -m limit --limit 20/sec --limit-burst 20 -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport --dports pop3,pop3s,imap,imaps -m limit --limit 10/sec --limit-burst 10 -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport --dports smtp,smtps,submission -m limit --limit 10/sec --limit-burst 10 -j ACCEPT

-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT

Пояснения:
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT - принять установленные соединения
-A INPUT -m state --state INVALID -j DROP - отбросить левые пакеты, для которых нет записи в conntrack.
Далее все пакеты можно считать NEW, так как мы уже обработали RELATED,ESTABLISHED и INVALID.
Правила с hashlimit отбрасывают пакеты, если они превышают частоту для отдельного IP.
Правила с limit принимают указанное количество пакетов в единицу времени, остальные пакеты идут на след. правила. В конце концов все лишние пакеты попадают в последнее правило с DROP.
Last edited by Deeryo on Thu Mar 06, 2014 1:27 pm, edited 8 times in total.
Top

belka2007
Posts: 20
Joined: Mon Mar 03, 2014 11:12 pm

Re: Настройки Iptables для сервера
  • Quote

Post by belka2007 » Thu Mar 06, 2014 12:13 pm

Даже не стартует:

Code: Select all

# service iptables start
iptables: Применяются правила межсетевого экрана: Bad argument `limit'
Error occurred at line: 11
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
                                                           [СБОЙ ]
Ругается на строчку (11):

Code: Select all

-A INPUT -p tcp -m tcp --dport 21 --limit 10/min --limit-burst 10 -m comment --comment "FTP" -j ACCEPT
Top

Deeryo
Posts: 190
Joined: Tue Nov 05, 2013 1:55 pm

Re: Настройки Iptables для сервера
  • Quote

Post by Deeryo » Thu Mar 06, 2014 12:19 pm

Добавил пропущенный "-m limit"
Top

belka2007
Posts: 20
Joined: Mon Mar 03, 2014 11:12 pm

Re: Настройки Iptables для сервера
  • Quote

Post by belka2007 » Thu Mar 06, 2014 12:31 pm

Снова только запустил Iptables и сайт недоступен. Проверяю через: 2ip.ru/site-availability/
Только выключаю Iptables и снова сайт доступен...
Для днс порта (53) нужно правила писать?
Top

Deeryo
Posts: 190
Joined: Tue Nov 05, 2013 1:55 pm

Re: Настройки Iptables для сервера
  • Quote

Post by Deeryo » Thu Mar 06, 2014 1:06 pm

Еще раз переписал правила и добавил разрешение udp 53 для dns.
Top

belka2007
Posts: 20
Joined: Mon Mar 03, 2014 11:12 pm

Re: Настройки Iptables для сервера
  • Quote

Post by belka2007 » Thu Mar 06, 2014 1:37 pm

Спасибо. Теперь вроде все нормально.
Вот такой конфиг в итоге вышел:

Code: Select all

# Firewall configuration written by system-config-firewall
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
# Принять установленные соединения
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# DNS
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
# Входящий в стек протоколов TCP/IP. В основном используется для передачи сообщений об ошибках
-A INPUT -p icmp -m icmp --icmp-type echo-request -m limit --limit 1/sec -j ACCEPT
# Отбросить левые пакеты, для которых нет записи в conntrack
-A INPUT -m state --state INVALID -j DROP
# Далее все пакеты можно считать NEW, так как мы уже обработали RELATED,ESTABLISHED и INVALID
# Правила с hashlimit тоже отбрасывают пакеты, если они превышают частоту для отдельного IP
# Правила с limit принимают указанное количество пакетов в единицу времени, остальные пакеты идут на след. правила
# 21,22,8083
-A INPUT -p tcp -m tcp --dport ftp -m limit --limit 10/min --limit-burst 10 -m comment --comment "FTP" -j ACCEPT
-A INPUT -p tcp -m tcp --dport ssh -m limit --limit 2/min --limit-burst 2 -m comment --comment "SSH" -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8083 -m limit --limit 2/min --limit-burst 2 -m comment --comment "Vesta" -j ACCEPT
# 80,443
-A INPUT -p tcp -m tcp -m multiport --dports http,https -m hashlimit --hashlimit-above 200/min --hashlimit-burst 20 --hashlimit-mode srcip --hashlimit-name ip-http -j DROP
# smtp,smtps,submission
-A INPUT -p tcp -m tcp -m multiport --dports smtp,smtps,submission -m hashlimit --hashlimit-above 50/min --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name ip-smtp -j DROP
# pop3,pop3s,imap,imaps
-A INPUT -p tcp -m tcp -m multiport --dports pop3,pop3s,imap,imaps -m hashlimit --hashlimit-above 30/min --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name ip-pop -j DROP
# all
-A INPUT -p tcp -m tcp -m multiport --dports http,https -m limit --limit 20/sec --limit-burst 20 -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport --dports pop3,pop3s,imap,imaps -m limit --limit 10/sec --limit-burst 10 -j ACCEPT
-A INPUT -p tcp -m tcp -m multiport --dports smtp,smtps,submission -m limit --limit 10/sec --limit-burst 10 -j ACCEPT
# В конце концов все лишние пакеты попадают в последнее правило с DROP
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
Top

Deeryo
Posts: 190
Joined: Tue Nov 05, 2013 1:55 pm

Re: Настройки Iptables для сервера
  • Quote

Post by Deeryo » Thu Mar 06, 2014 1:40 pm

Отлично, проверим в бою так сказать. Я то не тестировал еще
Top


Post Reply
  • Print view

52 posts
  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Next

Return to “Общие вопросы”



  • Board index
  • All times are UTC
  • Delete all board cookies
  • The team
Powered by phpBB® Forum Software © phpBB Limited
*Original Author: Brad Veryard
*Updated to 3.2 by MannixMD
 

 

Login  •  Register

I forgot my password