Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LV Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 27 июля 2017 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Бей А.В. БЕЗОПАСНОСТЬ NGINX WEB СЕРВЕРА // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LV междунар. студ. науч.-практ. конф. № 7(54). URL: https://sibac.info/archive/technic/7(54).pdf (дата обращения: 05.05.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

БЕЗОПАСНОСТЬ NGINX WEB СЕРВЕРА

Бей Александр Викторович

студент факультета информатики и вычислительной техники, Национальный технический университет Украины «Киевский политехнический институт имени Игоря Сикорского»,

Украина, г.Киев

NGINX - бесплатный, с открытым исходным кодом, высокопроизводительный HTTP-сервер и обратный прокси, а также прокси-сервер IMAP / POP3. NGINX известен своей высокой производительностью, стабильностью, богатым набором функций, простой конфигурацией и низким потреблением ресурсов.

NGINX является одной из нескольких серверов, написанных для решения проблемы C10K. В отличие от традиционных серверов, NGINX не использует потоки для обработки запросов. Вместо этого он использует гораздо более масштабируемую управляемую событиями (асинхронную) архитектуру. Эта архитектура использует небольшие, но, что более важно, предсказуемые объемы памяти под нагрузкой. Даже если вы не собираетесь обрабатывать тысячи одновременных запросов, вы по-прежнему можете воспользоваться высокопроизводительным и небольшим объемом памяти NGINX. NGINX масштабируется во всех направлениях: от самых маленьких VPS до больших кластеров серверов.

NGINX поддерживает несколько сайтов с высокой видимостью, таких как Netflix, Hulu, Pinterest, CloudFlare, Airbnb, WordPress.com, GitHub, SoundCloud, Zynga, Eventbrite, Zappos, Media Temple, Heroku, RightScale, Engine Yard, MaxCDN.

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

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

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

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

Существует два типа DoS / DDoS-атак основанных на идее флуда, то есть заваливание жертвы огромным количеством пакетов.

Флуд бывает разным: ICMP-флуд, SYN-флуд, UDP-флуд и HTTP-флуд. Современные DoS-боты могут использовать все эти атаки одновременно, поэтому следует заранее позаботиться о адекватную защиту от каждой из них.

Настройка IPTables

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

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

Теперь в фаервол не будет входящих пакетов с tcp-флагами. Нулевые пакеты, по сути, разведывательные. Они используются, чтобы выяснить настройки сервера и определить его слабые места. Следующее правило отражает атаки syn-flood:

iptables -A INPUT -p tcp! --syn -m state --state NEW -j DROP

Теперь нужно разрешить трафик Web-сервера:

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Также нужно позволить трафик SSH, чтобы иметь возможность подключаться к VPS удаленно. Это очень просто сделать с помощью команды:

iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Данная команда говорит фаервол добавить правило, принимает tcp-трафик, входящий в порт 22 (порт SSH по умолчанию).

Сохраняем наши настройки и перезапускаем iptables:

iptables-save | sudo tee / etc / sysconfig / iptables

service iptables restart

Скрипт от DDos атаки

Разработан скрипт от DDos атаки на языке bash, его алгоритм следующий:

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

Теперь к практике:

создаем каталог, где будет находиться скрипт

mkdir / usr / local / ddos

В нем создаем файл ddosbybiei.sh и меняем его права:

chmod 0755 /usr/local/ddos/ddosbybiei.sh

Записываем в него:

#! / Bin / sh

# Находим все соединения и записываем их во временный файл ddosmoodle.iplist в каталоге tmp

netstat -ntu | awk '{print $ 5}' | cut -d: -f1 | sort | uniq -c | sort -n> /tmp/ddosmoodle.iplist

# Очищаем скрипт бана IP

cat / dev / null> /tmp/iptables_banlist.sh

# Проверяем все соединения с сервером, ip и число их соединений, ищем адрес превышающей 30 подключений

awk '{if ($ 1> 30) {print "/ sbin / iptables -I INPUT -p tcp --dport 80 -s" $ 2 "-j DROP"}}' /tmp/ddosmoodle.iplist >> / tmp /iptables_banlist.sh

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

echo "/ sbin / iptables -L INPUT -v -n> /tmp/iptables.log" >> /tmp/iptables_banlist.sh

# Запускаем скрипт бана айпишников

bash /tmp/iptables_banlist.sh

# Делаем ротацию балки

cat / dev / null> /var/log/ddos/error.log

[! -f /var/run/nginx.pid] || kill -USR1 `cat / var / run / nginx.pid`

Вот в принципе и все. Теперь запускаем в кронтаб, предпочитаю команду:

EDITOR = mcedit crontab -e ну или просто crontab -e

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

* / 10 * * * /bin/sh/usr/local/ddos/ddostolchenov.sh

Также я изменил ротацию логов в файле /etc/logrotate.d/nginx от nginx`a, чтобы многогигови файлы не создавались:

/var/log/nginx/*.log {

# Проводить ротацию ежедневно

daily

size 20M

# НЕ архивировать пустые файлы

Notifempty

# Говорит о том, что когда нет файла, то все хорошо

Missingok

# Хранить 150 файлов

rotate 200

create 640 root adm

# Сжатие старых файлов

compress

postrotate

# Не стеснять последний лог

delaycompress

sharedscripts

 [! -f /var/run/nginx.pid] || kill -USR1 `cat / var / run / nginx.pid`

endscript

}

После чего записал еще задачу в крон, выполняется каждый час

0 * * * * /usr/sbin/logrotate/etc/logrotate.conf

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

 

Список литературы:

  1. Айвалиотис Д. Администрирование сервера NGINX / Дмитрий Айвалиотис., 2013. – 288 с.
  2. Скембрей Д. Секреты хакеров. Безопасность WEB-приложений - готовые решения / Д. Скембрей, М. Шема., 2003.
  3. Phatak P. Cyber Attacks Explained: DoS and DDoS / Prashant Phatak., 2011.
  4. Жмылев С. Распределённые атаки типа DDoS: Анализ, методы обнаружения и защиты / Сергей Жмылев., 2015.
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.