Бородин Гавриил Андреевич«Обеспечение защиты WEB-приложений при помощи межсетевых экранов»ВВЕДЕНИЕДанная статья демонстрирует поэтапную реализацию настройки web-приложения и обеспечение его безопасности при помощи различных межсетевых экранов. Для достижения поставленной цели необходимо решить следующие задачи:изучить основы работы межсетевых экранов;развернуть web-сервер и настроить на нём приложение;поочерёдно настроить каждый из межсетевых экранов;провести сравнительный анализ полученных данных.2.НАСТРОЙКА МЕЖСЕТЕВЫХ ЭКРАНОВ2.1БАЗОВАЯ НАСТРОЙКА СЕРВЕРАWEB-приложение — это клиент-серверное приложение, в котором взаимодействие клиента с сервером осуществляется с помощью веб-браузера. Для практической демонстрации используется ОС Альт версии 10.1 как сервер, PHP-8.0.30 в качестве серверного языка программирования, и Nginx-1.26.2 был выбран в качестве веб-сервера.Для реализации web-сервера необходимо обновить систему и установить нужные основные и вспомогательные пакеты.# apt-get update && apt-get install nginx curl mc php8.0 php8.0-bz2 php8.0-curl php8.0-exif php8.0-mbstring php8.0-fileinfo php8.0-fpm-fcgi php8.0-gd php8.0-imagick php8.0-intl php8.0-mcrypt php8.0-openssl php8.0-pcntl php8.0-pdo php8.0-pdo_mysql php8.0-readline php8.0-ssh2 php8.0-xmlreader php8.0-xsl php8.0-yaml php8.0-zipРеализуемый web-сервер не настроен на запуск по умолчанию. Необходимо включить службы и запустить сами сервера.#systemctl enable php8.0-fpm && systemctl start php8.0-fpm && systemctl enable nginx && systemctl start nginxТак как по умолчанию в nginx нет активных сайтов, создадим симлинк#ln -s /etc/nginx/sites-available.d/default.conf /etc/nginx/sites-enabled.dПерейдём к настройке основного конфигурационного файла, который располагается по адресу /etc/nginx/sites-available.d/default.conf. Укажем там следующую конфигурацию:listen 80 default_server; #сервер будет прослушивать HTTP-запросы на 80root /var/www/html; # указываем корневую директориюindex index.php index.html; #порядок файлов для обращении к корнюserver_name 10.0.2.15; # указываем внутренний адрес сервераtry_files $uri $uri/ =404; # указываем поиск файла/директорииmkdir -p /var/www/html # создадим папку для web-сервераПосле чего создадим файл и базовой домашней страницей и перезапустим Nginx#echo "NGINX INSTALLED
" | sudo tee /var/www/html/index.html && systemctl restart nginxПосле успешной настройки web-сервера необходимо проверить работу установленного ранее PHP. Выполним это при помощи команд:#echo "php echo phpinfo(); ?>" | tee /var/www/html/t.php && echo " echo json_encode(['success' => true]); ?>" | tee /var/www/html/test.phpРезультаты взаимодействия с web-приложением можно будет изучать при помощи логов web-сервера, которые будут просмотрены при помощи команды journalctl -u nginx.service | grep "GET\|POST":При сравнительном анализе реализации настроек межсетевых экранов и итоговых конфигураций ограничений для web-сервера будут применяться 2 виртуальные машины на ОС Альт с IP-адресами 200.100.50.1 и 200.100.50.3 соответственно. Ограничения, реализованные в рамках настройки межсетевых экранов, будут наглядно отображаться через интерфейс браузера и консольную утилиту curl на виртуальных машинах, чей доступ к данным сервера будет ограничен конфигурациями экранов сервера.2.2ОПИСАНИЕ НАСТРОЙКИ IPTABLESIptables v1.8.7 — это утилита командной строки для настройки брандмауэра ядра Linux, реализованная в рамках проекта Netfilter. Iptables используется для проверки, изменения, пересылки, перенаправления и/или удаления IP–пакетов. В ОС Альт данная утилита установлена по умолчанию, поэтому установка её через команду <apt-get install iptables> не требуется.Также есть возможность посмотреть текущие ограничения при помощи команды <iptables -n -L -v --line-numbers>.Произведём добавление ограничений к работе конкретных IP-адресов:# iptables -A INPUT -s 200.100.50.1 -j DROP# iptables -A INPUT -s 200.100.50.3 -j DROPПерезапустив iptables, проверим работу политик, которые мы реализовали. Проверив работу ограничений, увидим, что хост ушёл в бесконечную загрузку, а ранее открытые методы больше не получают ответов сервера.2.3ОПИСАНИЕ НАСТРОЙКИ UNCOMPLICATED FIREWALLUncomplicated Firewall (UFW) v0.35 – удобный инструмент для начинающих системных администраторов, позволяющий контролировать свой сетевой трафик и защищать свою систему, реализуя правила или действия с простым синтаксисом. Для работы с ним установим необходимый набор пакетов и запустим сервис:# apt-get install ufw && ufw enable && ufw statusДалее ограничим доступ к web-серверу и перезапустим сервис:# ufw deny from 200.100.50.1 to 200.100.50.5 && systemctl restart ufwПроверив статус сервиса командой <ufw status>, увидим, что появились новые ограничения в политике доступа к web-серверу. Доступ был заблокирован для перечня IP-адресов, от 200.100.50.1 до 200.100.50.5 соответственно. Есть альтернативный вариант реализации, позволяющий заблокировать конкретные IP-адреса. Выполняется данная блокировка командами:# ufw deny from 200.100.50.1 && ufw deny from 200.100.50.3При работе таких ограничений, клиент вновь не имеет данных из web-сервера, поскольку http POST-запросы не получают ответа сервера.2.4ОПИСАНИЕ НАСТРОЙКИ NFTABLESNftables v1.0.9 - это современная структура классификации пакетов ядра Linux. С помощью nftables администраторы могут создавать сложные правила фильтрации, управлять NAT и реализовывать сценарии безопасности.Для начала работы с nftables необходимо осуществить установку пакетов, выполнив <apt-get install nftables>. Перейдём к настройке основного конфигурационного файла, расположенного по адресу /etc/nftables/nftables.nft.type filter hook input priority 0; policy drop; # устанавливаем политику: DROP iif "lo" accept # разрешаем локальные соединения (loopback)ip saddr 200.100.50.1 accept # разрешаем входящие соединения с IPtype filter hook forward priority 0; policy drop; # блокируем пересылку пакетовip protocol icmp drop # блокируем icmp-пакетыТеперь необходимо выполнить команду <systemcti restart nftables>, после чего политики ограничений, описанных для nftables, будут работать корректно.СРАВНИТЕЛЬНЫЙ АНАЛИЗНа основании проведённого анализа для каждой из технологий, можно сделать определяющие выводы касательно применения каждой из технологий в зависимости от поставленных задач перед системой. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ1. Что такое брандмауэр или межсетевой экран? [сайт]. URL: 2. Межсетевой экран: функции защиты [сайт]. URL: 3. Что такое симлинк [сайт]. URL: 4. Сервер на базе ОС Альт - Базальт СПО [сайт]. URL: -сервер-часть-2-сервер-на-базе-alt-linux-базальт-спо5. Установка DVWA [сайт]. URL: 6. iptables [сайт]. URL: 7. Firewall start [сайт]. URL: 8. iptables ОС Альт, sysctl [сайт]. URL: 9. UFW [сайт]. URL: 10. Использование утилиты UFW на Linux [сайт]. URL: 11. Пакет nftables: Информация [сайт]. URL: 12. Переход с iptables на nftables. Краткий справочник [сайт]. URL: 13. Классификация firewall’ов и определение политики firewall’а [сайт]. URL: 14. Статья о сравнение аппаратных и программных Firewall [сайт]. URL: 15. Уймин, А. Г. Демонстрационный экзамен базового уровня. Сетевое и системное администрирование : Практикум. Учебное пособие для вузов / А. Г. Уймин. – Санкт-Петербург : Издательство "Лань", 2024. – 116 с. – (Высшее образование). – ISBN 978-5-507-48647-2. – EDN BZJRIQ.16. ОС Альт Wiki [сайт]. URL: https://www.altlinux.org