lab4
This commit is contained in:
569
lab4/README.md
Normal file
569
lab4/README.md
Normal file
@@ -0,0 +1,569 @@
|
||||
Сетевые адаптеры:
|
||||
|
||||
Adapter 1: NAT
|
||||
|
||||
для выхода в интернет (DNS, HTTP)
|
||||
|
||||
Adapter 2: Internal Network
|
||||
|
||||
имя: intnet
|
||||
для связи с VM2
|
||||
|
||||
|
||||
sudo vim /etc/netplan/01-netcfg.yaml
|
||||
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
enp0s3: # NAT
|
||||
dhcp4: true
|
||||
enp0s8: # internal
|
||||
addresses: [192.168.100.1/24]
|
||||
|
||||
network:
|
||||
version: 2
|
||||
ethernets:
|
||||
enp0s3: # NAT
|
||||
dhcp4: true
|
||||
enp0s8: # internal
|
||||
addresses: [192.168.100.2/24]
|
||||
|
||||
|
||||
sudo chmod 600 /etc/netplan/01-netcfg.yaml
|
||||
sudo netplan apply
|
||||
|
||||
|
||||
|
||||
|
||||
sudo iptables -F
|
||||
sudo iptables -X
|
||||
sudo iptables -t nat -F
|
||||
|
||||
|
||||
|
||||
Ниже — учебная инструкция **только для настройки и проверки iptables**, без шагов про установку ОС, VirtualBox, netplan и утилит. Будем исходить из твоего текущего стенда:
|
||||
|
||||
* `firewall-host` — защищаемый хост, IP `192.168.100.1`
|
||||
* `external-client` — внешний клиент, IP `192.168.100.2`
|
||||
* у обеих машин есть NAT-интерфейс `enp0s3`
|
||||
* внутренний интерфейс — `enp0s8`
|
||||
* SSH к обеим машинам у тебя уже работает через проброс портов VirtualBox на `127.0.0.1:40001` и `127.0.0.1:40002`
|
||||
|
||||
Политика лабы: разрешить loopback, DNS, ping наружу, ping к защищаемому хосту только с одного IP, HTTP/HTTPS, а всё остальное запретить. Это прямо соответствует тексту задания.
|
||||
|
||||
---
|
||||
|
||||
# 2. Сначала разрешаем SSH, чтобы не отрезать себе доступ
|
||||
|
||||
Так как ты подключаешься к `firewall-host` по SSH, нужно **до включения блокировки** разрешить входящие SSH-подключения.
|
||||
|
||||
В твоём случае подключение приходит на саму Ubuntu-машину уже **после NAT VirtualBox**, то есть для Linux это обычный входящий TCP на порт `22`.
|
||||
|
||||
Выполни на `firewall-host`:
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-A INPUT` — добавить правило в конец цепочки `INPUT`, которая обрабатывает пакеты, входящие на этот хост.
|
||||
* `-p tcp` — правило относится только к протоколу TCP.
|
||||
* `--dport 22` — порт назначения 22, то есть SSH-сервер.
|
||||
* `-j ACCEPT` — разрешить такой трафик.
|
||||
|
||||
Теперь разрешим ответы сервера по уже установленному SSH-соединению:
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-A OUTPUT` — добавить правило в цепочку `OUTPUT`, то есть для пакетов, исходящих с этого хоста.
|
||||
* `-p tcp` — правило касается TCP.
|
||||
* `--sport 22` — исходный порт 22; это ответы SSH-сервера клиенту.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
Такой вариант рабочий, но в Linux обычно лучше использовать правило состояний соединений. Поэтому следующим шагом мы добавим его тоже.
|
||||
|
||||
---
|
||||
|
||||
# 3. Разрешаем уже установленные и связанные соединения
|
||||
|
||||
Это одно из самых важных правил. Оно позволяет не расписывать вручную каждый ответный пакет.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-A INPUT` — правило для входящих пакетов.
|
||||
* `-m conntrack` — подключить модуль отслеживания состояний соединений.
|
||||
* `--ctstate ESTABLISHED,RELATED` — матчить пакеты:
|
||||
|
||||
* `ESTABLISHED` — относящиеся к уже установленному соединению;
|
||||
* `RELATED` — связанные с уже существующим соединением.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
И аналогично для исходящих:
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* здесь то же самое, но для исходящих пакетов.
|
||||
|
||||
Это правило особенно важно для:
|
||||
|
||||
* SSH-сессии, в которой ты уже сидишь;
|
||||
* ответов от DNS-сервера;
|
||||
* ответов от HTTP/HTTPS-серверов;
|
||||
* ответов на ping.
|
||||
|
||||
---
|
||||
|
||||
# 4. Разрешаем loopback
|
||||
|
||||
Loopback — это локальное взаимодействие внутри самой ОС через интерфейс `lo`. По условию лабы его нужно разрешить.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -i lo -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-i lo` — входящий интерфейс `lo`, то есть loopback.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -o lo -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-o lo` — исходящий интерфейс `lo`.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
---
|
||||
|
||||
# 5. Разрешаем DNS
|
||||
|
||||
По условию нужно разрешить взаимодействие с DNS-сервером. Обычно DNS-запросы идут по UDP на порт `53`. Иногда может использоваться и TCP 53, поэтому для учебной работы лучше разрешить оба варианта.
|
||||
|
||||
## UDP DNS
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-A OUTPUT` — правило для исходящих запросов.
|
||||
* `-p udp` — DNS чаще всего использует UDP.
|
||||
* `--dport 53` — порт назначения 53, стандартный порт DNS.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-A INPUT` — правило для входящих ответов.
|
||||
* `-p udp` — протокол UDP.
|
||||
* `--sport 53` — исходный порт удалённого DNS-сервера равен 53.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
## TCP DNS
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* TCP используется реже, но может понадобиться для больших DNS-ответов или специальных случаев.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --sport 53 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* разрешает входящие TCP-ответы от DNS-сервера.
|
||||
|
||||
---
|
||||
|
||||
# 6. Разрешаем HTTP и HTTPS
|
||||
|
||||
По заданию нужно разрешить доступ к любым внешним серверам по HTTP/HTTPS.
|
||||
|
||||
## HTTP
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-p tcp` — HTTP работает по TCP.
|
||||
* `--dport 80` — порт назначения 80, стандартный HTTP.
|
||||
* правило разрешает открывать веб-страницы по HTTP.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --sport 80 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* разрешает входящие ответы от HTTP-сервера, у которого исходный порт 80.
|
||||
|
||||
## HTTPS
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* порт 443 — стандартный HTTPS.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p tcp --sport 443 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* разрешает входящие ответы от HTTPS-сервера.
|
||||
|
||||
---
|
||||
|
||||
# 7. Разрешаем ping наружу
|
||||
|
||||
По заданию нужно разрешить использование `ping` для проверки достижимости любых компьютеров во внешней сети. Для `ping` используется протокол ICMP. Конкретно запрос — это `echo-request`, ответ — `echo-reply`.
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-p icmp` — правило для протокола ICMP.
|
||||
* `--icmp-type echo-request` — ICMP-пакеты типа “эхо-запрос”, то есть сам ping-запрос.
|
||||
* `-j ACCEPT` — разрешить отправку.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `echo-reply` — ответ на ping.
|
||||
* правило разрешает принимать ответы на отправленные запросы.
|
||||
|
||||
---
|
||||
|
||||
# 8. Разрешаем ping к защищаемому хосту только с одного адреса
|
||||
|
||||
По заданию защищаемый хост должен отвечать на ping только от одного конкретного внешнего адреса. В твоём стенде таким адресом будет `192.168.100.2`, то есть `external-client`.
|
||||
|
||||
```bash
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.100.2 -d 192.168.100.1 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-p icmp` — ICMP.
|
||||
* `--icmp-type echo-request` — входящий ping-запрос.
|
||||
* `-s 192.168.100.2` — источник должен быть именно `192.168.100.2`.
|
||||
* `-d 192.168.100.1` — адрес назначения — защищаемый хост.
|
||||
* `-j ACCEPT` — разрешить.
|
||||
|
||||
```bash
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -s 192.168.100.1 -d 192.168.100.2 -j ACCEPT
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* это правило разрешает отправку ответа ping именно этому клиенту.
|
||||
* `-s 192.168.100.1` — источник ответа, сам firewall-host.
|
||||
* `-d 192.168.100.2` — получатель ответа, только разрешённый клиент.
|
||||
|
||||
---
|
||||
|
||||
# 9. Только теперь включаем политику DROP по умолчанию
|
||||
|
||||
Когда все разрешающие правила уже стоят, можно включить запрет всего остального.
|
||||
|
||||
```bash
|
||||
sudo iptables -P INPUT DROP
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `-P` — установить политику по умолчанию для цепочки.
|
||||
* `INPUT` — цепочка входящих пакетов.
|
||||
* `DROP` — все пакеты, которые не подошли ни под одно разрешающее правило, будут отбрасываться.
|
||||
|
||||
```bash
|
||||
sudo iptables -P OUTPUT DROP
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* то же самое для исходящих пакетов.
|
||||
|
||||
```bash
|
||||
sudo iptables -P FORWARD DROP
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* цепочка `FORWARD` нужна для транзитных пакетов через хост.
|
||||
* в этой лабораторной маршрутизатор делать не требуется, поэтому безопасно оставить `DROP`.
|
||||
|
||||
---
|
||||
|
||||
# 10. Проверяем, что SSH не отвалился
|
||||
|
||||
Сразу после установки политик выполни:
|
||||
|
||||
```bash
|
||||
sudo iptables -L -n -v --line-numbers
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* убедись, что правила SSH, loopback, DNS, HTTP/HTTPS и ICMP стоят в списке.
|
||||
* также удобно смотреть счётчики пакетов: если SSH работает, у соответствующих правил будут увеличиваться значения.
|
||||
|
||||
Открой **вторую SSH-сессию** к `firewall-host`:
|
||||
|
||||
```bash
|
||||
ssh -p 40001 arity@127.0.0.1
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* это контрольная проверка.
|
||||
* пока первая сессия ещё жива, ты проверяешь, что новое подключение тоже проходит.
|
||||
* если вторая сессия открылась, значит SSH точно не заблокирован.
|
||||
|
||||
---
|
||||
|
||||
# 11. Проверка правил по заданию
|
||||
|
||||
## Проверка DNS
|
||||
|
||||
На `firewall-host`:
|
||||
|
||||
```bash
|
||||
nslookup example.com
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `nslookup` отправляет DNS-запрос серверу имён.
|
||||
* если команда возвращает IP-адрес сайта, значит DNS разрешён.
|
||||
|
||||
## Проверка HTTP
|
||||
|
||||
```bash
|
||||
curl http://example.com
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `curl` делает HTTP-запрос к веб-серверу.
|
||||
* если приходит HTML-ответ, правило HTTP работает.
|
||||
|
||||
## Проверка HTTPS
|
||||
|
||||
```bash
|
||||
curl https://example.com
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* то же самое, но по HTTPS на порт 443.
|
||||
|
||||
## Проверка ping наружу
|
||||
|
||||
```bash
|
||||
ping -c 4 8.8.8.8
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `ping` — утилита проверки достижимости узла.
|
||||
* `-c 4` — отправить только 4 запроса, а не бесконечно.
|
||||
* `8.8.8.8` — внешний IP-адрес.
|
||||
* если ответы приходят, исходящий ping разрешён.
|
||||
|
||||
## Проверка ping к защищаемому хосту с разрешённого адреса
|
||||
|
||||
На `external-client`:
|
||||
|
||||
```bash
|
||||
ping -c 4 192.168.100.1
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* клиент `192.168.100.2` должен успешно пинговать `firewall-host`, потому что именно этот источник разрешён.
|
||||
|
||||
## Проверка блокировки лишнего трафика
|
||||
|
||||
Например, попробуй на `firewall-host`:
|
||||
|
||||
```bash
|
||||
nc -vz example.com 22
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `nc` — netcat, утилита для проверки TCP/UDP-подключений.
|
||||
* `-v` — подробный режим.
|
||||
* `-z` — не передавать данные, а только проверить возможность подключения.
|
||||
* `example.com 22` — попытка открыть TCP-соединение на порт 22.
|
||||
* так как доступ наружу разрешён только для DNS, HTTP, HTTPS и ping, это подключение должно не пройти.
|
||||
|
||||
Если `nc` не установлен, можно проверить другим способом, но ты писал, что инструменты уже есть, так что, скорее всего, всё нормально.
|
||||
|
||||
---
|
||||
|
||||
# 12. Контроль трафика через tcpdump
|
||||
|
||||
По заданию нужно показать прохождение пакетов через `tcpdump`.
|
||||
|
||||
Общий просмотр трафика:
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i any -n
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `tcpdump` — сниффер пакетов.
|
||||
* `-i any` — слушать все интерфейсы сразу.
|
||||
* `-n` — не преобразовывать адреса в имена.
|
||||
|
||||
Просмотр только ICMP:
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i any -n icmp
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* фильтр `icmp` покажет только ping-трафик.
|
||||
|
||||
Просмотр DNS:
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i any -n port 53
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `port 53` — показать DNS-пакеты.
|
||||
|
||||
Просмотр HTTP/HTTPS:
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i any -n 'tcp port 80 or tcp port 443'
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* кавычки нужны, чтобы shell корректно передал выражение целиком.
|
||||
* `or` — логическое “или”.
|
||||
* выражение показывает трафик к HTTP и HTTPS.
|
||||
|
||||
Просмотр SSH:
|
||||
|
||||
```bash
|
||||
sudo tcpdump -i any -n tcp port 22
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* поможет убедиться, что SSH-пакеты действительно проходят через фильтр.
|
||||
|
||||
---
|
||||
|
||||
# 13. Сохранение правил
|
||||
|
||||
Когда убедишься, что всё работает, сохрани конфигурацию:
|
||||
|
||||
```bash
|
||||
sudo netfilter-persistent save
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* `netfilter-persistent` сохраняет текущие правила iptables, чтобы они восстановились после перезагрузки.
|
||||
|
||||
Можно дополнительно сохранить в файл:
|
||||
|
||||
```bash
|
||||
sudo iptables-save > ~/iptables-lab4.rules
|
||||
```
|
||||
|
||||
Пояснение:
|
||||
|
||||
* это текстовый дамп всех правил.
|
||||
* удобно приложить к отчёту или использовать для восстановления.
|
||||
|
||||
---
|
||||
|
||||
# 14. Готовый набор команд в правильном порядке
|
||||
|
||||
Ниже — тот же порядок, но компактным блоком, чтобы ты мог выполнять по шагам:
|
||||
|
||||
```bash
|
||||
sudo iptables-save > ~/iptables-before-lab.rules
|
||||
|
||||
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
|
||||
|
||||
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
|
||||
sudo iptables -A INPUT -i lo -j ACCEPT
|
||||
sudo iptables -A OUTPUT -o lo -j ACCEPT
|
||||
|
||||
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
|
||||
sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 53 -j ACCEPT
|
||||
|
||||
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 80 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 443 -j ACCEPT
|
||||
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
|
||||
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.100.2 -d 192.168.100.1 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -s 192.168.100.1 -d 192.168.100.2 -j ACCEPT
|
||||
|
||||
sudo iptables -P INPUT DROP
|
||||
sudo iptables -P OUTPUT DROP
|
||||
sudo iptables -P FORWARD DROP
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 16. Что написать в учебном смысле про SSH как “дополнение”
|
||||
|
||||
Можно формулировать так:
|
||||
|
||||
> В базовом задании SSH не входит в перечень разрешённого трафика, однако для сохранения удалённого доступа к стенду было добавлено дополнительное правило, разрешающее входящие TCP-соединения на порт 22 защищаемого хоста. Правило было установлено до включения политик DROP по умолчанию, чтобы не потерять административный доступ к системе.
|
||||
|
||||
Это хорошо звучит и по сути верно.
|
||||
69
lab4/lab4.md
Normal file
69
lab4/lab4.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Защита информации, 2026
|
||||
|
||||
## Практическая работа №4
|
||||
**по дисциплине «Защита информации»**
|
||||
|
||||
**Тема работы:** «Межсетевое экранирование»
|
||||
**Преподаватель:** Силиненко А.В.
|
||||
**Email:** a_silinenko@mail.ru
|
||||
|
||||
## 1. Цель работы
|
||||
Получение базовых знаний по настройке межсетевого экрана (МЭ) в ОС Linux/MacOS.
|
||||
|
||||
## 2. Задачи практической работы
|
||||
### 2.1.
|
||||
Изучение МЭ iptables или любого другого, обеспечивающего выполнение задания.
|
||||
|
||||
### 2.2.
|
||||
Реализация заданной политики доступа.
|
||||
|
||||
## 3. Ход практической работы
|
||||
### 3.1.
|
||||
Установить или убедиться в наличии iptables.
|
||||
|
||||
### 3.2.
|
||||
Изучить МЭ iptables, в том числе:
|
||||
- установка МЭ;
|
||||
- принципы и порядок обработки пакетов, основные цепочки (таблицы) обработки;
|
||||
- действия по умолчанию;
|
||||
- возможные параметры правил фильтрации.
|
||||
|
||||
### 3.3.
|
||||
Изучить команды вывода таблиц фильтрации, добавления, редактирования и удаления правил фильтрации.
|
||||
|
||||
### 3.4.
|
||||
Реализовать следующую политику доступа:
|
||||
- разрешить локальное взаимодействие через интерфейс loopback;
|
||||
- разрешить взаимодействие с DNS-сервером;
|
||||
- разрешить использование утилиты ping для проверки достижимости компьютеров с любыми IP-адресами во внешней сети;
|
||||
- разрешить использование утилиты ping для проверки достижимости защищаемого хоста только с конкретного адреса внешней сети;
|
||||
- разрешить доступ по протоколам HTTP/HTTPS к любым внешним серверам;
|
||||
- блокировать все пакеты, не удовлетворяющие указанным выше условиям.
|
||||
|
||||
Правила политики доступа должны содержать (там, где это уместно):
|
||||
- IP-адрес (сеть) источника;
|
||||
- IP-адрес (сеть) приемника;
|
||||
- транспортный протокол;
|
||||
- для протоколов TCP и UDP: порт приемника;
|
||||
- для протокола ICMP: тип и код сообщения.
|
||||
|
||||
### 3.5.
|
||||
Произвести проверку корректности реализации заданной политики, используя программы ping, nslookup (или аналоги), web-браузер.
|
||||
|
||||
Также убедиться, что весь трафик, кроме разрешенного, блокируется.
|
||||
|
||||
### 3.6.
|
||||
Проконтролировать прохождение пакетов утилитой tcpdump.
|
||||
|
||||
## 4. Требования к отчету
|
||||
### 4.1.
|
||||
В разделе отчета, посвященному данной работе, должны быть приведены:
|
||||
- актуальность темы работы в контексте курса;
|
||||
- цели и задачи работы;
|
||||
- схема стенда, в т.ч. защищаемый компьютер с МЭ, внешняя сеть, DNS-сервер(а), IP-адреса хостов;
|
||||
- принципы обработки пакетов в цепочках (таблицах) iptables;
|
||||
- примеры команд добавления правил фильтрации;
|
||||
- набор правил фильтрации, реализующий заданную политику доступа;
|
||||
- проверку реализованной политики – демонстрацию примеров пропуска разрешенного трафика и блокировки запрещенного;
|
||||
- пример контроля трафика (вывод tcpdump) при проверках реализованной политики;
|
||||
- выводы по проделанной работе.
|
||||
27
lab4/stand.mmd
Normal file
27
lab4/stand.mmd
Normal file
@@ -0,0 +1,27 @@
|
||||
graph TB
|
||||
subgraph host["Хост-машина"]
|
||||
subgraph fw["firewall-host (защищаемый хост, iptables)"]
|
||||
fw_lo["lo: 127.0.0.1/8"]
|
||||
fw_nat["enp0s3 (NAT)<br/>10.0.2.15/24"]
|
||||
fw_int["enp0s8 (Internal)<br/>192.168.100.1/24"]
|
||||
end
|
||||
subgraph ec["external-client (внешний клиент)"]
|
||||
ec_nat["enp0s3 (NAT)<br/>10.0.2.15/24"]
|
||||
ec_int["enp0s8 (Internal)<br/>192.168.100.2/24"]
|
||||
end
|
||||
end
|
||||
|
||||
fw_int <--->|"Internal Network (intnet)<br/>192.168.100.0/24"| ec_int
|
||||
|
||||
inet["Интернет<br/>(DNS: 10.0.2.3, HTTP/HTTPS,<br/>ICMP: 8.8.8.8 и др.)"]
|
||||
fw_nat -->|"NAT"| inet
|
||||
|
||||
style fw fill:#e8f4e8,stroke:#2d7d2d,stroke-width:2px
|
||||
style ec fill:#e8e8f4,stroke:#2d2d7d,stroke-width:2px
|
||||
style host fill:#f9f9f9,stroke:#999,stroke-width:1px
|
||||
style inet fill:#fff3e0,stroke:#e65100,stroke-width:2px
|
||||
style fw_lo fill:#fff,stroke:#666
|
||||
style fw_nat fill:#fff,stroke:#666
|
||||
style fw_int fill:#fff,stroke:#666
|
||||
style ec_nat fill:#fff,stroke:#666
|
||||
style ec_int fill:#fff,stroke:#666
|
||||
BIN
report/img/lab4-stand.png
Normal file
BIN
report/img/lab4-stand.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
@@ -177,6 +177,7 @@
|
||||
\item Практическая работа №1. Анализ уязвимостей программного обеспечения. Данная практическая работа посвящена анализу уязвимостей программного обеспечения с использованием Банка данных угроз безопасности информации ФСТЭК России~\cite{fstec-bdu}. В ходе выполнения работы предусмотрено изучение структуры разделов «Угрозы» и «Уязвимости», а также поиск уязвимостей по заданным критериям. Особое внимание уделяется выявлению уязвимостей, соответствующих используемым версиям операционных систем личных устройств, и рассмотрению возможных мер по их устранению.
|
||||
\item Практическая работа №2. Разработка и исследование системы аутентификации и авторизации. Данная практическая работа посвящена разработке системы доступа пользователей к конфиденциальным данным и исследованию стойкости паролей к атаке методом грубой силы. В ходе выполнения работы реализованы утилита управления пользователями, утилита доступа к конфиденциальным данным и программа перебора паролей, а также проведено экспериментальное исследование зависимости времени взлома от длины пароля.
|
||||
\item Практическая работа №3. Реализация моделей дискреционного и мандатного управления доступом. Данная практическая работа посвящена расширению системы из работы №2 путём реализации моделей DAC (дискреционный доступ) и MAC (мандатный доступ) на основе модели Белла–Лападулы.
|
||||
\item Практическая работа №4. Межсетевое экранирование средствами \texttt{iptables}. Данная практическая работа посвящена настройке межсетевого экрана в Linux, формированию политики фильтрации сетевого трафика и экспериментальной проверке пропуска разрешённых соединений и блокировки запрещённых пакетов с использованием \texttt{tcpdump}.
|
||||
\end{enumerate}
|
||||
|
||||
\newpage
|
||||
@@ -683,6 +684,278 @@ secret.txt:2
|
||||
В ходе практической работы №3 на базе системы из работы №2 реализованы модели дискреционного и мандатного управления доступом. DAC реализован через список доступа (ACL) с владельцами объектов и командой \texttt{grant} для произвольного назначения прав. MAC реализован на основе модели Белла–Лападулы с тремя уровнями меток и проверкой свойств <<нет чтения сверху>> и <<нет записи вниз>>. Режимы проверки (BOTH, DAC\_ONLY, MAC\_ONLY) позволяют гибко настраивать систему; переключение доступно только администратору (root). Полученный опыт демонстрирует принципиальные различия между дискреционным и мандатным подходами к управлению доступом и их практическую реализацию в информационных системах.
|
||||
|
||||
|
||||
\newpage
|
||||
\section{Межсетевое экранирование средствами iptables}
|
||||
|
||||
\subsection{Актуальность темы}
|
||||
|
||||
Межсетевое экранирование является одним из базовых механизмов сетевой защиты информационных систем. Локальный хостовый межсетевой экран позволяет минимизировать поверхность атаки, явно разрешая только необходимый трафик и блокируя все остальные соединения по принципу <<запрещено всё, что не разрешено>>. Практическая настройка \texttt{iptables} в рамках курса <<Защита информации>> позволяет закрепить представление о пакетной фильтрации, ролях цепочек \texttt{INPUT}, \texttt{OUTPUT}, \texttt{FORWARD} и о проверке работоспособности правил на реальном стенде.
|
||||
|
||||
\subsection{Цели и задачи работы}
|
||||
|
||||
Цель работы: получение базовых знаний по настройке межсетевого экрана в ОС Linux и реализация заданной политики доступа.
|
||||
|
||||
Задачи работы:
|
||||
\begin{enumerate}
|
||||
\item Изучить межсетевой экран \texttt{iptables}: принципы обработки пакетов, основные цепочки, действия по умолчанию, параметры правил фильтрации.
|
||||
\item Развернуть лабораторный стенд на базе виртуальных машин VirtualBox.
|
||||
\item Реализовать заданную политику доступа: разрешить loopback, DNS, исходящий ping, входящий ping только от конкретного адреса, HTTP/HTTPS; заблокировать всё остальное.
|
||||
\item Проверить корректность реализации политики.
|
||||
\item Проконтролировать прохождение пакетов утилитой \texttt{tcpdump}.
|
||||
\end{enumerate}
|
||||
|
||||
\subsection{Схема стенда}
|
||||
|
||||
Стенд реализован на базе двух виртуальных машин VirtualBox с ОС Ubuntu Server 22.04. Каждая машина имеет два сетевых адаптера:
|
||||
\begin{itemize}
|
||||
\item \textbf{Adapter~1 (NAT)} --- доступ в Интернет (DNS, HTTP/HTTPS, ICMP);
|
||||
\item \textbf{Adapter~2 (Internal Network <<intnet>>)} --- изолированная сеть \texttt{192.168.100.0/24} для связи между машинами.
|
||||
\end{itemize}
|
||||
|
||||
Схема стенда представлена на рисунке~\ref{fig:lab4-topology}, адресация узлов --- в таблице~\ref{tab:lab4-addr}.
|
||||
|
||||
\begin{figure}[H]
|
||||
\centering
|
||||
\includegraphics[width=0.85\linewidth]{img/lab4-stand.png}
|
||||
\caption{Схема лабораторного стенда}
|
||||
\label{fig:lab4-topology}
|
||||
\end{figure}
|
||||
|
||||
\begin{table}[H]
|
||||
\centering
|
||||
\caption{Адресация узлов стенда}
|
||||
\label{tab:lab4-addr}
|
||||
\begin{tabularx}{\textwidth}{l l l X}
|
||||
\toprule
|
||||
Узел & Интерфейс & IP-адрес & Назначение \\
|
||||
\midrule
|
||||
\multirow{2}{*}{firewall-host} & enp0s3 (NAT) & 10.0.2.15/24 & Доступ в Интернет \\
|
||||
& enp0s8 (intnet) & 192.168.100.1/24 & Внутренняя сеть \\
|
||||
\midrule
|
||||
\multirow{2}{*}{external-client} & enp0s3 (NAT) & 10.0.2.15/24 & Доступ в Интернет \\
|
||||
& enp0s8 (intnet) & 192.168.100.2/24 & Внутренняя сеть \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
\end{table}
|
||||
|
||||
DNS-запросы обрабатываются службой \texttt{systemd-resolved} (\texttt{127.0.0.53}), перенаправляющей их DNS-серверу NAT-шлюза VirtualBox (\texttt{10.0.2.3}). Управление виртуальными машинами осуществлялось по SSH через проброс портов VirtualBox.
|
||||
|
||||
\subsection{Принципы обработки пакетов в \texttt{iptables}}
|
||||
|
||||
Утилита \texttt{iptables} организует правила фильтрации в виде таблиц и цепочек. В работе использовалась таблица \texttt{filter} (по умолчанию), содержащая три встроенные цепочки:
|
||||
\begin{itemize}
|
||||
\item \texttt{INPUT} --- входящие пакеты, адресованные локальным процессам;
|
||||
\item \texttt{OUTPUT} --- исходящие пакеты локальных процессов;
|
||||
\item \texttt{FORWARD} --- транзитные пакеты (маршрутизация).
|
||||
\end{itemize}
|
||||
|
||||
Пакет последовательно сравнивается с правилами цепочки. При совпадении выполняется действие: \texttt{ACCEPT} (пропустить), \texttt{DROP} (молча отбросить) или \texttt{REJECT} (отбросить с уведомлением). Если ни одно правило не сработало, применяется политика по умолчанию.
|
||||
|
||||
Модуль \texttt{conntrack} позволяет отслеживать состояния соединений. Правило с параметром \texttt{-{}-ctstate ESTABLISHED,RELATED} пропускает ответные пакеты уже установленных соединений без необходимости создания отдельных правил для каждого обратного направления.
|
||||
|
||||
\subsection{Реализация политики фильтрации}
|
||||
|
||||
Перед настройкой все существующие правила были сброшены:
|
||||
\begin{verbatim}
|
||||
sudo iptables -F && sudo iptables -X
|
||||
sudo iptables -t nat -F && sudo iptables -t mangle -F
|
||||
\end{verbatim}
|
||||
|
||||
Примеры команд добавления правил:
|
||||
|
||||
Разрешение loopback-трафика (\texttt{-i~lo} --- входящий интерфейс loopback):
|
||||
\begin{verbatim}
|
||||
sudo iptables -A INPUT -i lo -j ACCEPT
|
||||
\end{verbatim}
|
||||
|
||||
Разрешение DNS-запросов (\texttt{-p~udp}, порт~53):
|
||||
\begin{verbatim}
|
||||
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
|
||||
\end{verbatim}
|
||||
|
||||
Разрешение входящего ping только от конкретного адреса (\texttt{-{}-icmp-type echo-request} --- тип~8, параметры \texttt{-s} и \texttt{-d} --- адреса источника и назначения):
|
||||
\begin{verbatim}
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-request \
|
||||
-s 192.168.100.2 -d 192.168.100.1 -j ACCEPT
|
||||
\end{verbatim}
|
||||
|
||||
Полный набор правил, реализующий заданную политику доступа:
|
||||
|
||||
{\footnotesize
|
||||
\begin{verbatim}
|
||||
# SSH (для сохранения удалённого доступа к стенду)
|
||||
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
|
||||
# Уже установленные и связанные соединения
|
||||
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
|
||||
# Loopback
|
||||
sudo iptables -A INPUT -i lo -j ACCEPT
|
||||
sudo iptables -A OUTPUT -o lo -j ACCEPT
|
||||
# DNS (UDP и TCP, порт 53)
|
||||
sudo iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
|
||||
sudo iptables -A INPUT -p udp --sport 53 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 53 -j ACCEPT
|
||||
# HTTP и HTTPS
|
||||
sudo iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 80 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
|
||||
sudo iptables -A INPUT -p tcp --sport 443 -j ACCEPT
|
||||
# Исходящий ping
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
|
||||
# Входящий ping только от 192.168.100.2
|
||||
sudo iptables -A INPUT -p icmp --icmp-type echo-request \
|
||||
-s 192.168.100.2 -d 192.168.100.1 -j ACCEPT
|
||||
sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply \
|
||||
-s 192.168.100.1 -d 192.168.100.2 -j ACCEPT
|
||||
# Политики по умолчанию
|
||||
sudo iptables -P INPUT DROP
|
||||
sudo iptables -P OUTPUT DROP
|
||||
sudo iptables -P FORWARD DROP
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
Правило для SSH не входит в задание, но необходимо для сохранения удалённого доступа; оно добавлено до включения политик \texttt{DROP}.
|
||||
|
||||
Итоговое состояние таблицы \texttt{filter} (\texttt{iptables -L -n -v -{}-line-numbers}):
|
||||
|
||||
{\scriptsize
|
||||
\begin{verbatim}
|
||||
Chain INPUT (policy DROP 0 packets, 0 bytes)
|
||||
num pkts bytes target prot in source destination
|
||||
1 162 10124 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
|
||||
2 10 760 ACCEPT all * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
|
||||
3 0 0 ACCEPT all lo 0.0.0.0/0 0.0.0.0/0
|
||||
4 0 0 ACCEPT udp * 0.0.0.0/0 0.0.0.0/0 udp spt:53
|
||||
5 0 0 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp spt:53
|
||||
6 0 0 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp spt:80
|
||||
7 0 0 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp spt:443
|
||||
8 0 0 ACCEPT icmp * 0.0.0.0/0 0.0.0.0/0 icmptype 0
|
||||
9 0 0 ACCEPT icmp * 192.168.100.2 192.168.100.1 icmptype 8
|
||||
|
||||
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
|
||||
|
||||
Chain OUTPUT (policy DROP 4 packets, 304 bytes)
|
||||
num pkts bytes target prot out source destination
|
||||
1 119 21028 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp spt:22
|
||||
2 0 0 ACCEPT all * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
|
||||
3 0 0 ACCEPT all lo 0.0.0.0/0 0.0.0.0/0
|
||||
4 0 0 ACCEPT udp * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
|
||||
5 0 0 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
|
||||
6 0 0 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
|
||||
7 0 0 ACCEPT tcp * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
|
||||
8 0 0 ACCEPT icmp * 0.0.0.0/0 0.0.0.0/0 icmptype 8
|
||||
9 0 0 ACCEPT icmp * 192.168.100.1 192.168.100.2 icmptype 0
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
\subsection{Проверка реализованной политики}
|
||||
|
||||
\textbf{DNS.} Команда \texttt{nslookup} на firewall-host успешно разрешает имена:
|
||||
|
||||
{\footnotesize
|
||||
\begin{verbatim}
|
||||
$ nslookup example.com
|
||||
Server: 127.0.0.53
|
||||
Address: 127.0.0.53#53
|
||||
|
||||
Non-authoritative answer:
|
||||
Name: example.com
|
||||
Address: 104.18.26.120
|
||||
Name: example.com
|
||||
Address: 104.18.27.120
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
\textbf{HTTP/HTTPS.} Утилита \texttt{curl} успешно получает ответ от внешнего сервера как по HTTP, так и по HTTPS:
|
||||
|
||||
{\footnotesize
|
||||
\begin{verbatim}
|
||||
$ curl http://example.com
|
||||
<!doctype html><html lang="en"><head><title>Example Domain
|
||||
</title>...</html>
|
||||
|
||||
$ curl https://example.com
|
||||
<!doctype html><html lang="en"><head><title>Example Domain
|
||||
</title>...</html>
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
\textbf{Исходящий ping.} Защищаемый хост пингует внешние адреса:
|
||||
|
||||
{\footnotesize
|
||||
\begin{verbatim}
|
||||
$ ping -c 4 8.8.8.8
|
||||
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
|
||||
64 bytes from 8.8.8.8: icmp_seq=1 ttl=255 time=12.0 ms
|
||||
64 bytes from 8.8.8.8: icmp_seq=2 ttl=255 time=11.9 ms
|
||||
64 bytes from 8.8.8.8: icmp_seq=3 ttl=255 time=11.3 ms
|
||||
64 bytes from 8.8.8.8: icmp_seq=4 ttl=255 time=11.4 ms
|
||||
|
||||
--- 8.8.8.8 ping statistics ---
|
||||
4 packets transmitted, 4 received, 0% packet loss
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
\textbf{Входящий ping от разрешённого адреса.} С external-client (\texttt{192.168.100.2}) ping проходит:
|
||||
|
||||
{\footnotesize
|
||||
\begin{verbatim}
|
||||
arity@external-client:~$ ping -c 4 192.168.100.1
|
||||
64 bytes from 192.168.100.1: icmp_seq=1 ttl=64 time=0.433 ms
|
||||
64 bytes from 192.168.100.1: icmp_seq=2 ttl=64 time=0.369 ms
|
||||
64 bytes from 192.168.100.1: icmp_seq=3 ttl=64 time=0.440 ms
|
||||
64 bytes from 192.168.100.1: icmp_seq=4 ttl=64 time=0.398 ms
|
||||
|
||||
--- 192.168.100.1 ping statistics ---
|
||||
4 packets transmitted, 4 received, 0% packet loss
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
\textbf{Блокировка запрещённого трафика.} Попытка TCP-соединения на порт~22 внешнего сервера не проходит (исходящий TCP разрешён только на порты 53, 80, 443):
|
||||
|
||||
{\footnotesize
|
||||
\begin{verbatim}
|
||||
$ nc -vz example.com 22
|
||||
(нет ответа, соединение заблокировано, прервано по Ctrl+C)
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
\subsection{Контроль трафика средствами \texttt{tcpdump}}
|
||||
|
||||
Для подтверждения прохождения пакетов использовалась утилита \texttt{tcpdump}. Ниже приведён вывод при выполнении \texttt{ping} от external-client к firewall-host:
|
||||
|
||||
{\footnotesize
|
||||
\begin{verbatim}
|
||||
$ sudo tcpdump -i any -n icmp
|
||||
18:26:20.960046 enp0s8 In IP
|
||||
192.168.100.2 > 192.168.100.1:
|
||||
ICMP echo request, id 2, seq 1, length 64
|
||||
18:26:20.960119 enp0s8 Out IP
|
||||
192.168.100.1 > 192.168.100.2:
|
||||
ICMP echo reply, id 2, seq 1, length 64
|
||||
18:26:21.990542 enp0s8 In IP
|
||||
192.168.100.2 > 192.168.100.1:
|
||||
ICMP echo request, id 2, seq 2, length 64
|
||||
18:26:21.990587 enp0s8 Out IP
|
||||
192.168.100.1 > 192.168.100.2:
|
||||
ICMP echo reply, id 2, seq 2, length 64
|
||||
...
|
||||
8 packets captured
|
||||
\end{verbatim}
|
||||
}
|
||||
|
||||
На интерфейсе \texttt{enp0s8} видны входящие ICMP echo-request от \texttt{192.168.100.2} и исходящие echo-reply, что подтверждает работу правила входящего ping от разрешённого адреса.
|
||||
|
||||
Аналогичным образом были зафиксированы DNS-пакеты (\texttt{sudo tcpdump -i any -n port 53}): запрос от \texttt{127.0.0.1} к \texttt{127.0.0.53} через loopback, перенаправление к \texttt{10.0.2.3} через \texttt{enp0s3} и получение ответа. При выполнении \texttt{curl http://example.com} вывод \texttt{tcpdump} с фильтром \texttt{tcp port 80} зафиксировал трёхстороннее TCP-рукопожатие (SYN, SYN-ACK, ACK), HTTP-запрос \texttt{GET / HTTP/1.1} и ответ \texttt{HTTP/1.1 200 OK}, подтверждая корректную работу правила для порта~80.
|
||||
|
||||
\subsection{Выводы}
|
||||
|
||||
В ходе практической работы №4 на стенде из двух виртуальных машин VirtualBox настроена политика межсетевого экранирования средствами \texttt{iptables}. Реализована схема с политикой \texttt{DROP} по умолчанию и разрешающими правилами для loopback, DNS, исходящего ping, входящего ping от адреса \texttt{192.168.100.2} и HTTP/HTTPS. Экспериментальная проверка подтвердила пропуск разрешённого трафика и блокировку соединений, не описанных в политике. Анализ трафика утилитой \texttt{tcpdump} продемонстрировал соответствие наблюдаемой сетевой активности заданным правилам фильтрации.
|
||||
|
||||
|
||||
\newpage
|
||||
\section*{Заключение}
|
||||
\addcontentsline{toc}{section}{Заключение}
|
||||
@@ -693,6 +966,8 @@ secret.txt:2
|
||||
|
||||
В ходе выполнения практической работы №3 на базе системы из работы №2 реализованы модели дискреционного (DAC) и мандатного (MAC) управления доступом. DAC реализован через список доступа с владельцами объектов и командой выдачи прав; MAC — на основе модели Белла–Лападулы с тремя уровнями меток конфиденциальности. Реализация демонстрирует принципиальные различия между подходами и их практическое применение.
|
||||
|
||||
В ходе выполнения практической работы №4 на стенде из двух виртуальных машин VirtualBox настроена политика межсетевого экранирования средствами \texttt{iptables}. Реализованы правила фильтрации, разрешающие loopback-трафик, DNS, ICMP и HTTP/HTTPS, а все прочие соединения блокируются. Корректность работы правил подтверждена тестовыми соединениями и анализом пакетов утилитой \texttt{tcpdump}.
|
||||
|
||||
\newpage
|
||||
\printbibliography[heading=bibintoc]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user