Архив метки: Mikrotik

Резервное копирование Mikrotik через Oxidized

Итак сегодня речь пойдет об инструменте в задачу которого входит выполнение централизованного резервного копирования конфигурационных файлов (те которые выполняются с расширением rsc) оборудования Mikrotik. Плюс инструмент умеет отображать разницу в изменениях, а делает он это через складирование изменений посредством системы контроля версий GIT. Я если честно давно искал такой инструмент и вот я воплотил свою задумку разобрав от и до все шаги по разворачиванию сервиса oxidized в систему Ubuntu 18.04 Server amd64. Узнал я о нем это просматривая опубликованные презентации посвященные Mikrotik, к примеру если через поисковую систему Google ввести «Автоматизируем бэкап — MUM — MikroTik»




Предварительные действия: На всех Mikrotik(ах) для которых Вы хотите осуществлять резервное копирование нужно сделать учетную записи с минимальными правами, к примеру только на чтение:




ekzorchik@srv-bionic:~$ ssh -l admin 172.33.33.22
 
[admin@MikroTik] > user add name=test password=Aa1234567 group=read
 
[admin@MikroTik] > quit




Connection to 172.33.33.22 closed.




ekzorchik@srv-bionic:~$




Шаг №1: Настраиваю систему





ekzorchik@srv-bionic:~$ hg clone --insecure https://ekzorchik@172.35.35.8/hg/dproject
 
ekzorchik@srv-bionic:~$ sudo ./dproject/default




Полученная текущая система с учетом моего скрипта настройки который я применяю в своей локальной сети:




ekzorchik@srv-bionic:~$ uname -a && lsb_release -a




Linux srv-bionic 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux




No LSB modules are available.




Distributor ID: Ubuntu




Description: Ubuntu 18.04.2 LTS




Release: 18.04




Codename: bionic




ekzorchik@srv-bionic:~




Шаг №2: Устанавливаю пакет Oxidized в систему Ubuntu 18.04 Server amd64:




ekzorchik@srv-bionic:~$ sudo apt-get install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev -y
 
ekzorchik@srv-bionic:~$ gem install oxidized oxidized-script oxidized-web




Fetching: asetus-0.3.0.gem (100%)




ERROR: While executing gem ... (Gem::FilePermissionError)




You don't have write permissions for the /var/lib/gems/2.5.0 directory.




ekzorchik@srv-bionic:~$ sudo gem install oxidized oxidized-script oxidized-web




Done installing documentation for charlock_holmes, rack, tilt, rack-protection, sinatra, emk-sinatra-url-for, temple, haml, htmlentities, puma, rb-fsevent, ffi, rb-inotify, sass-listen, sass, backports, rack-test, multi_json, sinatra-contrib, oxidized-web after 675 seconds




22 gems installed




ekzorchik@srv-bionic:~$




Шаг №3: Cоздаю пользователя oxidized, с правами которого будет запускаться система бэкапа:




ekzorchik@srv-bionic:~$ sudo useradd -m -p 712mbddr@ -s /bin/bash oxidized




На время даю права повышения привилегий, в конце заметки заберу.




ekzorchik@srv-bionic:~$ sudo usermod -aG sudo oxidized




Шаг №4: Создаю структуру запуска приложения oxidized




ekzorchik@srv-bionic:~$ sudo su - oxidized




oxidized@srv-bionic:~$ oxidized -v




0.26.1




oxidized@srv-bionic:~$




oxidized@srv-bionic:~$ whereis oxidized




oxidized: /usr/local/bin/oxidized




oxidized@srv-bionic:~$ oxidized




edit ~/.config/oxidized/config




oxidized@srv-bionic:~$ mkdir ~/.config/oxidized/crashes




oxidized@srv-bionic:~$ mkdir ~/.config/oxidized/mikrotik/




oxidized@srv-bionic:~$ sudo find / -name oxidized




/home/oxidized




/home/oxidized/.config/oxidized




/run/sudo/ts/oxidized




/usr/local/bin/oxidized




/var/lib/gems/2.5.0/gems/oxidized-web-0.13.1/lib/oxidized




/var/lib/gems/2.5.0/gems/oxidized-0.26.1/lib/oxidized




/var/lib/gems/2.5.0/gems/oxidized-0.26.1/bin/oxidized




/var/lib/gems/2.5.0/gems/oxidized-script-0.6.0/lib/oxidized




/var/lib/gems/2.5.0/doc/oxidized-web-0.13.1/ri/lib/oxidized




oxidized@srv-bionic:~$




Шаг №5: Преднастраиваем GIT для устройств Mikrotik бекапы которых будут хранится в репозитарии:




oxidized@srv-bionic:~$ sudo apt-get install git -y




oxidized@srv-bionic:~$ git config --global user.email "oxidized@ekzorchik.ru"




oxidized@srv-bionic:~$ git config --global user.name "oxidized"




oxidized@srv-bionic:~/.config/oxidized$ git init oxidized.git




Initialized empty Git repository in /home/oxidized/.config/oxidized/oxidized.git/.git/




oxidized@srv-bionic:~/.config/oxidized$ git init devices.git




Initialized empty Git repository in /home/oxidized/.config/oxidized/devices.git/.git/




Шаг №6: Настраиваем конфигурационный файл




oxidized@srv-bionic:~$ nano ~/.config/oxidized/config




---
 
model: routeros
resolve_dns: true
 
#Как часто делать бекапы

interval: 3600
use_syslog: false
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([w.@-]+[#>]s?)$/
rest: 0.0.0.0:8888
next_adds_job: false
vars: {}
groups: {}
models: {}
pid: "/home/oxidized/.config/oxidized/pid"
log: "/home/oxidized/.config/oxidized/log"
crash:
directory: "/home/oxidized/.config/oxidized/crashes"
hostnames: false
stats:
history_size: 10
input:

#Тип подключения к устройству

default: ssh
 
#Расширенное логирование отключено
 
debug: false
ssh:
secure: false
map:
verify_host_key: never
utf8_encoded: true
 
#где хранится конфигурации GIT
 
output:
default: git
git:
user: oxidized
email: oxidized@ekzorchik.ru
repo: "/home/oxidized/.config/oxidized/oxidized.git"
git:
user: oxidized
email: oxidized@ekzorchik.ru
repo: "/home/oxidized/.config/oxidized/devices/devices.git"

#Откуда берется информация об устройства которые бекапятся
 
source:
default: csv
csv:
file: "/home/oxidized/.config/oxidized/mikrotik/router.db"
delimiter: !ruby/regexp /:/
 
#Структура строки в router.db: name:model:ip:port:username:password
 
map:
name: 0
model: 1
ip: 2
port: 3
username: 4
password: 5
model_map:
cisco: ios
juniper: junos
mikrotik: routeros




На заметку: Если не настроена авторизация на Mikrotik через публичный ключ, т. е. Вход на Mikrotik с одним лишь указанием логина, то в конфигурационный файл oxidized следует добавить параметр: verify_host_key: never




Шаг №7: Копируем публичный ssh—ключ на Mikrotik:




oxidized@srv-bionic:~$ ssh-keygen




Your identification has been saved in /home/oxidized/.ssh/id_rsa.




Your public key has been saved in /home/oxidized/.ssh/id_rsa.pub.




oxidized@srv-bionic:~$ cp ~/.ssh/id_rsa.pub idrsa
 
oxidized@srv-bionic:~$ ftp 172.33.33.22




Connected to 172.33.33.22.




220 MikroTik FTP server (MikroTik 6.42.5) ready




Name (172.33.33.22:ekzorchik): admin




ftp> put idrsa




ftp> quit




oxidized@srv-bionic:~$
 
oxidized@srv-bionic:~$ ssh admin@172.33.33.22
 
[admin@MikroTik] > user ssh-keys import public-key-file=idrsa user=test
 
[admin@MikroTik] > quit




Connection to 172.33.33.22 closed.




oxidized@srv-bionic:~$




oxidized@srv-bionic:~$ ssh test@172.33.33.22 — подключение проходит без каких либо запросов на ввод пароля.




Шаг №8: Теперь создаю файл подключения к оборудованию Mikrotik:





oxidized@srv-bionic:~$ nano ~/.config/oxidized/mikrotik/router.db
 
mikrotik:routeros:172.33.33.22:22:test:Aa1234567




Шаг №9: Проверяю запуск и соответственно на предмет каких-либо ошибок препятствующих запуску:




oxidized@srv-bionic:~$ oxidized ~/.config/oxidized/config




Puma starting in single mode...




* Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song




* Min threads: 0, max threads: 16




* Environment: development




* Listening on tcp://0.0.0.0:8888




Use Ctrl-C to stop







У каждой строчке есть колонка «Actions»







  • Первая иконка: Посмотреть текущий конфигурационный файл
  • Вторая иконка: Посмотреть историю изменений конфигурационного файла
  • Третья иконка: Это запуск процедуры снятия изменения в репозитарий




Шаг №10: См.логи если что-то пошло не так




ekzorchik@srv-bionic:~$ tail -f /home/oxidized/.config/oxidized/log




W, [2019-03-04T11:34:49.491810 #28328] WARN -- : /mikrotik status no_connection, retries exhausted, giving up




I, [2019-03-04T11:36:11.666786 #28380] INFO -- : Oxidized starting, running as pid 28380




I, [2019-03-04T11:36:11.669229 #28380] INFO -- : lib/oxidized/nodes.rb: Loading nodes




I, [2019-03-04T11:36:11.812262 #28380] INFO -- : lib/oxidized/nodes.rb: Loaded 1 nodes




I, [2019-03-04T11:36:14.351899 #28380] INFO -- : Configuration updated for /mikrotik




Шаг №11: Для того, чтобы oxidized стартовал как служба, сделайте следующее:




oxidized@srv-bionic:~$ sudo find / -name oxidized.service




/var/lib/gems/2.5.0/gems/oxidized-0.26.1/extra/oxidized.service




oxidized@srv-bionic:~$ sudo cp /var/lib/gems/2.5.0/gems/oxidized-0.26.1/extra/oxidized.service /lib/systemd/system/




oxidized@srv-bionic:~$ sudo nano /lib/systemd/system/oxidized.service




[Unit]
Description=Oxidized - Network Device Configuration Backup Tool
After=network-online.target multi-user.target
Wants=network-online.target
 
[Service]
ExecStart=/usr/local/bin/oxidized
User=oxidized
KillSignal=SIGKILL
Environment="OXIDIZED_HOME=/home/oxidized/.config/oxidized/"
 
[Install]
WantedBy=multi-user.target




oxidized@srv-bionic:~$ sudo systemctl enable oxidized.service




Created symlink /etc/systemd/system/multi-user.target.wants/oxidized.service → /lib/systemd/system/oxidized.service.




oxidized@srv-bionic:~$ sudo systemctl start oxidized




oxidized@srv-bionic:~$ sudo systemctl status oxidized | head -n5




● oxidized.service - Oxidized - Network Device Configuration Backup Tool




Loaded: loaded (/lib/systemd/system/oxidized.service; enabled; vendor preset: enabled)




Active: active (running) since Mon 2019-03-04 12:16:53 MSK; 9s ago




Main PID: 29039 (oxidized)




Tasks: 7 (limit: 2322)




Проверяю, что ожидаются соединения на порт 8888




oxidized@srv-bionic:~$ sudo netstat -tulpn | grep :8888




tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 29039/puma 3.11.4 (




oxidized@srv-bionic:~$




Шаг №12: По умолчанию у сервиса нет возможности указать авторизацию, а потому в конфиге config изменяю доступ на 172.0.0.1




oxidized@srv-bionic:~$ nano ~/.config/oxidized/config




#rest: 0.0.0.0:8888

rest: 127.0.0.1:8888




oxidized@srv-bionic:~$ sudo apt-get install nginx -y




oxidized@srv-bionic:~$ sudo rm /var/www/html/index.nginx-debian.html




oxidized@srv-bionic:~$ sudo unlink /etc/nginx/sites-available/default




oxidized@srv-bionic:~$ sudo unlink /etc/nginx/sites-enabled/default




Создаю файл связки логина и пароля для аутентификации через Web—интерфейс:




oxidized@srv-bionic:~$ sudo sh -c "echo -n 'ekzorchik:' >> /var/www/html/.htpasswd"




oxidized@srv-bionic:~$ openssl passwd -apr1




Password: 712mbddr@




Verifying - Password: 712mbddr@




$apr1$rwseclUD$ANBsXcpdvR.07mthC2PLO.




oxidized@srv-bionic:~$ sudo sh -c "openssl passwd -apr1 >> /var/www/html/.htpasswd"




Password: 712mbddr@




Verifying - Password: 712mbddr@




oxidized@srv-bionic:~$ cat /var/www/html/.htpasswd




ekzorchik:$apr1$V6ZTHWcF$bdDbxqPJAQAzfdXw7Z9n/0




oxidized@srv-bionic:~$ sudo chown -R www-data:www-data /var/www/html/.htpasswd




oxidized@srv-bionic:~$ sudo nano /etc/nginx/sites-available/oxidized




server { 
listen 172.33.33.4:80; 
server_name _; 
root /usr/share/nginx/html; 
include /etc/nginx/default.d/*.conf; 
location / { 
auth_basic "UserName and Password Please"; 
auth_basic_user_file /var/www/html/.htpasswd; 
proxy_pass http://127.0.0.1:8888/; 
} 
}




oxidized@srv-bionic:~$ sudo ln -s /etc/nginx/sites-available/oxidized /etc/nginx/sites-enabled/oxidized




oxidized@srv-bionic:~$ sudo nginx -t




nginx: the configuration file /etc/nginx/nginx.conf syntax is ok




nginx: configuration file /etc/nginx/nginx.conf test is successful




oxidized@srv-bionic:~$ sudo systemctl restart nginx && sudo systemctl status nginx | head -n5




● nginx.service - A high performance web server and a reverse proxy server




Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)




Active: active (running) since Mon 2019-03-04 12:19:27 MSK; 34ms ago




Docs: man:nginx(8)




Process: 29084 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)




oxidized@srv-bionic:~$




Auth Basic авторизация в Oxidizing через NGINX




Вход успешно выполнен в систему Oxidizing на Ubuntu 18.04 Server




Работает! Итого я для себя разобрал, как использовать инструмент oxidized на Ubuntu 18.04 Server amd64 для создания резервных копий с оборудования Mikrotik и просмотра внесенных изменений через Web-интерфейс с применением системы контроля версий на базе GIT. Жалко что нельзя использовать Mercurial — мне данная система контроля версий ближе, у меня все на ней построено: скрипты, конфигурационные файлы и т. д. А пока на этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.













Источник: https://www.ekzorchik.ru/2019/03/backing-up-mikrotik-via-oxidized/







Git проекта: https://github.com/ytti/oxidized



2021-04-01T22:40:19
Software

MikroTik – настройка двух каналов доступа в Интернет.

В описании представлена настройка двух Интернет-каналов в режиме резервирования. При пропадании связи с одним из каналов, трафик автоматически переходит на второй канал. Работа основана на мониторинге основного канала через пинг и разной метрике шлюзов.

Недостаток метода в том, что мониторинг выполняется от роутера MikroTik до следующего роутера (провайдера).  Если Интернет пропадет на участке ВОЛС (см. схему ниже), то наш MikroTik не обнаружит этого и не переключится на резервный канал.

Освоить MikroTik Вы можете с помощью онлайн-куса
«Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.

Схема подключения.

В схеме участвует роутер MikroTik RB750Gr3 с прошивкой 6.47.4.

В первый и второй порты подключены патч-корды внешних сетей. В пятый порт патч-корд от коммутатора локальной сети.

Подключаемся к MikroTik через WinBox из локальной сети. (как это сделать)

 

Reset Configuration.

Сбрасываем конфигурацию без сохранения настроек по умолчанию.

Через командную строку терминала:



Подключаемся к роутеру по MAC-адресу.

 

Ports.

Назначим следующие подключения на порты:

ether1 – подключение канала доступа в Интернет №1

ether2 – подключение канала доступа в Интернет №2

Переименуем порты внешней сети, чтоб не путаться в процессе настройки.

ether1-WAN1

ether2-WAN2

Через командную строку терминала:



 

Bridge.

Создаем мост. Он предназначается для внутренней локальной сети.

Через командную строку терминала:



 

Bridge ports.

Добавляем в мост порты ether3-ether5

Через командную строку терминала:



 

Bridge address.

Назначим мосту статический IP-адрес.

Через командную строку терминала:



 

DHCPclient.

Создадим получение IP-адресов от вышестоящих роутеров (провайдера) в автоматическом режиме.

Создаем аналогичными действиями два DHCP Client соединения с разницей в интерфейсе:

-для первого ether1-WAN1;

-для второго ether2-WAN2.

Add Default Route: no (отключаем создание дефолтного маршрута)

Через командную строку терминала:



Через некоторое время DHCP Clients получат IP-адреса. Это можно проверить в IP >> Addresses

D-dynamic (динамический адрес)

 

Routes.

Создадим два статических маршрута для каждого шлюза.

Для первого:

Dst.Address:0.0.0.0/0

Gateway: 192.168.1.1

Distance:1

AS – active, static (активный статический маршрут).

В маршрутах разные внешние шлюзы и метрика.

Для второго:

Dst.Address:0.0.0.0/0

Gateway: 192.168.0.1

Distance:2

Через командную строку терминала:



Маршрут с наименьшей метрикой будет использоваться в приоритете. Как только пропадает связь с основным шлюзом (с роутером провайдера), роутер переключается на следующий по величине метрики маршрут.

Для корректной работы нужно указывать дополнительную настройку для основного канала — check-gateway=ping.

Периодически (каждые 10 секунд) шлюз проверяется с помощью отправки ICMP запросов (ping) или запросов ARP. Если ответ от шлюза не получен в течение 10 секунд, время ожидания запроса истекает. По истечении двух таймаутов шлюз считается недоступным. В нашем случае произойдет переключение на второй шлюз.

После получения ответа от шлюза он считается достижимым, и счетчик тайм-аута сбрасывается.  wiki.mikrotik.com

DHCP-server.

Для удобства управления создадим DHCP-сервер на внутренней сети.

Создаем пул IP-адресов, которые будут раздаваться автоматически.

Через командную строку терминала:



Укажем сеть для DHCP-сервера.

Через командную строку терминала:



Создадим DHCP Server.

Через командную строку терминала:



Привяжем полученный IP-адрес к MAC-адресу ПК пользователя.

Через командную строку терминала:



 

Интернет не заработает без DNS и NAT. Настроим их.

DNS.

Динамические DNS прилетят автоматически, либо их можно прописать вручную.

Allow Remote Requests – отмечаем галочкой.

Через командную строку терминала:



 

NAT.

Создаем два правила NAT masquerade, подменяющие IP-адреса локальной сети на внешний IP, для двух внешних интерфейсов.

В первом правиле указываем Out.Interface: ether1-WAN1

При создании второго правила действия аналогичные, только указываем Out.Interface: ether2-WAN2

Через командную строку терминала:



Для полноценной работы необходимо выполнить настройки по безопасности, указать NTP сервер и некоторые другие настройки. см. базовая настройка роутера MikroTik.

 

Проверка.

Выполним проверку переключения каналов.

Отключим патч-корд канала №1 и убедимся, что трафик пойдет через канал №2.

Наблюдаем ситуацию в IP >> Routes

При штатной работе оба шлюза достижимы (reachable), активным (AS) является ether-WAN1 Интернет трафик идет через него. Можно запустить пинг на какой-нибудь внешний ресурс в командной строке ПК и смотреть как он будет выполнятся.

Отключаем патч-корд первого канала от роутера. Первый канал недостижим (unreachable) и трафик начинает идти через канал №2.

Возвращаем первый патч-корд на место и видим, что активным (AS) становится первый канал, трафик идет через него.

Для мониторинга резервирования каналов до какого-нибудь сервера в Интернете используется приложение Netwatch или рекурсивные маршруты. Об этом будет написано в другой раз.

Освоить MikroTik Вы можете с помощью онлайн-куса
«Настройка оборудования MikroTik». Курс содержит все темы, которые изучаются на официальном курсе MTCNA. Автор курса – официальный тренер MikroTik. Подходит и тем, кто уже давно работает с микротиками, и тем, кто еще их не держал в руках. В курс входит 162 видеоурока, 45 лабораторных работ, вопросы для самопроверки и конспект.



2021-03-26T15:43:34
Настройка ПО

Securing MikroTik Router with Port Knocking

MikroTik Router usually sits between untrusted public network and trusted local network. So, it is so important to apply security in MikroTik Router otherwise MikroTik Router can be compromised by the hackers. There are various firewall techniques in MikroTik RouterOS those can be applied to secure MikroTik Router. In my previous articles, I discussed how to harden MikroTik RouterOS with restricting login services and restricting MikroTik login users. In this article I will discuss how to secure MikroTik RouterOS with Port Knowing.




Port Knocking




Port knocking is a method that enables access to the router only after receiving a sequenced connection attempts on a set of prespecified closed ports. Once the correct sequence of the connection attempts is received, the RouterOS dynamically adds the knocking host source IP to the allowed address list and the allowed host will be able to connect to MikroTik Router.




In port knocking method, all incoming requests are kept blocked and only the correct sequence maintained host is allowed to MikroTik Router. Hackers usually cannot scan the router and cannot do brute forcing. So, MikroTik Router keeps safe by implementing port knocking method.




How to Implement Port Knocking in MikroTik Router




It is so easy to implement port knocking in MikroTik RouterOS. MikroTik Firewall is enough to implement port knocking in RouterOS. Applying the following four firewall rules, a simple port knocking system can be implemented in MikroTik RouterOS. It is also possible to make more complex port knocking system although.




Rule 1: Creating First Port Knocking Firewall Rule




In the first firewall rule, we will create a firewall filter rule that will add the knocking host IP address to an address list if any host knocked on TCP port 9000. You can use any TCP or UDP port. I am using TCP port 9000 for this article configuration. The following steps will show how to create first knocking firewall rule in MikroTik RouterOS.






  • Login to MikroTik Router with Winbox using full permission user credential.
  • Go to IP > Firewall menu item. Firewall window will appear.
  • Click on Filter Rules and then click on PLUS SIGN (+). New Filter Rule window will appear.
  • Click on General tab and choose input from Chain drop down menu. Click on Protocol drop down menu and choose 6(tcp) and then put 9000 in Dst. Port input box.
  • From Action drop down menu, choose add src to address list option and put address list name (example: port:9000) in Address List input box and then put 1m duration(00:01:00) in Timeout input box. So, it will wait one minute to get second legitimate port knocking.
  • Click Apply and OK button.




Creating First Port Knocking Sequence
Creating First Port Knocking Sequence




First port knocking firewall rule has been created. We will now create second firewall rule to determine legitimate host.




Rule 2: Creating Second Port Knocking Firewall Rule




After creating first port knocking firewall rule, we will now create second port knocking rule that will add the knocking host IP address to another address list if the knocked host IP address was listed in the previous address list and the knocking port is TCP port 8000 [You can use any TCP or UDP port here]. The following steps will show how to create firewall rule to get second port knocking.




  • Click on Filter Rules tab again and then click on PLUS SIGN (+). New Filter Rule window will appear.
  • Click on General tab and choose input from Chain drop down menu. Click on Protocol drop down and choose 6(tcp) and then put 8000 in Dst. Port input box.
  • From Advanced tab, choose the previous address list (port:9000, that we created in Rule 1) from Src. Address List drop down menu.
  • From Action drop down menu, choose add src to address list option and put address list name (example: secure) in Address List input box and then put 30m duration(00:30:00) in Timeout input box. So, the host can use MikroTik RouterOS for 30 minutes.
  • Click Apply and OK button.




Creating Second Port Knocking Sequence
Creating Second Port Knocking Sequence




Second port knocking rule has also been created. Now if any host send request on TCP port 9000 and then TCP port 8000, the host IP will be added in secure address list. We will now create third firewall rule that will allow access if the host IP keeps in secure address list.




Rule 3: Allowing Host That Knocked Maintaining Correct Sequence




We will now allow that host which will follow correct port knocking sequence. From the above two rules, we can see that if any host follow correct sequence, the host will be added to secure address list. Now we will allow the host which is in secure address list. The following steps will show how to allow host which is in secure address list.




  • Click on Filter Rules tab again and then click on PLUS SING (+). New Filter Rule window will appear.
  • From General tab, chose input from Chain drop down menu.
  • From Advanced tab, choose secure from Src. Address List drop down menu.
  • From Action tab, choose accept from Action drop down menu.
  • Click Apply and OK button.






With this firewall rule, only those hosts will get access which will keep in secure address list. Now we will create another firewall rule that will block any request that will try to access in MikroTik RouterOS.




Rule 4: Creating Access Blocking Rule




We will now create the last firewall rule that will block any incoming request which is not in secure address list group. The following steps will show how to create blocking firewall rule in MikroTik RouterOS.




  • Click on Filters Rules tab and then click on PLUS SIGN (+). New Filter Rule window will appear.
  • From General tab, choose input from Chain drop down menu.
  • From Action tab, choose drop from Action drop down menu.
  • Click Apply and OK button.




So, now any incoming request will be dropped except those who are in secure address list group. Make sure the created rules are in the following order otherwise port knocking will not work.




Firewall Filter Rules for Port Knocking
Firewall Filter Rules for Port Knocking




After creating the above rule, your Winbox will be disconnected and cannot be logged in until port knocking. So, we have to now know how to do port knocking in MikroTik Router. In the following section we will learn how to do port knocking in MikroTik Router OS.




Port Knocking Methods in MikroTik RouterOS




There are a lot of methods those can be applied to do port knocking. Among these, I will mention only three simple and easy port knocking methods here.




Method 1: Port Knocking from Browser




Web Browser is the basic and easiest port knocking client. Just open your favorite web browser and type Router IP address and Port combination [http://ip_address:port_number] in the URL bar. Your browser will do port knocking and you will be able to do logged in MikroTik Router. Make sure you have followed the correct port sequence. For example, according to our above configuration, first type https://ip_address:9000 and hit enter key and then type http://ip_address:8000 within one minute and then hit enter key. After successful port knocking, dynamic address list will be created like the following image.




Dynamic address list created by port knocking
Dynamic address list created by port knocking




Method 2: Port Knocking from Winbox




Winbox can also be used to do port knocking. Open winbox and type ip_address:port_number combination in Connect To input box and then click Connect button. Winbox will do port knocking and you will be able to connect MikroTik Router. Make sure you are following the correct port sequence.




Port Knocking from Winbox
Port Knocking from Winbox




Method 3: Port Knocking with Windows Port Knocking Application




Greg Sowell provides a windows based port knock application which is amazing. Download [http://gregsowell.com/?download=5695] port knock application from their website and unzip it. If it asks to provide password, put portknock. Run the application and provide IP address and port sequence and then hit Knock button. It will do port knocking and you will be able to login to MikroTik Router.




Windows Based Port Knocking Application
Windows Based Port Knocking Application




How to secure MikroTik Router with Port Knocking has been discussed in this article. I hope, you will now be able to implement port knocking in MikroTik Router. However, if you face any confusion to implement port knocking, feel free to discuss in comment or contact me from Contact page. I will try my best to stay with you.



2021-03-21T23:29:19
MikroTik Router Tutorials & Guides

Маркировка роутеров Mikrotik

У каждого роутера или свича фирмы Mikrotik есть коммерческое название и маркировка аппаратной платформы (Product code). Например маршрутизатор «hEX» имеет Product code — RB750Gr3. В этой статье разберем что означает каждая буква в маркировке Product code.





Читать далее…

Использование префикса /31 или маски 255.255.255.254 для соединения точка-точка

В связи с постоянно растущим давлением по сохранению пространства IP-адресов на Интернет, могут быть внедрены в практику для повышения эффективности нумерации. Смысл заключается в сокращении вдвое использование адресного диапазона, назначаемого для соединений точка-точка.

В большинстве кейсов пронумерованные подсети Интернета не используют больше, чем 30-битную маску подсетей (/30). Для которой требуется четыре адреса на стык – два адреса хоста, один адрес сети и один широковещательный. Это плохо для соединений точка-точка, поскольку имеют только два полезных адреса из четырех.

Но что мешает нам использовать префикс /31? Давайте попробуем в этом разобраться.

Рассмотрим использование префикса /30 и /31:

172.16.0.1/30



Адрес: 172.16.0.1

Bitmask: 30

Netmask: 255.255.255.252

Network: 172.16.0.0

Broadcast: 172.16.0.3

Hostmin: 172.16.0.1

Hostmax: 172.16.0.2

/30 Маска разрешает использовать 4 адреса. Первый будет адресом сети, последний бродкастом, оставшихся два полезные, используются для соединения.

172.16.0.1/31



Адрес: 172.16.0.1

Bitmask: 31

Netmask: 255.255.255.254

Network: 172.16.0.0

Broadcast: 172.16.0.1

Hostmin: 172.16.0.0

Hostmax: 172.16.0.1

/31 Маска разрешает использовать 2 адреса. Первый будет адресом сети, последний бродкастовым, ну а для соединения узлов используем все те же адреса.

Ограничения при использовании префикса /31:

1. Перестают работать протоколы использующие L3 brodcast.

На самом деле на текущий момент протоколов использующих в своей работе L3 brodcast практически не осталось. Основные актуальные на сегодняшний день протоколы такие как OSPF, IS-IS, EIGRP, BGP используют в работе multicast или unicast адреса.

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

2. Не все устройства поддерживают префиксы /31

На Juniper и Cisco вы можете смело использовать маску /31, хотя cisco при этом выдает предупреждение (% Warning: use /31 mask on non point-to-point interface cautiously).

А вот ZyXEL уже не дает выбрать маску /31.

Mikrotik официально так же не поддерживает /31, но на практике иногда получается использовать /31 с некоторыми ухищрениями.

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

Если вас не пугают приведенные ограничения то смело экономьте адреса используя префикс /30

Использование префикса /31 детально описано в RFC 3021 Using 31-Bit Prefixes on IPv4 Point-to-Point Links.



2021-03-12T11:34:24
other

MikroTik – Firewall защита доступа

К каким результатам мы пришли:
У нас встает вопрос безопасности нашей локальной сети, ведь китайские боты не спят и постоянно сканируют доступное сетевое пространство на наличие дыр и уязвимостей.
Имея статический IP мы подвержены риску быть взломанными. Т.к. наш статический IP доступен в интернете, он может подвергаться различного рода «атакам из вне».
Поэтому нам нужно сделать так, чтобы только мы могли подключаться к нашим роутерам и другим сервисам в локальной сети.
В принципе жесткую защиту мы делать не будем. У нас ведь не корпоративная сеть, а домашняя. Данной статьей мы попробуем закрыть самые распространенные пробелы в защите нашего роутера и локальной сети в общем. Не будем допускать банальных ошибок.




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




За все операции обработки трафика в сетевых устройствах отвечает так называемый “Межсетевой экран” (Eng – Firewall)
Именно он определяет куда отправлять тот или иной пакет, как обрабатывать соединения и многое, многое другое…
Чтобы охватить весь спектр работы Firewall-а не хватит не только одной статьи, но и 10 или 20 статей точно. Настолько велики его возможности и вариации применения.
Кстати это касается не только MikroTik RouterOS, а принципа фильтрации трафика в общем в операционных системах (даже на Windows)!




Официальные данные на MikroTik Wiki: IP/Firewall/Filter [ENG]




Давайте взглянем, где находится этот самый Межсетевой экран в наших устройствах(ведь RouterOS одинакова на всем оборудовании MikroTik):
Он находится по пути IP -> Firewall




Путь до межсетевого экрана




Окно для ввода правил фильтрации




Кратко пробежимся по основным вкладкам Firewall:
1 – Filter Rules – тут основные разрешающие и блокирующие правила.
2 – NAT – тут формируются перенаправления трафика.
3 – Mangle – тут происходит маркировка соединений и пакетов, отлов определенного вида трафика для дальнейшей его обработки.
Остальные вкладки пока рассматривать не будем, они нам не пригодятся.
4 – Raw – тут можно правилами отловить паразитный трафик и тем самым снизить нагрузку на CPU. Полезно для смягчения DOS атак.
5 – Service Ports – Для некоторых сетевых протоколов требуется прямое двустороннее соединение между конечными точками. Это не всегда возможно, поскольку трансляция сетевых адресов широко используется для подключения клиентов к сети. Это подменю позволяет настроить «помощники отслеживания соединений» для вышеупомянутых протоколов. Эти «помощники» используются для обеспечения правильного обхода NAT.
6 – Connections – тут отображаются все текущие соединения проходящие через маршрутизатор.
7 – Address List – тут списки адресов брандмауэра позволяют пользователю создавать списки IP-адресов, сгруппированных под общим именем. Затем фильтры брандмауэра, Mangle и NAT могут использовать эти списки адресов для сопоставления пакетов с ними.
8 – Layer7 Protocols – тут можно создавать шаблоны для поиска в потоках ICMP / TCP / UDP. L7 собирает первые 10 пакетов соединения или первые 2KB соединения и ищет шаблон в собранных данных.




Часть терминов может показаться непонятной, но в этом нет ничего страшного, мы будем работать только с первым пунктом Filter Rules. Хотя в нем тоже, очень много вариантов создания правил.
Сразу нужно оговориться, что полной безопасности Вам никто не обеспечит и это важно понимать! Но боятся не стоит, мы ведь не популярная корпорация за которой ведется промышленный шпионаж, нам достаточно превентивных мер ))))




Конфигурация по умолчанию:




На MikroTik Wiki представлена базовая конфигурация в таком виде: Basic universal firewall script [ENG]




Вы можете использовать её или нет )
Я делаю несколько по своему, возможно что-то тут не идеально, и Вы обладая большим опытом подскажите мне в комментариях, как сделать лучше ))




1. Перейдем к созданию правил в Firewall Filter Rules




Отступление: А ты засейвился? (Кнопка Safe Mode)




Все правила добавленные в таблицу применяются последовательно, сверху вниз. Будьте осторожны не добавляйте сразу правило, блокирующее все что только можно. Вы можете потерять доступ к роутеру и тогда придется его сбрасывать и перенастраивать заново.
Я рекомендую использовать магическую кнопку Safe Mode для таких целей. Если эта кнопка нажата и Вас отключит от роутера, настройки вернутся к моменту нажатия на эту кнопку. Очень полезная вещь, особенно если Вы работаете удаленно.










Правила добавляются по уже знакомой нам кнопке плюс…







1.1. Перво наперво нам нужно разрешить уже установленные(Established) и связанные(Related) соединения и сбросить некорректные(Invalid) соединения для проходящих (маршрутизируемых) пакетов в цепочке Forward и предназначенных локальной системе в цепочке Input.
Так мы снизим нагрузку на маршрутизатор обработав эти данные сразу.
Зачем повторно обрабатывать эти соединения если они уже и так установлены или неизвестны. Экономим ресурсы процессора. Т.е. эти правила будут в самом начале нашей таблицы.




Добавление правил 1.1. через WinBox (Изображения)




Правило 0




Правило 0




Правило 1




Правило 1




Правило 2




Правило 2




Правило 3




Правило 3







Консольно:




/ip firewall filter
add action=accept chain=forward comment="1.1. Forward and Input Established and Related connections" connection-state=established,related
add action=drop chain=forward connection-state=invalid
add action=accept chain=input connection-state=established,related
add action=drop chain=input connection-state=invalid




Дополнительно: Защита локальной сети от атак из публичного интернета
Очень часто люди используют настройки по умолчанию на своих маршрутизаторах. Это также означает, что можно угадать, какой локальный адрес используется за маршрутизатором. Обычно это 192.168.88.0/24 для устройств, работающих на RouterOS. Это означает, что в общедоступной сети злоумышленник может создать простой маршрут, который говорит, что 192.168.88.0/24 находится за вашим общедоступным IP-адресом.
Таким образом злоумышленник может атаковать ваши локальные сетевые устройства.
Чтобы защитить вашу локальную подсеть от этих атак, можно использовать очень простое правило фильтра брандмауэра. Это правило отбрасывает все пакеты, которые предназначены для локальной сети, но не являются NAT




/ip firewall filter
add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=Internet




1.2. Далее необходимо обеспечить защиту. Продолжим мы с Лимита входящих соединений.




Это даст нам некоторую защиту от DDoS атак.
Далее, большинство правил будут включать в себя параметр Списков интерфейсов In Interface List. Это замена для параметра In Interface.
Позволяет группировать интерфейсы и применять правила Firewall обращаясь сразу к нескольким интерфейсам.
Более подробно про данные списки можно почитать в отдельной статье: MikroTik RouterOS – Списки интерфейсов “Interface List”
Чтобы дальнейшие правила отработали корректно Вы должны внести WAN интерфейс в список Internet, а все локальные интерфейсы в список Local.
Сами списки также нужно создать. Имена списков Вы можете задавать свои не обязательно, как у меня.
Вся информация по тому, как это делать по ссылке выше в статье MikroTik RouterOS – Списки интерфейсов “Interface List”




Добавление правил 1.2. через WinBox (Изображения)




Правило 4




Правило 4




Правило 4




Правило 5




Правило 5




Правило 5




Правило 5







Консольно:




/ip firewall filter
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1d chain=input comment="1.2. DDoS Protect - Connection Limit" connection-limit=100,32 in-interface-list=Internet protocol=tcp
add action=tarpit chain=input connection-limit=3,32 protocol=tcp src-address-list=ddos-blacklist




1.3. Следом идет защита от SYN флуда.
Что это такое можно почитать тут: https://ru.wikipedia.org/wiki/SYN-флуд или в более профильных изданиях.
Защищать мы будем, как проходящий трафик, так и входящий трафик. Путем создания отдельной цепочки SYN-Protect




Добавление правил 1.3. через WinBox (Изображения)




Правило 6




Правило 6




Правило 6




Правило 7




Правило 7




Правило 7




Правило 8




Правило 8




Правило 8




Правило 8




Правило 9




Правило 9




Правило 9







Консольно:




/ip firewall filter
add action=jump chain=forward comment="1.3. DDoS Protect - SYN Flood" connection-state=new jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=jump chain=input connection-state=new in-interface-list=Internet jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=return chain=SYN-Protect connection-state=new limit=200,5:packet protocol=tcp tcp-flags=syn
add action=drop chain=SYN-Protect connection-state=new protocol=tcp tcp-flags=syn




1.4. Защита от сканеров портов (PSD – Port Scan Detection).
На счет данного правила есть разные мнения, кто-то считает, что оно не нужно, кто-то, что нужно.
Я же предпочитаю немного себя подстраховать. Тем более, что благодаря данному правилу Address Lists заполняется какими-то забугорными IP адресами )




Добавление правил 1.4. через WinBox (Изображения)




Правило 10




Правило 10




Правило 10




Правило 11




Правило 11




Правило 11







Консольно:




/ip firewall filter
add action=drop chain=input comment="1.4. Protected - Ports Scanners" src-address-list="Port Scanners"
add action=add-src-to-address-list address-list="Port Scanners" address-list-timeout=none-dynamic chain=input in-interface-list=Internet protocol=tcp psd=21,3s,3,1




1.5. Защита WinBox порта от перебора.
Логика обработки тут следующая.
1. Когда мы подключаемся к роутеру на порт 8291, то мы имеет состояние соединения new, правило добавляет наш IP в список уровня 1
2. Если мы не авторизовались и отключились, а после снова пытаемся подключиться, то мы опять будем иметь состояние соединения new. При этом наш IP адрес уже будет в Списке 1
Соответственно наш IP попадет в список уровня 2 и т.д до тех пор пока нас не заблокирует Правило 13, и уже после этого Правило 12 не будет нам давать возможность новых подключений к роутеру по порту 8291.
3. А если мы авторизовались, то наше соединение перейдет из состояния new в состояние established и обработка соединения уже будет вестись самым верхним правилом 2, которое нам все разрешает.
По сути у злоумышленника может быть всего четыре возможности Авторизоваться у нас на роутере через порт WinBox




Добавление правил 1.5. через WinBox (Изображения)




Правило 12




Правило 12




Правило 12




Правило 13




Правило 13




Правило 13




Правило 14




Правило 14




Правило 14




Правило 15




Правило 15




Правило 15




Правило 16




Правило 16




Правило 17




Правило 17







Консольно:




/ip firewall filter
add action=drop chain=input comment="1.5. Protected - WinBox Access" src-address-list="Black List Winbox"
add action=add-src-to-address-list address-list="Black List Winbox" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=8291 in-interface-list=Internet log=yes log-prefix="BLACK WINBOX" protocol=tcp src-address-list="Winbox Stage 3"
add action=add-src-to-address-list address-list="Winbox Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 2"
add action=add-src-to-address-list address-list="Winbox Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 1"
add action=add-src-to-address-list address-list="Winbox Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=8291 in-interface-list=Internet protocol=tcp




1.6. Защита OpenVPN порта от перебора.
Данная защита делается абсолютно аналогично пункту 1.5.
Единственным отличием будут названия OpenVPN вместо WinBox и входящий TCP порт 1194
Поэтому просто повторяем действия
Консольно:




/ip firewall filter
add action=drop chain=input comment="1.6. Protected - OpenVPN Connections" src-address-list="Black List OpenVPN"
add action=add-src-to-address-list address-list="Black List OpenVPN" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=1194 in-interface-list=Internet log=yes log-prefix="BLACK OVPN" protocol=tcp src-address-list="OpenVPN Stage 3"
add action=add-src-to-address-list address-list="OpenVPN Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 2"
add action=add-src-to-address-list address-list="OpenVPN Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 1"
add action=add-src-to-address-list address-list="OpenVPN Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=1194 in-interface-list=Internet protocol=tcp




1.7. Разрешающее правило для прохождения любого трафика по VPN туннелям.




Добавление правил 1.7. через WinBox (Изображения)




Правило 24




Правило 24







Консольно:




/ip firewall filter
add action=accept chain=input comment="1.7. Access OpenVPN Tunnel Data" in-interface-list=VPN




1.8. Разрешающее правило для прохождения только нормальных PING запросов.




Добавление правил 1.8. через WinBox (Изображения)




Правило 25




Правило 25




Правило 25







Консольно:




/ip firewall filter
add action=accept chain=input comment="1.8. Access Normal Ping" in-interface-list=Internet limit=50/5s,2:packet protocol=icmp




1.9. Запрещающее правило
Нормально закрытый Firewall должен обязательно обладать таким правилом. Иначе все бессмысленно.
Выше мы обрабатываем соединения и разрешаем только то, что нам необходимо. Все остальное блокируем.
Это намного правильней, чем Разрешить все и блокировать только нужное Вам. А всего, что нужно заблокировать Вы наверняка не знаете.







Консольно:




/ip firewall filter
add action=drop chain=input comment="1.9. Drop All Other" in-interface-list=Internet




 
 
2. Для ленивых
Если Вы дочитали до конца, значит у Вас пытливый ум и Вы хорошо представляете с чем столкнулись. Вы молодец.
Еще раз хотелось бы обозначить, что данная конфигурация не является идеальной. Я просто старался показать некоторые способы фильтрации трафика. Вам решать, использовать это у себя простым копипастом или подумать и сделать лучше! Но я уверен, что моё решение тоже не плохое =)




Все вышеизложенное в едином виде:







Консольно:




/ip firewall filter
add action=accept chain=forward comment="1.1. Forward and Input Established and Related connections" connection-state=established,related
add action=drop chain=forward connection-state=invalid
add action=drop chain=forward connection-nat-state=!dstnat connection-state=new in-interface-list=Internet
add action=accept chain=input connection-state=established,related
add action=drop chain=input connection-state=invalid
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1d chain=input comment="1.2. DDoS Protect - Connection Limit" connection-limit=100,32 in-interface-list=Internet protocol=tcp
add action=tarpit chain=input connection-limit=3,32 protocol=tcp src-address-list=ddos-blacklist
add action=jump chain=forward comment="1.3. DDoS Protect - SYN Flood" connection-state=new jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=jump chain=input connection-state=new in-interface-list=Internet jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=return chain=SYN-Protect connection-state=new limit=200,5:packet protocol=tcp tcp-flags=syn
add action=drop chain=SYN-Protect connection-state=new protocol=tcp tcp-flags=syn
add action=drop chain=input comment="1.4. Protected - Ports Scanners" src-address-list="Port Scanners"
add action=add-src-to-address-list address-list="Port Scanners" address-list-timeout=none-dynamic chain=input in-interface-list=Internet protocol=tcp psd=21,3s,3,1
add action=drop chain=input comment="1.5. Protected - WinBox Access" src-address-list="Black List Winbox"
add action=add-src-to-address-list address-list="Black List Winbox" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=8291 in-interface-list=Internet log=yes log-prefix="BLACK WINBOX" protocol=tcp src-address-list="Winbox Stage 3"
add action=add-src-to-address-list address-list="Winbox Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 2"
add action=add-src-to-address-list address-list="Winbox Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp src-address-list="Winbox Stage 1"
add action=add-src-to-address-list address-list="Winbox Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=8291 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=8291 in-interface-list=Internet protocol=tcp
add action=drop chain=input comment="1.6. Protected - OpenVPN Connections" src-address-list="Black List OpenVPN"
add action=add-src-to-address-list address-list="Black List OpenVPN" address-list-timeout=none-dynamic chain=input connection-state=new dst-port=1194 in-interface-list=Internet log=yes log-prefix="BLACK OVPN" protocol=tcp src-address-list="OpenVPN Stage 3"
add action=add-src-to-address-list address-list="OpenVPN Stage 3" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 2"
add action=add-src-to-address-list address-list="OpenVPN Stage 2" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp src-address-list="OpenVPN Stage 1"
add action=add-src-to-address-list address-list="OpenVPN Stage 1" address-list-timeout=1m chain=input connection-state=new dst-port=1194 in-interface-list=Internet protocol=tcp
add action=accept chain=input dst-port=1194 in-interface-list=Internet protocol=tcp
add action=accept chain=input comment="1.7. Access OpenVPN Tunnel Data" in-interface-list=VPN
add action=accept chain=input comment="1.8. Access Normal Ping" in-interface-list=Internet limit=50/5s,2:packet protocol=icmp
add action=drop chain=input comment="1.9. Drop All Other" in-interface-list=Internet




Бонус:
Работая с Firewall на родительском hEx роутере, обнаружил большой объем заблокированного трафика.
Решил посмотреть, в чем дело, включил логирование в правилах и обнаружил интересную ситуацию.
Оказалось, что местный провайдер не закрыл широковещательный трафик службы имен NetBIOS Name Service – UDP порт 137 (Остальные порты и информация: 
https://ru.wikipedia.org/wiki/NetBIOS)
И какой-то “Сосед” воткнул интернет кабель в простой ПК с Windows, тем самым создав тот самый паразитный трафик. Такие запросы с одного ПК могут занимать около 30 кбит/сек на вашем WAN порту.
Думаю можно себе представить если таких ПК в сети будет 100-150. Написали провайдеру, а пока он латает свои дыры, добавил правило блокировки. Только не в Firewall Filter, а в Firewall Raw.
Данная таблица полезна для уменьшения нагрузки на CPU и позволяет блокировать трафик на этапе Prerouting-а
Вот это правило:




/ip firewall raw
add action=drop chain=prerouting dst-port=137,138,139 in-interface-list=Internet protocol=udp




Бонус 2:




Правила для роутера за серым IP провайдера




Для роутера за серым IP провайдера я оставил только такие правила. Даже не смотря на то, что IP серый, доверять сети провайдера ни в коем случае не стоит.




/ip firewall filter
add action=fasttrack-connection chain=forward connection-state=established,related
add action=accept chain=forward comment="ALLOW - Established, Related and connections" connection-state=established,related
add action=accept chain=input connection-state=established,related
add action=drop chain=forward comment="DROP - Invalid connections" connection-state=invalid
add action=drop chain=input connection-state=invalid
add action=jump chain=input comment="DDoS - SYN flood protection" connection-state=new in-interface-list=Internet jump-target=SYN-Protect protocol=tcp tcp-flags=syn
add action=return chain=SYN-Protect limit=200,5:packet tcp-flags=""
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1w3d chain=SYN-Protect log-prefix="DDoS: SYN-Protect" tcp-flags=""
add action=jump chain=input comment="DDoS - Main protection" connection-state=new in-interface-list=Internet jump-target=DDoS-Protect
add action=return chain=DDoS-Protect dst-limit=15,15,src-address/10s
add action=add-src-to-address-list address-list=ddos-blacklist address-list-timeout=1w3d chain=DDoS-Protect log-prefix="DDoS: MAIN-Protect"
add action=drop chain=input comment="DROP - Block all other input/forward connections on the WAN" in-interface-list=Internet
add action=drop chain=forward in-interface-list=Internet
/ip firewall raw
add action=drop chain=prerouting comment="DDoS - Drop blacklist IP" in-interface-list=Internet src-address-list=ddos-blacklist







Источник: https://gregory-gost.ru/sozdanie-domashney-seti-na-baze-ustroystv-mikrotik-chast-6-firewall-zashhita-dostupa/



2021-03-10T22:47:49
Network