Поиск по сайту:

Введение в защиту вашего Linux VPS


Статус: устарело

Эта статья устарела и больше не поддерживается. Он все еще может быть полезен в качестве справочного материала, но может не соответствовать последним рекомендациям.

Смотрите вместо этого

Ознакомьтесь с нашим новым руководством «Рекомендуемые меры безопасности для защиты ваших серверов».

Введение

Получение контроля над собственным сервером Linux — это возможность попробовать что-то новое и использовать мощь и гибкость отличной платформы. Однако администраторы серверов Linux должны проявлять такую же осторожность, как и при работе с любой машиной, подключенной к сети, чтобы обеспечить ее безопасность и безопасность.

Существует множество различных вопросов безопасности, подпадающих под общую категорию «Безопасность Linux», и множество мнений относительно того, как выглядит соответствующий уровень безопасности для сервера Linux.

Главное, что нужно вынести из этого, это то, что вам придется решить для себя, какие средства защиты будут необходимы. Прежде чем сделать это, вы должны знать о рисках и компромиссах, а также выбрать баланс между удобством использования и безопасностью, который имеет смысл для вас.

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

Блокировка доступа с помощью брандмауэров

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

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

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

Существует довольно много доступных решений для брандмауэров. Мы кратко обсудим некоторые из наиболее популярных вариантов ниже.

УФВ

UFW означает несложный брандмауэр. Его цель — обеспечить хорошую защиту без сложного синтаксиса других решений.

UFW, как и большинство брандмауэров Linux, на самом деле является внешним интерфейсом для управления брандмауэром netfilter, включенным в ядро Linux. Обычно это простой брандмауэр для людей, еще не знакомых с решениями брандмауэра Linux, и, как правило, это хороший выбор.

Вы можете узнать, как включить и настроить брандмауэр UFW, а также узнать больше, нажав на эту ссылку.

IPTables

Возможно, самым известным решением для брандмауэра Linux является iptables. IPTables — еще один компонент, используемый для администрирования брандмауэра netfilter, включенного в ядро Linux. Он существует уже давно и прошел интенсивные проверки безопасности, чтобы обеспечить его безопасность. Существует версия iptables под названием ip6tables для создания ограничений IPv6.

Скорее всего, вы столкнетесь с конфигурациями iptables, когда будете администрировать Linux-машины. Сначала синтаксис может быть сложным для понимания, но это невероятно мощный инструмент, который можно настроить с помощью очень гибких наборов правил.

Вы можете узнать больше о том, как использовать iptables в дистрибутивах на базе CentOS/Fedora/RHEL, здесь.

IP6Таблицы

Как упоминалось выше, iptables используется для управления таблицами, содержащими правила IPv4. Если на вашем сервере включен IPv6, вам также необходимо обратить внимание на эквивалент IPv6: ip6tables.

Брандмауэр netfilter, включенный в ядро Linux, полностью разделяет трафик IPv4 и IPv6. Они хранятся в разных таблицах. Правила, определяющие окончательную судьбу пакета, определяются используемой версией протокола.

Для администратора сервера это означает, что при включении версии 6 необходимо поддерживать отдельный набор правил. Команда ip6tables использует тот же синтаксис, что и команда iptables, поэтому реализовать тот же набор ограничений в таблице версии 6 обычно несложно. Однако вы должны быть уверены, что трафик, направленный на ваши IPv6-адреса, совпадает, чтобы это работало правильно.

NFT-таблицы

Хотя iptables долгое время был стандартом для брандмауэров в среде Linux, недавно в ядро Linux был добавлен новый брандмауэр под названием nftables. Это проект той же команды, что и iptables, и он призван в конечном итоге заменить iptables.

Брандмауэр nftables пытается реализовать более читаемый синтаксис, чем его предшественник iptables, и реализует поддержку IPv4 и IPv6 в том же инструменте. Хотя в настоящее время большинство версий Linux не поставляются с ядром, достаточно новым для реализации nftables, вскоре оно станет обычным явлением, и вам следует попытаться ознакомиться с его использованием.

