# Network Basic Модуль Занятие 5
## Безопасность локальной сети
### Практическая работа 5
Топология

#### Первичная настройка
Сначала нужно настроить нашу топологию. Нужно произвести настройку коммутатора, чтобы клиенты находились в разных VLAN (только клиент Kali не находится ни в каком VLAN - по умолчанию, 1)

```cisco=
enable
configure terminal
interface e0/0
switchport trunk encapsulation dot1q
switchport mode trunk
interface e0/1
switchport mode access
switchport access vlan 10
interface e0/2
switchport mode access
switchport access vlan 20
do write
```
Также нужно настроить роутер. Он не только будет использоваться клиентами для выхода во внешнюю сеть, но также будет выступать в роли DHCP-сервера, раздавая IP адреса разным сетям (VLAN1 получит сеть 10.0.1.0/24, VLAN10 - 10.0.10.0/24, VLAN20 - 10.0.20.0/24).
Настройка портов и выхода в интернет


```cisco=
int e0/0
ip addr 10.0.1.254 255.255.255.0
no shut
int e0/0.10
enca dot1q 10
ip addr 10.0.10.254 255.255.255.0
no shut
int e0/0.20
enca dot1q 20
ip addr 10.0.20.254 255.255.255.0
no shut
access-list 99 permit 10.0.0.0 0.0.255.255
ip nat inside source list 99 interface e0/1 overload
int e0/1
ip nat outside
int e0/0
ip nat inside
int e0/0.10
ip nat inside
int e0/0.20
ip nat inside
```
Настройка DHCP-сервера

```cisco=
ip dhcp pool VLAN1
network 10.0.1.0 255.255.255.0
default-router 10.0.1.254
dns-server 8.8.8.8
domain pt.local
ip dhcp pool VLAN10
network 10.0.10.0 255.255.255.0
default-router 10.0.10.254
dns-server 8.8.8.8
domain pt.local
ip dhcp pool VLAN20
network 10.0.20.0 255.255.255.0
default-router 10.0.20.254
dns-server 8.8.8.8
domain pt.local
```
Проверим работу настроек. Нужно, чтобы Kali получила свой адрес от сервера, а также имела выход в интернет

#### Проведение атаки на DHCP
Атака заключается в создании ситуации, когда DHCP сервер не может обработать запросы своих клиентов на выдачу IP адреса из-за заполненного бассейна IP адресов для выдачи. Далее уже можно создать свой DHCP сервер, который будет отвечать на запросы клиентов в сети и, соответственно, перенаправлять все пакеты в сторону нашего фиктивного сервера.
1. Установка нужного ПО
Нужно поставить yersinia
```linux=
sudo apt install yersinia
```

2. Проверим состояние DHCP-сервера до атаки

3. Запускаем yersinia
```linux=
yersinia -G
```

Далее выбираем атаку на DHCP (отправка запросов DISCOVER)

Запускаем атаку

И останавливаем через некоторое время.
Теперь посмотрим на состояние DHCP сервера

Бассейн адресов заполнен, сервер не сможет отвечать на запросы о выдаче новых IP адресов.
4. Теперь запускаем атаку Rogue DHCP Server. Она позволяет реализовать свой сервер DHCP, благодаря чему все новые хосты будут получать IP адресацию у нас



5. Устанавливаем защиту на коммутатор от атак на DHCP-сервер
```cisco=
ip dhcp snooping
ip dhcp snooping vlan 1
ip dhcp snooping vlan 10
ip dhcp snooping vlan 20
do write
interface e0/0
ip dhcp snooping trust
do write
interface range e0/1-3
ip dhcp snooping limit rate 10
switchport mode access
switchport port-security
switchport port-security maximum 1
switchport port-security violation restrict
do write
exit
```

Теперь при попытке осуществления DHCP Starvation мы получим ошибку, а дальнейшие пакеты от Kali до DHCP сервера будут отклоняться

#### VLAN-hopping
Повторим атаку типа VLAN-hopping, когда клиент злоумышленника перемещается из одно VLAN в другой.
1. Запускаем yersinia.
Запускаем проведение атаки, атаку будет проводить на DTP. Нам нужно разрешить формирование фреймов с VLAN-ID внутри (или включить trunking)

2. Прописываем следующие настройки. Они позволяют создать виртуальный порт, который будет инкапсулировать трафик в стандарт, который используется для поддержки VLAN

