• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Статья Фильтрация трафика (IPT, NAT, DMZ)

Доброго времени суток, уважаемые форумчане! Сегодня мы узнаем что-же такое NAT, DMZ, и как происходит фильтрация пакетов и что-то ещё.

4.png


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


Трансляция сетевого адреса (NAT)

Давайте рассмотрим что такое NAT (Network Address Translation), дабы позже избежать непонимания. Чтобы узлы локальной сети могли общаться с узлами глобальной сети (интернет), используется специальная технология трансляции сетевого адреса - NAT. Маршрутизатор получает от локального узла пакет, адресованный интернет-узлу, и преобразует IP-адрес отправителя, заменяя его своим IP-адресом. При получении ответа от интернет-узла маршрутизатора выполняет обратное преобразование, поэтому нашему локальному узлу кажется, что он отправил пакет в его первоначальной форме (без преобразования).


Аппаратный NAT

Простейшим аппаратным NAT’ом являются роутеры. Небольшие предприятия, как правило, используют именно аппаратное решение, так как этот способ является самым простым и удобным. На сегодняшний день можно найти относительно дешевые Wi-Fi маршрутизаторы с несколькими LAN-портами.

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

Помимо всего прочего, они весьма просты в настройке:
1) подключаем кабель провайдера в WAN-порт;
2) выбираем тип соединения;
3) указываем имя пользователя и пароль (в случае PPPoE соединения);
4) задаём пароль и SSID точке доступа (для обеспечения безопасности).



Организация работы NAT средствами Linux

Настроить NAT можно как в Windows, так и в Linux. Но так как чаще всего используют именно Linux, его то мы и рассмотрим.

Для начала нам нужно включить IPv4 переадресацию:
Bash:
echo 1 > /proc/sys/net/ipv4/ip_forward

Эту команду нужно вводить при каждом запуске системы или добавить в автозагрузку.

Затем нужно произвести некоторую настройку брандмауэра:
Bash:
iptables --table nat –append POSTROUTING --out-interface <интерфейс к провайдеру> -j MASQUERADE

Нужно ли фильтровать трафик?

Определённо нужно, ведь важно не только предоставить доступ к интернету из локальной сети, но ещё и защитить пользователей от злоумышленников. Каждое устройство в локальной сети должно быть защищено сетевым экраном. При обработке важных данных, например, относящихся к государственной тайне, важно защитить не только входной и выходной узел, но и систему каждого отдельного ПК.


Демилитаризованная зона (DMZ)

Если вы когда-нибудь настраивали сетевой экран, то наверняка вы сталкивались с таким понятием как “демилитаризованная зона” (Demilitarized Zone). В DMZ обычно помещают компьютеры, ресурсы которых могут быть опубликованы в интернете. Остальные ПК должны находиться за пределами DMZ.

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

Сегодня DMZ не особо используется, поскольку считается, что защищать межсетевыми экранами нужно не отдельные сегменты ЛВС, а абсолютно все серверы и ПК.


Кто такой этот ваш брандмауэр?

Если кратко, то межсетевой экран (брандмауэр) - это комплекс технических и программных мер по безопасному подключению одной сети к другой.

Программный Firewall (это кстати ещё одно название брандмауэра) - это программа, которая позволяет фильтровать пакеты. В брандмауэр вбивается некоторый набор правил. Файрвол в свою очередь анализирует каждый проходящий пакет на основании набора правил и решает, что с этим пакетом делать: разрешить, запретить или перенаправить.

Многое зависит от того, где запущен межсетевой экран: на Wi-Fi роутере или на сервере удалённого доступа. На большей части маршрутизаторов используется iptables, так как в основном они работают на базе Linux. На ПК с ОС Windows может использоваться интегрированный брандмауэр Windows.


Выбор межсетевого экрана

Межсетевые экраны бывают как аппаратными, так и программными. Разница между ними условна, ведь аппаратные брандмауэры по сути являются компьютером с ограниченной функциональностью, на котором запущена та самая фильтрующая программа. Как правило, такие решения работают на базе операционной системы Linux, или на собственной ОС (Например, IOS у Cisco).

Программное решение - это установка программного брандмауэра на ПК. Какое ПО будет заниматься фильтрацией зависит от ОС. В случае Linux - это iptables, а для Windows существует интегрированный Windows брандмауэр, и ещё куча ПО.

Самым дешёвым аппаратным решением является маршрутизатор, в состав ПО которого уже входит сетевой экран. Даже самые дешёвые модели поддерживают статическую фильтрацию пакетов, обеспечивают наличие DMZ-портов, возможность VPN-подключения, NAT-трансляцию с сервером DHCP. Однако если вы обрабатываете конфиденциальную информацию, то было-бы неплохо обзавестись сертифицированным брандмауэром.

