Есть ли универсальное решение для моей задачи? Если, да, то напишите его и объясните. Почему я спрашиваю это? На vds стоит web сервер ngx, задача сайт (отдаёт страницы, css, и изображения), и управление сервером через ssh. Как я полагаю проще разрешить то, что я написал выше, а остальное будет дропаться. И возникает вопрос... как бы соединение по ssh не дропнуть. Как это реализовать на iptable или может по другому.
Наиболее правильно сделать всё, что сказали выше +
1. выключить авторизацию по паролю(только через сертификат)
2. в iptables поставить доступ к ssh только с определённых ip
3. в ssh продублировать доступ с определённых ip
4. Для nginx скрыть версию, для php тоже, для системы тоже почитать как она скрывается
5. настроить fail2ban для всех открытых сервисов с авторизацией
6. на всех сервисах ограничить количество одновременных соединений, тут везде по-разному. limits и прочее
Для параноиков всегда можно сделать на сервере openvpn на 443 порту, разрешить совместное использование оного с nginx, сбацать себе сертификат неэкспортируемый, передать его сложным путём через дробленный архив с паролем, затем импортировать используя пароль в закрытое хранилище устройства и сидеть с него в ssh на сервер.
Ещё в крон сканирование от руткитов сделать. А если сервер на vds физическом, или kvm....то можно ещё загнаться с криптованием дисков с данным или полностью(я делал на kvm полностью(даже чтобы grub появился нужен был пароль))
1. SSH - на нестандартный порт, запрет логина рутом (логиниться удаленно простым пользователем и дальше su/sudo). Подбор пароля рута к SSH на 22-м порту - самый основной вектор атаки.
2. Регулярные обновления по безопасности.
3. По безопасной настройке ngx - куча инфы в сети.