Использование SSH для безопасного удаленного входа

При администрировании сервера, к которому у вас нет локального доступа, вам потребуется удаленный вход в систему. Стандартный безопасный способ сделать это в системе Linux — использовать протокол, известный как SSH, что означает «безопасная оболочка».

SSH обеспечивает сквозное шифрование, возможность туннелирования небезопасного трафика через безопасное соединение, X-forwarding (графический пользовательский интерфейс через сетевое соединение) и многое другое. По сути, если у вас нет доступа к локальному соединению или внешнему управлению, SSH должен быть вашим основным способом взаимодействия с вашей машиной.

Хотя сам протокол очень безопасен и подвергся обширным исследованиям и проверке кода, выбранные вами параметры конфигурации могут как способствовать, так и препятствовать безопасности службы. Некоторые варианты мы обсудим ниже.

Пароль против входа по SSH-ключу

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

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

SSH-ключи, с другой стороны, работают, генерируя безопасную пару ключей. Открытый ключ создается как тип теста для идентификации пользователя. Его можно без проблем опубликовать публично, и его нельзя использовать ни для чего, кроме как для идентификации пользователя и разрешения входа пользователю с соответствующим закрытым ключом. Закрытый ключ должен храниться в секрете и использоваться для проверки связанного с ним открытого ключа.

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

Чтобы узнать больше о том, как настроить ключи SSH на вашем сервере, см.

Внедрить fail2ban для блокировки вредоносных IP-адресов

Одним из шагов, который поможет обеспечить общую безопасность вашей конфигурации SSH, является внедрение такого решения, как fail2ban. Fail2ban — это служба, которая отслеживает файлы журналов, чтобы определить, не является ли удаленная система законным пользователем, а затем временно блокирует будущий трафик с соответствующего IP-адреса.

Настройка разумной политики fail2ban может позволить вам помечать компьютеры, которые постоянно безуспешно пытаются войти в систему, и добавлять правила брандмауэра, чтобы отбрасывать от них трафик в течение заданного периода времени. Это простой способ помешать часто используемым методам грубой силы, потому что им придется сделать перерыв на некоторое время, когда они будут запрещены. Обычно этого достаточно, чтобы предотвратить дальнейшие попытки грубой силы.

Вы можете изучить CentOS здесь.

Внедрите систему обнаружения вторжений для обнаружения несанкционированного проникновения

Следует помнить об одном важном соображении: разработать стратегию обнаружения несанкционированного использования. У вас могут быть предупредительные меры, но вам также нужно знать, не сработали ли они.

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

Существует довольно много систем обнаружения вторжений. Мы рассмотрим несколько ниже.

Трипваер

Одна из самых известных реализаций IDS — tripwire. Tripwire составляет базу данных системных файлов и защищает файлы конфигурации и двоичные файлы набором ключей. После выбора деталей конфигурации и определения исключений последующие запуски уведомляют о любых изменениях в отслеживаемых файлах.

Модель политики очень гибкая, что позволяет вам формировать ее свойства в соответствии с вашей средой. Затем вы можете настроить запуск tripwire с помощью задания cron и даже реализовать уведомления по электронной почте в случае необычной активности.

Узнайте больше о том, как внедрить tripwire здесь.

помощник

Еще один вариант IDS — Aide. Подобно tripwire, Aide работает, создавая базу данных и сравнивая текущее состояние системы с заведомо исправными значениями, которые она сохранила. При возникновении несоответствия он может уведомить администратора о проблеме.

Aide и tripwire предлагают схожие решения одной и той же проблемы. Ознакомьтесь с документацией и попробуйте оба решения, чтобы выяснить, какое из них вам больше нравится.

Руководство по использованию Aide в качестве IDS можно найти здесь.

Псад

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

