2014-02-17 3 views
1

Я пытаюсь реализовать правила IPTables для трафика на порте 443. Я хочу разрешить NEW-соединения до тех пор, пока они не достигнут ограничения по скорости, затем отбросьте их и зарегистрируйте отброшенные пакеты (я добавлю ограничение скорости на регистрация позже). Однако, с правилами, которые у меня есть, мое правило регистрации вызывается с каждым новым соединением. Я не хочу делать запись в журнале, если ограничение скорости уже не достигнуто.IPTables Rules Order

Независимо от количества поисковых запросов Google, я не могу понять этот чрезвычайно простой вопрос. I believe Я понимаю, что правило ACCEPT остановит любые последующие правила. Но размещение моего правила ведения журнала до или после того, как правило ACCEPT не имеет никакого значения - соединение все еще регистрируется.

Iptables -L -v -n следующий за ВХОД цепи:

Chain INPUT (policy DROP 2 packets, 88 bytes) pkts bytes target  prot opt in  out  source    destination   
    0  0 ACCEPT  tcp -- eth1 *  0.0.0.0/0   0.0.0.0/0   tcp dpt:443 state NEW limit: avg 50/min burst 10 
    0  0 LOG  tcp -- eth1 *  0.0.0.0/0   0.0.0.0/0   tcp dpt:443 state NEW LOG flags 7 level 7 prefix "IPTables-50/m-Dropped: " 
    9 612 ACCEPT  all -- eth1 *  0.0.0.0/0   0.0.0.0/0   state RELATED,ESTABLISHED 

ответ

0

Вы бы использовать в -m limit модуль для достижения этой цели.

iptables -t filter -A INPUT -p tcp -i eth1 --dport 443 -m limit --limit 10/min -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

iptables -t filter -A INPUT -p tcp -i eth1 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j LOG --log-prefix "IPTables-443-Dropped: " --log-level 4

iptables -t filter -A INPUT -p tcp -i eth1 --dport 443 -m state --state NEW,RELATED,ESTABLISHED -j DROP

  • Первая строка будет принимать пакет до тех пор, пока не достигнут скорости 10 в минуту.
  • Вторая строка будет соответствовать и регистрировать пакеты, которые превышают 10 в минуту.
  • Третья строка будет соответствовать и удалять те же пакеты, что и второе правило.

Я просто попробовал его с ICMP-пакетами, и я не знаю, действительно ли вы хотите использовать этот метод: это ставка. Может быть, вам лучше быть выключен с помощью модуля -m connlimit, описанный в качестве страницы руководства:

Позволяет ограничить число одновременных подключений к серверу на IP-адрес клиента (или клиента блока адресов).

Надеюсь, это поможет.