From fa2e219025389b185f6d9a31ac9c0f9d246d830d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=A4=D0=B8=D0=BB?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D0=B2?= Date: Wed, 20 Mar 2024 04:07:49 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB(?= =?UTF-8?q?=D0=B0)=20=D0=BD=D0=B0=20'labs/lab2/README.md'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab2/README.md | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/labs/lab2/README.md b/labs/lab2/README.md index 246df70..a182b4b 100644 --- a/labs/lab2/README.md +++ b/labs/lab2/README.md @@ -275,14 +275,10 @@ IP-SERVER:PORT ### 1.1. Работа *IPTABLES*. Основные понятия -При описании выполняемых команд приняты следующие обозначения: -- `#` - если перед командой стоит данный знак, это означает, что команда должна выполняться от имени пользователя root (суперпользователь) -- `$` - если перед командой стоит данный знак, это означает, что команда должна выполняться от имени обычного пользователя. - Обработка пакетов осуществляется согласно определенным правилам. Каждое правило - это строка, содержащая в себе критерии определяющие, подпадает ли пакет под заданное правило, и действие, которое необходимо выполнить в случае выполнения критерия. В общем виде правила задаются в командной строке так: ```sh -# iptables [-t table] command [match] [target/jump] +iptables [-t table] command [match] [target/jump] ``` Если в правило не включается спецификатор [-t table], то по умолчанию предполагается использование таблицы filter, если же предполагается использование другой таблицы, то это требуется указать явно. Спецификатор таблицы так же можно указывать в любом месте строки правила, однако более или менее стандартом считается указание таблицы в начале правила. Можно использовать следующие таблицы: @@ -335,36 +331,36 @@ IP-SERVER:PORT Определение политики по умолчанию для цепочек с учетом того, что все порты системы для должны быть закрыты для внешнего пользователя. Поскольку осуществляется фильтрация пакетов, их обработка будет производится в таблице **filter**. Используем ключ `-P` чтобы задать политику по умолчанию. Зададим правило для входящих пакетов (цепочка `INPUT`). Действие для обработки политики по умолчанию `LOG` (журналирование запроса). Поскольку политика по умолчанию определяется для всех портов, критерии проверки опускаются. ```ssh -# iptables -P INPUT ACCEPT -# iptables -A INPUT -j LOG +iptables -P INPUT ACCEPT +iptables -A INPUT -j LOG ``` Определим также политику «по-умолчанию» для исходящих пакетов с разрешением всем исходящим IP-пакетам беспрепятственно проходить фильтрацию. Для определения заданной политики по умолчанию необходимо выполнить в консоли ```ssh -# iptables -P OUTPUT ACCEPT +iptables -P OUTPUT ACCEPT ``` ### 2.2. Добавление правил для портов 22 и 80 Осуществляется командой, в которой для заданных критериев применено действие ACCEPT, то есть пакет будет пропущен брэндмауэром. ```ssh -# iptables -A INPUT -p tcp --dport 22 -j ACCEPT -# iptables -A INPUT -p tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp --dport 22 -j ACCEPT +iptables -A INPUT -p tcp --dport 80 -j ACCEPT ``` ### 2.3. Добавление правила для порта 8080. Переадресация с порта 8080 на порт 80 Поскольку происходит преобразование адреса назначения, используем таблицу **nat**. Критерии для применения этого правила: `-p tcp --dport 8080`. Изменение получателя осуществляется в цепочке `PREROUTING`. Правило для переадресации - `REDIRECT`, которое имеет дополнительный ключ для определения порта переадресации `--to-ports`. Зададим перенаправление на порт `80`. Таким образом для определения последнего правила, необходимо ввести в командной строке: ```ssh -# iptables -t nat -I PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 +iptables -t nat -I PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80 ``` После выполнения команд правила для цепочек сформированы и необходимо осуществить проверку правильности их занесения и работы. Просмотреть созданные правила для всех цепочек можно после выполнения команды: ```ssh -# iptables -S -# iptables -t nat -S +iptables -S +iptables -t nat -S ``` ***Скриншот** @@ -384,20 +380,20 @@ IP-SERVER:PORT Проверьте, что на компьютере установлен nmap, выполнив команду: ```ssh -$ nmap +nmap ``` Если система выдала ошибку, что такой программы нет, необходимо установить nmap: ```ssh -# apt-get update -# apt-get install nmap +apt-get update +apt-get install nmap ``` Запуск команды сканирования портов: ```ssh -$ nmap localhost +nmap localhost ``` Вывод команды покажет какие порты на данный момент открыты в системе. Пример: @@ -414,8 +410,8 @@ PORT STATE SERVICE Для сброса настроек iptables в изначальное состояние: ```ssh -# iptables -F -# iptables -t nat -F +iptables -F +iptables -t nat -F ``` ### 3. Задание @@ -440,8 +436,8 @@ pip install simple-http-server Для проверки доступа по указанному порту, в новом окне терминала выполните следующие команды ```ssh -$ screen -S server -$ python3 -m http.server *EXTERNAL 1* +screen -S server +python3 -m http.server *EXTERNAL 1* ``` После запуска команды, в браузере необходимо проверить доступность вашего сервера, для этого наберите строку @@ -622,7 +618,7 @@ apt-get update apt install -y openvpn ``` -Маскарадинг (или маскирование) исходящих пакетов из подсети 10.4.0.1/2, направленных к интерфейсу *eth0* +Настраиваем маскарадинг (или маскирование) исходящих пакетов из подсети 10.4.0.1/2, направленных к интерфейсу *eth0* ```ssh iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE @@ -747,7 +743,7 @@ apt-get install -y openvpn nano curl mkdir ~/OpenVPNconf && cd ~/OpenVPNconf ``` -Копируем файл `/etc/openvpn/ovpn.Key` (на сервере) в `~/OpenVPNconf`. Например, с помощью `scp`: +Копируем файл `/etc/openvpn/ovpn.Key` (на VPN-сервере) в `~/OpenVPNconf`. Например, с помощью `scp`: ```ssh scp -P *SSH* root@*IP-SERVER*:/etc/openvpn/ovpn.key ~/OpenVPNconf/