Если вы выбираете межсетевой экран для предприятия, то важно понять, какая степень защищенности вам нужна. Она нарастает по нисходящим уровням. Иначе говоря, чем меньше уровень, тем лучше. Узнать класс защищенности можно посетив сайт ФСТЭК (ссылка будет в конце статьи).


Системы обнаружения вторжений

Межсетевой экран сам по себе является простым решением - если входящий пакет соответствует правилам, то его пропускают. Но вредоносные программы могут “маскироваться” и отправлять пакеты, которые с точки зрения файрвола являются приемлемыми. Для их обнаружения используют “системы обнаружения вторжений” (IDS - Intrusion Detection Systems).

Существуют и системы предотвращающие такие вторжения “Intrusion Prevention Systems (IPS)” - выполняющие активную функцию. Они не только находят, но и блокируют подозрительный поток трафика. IPS могут обнаружить активные эксплоиты, подготовку к DDoS-атаке, и другие подозрительные активности.

Учитывая что база данных сигнатур постоянно растёт, важно понимать что производительность снижается. Даже Cisco предупреждает, что при включении “Cisco Intrusion Detection Systems” падает производительность.


Настройка параметров межсетевого экрана Windows

Порой бывает так, что по некоторым причинам настроек файрвола по умолчанию не хватает.
Параметры настройки групповой политики можно найти здесь: Конфигурация компьютера/Административные шаблоны/Сеть/Сетевые подключения/ Брандмауэр защитника Windows.
Там вы найдёте настройки для доменного и стандартного профиля.


Межсетевой экран Linux

Обычно при использовании Linux не используют сторонние продукты фильтрации, так как зачастую они основаны на iptables, который и так есть практически во всех дистрибутивах.

Запустить iptables можно следующей командой:
Bash:
service iptables start

А остановить можно командой:
Bash:
service iptables stop

Главная задача брандмауэра это принимать (ACCEPT) или откидывать пакеты (DROP). Поэтому при поступлении нового пакета фильтр анализирует его, и принимает решение. Конечно, брандмауэр может выполнять и более сложные действия, но чаще всего пользователи ограничиваются этими двумя.

При необходимости вы можете создать свои таблицы правил. В состав таких таблиц входят три цепочки:
  • FORWARD - для транзитных пакетов;
  • INPUT - для входящих пакетов;
  • OUTPUT - для исходящих пакетов.

Над пакетами можно выполнять различные действия:
  • MASQUERADE - скрывает ip пакета;
  • <имя цепочки> - пересылает пакет в другую цепочку;
  • DROP - пакет отбрасывается;
  • ACCEPT - пакет принимается.

Имеется ещё множество других действий, но они, как правило, практически не используются.

Для добавления нового правила в цепочку используется следующая команда:
Bash:
sudo iptables -A <цепочка> <правило>

Также обычно используют различные параметры при создании правил. Например, следующие несколько команд позволяют защититься от SYN “наводнения”:
Bash:
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

Вот статья и подошла к концу, а значит самое время показать вам обещанный в начале “универсальный” конфиг для iptables:
Bash:
# /etc/init.d
# touch /etc/init.d/firewall_start
# chmod +x /etc/init.d/firewall_start

#путь к iptables
IPT="/sbin/iptables"

#непривилегированные порты
UPORTS="1024:65535"

#интерфейс подключённый к интернету
INET="eth0"



#включаем IPv4-forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

#удаляем все правила и цепочки
$IPT -F
$IPT -X

#действия по умолчанию
$IPT -P FORWARD ACCEPT
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP



#разрешаем все пакеты по интерфейсу lo
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

#отбрасываем все пакеты со статусом invalid
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

#запрещаем любые новые соединения с любых интерфейсом пк кроме lo
$IPT -A INPUT -m state ! -i lo --state NEW -j DROP
$IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP

#принимаем все пакеты из установленного соединения (established)
$IPT -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT

#защита от SYN ддоса
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP

#защита от UDP ддоса
$IPT -A INPUT -p UDP -s 0/0 --dport 137 -j DROP
$IPT -A INPUT -p UDP -s 0/0 --dport 113 -j REJECT
$IPT -A INPUT -p UDP -s 0/0 --sport 67 --dport 68 -j ACCEPT
$IPT -A INPUT -p UDP -j RETURN
$IPT -A OUTPUT -p UDP -s 0/0 -j ACCEPT

