Linux

Обеспечение безопасности нового сервера Ubuntu

Допустим, у меня есть свежая установка Ubuntu, какие шаги я должен предпринять, чтобы защитить ее для использования в качестве сервера приложений Rails?

Ответ 1

Я не могу вспомнить никаких специфических для Ubuntu настроек, но вот несколько, которые применимы ко всем дистрибутивам:

  1. Удалите все ненужные пакеты

  2. Используйте аутентификацию только с помощью открытого ключа в SSH

  3. Отключите логины root через SSH (не относится к Ubuntu)

  4. Используйте производственные настройки для PHP (php.ini-recommended)

  5. Настройте MySQL на использование только сокетов

Конечно, этот список не полный, и вы никогда не будете в полной безопасности, но он охватывает все эксплойты, которые я видел в реальной жизни.

Кроме того, эксплойты, которые я видел, почти всегда были связаны с небезопасным пользовательским кодом, а не с небезопасной конфигурацией. Конфигурации по умолчанию в минимальных серверных дистрибутивах, как правило, довольно безопасны.

Ответ 2

Одна серьезная вещь, которую я делаю на ранних этапах, это установка DenyHosts. Он будет регулярно просматривать /var/log/secure, ища неудачные логины, и после пары неудач блокировать IP. Я установил блокировку после первой попытки «нет такого пользователя», при второй попытке для root и после пары попыток для реальных пользователей (на случай, если вы ошибетесь, но вы должны использовать открытый ключ SSH для входа).

Ответ 3

Некоторые рекомендации по брандмауэру.

Научитесь использовать брандмауэр и концепции правильной блокировки сети. Изменение портов по умолчанию в основном бесполезная вещь; гораздо важнее правильная настройка приложений и брандмауэра.

И то и другое есть в репозиториях Ubuntu.

FireHOL

Имеет потрясающую документацию и очень простой в освоении синтаксис. Я смог настроить шлюз/брандмауэр за двадцать минут. Единственная причина, по которой я отошел от него, заключается в том, что он, похоже, больше не поддерживается (последний выпуск несколько лет назад). Это не значит, что он не работает, но...

Ferm

Этот инструмент более похож на iptables синтаксис, та же концепция. Поддерживается сообществом больше, чем FireHOL, но требует больше времени на освоение.

Shorewall

Это то, что я использую в настоящее время. Его документация обширна, а формат конфигурации табличный. Мне потребовалось около полутора часов, чтобы разобраться во всех необходимых файлах (6) для создания рабочей конфигурации брандмауэра/шлюза. Это довольно мощный инструмент. 

СОВЕТ: man-страницы для различных конфигурационных файлов очень полезны!

Все они загружают конфигурации брандмауэра из конфигурационного файла. Очень эффективно, проще в использовании, чем iptables, и (на мой взгляд) проще в использовании и управлении, чем ufw.

Прочее:

Я поддерживаю рекомендации по использованию ключей SSH.

Установите IDS.

Применяйте AppArmor. Он ограничивает доступ к файлам исполняемых программ только определенными каталогами и файлами, которые ему нужны. Аналогично SELinux в мире RHEL. Он устанавливается и включается с предварительно настроенными «профилями» для многих часто используемых программ.

Ответ 4

Наряду с другими предложениями здесь я упомяну три, которые очевидны, но, возможно, заслуживают упоминания для полноты картины:

Если вы думаете, что вам не нужен брандмауэр, подумайте еще раз. ufw прост, но разработан для Ubuntu и основан на iptables.

Обновляйте пакеты: как минимум применяйте все исправления безопасности.

Документируйте, что вы сделали для защиты сервера и почему. Включите настройку (автоматизированных) процессов для мониторинга журналов, тестирования конфигурации и сообщения о необходимых обновлениях безопасности.

Ответ 5

Установите logcheck, но настройте его так, чтобы никогда не получать сообщения от регулярных событий, иначе у вас выработается привычка игнорировать письма. Проверьте, какие процессы прослушиваются с помощью netstat, и убедитесь, что не запущено ничего, что не должно быть запущено. Многие демоны могут быть настроены на прослушивание только внутреннего IP (или localhost), а не всех интерфейсов. 

Схожие статьи

Linux

Архитектура для высокодоступного MySQL с автоматическим обходом отказа в физически разных местах

Linux

Взломан сервер – что делать?

Linux

Как установить системную переменную $PATH в Linux/Unix

Linux

Имеет ли смысл включать автоматическое обновление в стабильной версии Debian lenny?