Брутфорс может хорошо нагрузить любой сервер, самый простой способ ограничить число подключений — произвести настройку iptables. Ссылка на руководство по iptables и ещё одно.
Ограничение количества подключений.
Брутфорс — многократные подключения с перебором многих часто используемых простых паролей. Поэтому, разумно ограничить количество подключений на стандартный 22й порт SSH с одного ip адреса до 2-3 раз в минуту, после чего заблокировать возможность подключения для данного ip адреса.
1 2 3 4 5 6 7 8 9 10 11 |
## Цепочка правил sshfense # Создаём новое правило /sbin/iptables -N sshfense # Включаем лог #/sbin/iptables -A sshfense -m state --state NEW -m recent --name SSH --rcheck --seconds 60 --hitcount 2 -j LOG --log-prefix "SSH-shield: " /sbin/iptables -A sshfense -m state --state NEW -m recent --name SSH --update --seconds 60 --hitcount 2 -j DROP /sbin/iptables -A sshfense -m state --state NEW -m recent --name SSH --set -j ACCEPT /sbin/iptables -A sshfense -j ACCEPT ## Применение для трафика ssh цепочку sshfense /sbin/iptables -A INPUT -p tcp --dport 22 -j sshfense |
Динамическое открытие/закрытие ssh порта
Правило для iptables, с помощью которого можно открывать/закрывать 22 порт когда это необходимо администратору сервера.
Суть правила проста: если необходимо подключиться к шеллу по 22 порту, то сначала нужно стукнуться на 1500 порт, только после этого ОС будет прослушивать порт 22. Для того того, чтобы закрыть порт нужно стукнуться на 1499 порт.
Обратиться к 1500 порту можно telnet’ом: telnet myserver 1500 или через обычный браузер: http://192.168.0.100:1500
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#создаём новое правило iptables -N sshdoor #если адрес есть в списке, то подключение разрешено iptables -A sshdoor -m state --state NEW -m recent --rcheck --name SSH -j ACCEPT #разрешить пакеты для уже установленных соединений iptables -A sshdoor -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A sshdoor -j DROP #включаем лог #iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1500 -j LOG --log-prefix "SSH-open: " #заносим адрес в список iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1500 -m recent --name SSH --set -j DROP #удаляем адрес из списка iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1499 -m recent --name SSH --remove -j DROP #применение для трафика ssh цепочки sshdoor iptables -A INPUT -p tcp --dport 22 -j sshdoor |
Открытие порта ssh на заданное время
Еще один отличный пример с помощью которого можно открыть порт ssh только для определенного ip и на определённое время.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Создаём новое правило iptables -N sshontime #удаление всех правил из заданной цепочки iptables -F sshontime #разрешаем подключение если ip адрес есть в списке и последнее подключение осуществлялось не позднее 30 часов (108000 секунд). iptables -A sshontime -m state --state NEW -m recent --update --seconds 108000 --name SSH -j ACCEPT #разрешаем пакеты для уже установленных соединений iptables -A sshontime -m state --state ESTABLISHED,RELATED -j ACCEPT #блокируем, если нет в списке iptables -A sshontime -j DROP ##Открытие SSH iptables -A INPUT -m state --state NEW -p tcp --dport 222 -m recent --name SSH --set ## Фильтрация ssh трафика через цепочку sshontime iptables -A INPUT -p tcp --dport 22 -j sshontime |
После применения правила, для получения ssh доступа нужно сперва постучаться на порт 222, например так: ssh user@server.name -p 222, после этого доступ для вашего ip на 22 порт будет разрешен на 30 часов (т.е. в течении этого времени перед соединением по 22 порту на 222 стучаться не обязательно).
Свежие комментарии