Слишком много подключений и iptables не работает, чтобы ограничить количество подключений на IP

У меня выделенный сервер с 32 ГБ ОЗУ. Все работает хорошо, пока некоторые игроки не пришли на мой сервер. У меня было очень высокое использование полосы пропускания восходящей линии связи (более 150 Мбит / с). Я посмотрел на netstat с помощью следующей команды:

netstat -an | grep tcp | awk '{print $5}' | cut -f 1 -d : | sort | uniq -c | sort -n

Он показывает тысячи соединений для нескольких IP-адресов: я использовал следующие допустимые правила для ограничения соединений на IP:

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 15 --connlimit-mask 32 -j REJECT --reject-with tcp-reset 

iptables -A INPUT -m state --state RELATED,ESTABLISHED -m limit --limit 150/second --limit-burst 160 -j ACCEPT

Я сохранил эти правила и эти правила являются первыми в списке в iptables. Я перезапустил систему, чтобы закрыть все соединения и восстановил правила iptable. Поставьте сервер в онлайн. Сервер был почти мертв, и снова были тысячи соединений. У меня установлен UFW, и открыта только пара портов.

Что я могу сделать, чтобы остановить это? Как можно убить установленные соединения на IP? КСТАТИ. все ips замаскированы и поддельные.

Редактировать:

netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n
      1 CLOSING
      1 established)
      1 Foreign
      2 SYN_SENT
      7 FIN_WAIT2
     16 LISTEN
     21 CLOSE_WAIT
     48 LAST_ACK
    209 SYN_RECV
    284 FIN_WAIT1
    772 ESTABLISHED
  35426 TIME_WAIT
0
задан 16 August 2015 в 00:49

1 ответ

Попробуйте это:

/sbin/iptables -I INPUT -p tcp --dport 80 -i eth? -m state --state NEW -m recent --set
/sbin/iptables -I INPUT -p tcp --dport 80 -i eth? -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

первая строка будет Наблюдать IP, соединяющийся с Вашим интерфейсом eth.

вторая строка проверит, является ли соединение новым в течение прошлых 60 секунд и если поток пакетов выше, чем десять, и раз так это отбросит соединение.

Для блокирования IP-адреса необходимо ввести:

/sbin/iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

, Если Вы просто хотите блокировать доступ к одному порту от IP, необходимо ввести:

/sbin/iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --destination-port 25 -j DROP

вышеупомянутое правило отбросит все пакеты, прибывающие из IP xxx.xxx.xxx.xxx для портирования 25.

0
ответ дан 16 August 2015 в 10:49
  • 1
    Спасибо за Ваш ответ. Я попробовал это, но когда я загружаюсь, диск isn' t соединенный, когда я делаю DF-h., кажется, что диск смонтирован не где... – ChristTheGreat 7 November 2016 в 14:21

Другие вопросы по тегам:

Похожие вопросы: