🖧 Защита от сканеров портов на Linux |

🖧 Защита от сканеров портов на Linux

Мануал

1. Обзор

В этом учебном пособии мы рассмотрим, как можно настроить наши Linux-системы, чтобы предотвратить определение сканерами портов типов служб и портов в нашей системе.

Существуют различные способы защиты наших компьютеров от сканирования портов Nmap.

Мы рассмотрим iptables и системы обнаружения вторжений (IDS).

2. Использование iptables

В этом разделе мы создадим правила iptables для контроля трафика.

В основном мы будем фильтровать трафик, поступающий в нашу систему, на основе портов и IP-адресов источников.

Рекомендуется блокировать/закрывать все неиспользуемые порты.

Это убережет нас от возможных атак на эти порты.

🖧 Как просканировать цель с помощью Nmap?

2.1. Создание правил по умолчанию

Теперь рассмотрим некоторые необходимые правила по умолчанию.

Во-первых, нам нужно разрешить все ESTABLISHED-соединения и текущие сессии через iptables.

Для этого добавим две строки, разрешающие входящий и исходящий трафик на интерфейсе loopback:

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

Далее предоставим разрешение ESTABLISHED и RELATED на входящий трафик на хосте:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Затем разрешим ESTABLISHED исходящим соединениям.

В основном это ответы на уже установленные соединения:

  sudo iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

Далее разрешим связи между внутренними и внешними соединениями:

  sudo iptables -A FORWARD -i enp0s2 -o enp0s3 -j ACCEPT

Наконец, дропнем весь остальной недействительный трафик:

sudo iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

2.2. Пример правил для защиты от Nmap-сканирования

В этом разделе мы создадим правила для фильтрации и отсева идентифицированных Nmap-сканов.

🖧 Bash скрипт для сканирования диапазона портов

Для начала добавим несколько базовых правил:

sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP

Эти правила, как правило, отбрасывают любой входящий трафик, содержащий любой из указанных флагов.

Мы можем настроить нашу систему на разрешение такого трафика из определенных или доверенных источников.

Кроме того, можно настроить пропуск такого трафика на определенных интерфейсах или портах.

В дальнейшем нам необходимо добавить еще несколько правил для усиления защиты нашей системы.

Добавим эти правила на выход

sudo iptables -A INPUT -p tcp -i enp0s3 -m state --state NEW -m recent --set
sudo iptables -A INPUT -p tcp -i enp0s3 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP
sudo iptables -A FORWARD -p tcp -i enp0s3 -m state --state NEW -m recent --set
sudo iptables -A FORWARD -p tcp -i enp0s3 -m state --state NEW -m recent --update --seconds 30 --hitcount 10 -j DROP

Теперь мы можем увидеть результаты при выполнении команды nmap:

sudo nmap -Pn 192.168.139.131
Nmap scan report for 192.168.139.131
Not shown: 983 filtered tcp ports (no-response)
PORT STATE SERVICE
23/tcp closed telnet
111/tcp closed rpcbind
139/tcp closed netbios-ssn
993/tcp closed imaps
995/tcp closed pop3s
1434/tcp closed ms-sql-m
3306/tcp closed mysql
5900/tcp closed vnc

Еще одно сканирование даст:

  $ sudo nmap -sS 192.168.139.131
Nmap scan report for 192.168.139.131
Not shown: 991 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
23/tcp closed telnet
25/tcp closed smtp
53/tcp closed domain
80/tcp closed http

Из этого примера видно, что в состоянии фильтрации находится 991 TCP-порт.

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

После выполнения сканирования мы можем добавить специальные правила для портов, которые были определены как открытые:

  $ sudo iptables -A INPUT -p tcp -s 192.168.0.147 --destination-port 22 -i enp0s3 -j ACCEPT

Кроме того, мы можем явно блокировать трафик с целевого IP-адреса с помощью правил iptable, например:

  $ sudo iptables -A INPUT -i enp0s3 -s 192.168.0.147 -j DROP

Далее сохраним написанные нами правила iptable:

  $ sudo iptables-save > ./ip.rules

Наконец, мы можем восстановить эти настройки при загрузке при запуске:

  $ sudo iptables-restore < ./ip.rules

3. Использование системы обнаружения вторжений

В этом разделе мы рассмотрим, как можно использовать IDS для защиты от сканирования Nmap.

Системы обнаружения вторжений – это технология сетевой безопасности, созданная для обнаружения возможных атак на целевое приложение.

IDS отслеживает и регистрирует трафик.

Мы можем настроить ее на выполнение определенных действий при обнаружении определенного трафика.

Некоторые IDS могут также работать как системы предотвращения вторжений (IPS).

Существуют различные сетевые IDS.

Например, наиболее часто используемыми являются Snort и Surricata.

Рассмотрим Snort более подробно:

 

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий