Что должен знать каждый системный администратор перед администрированием публичного сервера?
Подобно этому вопросу о переполнении стека, что должен знать системный администратор, который привык к частным ситуациям типа интрасети, прежде чем стать администратором общедоступного сайта?
Это могут быть вещи, связанные с безопасностью, такие как "не выходи из отпуска telnet
открыть "или практические вещи, как, как сделать балансировку нагрузки для сайта с высоким трафиком.
6 ответов
Каждое приложение, каждый двоичный файл, каждый пакет, который существует на сервере, является ответственностью. Подпишитесь на принцип "наименьшего бита"; если он не установлен, он не может быть скомпрометирован.
Реализовать обнаружение вторжений, например Tripwire или аналогичное, и часто сканировать.
Инвестируйте в аппаратный брандмауэр и открывайте только те порты, которые необходимы для вашего приложения. Не позволяйте вашим административным портам (ssh, rdp и т. Д.) Быть публично видимыми; ограничьте их утвержденными управляющими IP-адресами.
Создавайте резервные копии конфигураций брандмауэра / коммутатора / маршрутизатора на момент запуска в производство. Если одно из этих устройств будет взломано, восстановление после него будет значительно быстрее, если очистить мозг устройства и перезагрузить конфигурацию, чем выполнять построчную проверку конфигурации, когда тикают часы.
Часто отображайте вашу среду извне, чтобы не открывать новые порты.
Никогда не доверяй интернету; убедитесь, что все, что вы обслуживаете в сети, является безопасным, насколько это возможно (например, выполните проверку и очистку входных данных на стороне сервера, чтобы остановить атаки с использованием SQL-инъекций).
Держите поверх ваших исправлений.
Если вы скомпрометированы, восстановите с нуля с помощью недавно загруженных носителей. Вы больше не можете доверять, что ваши резервные копии безопасны и не пострадали (хотя tripwire может помочь с этим) для чего-либо, кроме инертных, неисполняемых данных.
Одним из инструментов, который я нашел удобным для защиты сети, является nessus
По сути, вы устанавливаете его на внешнем сервере, и он пытается атаковать вашу сеть с помощью целого ряда известных эксплойтов. Вы можете установить его в безопасном режиме (когда ни одна из атак не приведет к сбою вашего сервера), или, если вы уверены, что все исправлено, или можете позволить себе перезагрузить серверы в случае необходимости в небезопасном режиме.
Затем он предоставит очень полный классифицированный отчет для каждой машины, который сможет увидеть, какие уязвимости / слабости он обнаружит, и оценит их серьезность - и даже порекомендует действия, которые необходимо предпринять для решения проблем.
Они должны знать, как работает их система резервного копирования и аварийного восстановления, и как они будут восстанавливать систему, когда / если она окажется под угрозой.
В системах с ЛЮБЫМИ общедоступными интерфейсами убедитесь, что ваши пользователи имеют надежные пароли, внедрив политику надежных паролей и протестировав файл паролей с помощью утилиты взлома паролей, такой как Джон Риппер.
Кроме того, вы можете защититься от атак с использованием подбора паролей, блокируя IP-адреса после нескольких неудачных попыток. Хороший инструмент для этого (в Linux) - fail2ban
Это немного противоречит, но с точки зрения безопасности я не делаю различий между внутренним сервером и внешним сервером. Рано или поздно кто-то допустит ошибку в брандмауэре, руководство будет настаивать на том, чтобы сервер был раскрыт из-за важного клиента, Бетти в бухгалтерии каким-то образом получит vpn-клиент на своей зараженной домашней машине и т. Д.
Тем не менее, слои - ваш друг, и вы должны занести в черный список по умолчанию.
Слои - у вас должно быть несколько уровней безопасности. Например, аппаратный брандмауэр и программный брандмауэр. Теоретически они служат той же цели, но наличие нескольких уровней защищает от ошибок и смягчает последствия использования одного слоя.
Другим аспектом многоуровневого размещения является "домашний доступ", который по сути состоит из нескольких DMZ. В какой-то момент вы должны иметь некоторый уровень доверия между вашими компьютерами и людьми, получающими доступ к вашим учетным записям. Если вы можете сузить эти точки взаимодействия, вы можете жестко контролировать тип трафика, которому вы доверяете, в любой точке. Например, если вы отделяете серверы интерфейса / приложения от серверов баз данных, вы сужаете уровень доверия. Если ваши серверы приложений подвергаются риску, эти злоумышленники получают минимальную опору для вашей инфраструктуры (то есть, чтобы продолжить свою атаку и попытаться использовать ваши другие серверы, им нужно использовать только те установленные точки доверия).
Что касается внесения в черный список по умолчанию, вы должны в основном закрыть все и требовать (даже если это только вы сами) обоснование для каждого порта, который вы открываете, имя пользователя, которому вы разрешаете доступ, приложение, которое вы устанавливаете, и т. Д.
Ваш переключатель может быть взломан, и кто-то может подделать данные. Если у вас нет коммутатора, настройте vpn, так как ограничения доступа к брандмауэру для ip может быть недостаточно.
Не оставляйте открытыми какие-либо порты, кроме тех, к которым вы хотите, чтобы пользователи и хакеры имели доступ. Сканируйте свои собственные серверы с другого сайта каждый месяц.
Не оставляйте порт ssh по умолчанию открытым для хакеров.