Как добавить некоторые IP-адреса в список разрешенных, чтобы избежать их отключения из-за ограничения соединений?

Вопрос или проблема

Я использую эти правила в /etc/ufw/before.rules

# Ограничение до 20 одновременных соединений на порту 80 с одного IP
-A ufw-before-input -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP
-A ufw-before-input -p tcp --syn --dport 443 -m connlimit --connlimit-above 20 -j DROP

# Ограничение до 20 соединений на порту 80 каждые 2 секунды с одного IP
-A ufw-before-input -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
-A ufw-before-input -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 2 --hitcount 20 -j DROP
-A ufw-before-input -p tcp --dport 443 -i eth0 -m state --state NEW -m recent --set
-A ufw-before-input -p tcp --dport 443 -i eth0 -m state --state NEW -m recent --update --seconds 2 --hitcount 20 -j DROP

Я хочу добавить правило, которое заставит локальные IP-адреса системы не подвергаться ограничению соединений или скорости. Например, у меня много cron задач, которые подключаются к серверу внутри сервера. Мне нужно предотвратить их сбои, когда одновременно выполняется слишком много задач.

ОБНОВЛЕНИЕ С РЕШЕНИЕМ: Мне кажется, что нужно было просто добавить больше правил в before.rules вместо командной строки ufw, чтобы переопределить ограничение соединений для конкретных IP. Я не могу пока ответить на свой вопрос.

Я просто добавил эти правила выше правил connlimit:

-A ufw-before-input -p tcp --dport 80 -s 127.0.0.1 -j ACCEPT
-A ufw-before-input -p tcp --dport 443 -s 127.0.0.1 -j ACCEPT

Я нашел другое решение с использованием iptables.

Команда iptables для ограничения соединений:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP

Вы можете исключить один IP:

iptables -A INPUT -p tcp --syn --dport 80 -d ! 127.0.0.1 -m connlimit --connlimit-above 20 -j DROP

Надеюсь, это будет полезно для вас.

Во-первых, вы не предоставили достаточно информации, чтобы мы могли дать вам конкретный ответ.

Во-вторых, это правила ufw. ufw — это фронтенд для iptables, и вы можете управлять правилами из командной строки, используя ufw, или через графический интерфейс, gufw.

Использование iptables напрямую будет конфликтовать с вашими правилами ufw, поэтому используйте один инструмент или другой.

Вам нужно опубликовать ваши правила ufw. В общем, вам нужно будет разрешить свою локальную сеть перед правилами, которые вы указали. Как вы управляете своими правилами ufw? Командная строка? Gufw?

Для ufw что-то вроде этого

sudo ufw allow from 192.168.0.0/24

Смотрите также:

http://blog.bodhizazen.com/linux/firewall-ubuntu-servers/

https://help.ubuntu.com/community/UFW

А для iptables http://bodhizazen.com/Tutorials/iptables

Ответ или решение

Чтобы разрешить определённым IP-адресам проходить мимо ограничений по количеству подключений, установленных с помощью connlimit в UFW (Uncomplicated Firewall), вам нужно добавить правила, которые будут указывать на то, что для этих IP-адресов следует игнорировать ограничения. Вот как это можно сделать на практике.

1. Добавление правил в файле конфигурации UFW

Когда вы создаёте правила для UFW, важно размещать их в правильном порядке. Правила, разрешающие трафик от определённых IP-адресов, должны располагаться выше правил, которые устанавливают ограничения. Это гарантирует, что соединения от разрешённых IP не будут блокироваться в последующих правилах. Вам необходимо отредактировать файл /etc/ufw/before.rules и добавить следующие строки:

# Разрешить подключения от локального IP
-A ufw-before-input -p tcp --dport 80 -s 127.0.0.1 -j ACCEPT
-A ufw-before-input -p tcp --dport 443 -s 127.0.0.1 -j ACCEPT

# Другие локальные IP (например, `192.168.1.100`)
-A ufw-before-input -p tcp --dport 80 -s 192.168.1.100 -j ACCEPT
-A ufw-before-input -p tcp --dport 443 -s 192.168.1.100 -j ACCEPT

2. Перезапуск UFW

После внесения изменений в файл вы должны перезапустить UFW, чтобы новые правила вступили в силу. Это можно сделать с помощью команды:

sudo ufw reload

3. Использование iptables для исключения IP-адресов

Если вы предпочитаете работать напрямую с iptables, вы можете добавить правила, исключающие определённые IP-адреса от ограничений. Например, если вы хотите, чтобы IP-адрес 127.0.0.1 не подпадал под ограничения, вы можете использовать следующие команды:

iptables -A INPUT -p tcp --syn --dport 80 -d ! 127.0.0.1 -m connlimit --connlimit-above 20 -j DROP

4. Рекомендации

  • Убедитесь, что все правила добавляются в правильном порядке, чтобы избежать блокировки легитимного трафика.
  • Проверьте текущие правила с помощью команды sudo ufw status или iptables -L -n -v, чтобы убедиться, что они работают как ожидается.
  • Помните, что правило с наибольшим приоритетом (выше в списке) будет выполняться первым, так что размещайте свои новые правила соответственно.

Таким образом, вы можете эффективно исключить определенные IP-адреса из ограничений по количеству подключений, используя как UFW, так и iptables. Если у вас возникли дополнительные вопросы, не стесняйтесь их задавать.

Оцените материал
Добавить комментарий

Капча загружается...