@Bjornie
Изучаю Python

Минимальные настройки безопасности Linux на VPS?

Я абсолютно начинающий в Linux. Мой вопрос касается настройки безопасности ОС Linux на VPS-сервере. Изначально я просто установил OpenVPN и запустил его (всё работает). Затем постепенно начали появляться различные вопросы. Ввиду незнания системы я не знаю на что в первую очередь стоит обратить внимание.

Дано:
VPS
ОС выбрал Debian 8
Соединение по ключу SSH.

Кое-что я уже прочитал и сделал:
- запретить логин по руту\паролю
- создать отдельного пользователя
- проверить и отключить лишние службы (которые на данный момент не нужны для работы)

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

Другой пример: вбил netstat и кроме самого себя увидел в Internet connections какой-то китайский adsl-адрес (переподключался каждую минуту). Погуглив нашел его в блэклистах, как сканирующего ssh. Что это было: просто внешнее соединение, или он сумел авторизироваться?

Что стоить почитать в обязательном порядке? Какие книги, статьи, плейлисты с видео на ютуб? Что порекомендуете?

Заранее извиняюсь за нубские вопросы.

P.S. моя основная ОС не Linux, поэтому для его изучения предпочитаю только консоль, никаких отдельных установок дистрибутивов с GUI.
  • Вопрос задан
  • 7964 просмотра
Решения вопроса 3
  • Tyranron
    @Tyranron
    Ряд моментов Вы уже сделали, но я все равно их опишу для полноты списка.

    1. Создать отдельного пользователя и хороший пароль на sudo. Не использовать больше root напрямую. Совсем.

    2. SSH. Отключаем метод аутентификации по паролю. Если Вам не нужны другие методы, то их тоже можно отключить, оставив только publickey. Отключаем возможность аутентификации root'ом. Включаем использование только 2й версии SSH протокола.

    3. Устанавливаем Fail2Ban и настраиваем чтобы после нескольких неуспешных попыток подключения по SSH банило по IP на длительное время. Кол-во попыток и время бана можно тюнить в меру своей паранойи. У меня, например, банит на час после 2х неуспешных попыток.

    4. Iptables. Действуем по принципу "запрещено все, что не разрешено". Запрещаем по умолчанию весь INPUT и FORWARD трафик снаружи. Открываем на INPUT'е 22 порт. В дальнейшем открываем порты/forwarding по мере необходимости. Если у нас предполагаются сервисы на соседних серверах нужные только для внутренней коммуникации (Memcached, Redis, и т.д.), то открываем для них порты только для определенных IP. Просто так торчать наружу для всех они не должны.

    5. Настраиваем автоматические обновления apt-пакетов. Уровень security. То есть так, чтобы обновления безопасности накатывались автоматически, но при этом не выполнялись обновления со сменой мажорной версии (дабы обезопасить себя от "само сломалось").

    6. Устанавливаем ntpd. Серверное время должно быть точным. Также временную зону сервера лучше всего установить в UTC.

    7. TLS (не SSL) используем везде где можем. Через Let's Encrypt получаем бесплатные валидные сертификаты. В конфигах веб-серверов, mail-серверов, и других приложений торчащих наружу (в том числе и OpenVPN), запрещаем/убираем использование слабых шифров. Все ключи/параметры генерируем не менее 2048 бит. Самоподписные сертификаты подписываем с помощью SHA-256 (не SHA-1). Diffie-Hellman параметры (dh.pem) под каждый сервис лучше сгенерить отдельно. Проверяем TLS сервисов через Nmap. Минимальный grade должен быть A, не должно быть warning'ов.

    8. Правильный менеджмент пользователей/групп. Приложения/сервисы не должны запускаться под root'ом (разве что они действительно этого требуют и иначе никак). Для каждого сервиса создается свой пользователь.

    9. Если предполагается upload файлов через PHP (либо другие скриптовые языки), в директории, куда эти файлы загружаются (и которая доступна снаружи), должно быть жестко отключено любое выполнение скриптов/бинарников, что на уровне ОС (x права), что на уровне веб-сервера.

    Это была база.
    Дальше, в меру своей паранойи можно за'harden'ить сервер ещё следующими моментами:
    - SELinux, chroot
    - доступ к SSH только с определенных IP (нужно иметь 3-4 VPN-сервера под рукой)

    UPD И да, все это помнить/настраивать руками каждый раз может быть запарно. Используйте Ansible и автоматизируйте процесс (там родные и YAML, Jinja2 и Python).
    Ответ написан
  • xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.ru
    1. На порты управления обязательно: port-knocking
    2. Не нужно использовать ключи взамен пароля.
    3. Нужно использовать здравый смысл, поведенческий фильтр с ограничением по подсетям. Его можно использовать как перед подключением к SSH, так и сразу после подключения (например, промежуточным логин-скриптом проверить: предоставить доступ с верным паролем или нет).

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

    4. port-knocking: https://www.vultr.com/docs/port-knocking-on-debian
    Подключение из putty с port-knocking "из коробки":
    putty-port-knocking.png
    https://putty.org.ru/

    5. Также, можно поставить AppArmor (что это?) для управления доступом приложений к системе: https://wiki.debian.org/AppArmor/HowToUse

    6. Защита web-сайтов от большинства видов атак (включая правила исполнения кода): sitecoder.blogspot.com/2016/05/website-protection-...
    Ответ написан
  • Konachan700
    @Konachan700
    Добавлю:
    1. Убрать ssh со стандартного порта куда-то вверх, в пятизнаки. Там по доброй воле никто не ковыряется никогда. Тоже сделать и со всеми непубличными сервисами, включая vpn,.
    2. iptables сейчас занятная штука, есть забавный функционал. Например, выставление вероятности на срабатывание правила. После всех правил в INPUT на все остальное я ставлю так: 10% MIRROR, 10% DROP, остальное TARPIT. Любой сканер портов сразу же сходит с ума или просто зависает. Найти, на каком порту висит ssh или иной сервис, чужому человеку нереально от слова совсем, особенно, если применить port-knoking. Также стоит уравнивать TTL исходящих пакетов на внешнем интерфейсе до стандартного значения (например, 64)
    3. Обязательно отключить почтовый сервер, ибо по-умолчанию во многих дистрибутивах он стоит в автозапуске.
    Ответ написан
