@ -1,4 +1,270 @@
# Лабораторная работа 2
# Лабораторная работа 2
***
## Выполнение лабораторной работы
### Подключение к серверу
Выполняются лабораторные работы на двух серверах:
1. Пункты 1. - 2.1. выполняются на сервере (**hostname : user@G-studentXX-L2-server**):
```sh
IP-SERVER:PORT
```
2. Пункт 2.3. (клиентская часть OpenVPN в ОС Linux/Ubuntu) выполняется на сервере (**hostname : user@G-studentXX-L2-client**):
```sh
10.5.143.101:PORT
```
Где порт подключения (*PORT*) у каждого студента индивидуальный:
< details >
< summary > А-01м-23< / summary >
< table >
< thead >
< tr >
< th > Студент< / th >
< th > SSH< / th >
< th > EXTERNAL 1< / th >
< th > EXTERNAL 2< / th >
< th > VPN< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > Антимонов Марк Евгеньевич< / td >
< td > 10122< / td >
< td > 10180< / td >
< td > 10181< / td >
< td > 10190< / td >
< / tr >
< tr >
< td > Антипов Дмитрий Алексеевич< / td >
< td > 10222< / td >
< td > 10280< / td >
< td > 10281< / td >
< td > 10290< / td >
< / tr >
< tr >
< td > Вареско Сергей Константинович< / td >
< td > 10322< / td >
< td > 10380< / td >
< td > 10381< / td >
< td > 10390< / td >
< / tr >
< tr >
< td > Зимовин Михаил Юрьевич< / td >
< td > 10422< / td >
< td > 10480< / td >
< td > 10481< / td >
< td > 10490< / td >
< / tr >
< tr >
< td > Капкин Егор Вячеславович< / td >
< td > 10522< / td >
< td > 10580< / td >
< td > 10581< / td >
< td > 10590< / td >
< / tr >
< tr >
< td > Кирьянов Борис Юрьевич< / td >
< td > 10622< / td >
< td > 10680< / td >
< td > 10681< / td >
< td > 10690< / td >
< / tr >
< tr >
< td > Ковалев Артур (Ин)< / td >
< td > 10722< / td >
< td > 10780< / td >
< td > 10781< / td >
< td > 10790< / td >
< / tr >
< tr >
< td > Козлов Игорь Алексеевич< / td >
< td > 10822< / td >
< td > 10880< / td >
< td > 10881< / td >
< td > 10890< / td >
< / tr >
< tr >
< td > Кононенко Александр Вячеславович< / td >
< td > 10922< / td >
< td > 10980< / td >
< td > 10981< / td >
< td > 10990< / td >
< / tr >
< tr >
< td > Кочурова Виктория Артёмовна< / td >
< td > 11022< / td >
< td > 11080< / td >
< td > 11081< / td >
< td > 11090< / td >
< / tr >
< tr >
< td > Ли Егор Андреевич< / td >
< td > 11122< / td >
< td > 11180< / td >
< td > 11181< / td >
< td > 11190< / td >
< / tr >
< tr >
< td > Медведев Игорь Сергеевич< / td >
< td > 11222< / td >
< td > 11280< / td >
< td > 11281< / td >
< td > 11290< / td >
< / tr >
< tr >
< td > Поташов Сергей Евгеньевич< / td >
< td > 11322< / td >
< td > 11380< / td >
< td > 11381< / td >
< td > 11390< / td >
< / tr >
< tr >
< td > Солдатов Михаил Дмитриевич< / td >
< td > 11422< / td >
< td > 11480< / td >
< td > 11481< / td >
< td > 11490< / td >
< / tr >
< tr >
< td > Черемных Юрий Алексеевич< / td >
< td > 11522< / td >
< td > 11580< / td >
< td > 11581< / td >
< td > 11590< / td >
< / tr >
< / tbody >
< / table >
< / details >
< details >
< summary > А-02м-23< / summary >
< table >
< thead >
< tr >
< th > Студент< / th >
< th > SSH< / th >
< th > EXTERNAL 1< / th >
< th > EXTERNAL 2< / th >
< th > VPN< / th >
< / tr >
< / thead >
< tbody >
< tr >
< td > Викторов Глеб Олегович< / td >
< td > 20122< / td >
< td > 20180< / td >
< td > 20181< / td >
< td > 20190< / td >
< / tr >
< tr >
< td > Градов Алексей Олегович< / td >
< td > 20222< / td >
< td > 20280< / td >
< td > 20281< / td >
< td > 20290< / td >
< / tr >
< tr >
< td > Китайский Артём Сергеевич< / td >
< td > 20322< / td >
< td > 20380< / td >
< td > 20381< / td >
< td > 20390< / td >
< / tr >
< tr >
< td > Макаров Кирилл Олегович< / td >
< td > 20422< / td >
< td > 20480< / td >
< td > 20481< / td >
< td > 20490< / td >
< / tr >
< tr >
< td > Мосалов Кирилл Дмитриевич< / td >
< td > 20522< / td >
< td > 20580< / td >
< td > 20581< / td >
< td > 20590< / td >
< / tr >
< tr >
< td > Наников Игорь Яковлевич< / td >
< td > 20622< / td >
< td > 20680< / td >
< td > 20681< / td >
< td > 20690< / td >
< / tr >
< tr >
< td > Савин Вадим Евгеньевич< / td >
< td > 20722< / td >
< td > 20780< / td >
< td > 20781< / td >
< td > 20790< / td >
< / tr >
< tr >
< td > Сметанин Александр Сергеевич< / td >
< td > 20822< / td >
< td > 20880< / td >
< td > 20881< / td >
< td > 20890< / td >
< / tr >
< tr >
< td > Соколов Игорь Алексеевич< / td >
< td > 20922< / td >
< td > 20980< / td >
< td > 20981< / td >
< td > 20990< / td >
< / tr >
< tr >
< td > Фенске Александр Вячеславович< / td >
< td > 21022< / td >
< td > 21080< / td >
< td > 21081< / td >
< td > 21090< / td >
< / tr >
< tr >
< td > Шашерина Александра Всеволодовна< / td >
< td > 21122< / td >
< td > 21180< / td >
< td > 21181< / td >
< td > 21190< / td >
< / tr >
< tr >
< td > Шепелев Дмитрий Дмитриевич< / td >
< td > 21222< / td >
< td > 21280< / td >
< td > 21281< / td >
< td > 21290< / td >
< / tr >
< tr >
< td > Юрченков Глеб Андреевич< / td >
< td > 21322< / td >
< td > 21380< / td >
< td > 21381< / td >
< td > 21390< / td >
< / tr >
< / tbody >
< / table >
< / details >
Логин: **root**
Пароль: **root**
***Рекомендуется изменить пароль**
### Требования к отчёту:
- Титульный лист
- Описание проделанной работы и вводимых команд
- Скриншоты результатов выполнения и их описание
- Вывод
***
## Часть 1. Настройка межсетевого экрана в Linux-системах
## Часть 1. Настройка межсетевого экрана в Linux-системах
### Цель работы
### Цель работы
@ -153,13 +419,13 @@ PORT STATE SERVICE
```
```
### 3. Задание
### 3. Задание
Необходимо сделать перенаправление вызова с соответствующих портов .
Необходимо сделать перенаправление вызова с \*EXTERNAL 2\* на \*EXTERNAL 1\* .
Для начала потребуется установить дополнительные пакеты
Для начала потребуется установить дополнительные пакеты
```ssh
```ssh
apt-get update
apt-get update
apt install -y screen python3-pip net-tools
apt install -y screen python3-pip net-tools nano
pip install simple-http-server
pip install simple-http-server
```
```
@ -171,18 +437,17 @@ pip install simple-http-server
Комбинация клавиш `Ctrl+A+D` выйти в главное окно терминала.
Комбинация клавиш `Ctrl+A+D` выйти в главное окно терминала.
Для проверки доступа по указанному порту, в новом окне терминала выполните следующую команду (вместо слова `port` укажите номер порта)
Для проверки доступа по указанному порту, в новом окне терминала выполните следующие команды
< details >
< summary > "port"< / summary >
port задается в формате 8GVV, где G - номер группы, а VV - вариант из первой лабораторной работы
< / details >
```ssh
```ssh
$ screen -S server
$ screen -S server
$ python3 -m http.server port
$ python3 -m http.server *EXTERNAL 1*
```
```
После запуска команды, в браузере необходимо проверить доступность вашего сервера, для этого наберите строку ip_adress:port.
После запуска команды, в браузере необходимо проверить доступность вашего сервера, для этого наберите строку
```ssh
http://*IP-SERVER*:*EXTERNAL 1*.
```
**узнать свой ip-адрес можно с помощью команды `ifconfig` *
**узнать свой ip-адрес можно с помощью команды `ifconfig` *
@ -194,12 +459,12 @@ $ python3 -m http.server port
Это означает, что порт открыт и вы можете получить доступ к запущенному Web-server. После запуска запустите команду **nmap** и посмотрите, какие порты открыты сейчас.
Это означает, что порт открыт и вы можете получить доступ к запущенному Web-server. После запуска запустите команду **nmap** и посмотрите, какие порты открыты сейчас.
После внесения правила перенаправления, проверьте доступность вашего сервера в браузере, перейдя по адресу: ip_adress:redirect_port
После внесения правила перенаправления, проверьте доступность вашего сервера в браузере, перейдя по адресу
```ssh
http://*IP-SERVER*:*EXTERNAL 2*.
```
***Скриншот**
***Скриншот**
< details >
< summary > "redirect_port"< / summary >
redirect_port задается в формате 80 + VV, где VV - вариант из первой лабораторной работы (VV = 01 -> redirect_port = 81)
< / details >
Повторно запустите команду **nmap** и проверьте вывод.
Повторно запустите команду **nmap** и проверьте вывод.
@ -357,11 +622,9 @@ apt-get update
apt install -y openvpn
apt install -y openvpn
```
```
Настраиваем переадресацию (IP forwarding) (при выключении/перезапуске сервера это повторяем):
Маскарадинг (или маскирование) исходящих пакетов из подсети 10.4.0.1/2, направленных к интерфейсу *eth0*
```ssh
```ssh
modprobe iptable_nat --
echo 1 | tee /proc/sys/net/ipv4/ip_forward --
iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE
```
```
@ -369,7 +632,7 @@ iptables -t nat -A POSTROUTING -s 10.4.0.1/2 -o eth0 -j MASQUERADE
```ssh
```ssh
cd /etc/openvpn
cd /etc/openvpn
openvpn --genkey --secret ovpn.key -- openvpn --genkey secret ovpn.key
openvpn --genkey secret ovpn.key
```
```
Создаем файл конфигурации OpenVPN, назовем его openvpn.conf, для этого воспользуемся редактором `nano` работающим в консоли:
Создаем файл конфигурации OpenVPN, назовем его openvpn.conf, для этого воспользуемся редактором `nano` работающим в консоли:
@ -381,7 +644,7 @@ nano openvpn.conf
В файл вставляем:
В файл вставляем:
```ssh
```ssh
port *vpn_port *
port *VPN *
proto tcp-server
proto tcp-server
dev tun1
dev tun1
ifconfig 10.4.0.1 10.4.0.2
ifconfig 10.4.0.1 10.4.0.2
@ -392,11 +655,6 @@ secret ovpn.key
**Выделенные `*` строки необходимо изменить на реальные значения**
**Выделенные `*` строки необходимо изменить на реальные значения**
< details >
< summary > vpn_port< / summary >
Задается в формате 1194 + VV, где VV - вариант из первой лабораторной работы (VV = 01 -> vpn_port = 1195)
< / details >
***Скриншот**
***Скриншот**
Нажимаем `CTRL+S` и подтверждаем запись в файл, выходим из редактора — `CTRL+X` .
Нажимаем `CTRL+S` и подтверждаем запись в файл, выходим из редактора — `CTRL+X` .
@ -407,7 +665,7 @@ secret ovpn.key
service openvpn start
service openvpn start
```
```
Проверяем, есть ли у нас открытый порт `* vpn_port *` на системе
Проверяем, есть ли у нас открытый порт `* VPN *` на системе
```ssh
```ssh
netstat -nlpt
netstat -nlpt
@ -439,7 +697,7 @@ netstat -nlpt
```ssh
```ssh
...
...
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:*vpn_port * 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:*VPN * 0.0.0.0:* LISTEN -
...
...
```
```
@ -457,19 +715,14 @@ tcp 0 0 0.0.0.0:*vpn_port* 0.0.0.0:* LISTEN
```ssh
```ssh
proto tcp-client
proto tcp-client
remote *ip_adress *
remote *IP-SERVER *
port *vpn_port*
port *VPN*
dev tun
dev tun
secret ovpn.key
secret ovpn.keY
providers legacy default
providers legacy default
redirect-gateway def1
redirect-gateway def1
ifconfig 10.4.0.2 10.4.0.1
ifconfig 10.4.0.2 10.4.0.1
```
```
< details >
< summary > ip_adress< / summary >
IP-адрес сервера
< / details >
***Скриншот**
***Скриншот**
@ -481,7 +734,7 @@ ifconfig 10.4.0.2 10.4.0.1
### 2.3. Установка и настройка клиентской части OpenVPN (Linux)
### 2.3. Установка и настройка клиентской части OpenVPN (Linux)
Открываем окно терминала (можно использовать машину первой лабораторной работы ) и устанавливаем OpenVPN:
Открываем окно терминала (второй сервер ) и устанавливаем OpenVPN:
```ssh
```ssh
apt-get update
apt-get update
@ -497,7 +750,7 @@ mkdir ~/OpenVPNconf && cd ~/OpenVPNconf
Копируем файл `/etc/openvpn/ovpn.Key` (на сервере) в `~/OpenVPNconf` . Например, с помощью `scp` :
Копируем файл `/etc/openvpn/ovpn.Key` (на сервере) в `~/OpenVPNconf` . Например, с помощью `scp` :
```ssh
```ssh
scp -p port root@ip_adress :/etc/openvpn/ovpn.key ~/OpenVPNconf/
scp -P *SSH* root@*IP-SERVER* :/etc/openvpn/ovpn.key ~/OpenVPNconf/
```
```
В `~/OpenVPNconf/` создадим файл с настройками OpenVPN, назовем его openvpn.client.conf:
В `~/OpenVPNconf/` создадим файл с настройками OpenVPN, назовем его openvpn.client.conf:
@ -510,8 +763,8 @@ nano openvpn.client.ovpn
```ssh
```ssh
proto tcp-client
proto tcp-client
remote *ip_adress *
remote *IP-SERVER *
port *vpn_port *
port *VPN *
dev tun
dev tun
secret *path* /ovpn.key
secret *path* /ovpn.key
redirect-gateway def1
redirect-gateway def1
@ -568,16 +821,8 @@ echo "IP: $(curl -s ipinfo.io/ip)"
В ней происходит запрос на сервер, отображающий IP-адрес подлючения. Убедитесь, что полученный IP-адрес и адрес удалённой машины совпадают.
В ней происходит запрос на сервер, отображающий IP-адрес подлючения. Убедитесь, что полученный IP-адрес и адрес удалённой машины совпадают.
Если результат выполнения следующей команды возвращает `IP: ` , то необходимо сделать следующие действия :
Если результат выполнения следующей команды возвращает `IP: ` , то необходимо сделать следующее действие :
```ssh
```ssh
nano /etc/resolv.conf
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
```
```
Добавить в конец файла строку и сохранить файл:
```ssh
nameserver 8.8.8.8
```
## ** Каждый скриншот должен сопровождаться подробным описанием вводимых команд/настроек и результатов их выполнения**