Например, если пользователь пытается найти уязвимости с помощью сканирования портов, psad может обнаружить эту активность и динамически изменить правила брандмауэра, чтобы заблокировать пользователя-нарушителя. Этот инструмент может регистрировать различные уровни угроз и основывать свои действия на серьезности проблемы. Он также может опционально отправить письмо администратору.

Чтобы узнать, как использовать psad в качестве сетевой IDS, перейдите по этой ссылке.

Братан

Еще один вариант сетевой IDS — Bro. На самом деле Bro — это платформа мониторинга сети, которую можно использовать в качестве сетевой IDS или для других целей, таких как сбор статистики использования, исследование проблем или обнаружение закономерностей.

Система Bro разделена на два уровня. Первый уровень отслеживает активность и генерирует то, что считает событиями. Второй уровень запускает сгенерированные события через структуру политик, которая диктует, что следует делать с трафиком. Он может генерировать оповещения, выполнять системные команды, просто регистрировать события или использовать другие пути.

Чтобы узнать, как использовать Bro в качестве IDS, нажмите здесь.

РХХантер

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

В то время как вирусы в мире Linux редки, существуют вредоносные программы и руткиты, которые могут скомпрометировать вашу машину или предоставить постоянный доступ к успешному злоумышленнику. RKHunter загружает список известных эксплойтов, а затем проверяет вашу систему по базе данных. Он также предупреждает вас, если обнаруживает небезопасные настройки в некоторых распространенных приложениях.

Вы можете прочитать эту статью, чтобы узнать, как использовать RKHunter в Ubuntu.

Общие советы по безопасности

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

Есть несколько общих правил, которые помогут вам выбрать правильное направление в отношении безопасного использования вашей системы.

Обращайте внимание на обновления и регулярно обновляйте

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

Однако наличие обновлений безопасности в репозитории не принесет пользы вашему серверу, если вы не загрузили и не установили обновления. Хотя многим серверам выгодно полагаться на стабильные, хорошо протестированные версии системного программного обеспечения, исправления безопасности не следует откладывать на потом, и их следует считать критическими обновлениями.

Большинство дистрибутивов предоставляют списки рассылки безопасности и отдельные репозитории безопасности только для загрузки и установки исправлений безопасности.

Будьте осторожны при загрузке программного обеспечения не по официальным каналам

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

Вы можете доверять пакетам из своего дистрибутива или программному обеспечению, доступному на официальном веб-сайте проекта, но имейте в виду, что если вы не проводите аудит каждой части программного обеспечения самостоятельно, существует риск. Большинство пользователей считают, что это приемлемый уровень риска.

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

Убедитесь, что вы можете объяснить себе, почему вы доверяете источнику. Если вы не можете этого сделать, подумайте о том, чтобы взвесить свой риск безопасности как больше беспокойства, чем удобство, которое вы получите.

Знайте свои услуги и ограничивайте их

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

Это означает, что если вы используете безголовый сервер (без подключенного монитора) и не запускаете никаких графических (не веб-) программ, вам следует отключить и, возможно, удалить сервер X display. Аналогичные меры могут быть приняты и в других областях. Нет принтера? Отключите службу \lp. Нет общих сетевых ресурсов Windows? Отключите службу \samba.

Вы можете узнать, какие службы запущены на вашем компьютере, с помощью различных средств. В этой статье рассказывается, как обнаружить включенные службы в разделе «Создать список требований».

Не используйте FTP; Вместо этого используйте SFTP

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

Есть только несколько случаев, когда FTP, вероятно, можно реализовать. Если вы используете анонимное общедоступное зеркало загрузки, доступное только для чтения, FTP — достойный выбор. Другой случай, когда FTP является хорошим выбором, — это когда вы просто передаете файлы между двумя компьютерами, которые находятся за брандмауэром с поддержкой NAT, и вы уверены, что ваша сеть безопасна.

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

Это позволяет вам передавать информацию на ваш сервер и с него так же, как вы обычно используете FTP, но без риска. Большинство современных FTP-клиентов также могут взаимодействовать с SFTP-серверами.