```linux=
modprobe 802.1Q # добавление информации о протоколе 802.1Q
vconfig add eth1 20 # создание виртуального интерфейса с идентификатором 20
ifconfig eth1.20 up # запуск интерфейса
```
При просмотре IP-адресов интерфейсов теперь увидим также виртуальный интерфейс.

На него тоже нужно выдать IP адрес, но уже из сети, в которую он смотрит (при настройках виртуальный интерфейс обозначался числом 20, оно же будет использоваться как VLAN_ID, значит и IP-адрес интерфейса должен браться из сети VLAN20)
```linux=
ip address add 10.0.20.100/24 dev eth1.20
```

3. Посылаем пакеты с виртуального интерфейса

Пакет будет инкапсулирован в протокол 802.1Q, мы также сможем посмотреть VLAN_ID каждого проходящего пакета

4. Настраиваем защиту от VLAN-hopping
Основной способ защититься от этой атаки заключается в том, чтобы не оставлять на коммутаторе порты, режим работы которых выстравивается в зависимости от типа пакетов, которые на этот порт приходят (автоматический режим работы). Все порты клиентов должны быть определны как access (и только порты, которые используются для общения с другими коммутаторами, должны быть выставлены в режим trunk). Ситуации, когда в качестве VLAN используется 1, тоже не должно быть, т.к. этот номер используется по умолчанию, и может быть не настроен для работы только в режиме access

К примеру, на нашем коммутаторе режим порта e1/0 автоматически выставлися в trunk после передачи пакетов, хотя изначально в настройках нигде не объявлялось, что порт e1/0 работает как trunk порт
Чтобы режим не менялся, есть возможность сказать коммутатору не согласовывать режим работы с пакетами, которые получает порт с помощью команды:
```cisco=
switchport nonegotiate
```
#### Переполнение таблицы коммутации
Атака переполнением таблицы коммутации заполняет таблицу MAC адресов коммутатора, из-за чего может нарушится связность сети.
1. Установка нужных пакетов
```linux=
sudo apt install dsniff
```

2. Проверка состояния MAC таблицы коммутатора до атаки
```cisco=
show mac address-table
```

3. Запуск атаки
```linux=
macof
```

4. Проверка таблицы после атаки

Таблица заполнена.
5. Защита от CAM-table overflow
Защита заключается в использовании Port Security. Ограничим максимальное количество пакетов с разными значениями MAC отправителя, которые будет принимать коммутатор, а все выходящие за ограничение - отбросим
```cisco=
enable
configure terminal
interface range e0/1-3
switchport mode access
switchport port-security
switchport port-security maximum 1
switchport port-security violation restrict
do write
```

#### MAC-Spoofing
Этот тип атаки позволяет использовать возможность смены MAC-адреса интерфейса, который отправляет данные, чтобы маскироваться под другие устройства в сети.
Для смены MAC-адреса используется утилита macchanger.

Защитой от macchanger может являться Port Security и ограничение количества разных MAC-адресов, которые могут встречаться в пакетах с интерфейса
```cisco=
enable
configure terminal
interface range e0/1-3
switchport mode access
switchport port-security
switchport port-security maximum 1
switchport port-security violation restrict
do write
```

#### Настройка ACL
Листы контроля доступа могут быть использованы для обеспечения безопасности и ограничения доступа устройств к другим устройствам.
Настроим следующие ACL:
+ KALI имеет доступ куда угодно, кроме debian машинки по протоколу HTTP
+ Win-7 машинка имеет доступ только в интернет и в VLAN-1
+ Debian машинка имеет доступ только в интернет
```cisco=
ip access-list extended kali
deny tcp 10.0.1.1 0.0.0.0 10.0.20.1 0.0.0.0 eq 80
permit ip any any
ip access-list extended win7
permit udp 10.0.10.1 0.0.0.0 10.0.10.254 0.0.0.0 eq 67 68
deny ip 10.0.10.1 0.0.0.0 10.0.10.0 0.0.0.255
deny ip 10.0.10.1 0.0.0.0 10.0.20.0 0.0.0.255
permit ip any any
ip access-list extended debian
permit udp 10.0.20.1 0.0.0.0 10.0.20.254 0.0.0.0 eq 67 68
deny ip 10.0.20.1 0.0.0.0 10.0.20.0 0.0.0.255
deny ip 10.0.20.1 0.0.0.0 10.0.10.0 0.0.0.255
deny ip 10.0.20.1 0.0.0.0 10.0.1.0 0.0.0.255
permit ip any any
```

Применение ACL на интерфейсах роутера
```
interface e0/0
ip access-group kali in
do write
```
