это первый раз, когда я настраиваю сервер Ubuntu. Он собирается запустить приложение с низким уровнем использования для компании, но я хочу убедиться, что не упущу никаких проблем с безопасностью.
1) Я установил свежий рабочий стол Ubuntu 20.04 на компьютер Dell OptiPlex i5. (что было немного сложно)
2) Добавлены LAMP и SSH-сервер с использованием tasksel
3) Настроил mysql с новым пользователем и надежным паролем. Отключен пользователь root и нелокальный доступ.
4) Включен брандмауэр и разрешен ssh, http, https
порты
Как вы думаете, достаточно ли справедлива эта конфигурация для безопасной работы сервера? Какие еще меры предосторожности вы рекомендуете?
Примечание: я не устанавливал версию Ubuntu Server, потому что я также хочу иметь графический интерфейс.
Вы также можете установить антивирусное программное обеспечение, такое как ClamAV, включить SELinux, если оно станет общедоступным, и убедиться, что ssh
недоступен для общественности, так как это распространенный вектор атаки. Для веб-приложений убедитесь, что файлы и каталоги не принадлежат пользователю Apache (если это то, что вы используете) или пользователям какой-либо из служб. Вместо этого создайте группу с правом записи для запуска приложений, чтобы даже в случае взлома она не могла изменять разрешения. Для MySQL убедитесь, что у вас есть методы защиты от внедрения SQL и других атак. Аудит и ведение журнала также важны, и вам также необходимо поработать с сетью и информационной безопасностью в компании, чтобы убедиться, что существуют другие средства защиты.
Последнее, что вы можете сделать, это избавиться от графического интерфейса, поскольку он создает больше векторов, которые необходимо защитить. Нет причин иметь графический интерфейс на сервере, поскольку в дополнение к тому, что я только что сказал, для этого требуется больше ресурсов, которые можно было бы выделить в другом месте. Вам не обязательно иметь Ubuntu Server, но убедитесь, что вы используете Ubuntu 20.04 LTS, который поддерживается до 2030 года.
В идеале вам нужно как можно меньше открываться внешнему миру. Если, например, вам не нужно разрешать доступ к ssh из Интернета, не делайте этого. Если для вашего варианта использования требуется открытый ssh-сервер, убедитесь, что вы настроили его так, чтобы он требовал аутентификации с асимметричным ключом, а не учетных данных имени пользователя и пароля.
Я бы не советовал запускать полную настольную установку на сервере как из-за дополнительных накладных расходов, так и из-за большей потенциальной поверхности атаки. Научитесь настраивать свои сервисы через интерфейс командной строки - это в любом случае принесет вам пользу; по крайней мере, когда у вас нет другого способа исправить проблему, кроме как через ssh.
При настройке TLS для веб-службы проверьте это с помощью чего-то вроде ssllabs, а также проверьте заголовки безопасности чтобы немного усложнить жизнь потенциальному злоумышленнику.
Дополнительная безопасность в значительной степени зависит от используемого вами приложения, конечно, если вы следите за тем, чтобы ваша среда оставалась актуальной.