Iptables - ограничение количества подключений с IP
Метки: iptables | Linux
Вторник, 9 февраля 2010 г.
Просмотров: 24758
Подписаться на комментарии по RSS
В данной статье мы рассмотрим как можно ограничить количество подключений с одного IP адреса к нашему серверу. В этом нам поможет модуль connlimit, который позволяет ограничить количество параллельных TCP коннектов к серверу с IP адреса, либо блока адресов.
Синтаксис:
Синтаксис используемой поманды следующий:
/sbin/iptables -A INPUT -p tcp --syn --dport $port -m connlimit --connlimit-above N -j REJECT --reject-with tcp-reset # save the changes see iptables-save man page, the following is redhat and friends specific command service iptables save
Пример: Ограничение SSH подключений с IP/хоста
Разрешим только 3 ssh подключения:
/sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT # save the changes see iptables-save man page, the following is redhat and friends specific command service iptables save
Пример: Ограничим HTTP подключения
Разрешим только 20 http подключений с одного IP (параметр MaxClients в httpd.conf установлен в значение 60):
Внимание! Обратите внимание что в случае больших прокси-серверов или большой сети за натом нам необходимо сделать исключения. Мы можем исключить данные IP с помощью синтаксиса !
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset # save the changes see iptables-save man page, the following is redhat and friends specific command service iptables save
Уберем для прокси 1.2.3.4 данное ограничение:
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -d ! 1.2.3.4 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
Пример: Ограничение на подсеть класса C
В данном примере мы ограничим параллельные http запросы для всей сети класса C (сетевая маска содержит 24 бита)
/sbin/iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset # save the changes see iptables-save man page service iptables save
Как я могу протестировать работу iptables?
Используйте следующий shell скрипт для подключения к веб серверу с адресом 202.1.2.3:
#!/bin/bash ip="202.1.2.3" port="80" for i in {1..100} do # do nothing just connect and exit echo "exit" | nc ${ip} ${port}; done
Интересные ссылки:
Давно хочу обновить себе ванную, и вот наконец пришла пора. Уже пару дней сижу и выбираю, особенно понравились гидромассажные ванны, да и цена вообщем не смертельна для кошелька.
Еще записи по теме
- Использование объектов DNS в Firewall Builder
- Linux/Unix shell: как отсортировать IP адреса
- BASH Shell: перенаправляем вывод и ошибки в /dev/null
- iRedMail: Установка полноценного почтового сервера с LDAP, Postfix, RoundCube, Dovecot, ClamAV, DKIM, SPF в CentOS 5.x, часть 1
- Как посмотреть какие группы принадлежат пользователю Linux
- Как найти файлы с определенным содержимым в Unix
- Добавление DNS серверов с помощью DNS-add
Оставьте комментарий!