Найти тему
Сисадмин Михалыч

"Железный занавес" или защита от кибератак на примере MikroTik и iptables

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

Важно: предполагается что настройка производится "с нуля", поэтому выполняя данный перечень рекомендаций нужно учитывать уже имеющуюся конфигурацию, и разумеется сделать бэкап)

№0 Преднастройка

Для правильного функционирования сетевого экрана, вне зависимости от его конфигурации необходимо разрешить все соединения в состоянии ESTABLISHED, RELATED. Это поможет избежать проблем при выполнении данного перечня рекомендаций, а так же позволит снизить нагрузку на оборудование.

Для MikroTik необходимо создать два правила:

/ip firewall filter
add action=accept chain=input connection-state=established,related
add action=accept chain=forward connection-state=established,related

Для iptables в таблицу filter добавить два правила:

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Важно! Данные правила должны быть всегда в самом верху, то есть обрабатываться самыми первыми.

№1 Заблокировать входящий трафик от потенциально опасных хостов и сетей

Если у вас уже есть список потенциально опасных хостов или сетей, необходимо произвести блокировку входящего трафика с данных адресов в цепочках INPUT и FORWARD

Для MikroTik:

Если имеется текстовый файл со списком адресов, то можно с помощью поточного текстового редактора sed сделать из него скрипт создания address list:

cat blacklist.txt | sed 's/^/\/ip firewall address-list add address=/g ; s/$/\ list=blacklist/g' > blacklist.rsc

Далее необходимо загрузить файл blacklist.rsc в память маршрутизатора, в winbox выбрать File - Upload

Затем выполнить импорт адресного листа:

import file=blacklist.rsc

Теперь можно создать блокирующие правила:

/ip firewall filter
add action=drop chain=input src-address-list=blacklist
add action=drop chain=forward src-address-list=blacklist

Данные правила следует поместить после правил в пункте №0

Для iptables:

Файл со списком адресов находится в /var/blacklist.txt

Необходимо создать bash-скрипт который поочередно поместит правила в цепочки INPUT и FORWARD:

#!/bin/bash
blacklist=/var/blacklist.txt
IPT=/sbin/iptables
while IFS= read -r ip
do
$IPT -A INPUT -s $ip -j DROP
$IPT -A FORWARD -s $ip -j DROP
done < "$blacklist"

№2 Разрешить входящий трафик только от провайдеров РФ

Примечание: Только если не требуется доступ к ресурсам организации с территории иностранных государств

Скачать список в формате для MikroTik или Linux iptables accept соответственно, выбрав страну Russian Federation:

https://www.ip2location.com/free/visitor-blocker

Для MikroTik:

Открыть файл текстовым редактором

Первой строкой прописать

/ip firewall address-list

Выполнить поиск с заменой по всему файлу строки comment="Russian Federation" на пустое значение (иначе коментов будет столько же сколько строк)

Сохранить файл изменив расширение на rsc

Загрузить на устройство: File - Upload

Затем произвести импорт настроек командой в терминале:

import file=firewall.rsc

Добавить в данный Access list серые сети (иначе заблокируется внутренняя межсетевая маршрутизация):

/ip firewall address-list
add address=10.0.0.0/8 list=IP2Location
add address=172.16.0.0/12 list=IP2Location
add address=192.168.0.0/16 list=IP2Location

Примечание: Данный адресный лист рекомендуется обновлять хотя бы раз в месяц

Для этого необходимо удалить весь лист IP2Location, и затем выполнить его импорт заново

Создать два правила:

/ip firewall filter
add action=drop chain=input src-address-list=!IP2Location
add action=drop chain=forward src-address-list=!IP2Location

Данные правила следует поместить после правил в пункте №1

Для iptables:

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

mv firewall.txt addinput.sh
cat addinput.sh | sed 's/INPUT/FORWARD/' > addforward.sh
chmod +x addinput.sh addforward.sh
./addinput.sh
./addforward.sh

№3 Настройка сетевого экрана по принципу: запрещено всё что не разрешено.

Для каждой организации должен быть индивидуальный подход относительно конфигурации сети. Поэтому главное понять сам принцип.

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

Для MikroTik:

/ip firewall filter
add action=drop chain=input
add action=drop chain=forward

Для iptables:

-A INPUT -j REJECT
-A FORWARD -j REJECT

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

Приветствуются любые замечания и дополнения.