Не обязательно всеобъемлющие меры безопасности сервера, но стоит посмотреть.(╯-_-)╯~╩╩.
Адрес статьи:blog.Park Ruiqing.com/2019/11/24/…
предисловие
В последнее время сервер часто сканируют и атакуют методом перебора, поэтому я нашел время позаботиться о сервере в выходные дни и разобраться с некоторыми возможными рисками.Автор суммирует простой список профилактических мер, основанный на практике, в надежде помочь вам .
Прочитав эту статью, вы получите:
- Некоторые меры безопасности сервера.
- Счастливый (если обучение делает вас счастливым ( ̄. ̄))
Для прочтения этой статьи вам понадобится:
- эммм... ставь палец вверх и иди
1. Брандмауэр
Брандмауэр использует стратегию белого списка, открывая только необходимые порты, например: 80/443 и порты для входа по ssh.
Для таких портов, как базы данных и кэши, лучше разрешить только локальный доступ.Если требуется отладка, рекомендуется использовать белый список IP, прокси и другие методы подключения.
2. Использование инструментов проникновения во внутреннюю сеть
Справочная документация:GitHub.com/судьба секунд/пут…
Для серверов с требованиями отладки необходимо открыть порты, такие как базы данных, кэши и очереди сообщений.Прямое открытие портов создаст ненужные угрозы безопасности для сервера.В настоящее время мы должны ограничить посетителей, таких как белый список IP-адресов, VPN и т. д. , Кроме того, автор рекомендует средство проникновения во внутреннюю сеть, чтобы помочь в создании среды отладки——FRP
FRP — это высокопроизводительное обратное прокси-приложение, которое можно использовать для проникновения в интрасеть.Существует несколько методов проникновения, и для проксирования можно указать порты.Мы можем запустить две службы: сервер (frps) и клиент (frpc) на server., frpc локального клиента устанавливает соединение с frpc сервера через единственный порт, отслеживаемый frps, так что порт на сервере, к которому возможен только внутренний доступ, можно сопоставить с локальным портом компьютера разработчика .
Преимущества использования FRP: указанный порт, сжимаемый трафик, шифрование, серверу нужно только выставить порт fps.
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, используемый веб-сервер и т. д. Эти сведения не нужны пользователю, автор случайным образом нашел веб-сайт для просмотра, как показано на рисунке. :
Эти сведения могут открыть пути для злоумышленников, поэтому необходимо блокировать эту информацию.
- proxy_hide_header {Your-Header}: nginx, черезproxy_hide_headerНекоторые заголовки, возвращаемые восходящими службами, могут быть скрыты.
- server_tokens off: server_tokensПереключатель информации о версии nginx, который можно включить или скрыть.страница ошибкиили заголовокServerНомер версии, за которым следует поле.
- 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 атак.
В частности, для небольших сайтов, таких как персональные домашние страницы, покупка серверов с высокой степенью защиты или различных служб защиты может быть нерентабельной, однако обычные серверы сталкиваются с атакой немного большего масштаба (возможно, масштаб не очень велик), и сервер может просто зависнуть.Даже если настроен статический кеш страницы, он может не выдержать масштабной атаки, а трафик довольно дорогой.
Мой план на этот счет:
- Анализ журналов доступа в режиме реального времени, рейтинг риска для каждого IP.
- Заблокируйте аномальные IP-адреса и временно перенаправьте все запросы с этих IP-адресов на резервную станцию GitPage через 302. Вот так
- Для ИП с более высоким классом опасности использовать непосредственно
ipset+iptables
запрет
Основная цель перенаправления IP-адресов с общим уровнем риска:
- Экономьте трафик и экономьте ресурсы сервера (это особенно важно для динамических сайтов)
- Отговорить злоумышленников: У нас нет претензий, вы найдете лучший сайт для атаки, пожалуйста, не проводите здесь слишком много времени.
- Во избежание непредумышленного убийства возможны ошибки в оценке ненормального IP.Прямой бан крайне недружелюбен к посетителям и приведет к потере пользователей понапрасну.Деградация сервиса лучше, чем его отсутствие.Еще не поздно забанить сейчас.
Вы можете обратиться к моей предыдущей статье«Как заблокировать опасные IP-адреса в режиме реального времени с помощью журналов Nginx»
6. Отключите удаленный вход в систему root
Запрещено использовать пользователя root для удаленного входа в систему, только обычный пользователь с меньшими привилегиями может войти в систему удаленно, а затем выполнять после входа в систему.su
Повысить права.
Для учетных записей, допускающих удаленный вход, рекомендуется не входить в систему с паролем,Не могу использовать простые пароли, Рекомендуется авторизоваться с помощью секретного ключа.
ssh-keygen
Создайте пару ключей, поместите открытый ключ вauthorized_keys
в файле.
7. Другое
- Для регулярного резервного копирования рекомендуется использовать crontab для настройки задач резервного копирования по расписанию и регулярного холодного резервного копирования важных данных.
- Своевременно обновляйте систему, чтобы исправить уязвимости в системе безопасности.
- Устанавливайте только то, что вам нужно, закрывайте, когда вам это не нужно
8. Дополнение «Копаем друзей»
- Старайтесь не использовать root напрямую, вам нужно разрешение root, чтобы использовать sudo (через @I am a person on the road).
- Большинство сервисов размещены в контейнерах, таких как Redis, nginx, mysql и т. д., вы можете использовать докер, просто наметьте каталог, который должен быть постоянным (не забудьте ограничить разрешения ro/rw) (через @I am a person в дороге)
Эпилог
Безопасность сервера является большой проблемой. При разработке, эксплуатации и обслуживании, тестировании и других работах безопасность является ключевой проблемой. Вырабатывайте хорошие привычки и предотвращайте проблемы до того, как они возникнут.
Если эта статья была вам полезна, ставьте лайк ( ̄▽ ̄)"
Рекомендуемое чтение
- Сервер нон-стоп!Как мигрировать данные
- Как научиться программировать
- Практика открытия шлюза API (1) — проектирование шлюза API
- Практика Open API Gateway (2) — Повтор атаки и защита
- Практика Open API Gateway (3) — Текущее ограничение
- Kubernetes (1) Следуйте официальной документации, чтобы собрать K8S с нуля.
- Развертывание приложений Kubernetes (2)
- Kubernetes (3) Как получить доступ к сервисам извне
Добро пожаловать в публичный аккаунт (код как поэзия)
Эта статья была опубликована вБлог Пак Жуцин, перепечатка для некоммерческого использования разрешена, но перепечатка должна сохранить оригинального автораПарк Жуйцини ссылка:blog.piaoruiqing.com. Если есть какие-либо переговоры или сотрудничество с точки зрения авторизации, пожалуйста, свяжитесь с адресом электронной почты:piaoruiqing@gmail.com.