Достаточно ли безопасен ваш сервер?

Java
Достаточно ли безопасен ваш сервер?

Не обязательно всеобъемлющие меры безопасности сервера, но стоит посмотреть.(╯-_-)╯~╩╩.

Адрес статьи:blog.Park Ruiqing.com/2019/11/24/…

предисловие

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

Прочитав эту статью, вы получите:

  • Некоторые меры безопасности сервера.
  • Счастливый (если обучение делает вас счастливым ( ̄. ̄))

Для прочтения этой статьи вам понадобится:

  • эммм... ставь палец вверх и иди

1. Брандмауэр

Брандмауэр использует стратегию белого списка, открывая только необходимые порты, например: 80/443 и порты для входа по ssh.

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

80-443

2. Использование инструментов проникновения во внутреннюю сеть

Справочная документация:GitHub.com/судьба секунд/пут…

Для серверов с требованиями отладки необходимо открыть порты, такие как базы данных, кэши и очереди сообщений.Прямое открытие портов создаст ненужные угрозы безопасности для сервера.В настоящее время мы должны ограничить посетителей, таких как белый список IP-адресов, VPN и т. д. , Кроме того, автор рекомендует средство проникновения во внутреннюю сеть, чтобы помочь в создании среды отладки——FRP

FRP — это высокопроизводительное обратное прокси-приложение, которое можно использовать для проникновения в интрасеть.Существует несколько методов проникновения, и для проксирования можно указать порты.Мы можем запустить две службы: сервер (frps) и клиент (frpc) на server., frpc локального клиента устанавливает соединение с frpc сервера через единственный порт, отслеживаемый frps, так что порт на сервере, к которому возможен только внутренний доступ, можно сопоставить с локальным портом компьютера разработчика .

Преимущества использования FRP: указанный порт, сжимаемый трафик, шифрование, серверу нужно только выставить порт fps.

frps-frpc

3. Скрыть бесполезную информацию

Справочная документация:

1). http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_hide_header

2). http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens

3. http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_hide_header

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

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

  1. proxy_hide_header {Your-Header}: nginx, черезproxy_hide_headerНекоторые заголовки, возвращаемые восходящими службами, могут быть скрыты.
  2. server_tokens off: server_tokensПереключатель информации о версии nginx, который можно включить или скрыть.страница ошибкиили заголовокServerНомер версии, за которым следует поле.
  3. fastcgi_hide_header X-Powered-By: Если вы используете php-fpm, эта конфигурация может скрыть информацию о php и версии в заголовке.

Выполнить после завершения настройкиnginx -s reloadПосле этого конфигурация вступит в силу.

4. Ограничение тока

Справочная документация:Nginx.org/en/docs/red-glowing…

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

Как правило, мы можем настроить его через nginxngx_http_limit_req_moduleДля ограничения тока:

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    ...
    server {
        ...
        location /search/ {
            limit_req zone=one burst=5;
        }
  • limit_req_zone...: Установите общую область размером 10M, назовите ееone, ключ которого$binary_remote_addrА именно IP, скорость доступа ограничена 1 раз/сек.
  • limit_req...: местоположение, путь которого является поиском, использует общую областьoneДля текущего ограничения предел пакетных запросов равен 5. (Если ограничено только 1r/s, оно будет строго ограничено одним запросом в секунду, но для пользователей нажатие на веб-страницу может одновременно запрашивать несколько ресурсов, поэтому жесткое ограничение равно не дружелюбный к опыту, поэтому нам также нужно установить лимит запросов на всплеск)

5. Несчастья ведут на восток

Одним словом, перенаправьте трафик на статические страницы, способные выдержать высокий параллелизм, например, GitPage.

Справочная статья:Как заблокировать опасные IP-адреса в режиме реального времени через журналы Nginx

Я полагаю, что многие веб-мастера понимают страх перед доминированием cc или ddos ​​атак.

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

Мой план на этот счет:

  1. Анализ журналов доступа в режиме реального времени, рейтинг риска для каждого IP.
  2. Заблокируйте аномальные IP-адреса и временно перенаправьте все запросы с этих IP-адресов на резервную станцию ​​GitPage через 302. Вот так
  3. Для ИП с более высоким классом опасности использовать непосредственноipset+iptablesзапрет

Основная цель перенаправления IP-адресов с общим уровнем риска:

  1. Экономьте трафик и экономьте ресурсы сервера (это особенно важно для динамических сайтов)
  2. Отговорить злоумышленников: У нас нет претензий, вы найдете лучший сайт для атаки, пожалуйста, не проводите здесь слишком много времени.
  3. Во избежание непредумышленного убийства возможны ошибки в оценке ненормального IP.Прямой бан крайне недружелюбен к посетителям и приведет к потере пользователей понапрасну.Деградация сервиса лучше, чем его отсутствие.Еще не поздно забанить сейчас.

Вы можете обратиться к моей предыдущей статье«Как заблокировать опасные IP-адреса в режиме реального времени с помощью журналов Nginx»

日志采集分析处理时序图

6. Отключите удаленный вход в систему root

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

Для учетных записей, допускающих удаленный вход, рекомендуется не входить в систему с паролем,Не могу использовать простые пароли, Рекомендуется авторизоваться с помощью секретного ключа.

ssh-keygenСоздайте пару ключей, поместите открытый ключ вauthorized_keysв файле.

7. Другое

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

8. Дополнение «Копаем друзей»

  1. Старайтесь не использовать root напрямую, вам нужно разрешение root, чтобы использовать sudo (через @I am a person on the road).
  2. Большинство сервисов размещены в контейнерах, таких как Redis, nginx, mysql и т. д., вы можете использовать докер, просто наметьте каталог, который должен быть постоянным (не забудьте ограничить разрешения ro/rw) (через @I am a person в дороге)

Эпилог

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

Если эта статья была вам полезна, ставьте лайк ( ̄▽ ̄)"

Рекомендуемое чтение

Добро пожаловать в публичный аккаунт (код как поэзия)

代码如诗(poetic_code)
[Уведомление об авторских правах]
Эта статья была опубликована вБлог Пак Жуцин, перепечатка для некоммерческого использования разрешена, но перепечатка должна сохранить оригинального автораПарк Жуйцини ссылка:blog.piaoruiqing.com. Если есть какие-либо переговоры или сотрудничество с точки зрения авторизации, пожалуйста, свяжитесь с адресом электронной почты:piaoruiqing@gmail.com.