#защита от icmp перенаправления
$IPT -A INPUT --fragment -p ICMP -j DROP
$IPT -A OUTPUT --fragment -p ICMP -j DROP

#разрешаем обычные icmp сообщения
$IPT -A INPUT -p icmp -m icmp -i $INET --icmp-type source-quench -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET --icmp-type source-quench -j ACCEPT

#разрешаем себе пинговать
$IPT -A INPUT -p icmp -m icmp -i $INET --icmp-type echo-reply -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET --icmp-type echo-request -j ACCEPT

#разрешаем передачу ICMP-сообщения неверного параметра
$IPT -A INPUT -p icmp -m icmp -i $INET --icmp-type parameter-problem -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $INET --icmp-type parameter-problem -j ACCEPT

#разрешаем днс
$IPT -A OUTPUT -p udp -m udp -o $INET --dport 53 --sport $UPORTS -j ACCEPT
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 53 --sport $UPORTS -j ACCPET
$IPT -A INPUT -p udp -m udp -i $INET --dport $UPORTS --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 53 -j ACCEPT

#разрешаем AUTH-запросы к удалённым серверам и запрещаем AUTH запросы к вам
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 113 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 113 -j ACCEPT ! --syn
$IPT -A INPUT -p tcp -m tcp -i $INET --dport 113 -j DROP


#Теперь откроем порты для нужных служб

#SSH(22)
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 22 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 22 -j ACCEPT ! --syn
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 22 --sport 1020:1023 -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport 1020:1023 --sport 22 -j ACCEPT !--syn

#FTP(21)
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 21 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 21 -j ACCEPT ! --syn

#SMTP(25)
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 25 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 25 -j ACCEPT ! --syn

#POP (110)
$IPT -A OUTPUT -p tcp -m tcp -o $INET --dport 110 --sport $UPORTS -j ACCEPT
$IPT -A INPUT -p tcp -m tcp -i $INET --dport $UPORTS --sport 110 -j ACCEPT ! --syn

#Если айпи динамический, то следует разрешить DHCP-запросы
$IPT -A OUTPUT -p udp -m udp -o $INET --dport 67 --sport 68 -j ACCEPT
$IPT -A INPUT -p udp -m udp -i $INET --dport 68 --sport 67 -j ACCEPT

#раскоментить, если не работает
#$IPT -t nat -I PREROUTING -i $INET -s 10.0.0.1/32 -j ACCEPT


Полезные материалы




Основы шифрования данных 1/2.


Спасибо за внимание!
 

qwe123xcv

Заблокирован
16.11.2019
57
23
BIT
0
Очень привлекательная статья )
Привлекательная ровно настолько, насколько может быть привлекательной девушка, которая глазками поморгала, хвостиком покрутила, но осталась недоступной. Только душу растравила :)

1. Для организации NAT недостаточно всего лишь одного правила iptables, которое затрагивает внешний сетевой интерфейс. Нужно ещё создать vlan-ы и виртуальным сетевым интерфейсам прописать адреса. Ведь эти многочисленные внутренние адреса и должны транслироваться в один внешний интерфейс. В этом заключается суть технологии NAT.

2. Обзору аппаратных фаерволлов можно посвятить ещё несколько статей. Что можешь сказать о Cisco серии asa ? Или о "красном ящике" (в этом месте извиняюсь за жаргон - боюсь написать по памяти англицкое название этой красной коробки. Но если ты в курсе, то понимаешь о какой модели я пишу.) ?

3. Универсальный скрипт вызывает недоумение по нескольким причинам. Под управлением какой операционной системы работает Ваш маршрутизатор или фаерволл ? Это НЕ OpenWRET. Это не что-то сисько-подобное.Это что-то дебианоподобное. В десятой и одиннадцатой версиях Дебиан Ваше правило на загрузится из файла /etc/init.d/firewall_start. В дебиан возможны три способа автозагрузки правил Iptables. Предложенный вами способ - не работает.

4. Содержание универсального скрипта теоретически должно порождать много споров.
 
  • Нравится
Реакции: debolg и Shadow User

kamanchi

New member
24.07.2022
1
0
BIT
0
1. Для организации NAT недостаточно всего лишь одного правила iptables, которое затрагивает внешний сетевой интерфейс. Нужно ещё создать vlan-ы и виртуальным сетевым интерфейсам прописать адреса. Ведь эти многочисленные внутренние адреса и должны транслироваться в один внешний интерфейс. В этом заключается суть технологии NAT.
хоспаде, что за ересь? суть технологии НАТ исключительно в трансляции адресов, и вланы тут никаким боком не стоят. даже рядом. это абсолютно разные вещи. не путайте народ
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!