Чтобы узнать, как использовать SFTP для безопасной передачи файлов, ознакомьтесь с этим руководством.

Внедрите разумные политики безопасности пользователей

Существует ряд шагов, которые вы можете предпринять, чтобы лучше защитить свою систему при администрировании пользователей.

Одно из предложений - отключить вход в систему с правами root. Поскольку пользователь root присутствует в любых POSIX-подобных системах и является всемогущей учетной записью, он является привлекательной целью для многих злоумышленников. Отключение входа в систему root часто является хорошей идеей после того, как вы настроили доступ sudo или если вам удобно использовать команду su. Многие люди не согласны с этим предложением, но проверьте, подходит ли оно вам.

Можно отключить удаленный вход в систему root в демоне SSH или отключить локальный вход в систему, вы можете установить ограничения в файле /etc/securetty. Вы также можете настроить оболочку пользователя root на не-оболочку, чтобы отключить доступ к оболочке root, и настроить правила PAM для ограничения входа в систему root. В RedHat есть отличная статья о том, как отключить root-логин.

Еще одна хорошая политика, которую можно реализовать с учетными записями пользователей, — это создание уникальных учетных записей для каждого пользователя и службы и предоставление им только самых минимальных разрешений для выполнения своей работы. Заблокируйте все, к чему им не нужен доступ, и лишите всех привилегий, если только не навредите им.

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

Аналогично политикам служб, которые мы обсуждали выше, вы также должны позаботиться об отключении любых учетных записей пользователей, которые больше не нужны. Это может произойти, когда вы удаляете программное обеспечение или если у пользователя больше нет доступа к системе.

Обратите внимание на настройки разрешений

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

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

В общем, вы должны дважды подумать, прежде чем устанавливать что-либо для записи всем, особенно если оно каким-либо образом доступно в Интернете. Это может иметь крайние последствия. Кроме того, вы не должны устанавливать бит SGID или SUID в разрешениях, если вы абсолютно не знаете, что делаете. Также убедитесь, что у ваших файлов есть владелец и группа.

Ваши настройки прав доступа к файлам будут сильно различаться в зависимости от вашего конкретного использования, но вы всегда должны пытаться увидеть, есть ли способ обойтись меньшим количеством разрешений. Это одна из самых простых вещей, где можно ошибиться, и в этой области в Интернете можно найти много плохих советов.

Регулярно проверяйте наличие вредоносных программ на своих серверах

Хотя Linux, как правило, менее подвержен вредоносным программам, чем Windows, он ни в коем случае не застрахован от вредоносных программ. В сочетании с внедрением IDS для обнаружения попыток вторжения сканирование на наличие вредоносных программ может помочь выявить следы активности, указывающие на то, что на вашем компьютере установлено незаконное программное обеспечение.

Для систем Linux доступно несколько сканеров вредоносных программ, которые можно использовать для регулярной проверки целостности ваших серверов. Linux Malware Detect, также известный как maldet или LMD, является одним из популярных вариантов, который можно легко установить и настроить для сканирования известных сигнатур вредоносных программ. Его можно запускать вручную для выполнения разовых проверок, а также можно использовать демон для запуска регулярных проверок по расписанию. Отчеты об этих сканированиях могут быть отправлены по электронной почте администраторам сервера.

Как защитить конкретное программное обеспечение, которое вы используете

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

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

Вы можете проверить наш раздел безопасности для получения более конкретных советов по программному обеспечению, которое вы используете.

Заключение

Теперь у вас должно быть хорошее представление об общих методах обеспечения безопасности, которые вы можете реализовать на своем сервере Linux. Хотя мы изо всех сил старались упомянуть многие области высокой важности, в конце концов вам придется принимать многие решения самостоятельно. Когда вы администрируете сервер, вы должны взять на себя ответственность за его безопасность.

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

Джастин Эллингвуд