Каждый день меня довольно сильно бьют тысячи запросов с одних и тех же IP-адресов нескольких классов. В последнее время он принимает все мои подключения MYSQL и не разрешает новые подключения.
Сейчас я пытаюсь настроить брандмауэр для установки ограничения на количество подключений.
Вот правила, которые у меня сейчас есть
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
-A INPUT -p tcp -m tcp --dport 443 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
-A INPUT -p tcp -m tcp --dport 21 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 2 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
-A INPUT -p tcp -m tcp --dport 25 --tcp-flags FIN,SYN,RST,ACK SYN -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT --reject-with tcp-reset
Я никогда раньше не связывался с IPTables. Мне кажется, это правило
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
перезаписывает connlimit
Я пытался убрать это глобальное правило принятия и вместо этого добавить это правило
iptables -A INPUT -p tcp -m tcp --dport 80 -m connlimit --connlimit-upto 10 --connlimit-mask 24 -j ACCEPT
Когда я пытаюсь добавить это правило, я получаю сообщение об ошибке iptables v1.4.7: unknown option `--connlimit-upto '. Что я делаю не так?
Обновлено с исправлениями
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -m connlimit ! --connlimit-above 20 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -m connlimit ! --connlimit-above 5 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -m connlimit ! --connlimit-above 10 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -m connlimit ! --connlimit-above 10 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 110 -m connlimit ! --connlimit-above 10 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 995 -m connlimit ! --connlimit-above 10 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 143 -m connlimit ! --connlimit-above 10 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -m connlimit ! --connlimit-above 10 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -m connlimit ! --connlimit-above 1 --connlimit-mask 24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -m connlimit ! --connlimit-above 2 --connlimit-mask 24 -j ACCEPT
Спасибо!!!
Вроде у вас версия 1.4.7 из iptables
. В --connlimit-upto
опция была добавлена в версии 1.4.11, упоминается в этот журнал изменений. Обновите свой iptables
, как будто немного устарел (март 2010 г.).