Я читал некоторую документацию CentOS в отношении безопасности SSH и заметил, что есть правило, которое вы можете реализовать в IPTables для DROP IP, которое пытается получить доступ к вашему SSH-порту на основе установленного количества в течение определенного периода времени. Выглядело это примерно так:
iptables -A INPUT -p tcp --dport 22 -m recent --set --name ssh --rsource
iptables -A INPUT -p tcp --dport 22 -m recent ! --rcheck --seconds 60 --hitcount 4 --name ssh --rsource -j ACCEPT
С тех пор я переместил свой порт SSH, но я реализовал это правило для порта, на который был переведен SSH.
У меня вопрос: так как это идеально для SSH, нельзя ли это написать для других портов? Должен ли он? Возможны ли атаки методом перебора каким-либо другим способом? Было бы безумием сказать, что вы можете реализовать правило для IPTables, которое делает это для всего окна?
Я предполагаю, что сервер с высоким трафиком может почти "споткнуться" об этом правиле, но я также предполагаю, что атаки методом перебора происходят в таком колоссальном количестве за небольшой промежуток времени, что может быть установлен какой-то предел для предотвращения этот.
Большое спасибо SF
Вы можете сделать это для SSH и других сервисов, но вам нужно знать ожидаемое количество подключений. В противном случае вы можете отказаться от легального трафика.
Одна важная вещь, на которую следует обратить внимание, - это иметь подобное правило до recent
правила.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
В противном случае вы ограничите все пакеты, а не только новые соединения.
Я лично использую DenyHost для этой задачи. http://denyhosts.sourceforge.net/
Посмотрите на sshguard, он именно так и делает. Первоначально он был написан только для ssh, но теперь он распространяется и на другие службы. http://www.sshguard.net/