Назад | Перейти на главную страницу

Только Ultra Secure Linux Server SSH

Я настраиваю безопасный сервер для использования только для хранения зашифрованных файлов, но к нему нужно будет получить доступ из Интернета. Сам сервер находится в безопасном месте без физического доступа, что нормально, но меня больше беспокоит интернет. Я думаю об использовании Ubuntu без какого-либо другого программного обеспечения, кроме open ssh.

Как настроить iptables для блокировки всех подключений, кроме ssh? И как мне настроить открытый ssh ​​для блокировки более двух неудачных попыток?

iptables -A INPUT -p tcp -m state --state NEW --dport 22 -m recent --name sshattack --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name sshattack --rcheck --seconds 60 --hitcount 4 -j LOG --log-prefix 'SSH REJECT: '
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name sshattack --rcheck --seconds 60 --hitcount 4 -j REJECT --reject-with tcp-reset

См., Например, моя рецензия на эту тему для получения более подробной информации (включая то, где в правилах брандмауэра их размещать делает иметь значение).

Рекомендации других респондентов разрешить только ssh на основе ключей I тщательно endorse, потому что это делает бесполезным подбор пароля; но вы можете пойти еще дальше и разрешить только двухфакторную аутентификацию, см. моя рецензия на юбике для получения более подробной информации об этом.

Для сверхбезопасности разрешите ввод только SSHKEY вместо того, чтобы разрешать вход по паролю.

Если вам нужна дополнительная безопасность по сравнению с другими точными мерами, предложенными в этих ответах, вы можете подумать о блокировке портов. Блокировка портов обеспечивает хорошую защиту от злоумышленников, которые сканируют диапазоны IP-адресов серверов для атаки, что, по моему опыту, является наиболее распространенной атакой в ​​реальной жизни.

Для SSH я бы рекомендовал перейти на аутентификацию только по ключу. Отключите root-доступ к демону и период аутентификации по паролю. Как только аутентификация на основе ключа является единственным выходом, действительно нет необходимости в «блокировке», как вы предлагаете. Это действительно единственный эффективный способ снизить эффективность парольных атак методом перебора.

Сайт iptables уже получил ответ от @MadHatter.

Вот базовое руководство по обеспечение безопасности Linux ssh. Это касается настройки (и только использования) проверки подлинности с открытым ключом, отключения входа в систему с правами root (и настройки sudo) и использования нестандартных портов.

Вот руководство по iptables.

Я использую Shorewall для настройки моих правил iptables, с политикой по умолчанию для DROP все и одним правилом для ACCEPT SSH-соединений (ну, плюс правила / политики для разрешения исходящего трафика, конечно); эффект в значительной степени идентичен тому, что опубликовал @MadHatter, но я считаю, что Shorewall намного проще настраивать и использовать, чем прямые правила iptables. (Shorewall - это слой конфигурации поверх iptables, использующий ряд более простых для понимания файлов конфигурации для использования сложных настроек брандмауэра; сам по себе брандмауэр не является.)

Затем настройте свой SSH-сервер так, чтобы он разрешал только аутентификацию на основе ключей, как это предлагалось практически всеми до сих пор - это должно сказать вам, насколько это хорошая идея!

И чтобы удовлетворить ваше требование блокировать попытки грубой силы, я настоятельно рекомендую Fail2ban, который можно настроить, чтобы установить, сколько неудачных попыток заблокировать, как долго запрещать нарушающий IP-адрес, и он может даже контролировать себя, чтобы произвести более длительный бан. на настойчивых атакующих, которых не удержит первый уровень реакции (см. HOWTO на сайте Fail2ban «Мониторинг Fail2ban с помощью Fail2ban»). Вы даже можете настроить уведомления по электронной почте об ответах Fail2ban: я установил эту часть вчера вечером, и к сегодняшнему утру она уже заблокировала потенциального китайского хакера (во всяком случае, на основе whois IP).