Защита веб-сервера - это большая тема, больше подходящая для книги (или серии книг), чем для ответа на Stack Exchange. С учетом сказанного я коснусь нескольких моментов.
но о чем он не говорит, так это о защите от вирусов, вредоносного кода и перебора из-за сетевого брандмауэра.
Вообще говоря, мы не особо озабочены вирусными инфекциями в Linux. Целевой процент компьютеров намного ниже, системы разрешений (и такие вещи, как SELinux) помогают предотвратить множество проблем, которые могут возникнуть, а установка программного обеспечения только из надежных хранилищ программного обеспечения помогает уменьшить эту угрозу.
Держите ваш сервер в актуальном состоянии, подпишитесь на список анонсов безопасности Ubuntu и не запускайте ненадежное программное обеспечение. И не отключайте AppArmor .
Общий совет в кругах безопасности состоит в том, что, как только обнаружены какие-либо признаки заражения, вы должны уничтожить (стереть) сервер и начать с нуля, а не пытаться избавиться от любой инфекции. Для этого вы должны настроить (и протестировать!) Регулярные резервные копии. Также очень хорошая идея использовать инструмент управления конфигурацией (мне нравится Ansible ) для всех ваших настроек, а не делать это вручную, чтобы вы могли мгновенно запустить другой сервер.
Последняя рекомендация - установить fail2ban . Чаще всего он используется для защиты от попыток перебора SSH, но он также поставляется с файлами конфигурации для ряда других общих сетевых служб. Если вы используете Ansible, его настройка станет намного проще из-за присутствия включаемых ролей из их репозитория сообщества .
Я должен быть относительно безопасным для неиндексированного веб-сервера
Есть боты, постоянно сканирующие все известное адресное пространство IPv4 для серверов, поэтому вы никогда не должны предполагать, что просто потому, что ваш сервер публично не связан, он не будет найден.