itmo_conspects

Лекция 11. Безопасность сети

Сетевая безопасность является комплексным процессом, реализующимся на нескольких уровнях сетевого стека

На этой лекции будут рассмотрены технические решения, однако безопасность также представляет из себя работу с нормативными актами и организационную безопасность

Физический уровень

На физическом уровне в первую очередь реализуется ограничение доступа к оборудованию. Большинство операционных систем предоставляют базовые механизмы аутентификации пользователей, однако их реализация часто имеет уязвимости (например, Windows хранит хеши паролей без соли)

В конечном итоге, как с угоном машины, для профессионального специалиста это всего лишь замедляет проникновение злоумышленника

Также применяют ЭМ-защиту для защиты Wi-Fi сигнала и физическое отключение неактивных портов оборудования в структурированной кабельной системе

Физические протоколы не предполагают шифрования (помимо Wi-Fi, но Wi-Fi не ограничен кабелем), поэтому передаваемые по медным или оптическим кабелям данные на этом уровне изначально уязвимы к перехвату

Канальный уровень

На канальном уровне можно:

Сетевой уровень

На сетевом уровне применяются:

Файрволл (или Брандмауэр, сетевой экран, сетевой фильтр) получил название от кирпичной стены, защищавшей деревянное здание от огня другого горящего здания

С помощью файрволла осуществляется ограничение подключений, фильтрация транзитного трафика и активная защита

Файрволл представляет из себя

Правила могут храниться как

Также помимо файрволла применяют механизм демилитаризованной зоны (DMZ, Demilitarized Zone) - изолированного сетевого сегмента, расположенного между внутренней доверенной сетью (например, корпоративной локальной сетью) и внешней ненадежной сетью (например, Интернетом). Демилитаризованная зона не дает злоумышленнику, скомпрометировавшему такой сервер, сразу же попасть во внутреннюю сеть с конфиденциальными данными

Пакет в файрволле проверяется по значения в полях заголовков протоколов IP, TCP, UPD и других, а потом к нему применяются действия, такие как:

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

Самая распространенная утилита iptables работает так: есть 5 таблиц

Каждая таблица имеет свой ряд цепочек, которые применяются в ходе обработки пакетов

iptables

Фильтры для iptables настраиваются так:

# для таблицы filter и цепочки INPUT
# TCP-сегменты от отправителя 8.8.8.8:53 получателю 192.168.1.1
# ПРИНИМАТЬ
iptables -t filter -A INPUT -p tcp -s 8.8.8.8 --sport 53 -d 192.168.1.1 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты от отправителя 10.0.0.1/32:8080
# ПРИНИМАТЬ
iptables -t filter -A INPUT -p tcp -s 10.0.0.1/32 --dport 8080 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты на порты 18070 и 18081
# ПРИНИМАТЬ
iptables -t filter -A INPUT -p tcp --dport 18070:18081 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты на порт 8080
# ПРИНИМАТЬ
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

# для таблицы filter и цепочки OUTPUT
# TCP-сегменты на порт 8080
# ПРИНИМАТЬ
iptables -A OUTPUT -p tcp --dport 8080 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты, пришедшие на интерфейс eth1 на порт 3306,
# СБРАСЫВАТЬ
iptables -A INPUT -i eth1 -p tcp --dport 3306 -j DROP

# для таблицы filter и цепочки INPUT
# TCP-сегменты, пришедшие на интерфейс eth1 на порт 22
# и не с адреса 10.0.0.4,
# СБРАСЫВАТЬ
iptables -A INPUT -i eth1 -p tcp -s !10.0.0.4 --dport 22 -j DROP

Также iptables может проверять флаги протокола TCP, например, чтобы инициатором соединения был только один из хостов:

# для таблицы filter и цепочки INPUT
# TCP-сегменты, в которых из флагов FIN, SYN, RST и ACK 
# есть только флаг SYN, на порт 80
# ПРИНИМАТЬ
iptables -A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN --dport 80 -j ACCEPT

# для таблицы filter и цепочки INPUT
# TCP-сегменты, в которых из флагов SYN и ACK 
# есть только флаг ACK, на порт 80
# ПРИНИМАТЬ
iptables -A INPUT -p tcp --tcp-flags SYN,ACK ACK --dport 80 -j ACCEPT

Вместо списка можно указать все флаги, ALL, или ни одного, NONE. Также для TCP-сегментов есть специальные состояния: состояние NEW - это только флаг SYN, состояние ESTABLISHED - флаги SYN+ACK, ACK или FIN+ACK и другие

iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i venet0 -p udp-m state --state NEW,ESTABLISHED --dport 10206 -j ACCEPT
iptables -A OUTPUT -o venet0 -p udp-m state --state ESTABLISHED --sport 10206 -j ACCEPT

iptables позволяет пометить пакеты (например, по флагам), что упрощает дальнейшую фильтрацию:

Помимо этого iptables позволяет делать трансляцию адресов. Для этого в операционной системе Linux, нужно включить пересылку IPv4-пакетов:

sysctl -w net.ipv4.ip_forward=1

Далее применяются правила


Сохранять правила можно так:

iptables-save > /etc/iptables/rules.v4
ip6tables-save > /etc/iptables/rules.v6

Как можно заметить, правила для IPv4 и для IPv6 разные, за что iptables критикуют. Далее правила можно применить из файла:

iptables-restore < /etc/iptables/rules.v4

Пакет iptables-persistent позволяет автоматически загружать при включении системы правила из файлов /etc/iptables/rules.v4 и /etc/iptables/rules.v6

Другие механизмы

Другая утилита, fail2ban, считывает логи подключений, обнаруживает подозрительные случаи и блокирует доступ для этих IP-адресов

Помимо защиты основного сервера можно поставить приманку (Honeypot, горшок с медом) - сервер, который выдает себя за реальный, и, из-за чрезмерного доступа к которому, злоумышленник обнаруживается

Такие механизмы называются системами обнаружения вторжений (IDS, Intrusion Detection System). Более продвинутые системы, системы предотвращения вторжений (IPS, Intrusion Prevention System), способны автоматически защищаться от вторжений и нарушения безопасности

Широкое распространения имеют DoS-атаки (Denial-of-service, отказ в обслуживание), в которых целью является довести сетевой узел до отказа, то есть ситуации, в которых добросовестные пользователи не смогут получить к ней доступ

DoS-атаки от одного узла легко распознать, а с нескольких сотен намного тяжелее - такие имеют имя распределенных DoS-атак (или DDoS, Distributed DoS)

DoS-атаки могут проводиться на разные уровни сетевого стека: