# Сканирование сетей. Лабораторная работа №4 (HW)

## Ход работы

1. Заблокируем порт `21/tcp` на машине `ubuntu` с помощью iptables по политике REJECT.
```bash
sudo iptables -A INPUT -p tcp --dport 21 -j REJECT
```
![alt text](img/image01.png)

2. Просканируем заблокированный в пункте 1 порт типами сканирования TCP SYN Scan, TCP Connect Scan, UDP Scan, TCP FIN Scan, TCP NULL Scan, TCP Xmas Scan и TCP ACK Scan.


```bash
nmap 192.168.103.100 -p 21 -sS
nmap 192.168.103.100 -p 21 -sT
nmap 192.168.103.100 -p 21 -sU
nmap 192.168.103.100 -p 21 -sF
nmap 192.168.103.100 -p 21 -sN
nmap 192.168.103.100 -p 21 -sX
nmap 192.168.103.100 -p 21 -sA
```

![alt text](img/image02.png)

В целом результаты довольно ожидаемые, все методы кроме TCP Connect Scan и UDP Scan определили, что порт фильтруется.
UDP закрыт, так как на данном порту действительно нет службы, а TCP Connect считается открытым, если открылось соединение.

3. Заменим политику с `REJECT` на `DROP`
`sudo iptables -R INPUT 1 -p tcp --dport 21 -j DROP`

![alt text](img/image03.png)

4. Повторим п.2

![alt text](img/image04.png)

Можно заметить, что точность определения открытости портов сильно уменьшилась, связано это с тем, что при политике `DROP` устройство не посылает сообщение о том, что пакет был отброшен, в результате чего сканер не может вынести однозначный вердикт о доступности порта.

## Выводы

Мы рассмотрели работу утилиты `nmap` в случае, когда на целевом хосте применяются правила `iptables` для ограничения доступа к хосту. Можно заметить, что `iptables` это очень легковесный инструмент, который позволяет неплохо защитить устройство от незаметного сканирования, в следствие чего его стоит использовать, если нет возможности защищать устройство с помощью межсетевых экранов и/или IPS.

**Выполнил:** Харитонов Марат Русланович, студенческий билет М235314.