Пригласить эксперта
Ответы на вопрос 3
  • @MechanID
    Админ хостинг провайдера
    Как работник хостинг провайдера я всячески поддерживаю то что написал Tyranron
    + дополню немного субьективной сатистики по отлому впс и дедикейтед серверов
    1 простые пароли и открытый доступ руту
    2 не менее простые пароли и секретные вопросы для емейлов - ответы на которые можно в ВК или Фейсбуке
    3 устаревший софт, в первую очередь cms в вторую все остальное

    Помните безопасность впс это не только настройки впс но и безопасность(недоступность посторонним) вашего пароля(используете вы keepass или аналоги?), ссш ключа(с паролем ли он у вас?), емейла через который можно сбросить пароль для аккаунта хостинг провайдера а далее сбросить пароль или написать тикет в техподдержку. Безопасность компьютера с которого вы заходите на впс.
    Включайте двух-факторную авторизацию если ее предоставляет ваш емейл провайдер и хостинг провайдер, если для обычной почты она слишком напряжна - заведите отдельный ящик для очень важных писем и там ее включите.
    Ответ написан
  • zooks
    @zooks
    Frontend и Django
    В случае если на сервере работает только OpenVPN, я бы не стал замарачиваться с дополнительной защитой.
    А вообще да, хорошо, если вы сделаете авторизацию по ключу и/или отключите доступ для root.
    Это помогает от китайских серверов долбящих по 22 порту.
    Ответ написан
  • lebedev444
    @lebedev444
    https://github.com/wrt2/https-gist.github.com-f036
    не подходящий дистрибутив для новичка и плагины не поддерживает новые версии, переустанови графическую оболочку ubuntu например или похожую, апармор поставь
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы