Дефолтный admin будет отключён. Всё проверено на реальном стенде CHR 7.22.1.
Почему MikroTik CHR без защиты ломают первым
Дефолтная конфигурация CHR после установки — это открытая дверь. Пользователь admin известен всем сканерам в интернете. SSH на стандартном порту. Никакой защиты от перебора паролей.
Если CHR смотрит наружу — боты найдут его за минуты. Логи начнут пухнуть от попыток входа, а если пароль слабый — вопрос времени когда зайдут. В первой статье мы уже закрыли лишние сервисы и поставили базовый firewall. Теперь идём дальше.
В этой статье делаем семь вещей: меняем имя устройства, создаём отдельного администратора, настраиваем SSH по ключам, включаем strong-crypto, добавляем защиту от брутфорса, синхронизируем время и включаем логирование.
Видео пошаговый скринкаст:
С чего начинаем — состояние стенда
Стартуем с того места где закончили в первой статье. Проверяем:
/system identity print
/ip service print
/ip firewall filter print
Результат:
name: MikroTik
Flags: D - DYNAMIC; X - DISABLED, I - INVALID
# NAME PORT PROTO
0 X ftp 21 tcp
1 X telnet 23 tcp
3 X www 80 tcp
7 ssh 2222 tcp
11 winbox 8291 tcp
12 X api 8728 tcp
13 X api-ssl 8729 tcp
Flags: X - DISABLED, I - INVALID; D - DYNAMIC
0 ;;; accept-established-related
chain=input action=accept connection-state=established,related
1 ;;; accept-icmp
chain=input action=accept protocol=icmp
2 ;;; accept-ssh-mgmt
chain=input action=accept protocol=tcp src-address=192.168.168.0/24 dst-port=2222
3 ;;; accept-winbox-mgmt
chain=input action=accept protocol=tcp src-address=192.168.168.0/24 dst-port=8291
4 ;;; drop-all
chain=input action=drop
Лишние сервисы отключены, базовый firewall стоит. Поехали дальше.
Смена имени устройства
Дефолтное имя MikroTik — первый признак незащищённого роутера. Меняем сразу:
/system identity set name=chr-proxmox-01
/system identity print
Результат:
name: chr-proxmox-01
Промпт сразу сменится на [admin@chr-proxmox-01]. Мелочь, но в логах сразу видно о каком устройстве речь — особенно когда роутеров несколько.
Создаём нового администратора
Пользователь admin — это первое что перебирают брутфорсеры. Создаём своего пользователя и отключаем дефолтного.
/user add name=sys0dmin password=ТВОЙ_ПАРОЛЬ group=full
/user print
Результат:
Columns: NAME, GROUP, LAST-LOGGED-IN, INACTIVITY-POLICY
# NAME GROUP LAST-LOGGED-IN INACTIVITY-POLICY
;;; system default user
0 admin full 2026-04-20 05:14:45 none
1 sys0dmin full none
Проверяем что новый пользователь работает — до того как отключить admin:
ssh -p 2222 sys0dmin@192.168.168.29
Вошёл — хорошо. Теперь отключаем admin:
/user disable admin
/user print
Результат:
Flags: X - DISABLED
# NAME GROUP LAST-LOGGED-IN INACTIVITY-POLICY
;;; system default user
0 X admin full 2026-04-20 05:14:45 none
1 sys0dmin full 2026-04-20 05:15:00 none
Как настроить SSH по ключам на MikroTik
Пароль можно подобрать. Ключ — нет. Переходим на аутентификацию по SSH ключам.
Генерируем ключ на Proxmox
Выполняем на Proxmox, не на CHR:
ssh-keygen -t ed25519 -f /root/.ssh/mikrotik_key -N "" -C "proxmox-to-chr"
Результат:
Generating public/private ed25519 key pair.
Your identification has been saved in /root/.ssh/mikrotik_key
Your public key has been saved in /root/.ssh/mikrotik_key.pub
The key fingerprint is:
SHA256:W40RlzYgi7trstZT6ANDmJFvh98geNXh1njmerFNl98 proxmox-to-chr
Почему ed25519 а не RSA. Короче ключ, быстрее аутентификация, современная криптография. RSA работает но ed25519 — правильный выбор для новых установок.
Копируем публичный ключ на CHR
scp -P 2222 /root/.ssh/mikrotik_key.pub sys0dmin@192.168.168.29:/mikrotik_key.pub
Проверяем что файл попал на роутер:
/file print
Результат:
# NAME TYPE SIZE LAST-MODIFIED
0 skins directory 2026-04-19 05:24:02
1 mikrotik_key.pub ssh key 96 2026-04-20 05:15:14
Импортируем ключ в RouterOS
Вот тут важное отличие от Linux. RouterOS не использует ~/.ssh/authorized_keys. Ключи импортируются через команду и привязываются к конкретному пользователю:
/user ssh-keys import public-key-file=mikrotik_key.pub user=sys0dmin
В логах появится подтверждение:
ssh,info 256bit public key imported, owner=proxmox-to-chr,
fingerprint=SHA256:W40RlzYgi7trstZT6ANDmJFvh98geNXh1njmerFNl98=
Проверяем вход по ключу
ssh -p 2222 -i /root/.ssh/mikrotik_key sys0dmin@192.168.168.29
Если зашёл без пароля — ключ работает. В логах будет:
ssh,info publickey accepted for user: sys0dmin,
fingerprint: SHA256:W40RlzYgi7trstZT6ANDmJFvh98geNXh1njmerFNl98=
Включаем strong-crypto для SSH
По умолчанию RouterOS поддерживает старые алгоритмы шифрования для совместимости. Отключаем их:
/ip ssh set strong-crypto=yes
/ip ssh print
Результат:
ciphers: auto
forwarding-enabled: no
password-authentication: yes-if-no-key
publickey-authentication-options: none
strong-crypto: yes
host-key-size: 2048
host-key-type: rsa
Обрати внимание на password-authentication: yes-if-no-key. Это значит RouterOS разрешает пароль только если у пользователя нет ключа. У sys0dmin ключ есть — пароль больше не работает автоматически.
Защита MikroTik от брутфорса через firewall
Механизм простой: три неудачные попытки входа за минуту — IP блокируется на час. Реализуется через цепочку address-list в firewall.
Добавляем правила строго в таком порядке — после существующих правил accept, но до drop-all:
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new action=add-src-to-address-list address-list=ssh-stage1 address-list-timeout=1m comment=detect-ssh-scan
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh-stage1 action=add-src-to-address-list address-list=ssh-stage2 address-list-timeout=1m comment=blacklist-stage1
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh-stage2 action=add-src-to-address-list address-list=ssh-stage3 address-list-timeout=1m comment=blacklist-stage2
/ip firewall filter add chain=input protocol=tcp dst-port=2222 connection-state=new src-address-list=ssh-stage3 action=add-src-to-address-list address-list=ssh-blacklist address-list-timeout=1h comment=blacklist-stage3
/ip firewall filter add chain=input protocol=tcp dst-port=2222 src-address-list=ssh-blacklist action=drop comment=drop-ssh-bruteforce
Финальный вид firewall filter:
Flags: X - DISABLED, I - INVALID; D - DYNAMIC
# CHAIN ACTION COMMENT
0 input accept accept-established-related
1 input accept accept-icmp
2 input accept accept-ssh-mgmt
3 input accept accept-winbox-mgmt
4 input drop drop-all
5 input add-src-to-address-list detect-ssh-scan
6 input add-src-to-address-list blacklist-stage1
7 input add-src-to-address-list blacklist-stage2
8 input add-src-to-address-list blacklist-stage3
9 input drop drop-ssh-bruteforce
Настройка NTP на MikroTik CHR
Без синхронизации времени логи бесполезны. Временные метки будут врать — и когда будешь разбирать инцидент, не поймёшь когда что произошло.
/system ntp client set enabled=yes servers=pool.ntp.org
/system ntp client print
Результат:
enabled: yes
mode: unicast
servers: pool.ntp.org
vrf: main
freq-drift: 0 PPM
status: waiting
Статус waiting — нормально, CHR только что подключился к NTP серверу. Через минуту сменится на synchronized. Проверяем время:
/system clock print
Результат:
time: 05:16:01
date: 2026-04-20
time-zone-autodetect: yes
time-zone-name: manual
gmt-offset: +00:00
Если нужен другой часовой пояс — настрой вручную:
/system clock set time-zone-name=Europe/Moscow
Настройка логирования в MikroTik
По умолчанию RouterOS пишет info, error, warning и critical. Добавляем два важных топика — firewall события и входы пользователей:
/system logging add topics=firewall action=memory
/system logging add topics=account action=memory
/system logging print
Результат:
Flags: * - DEFAULT
Columns: TOPICS, ACTION
# TOPICS ACTION
0 * info memory
1 * error memory
2 * warning memory
3 * critical echo
4 firewall memory
5 account memory
Смотрим логи:
/log print
Из реальных логов видно всю историю сессии — кто заходил, с какого IP, что менял:
2026-04-20 05:14:45 system,info user sys0dmin added by ssh-cmd:admin@192.168.168.252
2026-04-20 05:15:00 system,info user admin changed by ssh-cmd:sys0dmin@192.168.168.252 (/user set admin disabled=yes)
2026-04-20 05:15:23 ssh,info 256bit public key imported, owner=proxmox-to-chr
2026-04-20 05:15:32 ssh,info publickey accepted for user: sys0dmin
2026-04-20 05:15:39 system,info ssh settings changed (/ip ssh set strong-crypto=yes)
Каждое действие записано с временной меткой, пользователем и командой. Для аудита — идеально.
Финальный бэкап
/system backup save name=chr-security-basic
/file print
Результат:
# NAME TYPE SIZE LAST-MODIFIED
0 skins dir 2026-04-19 05:24:02
1 chr-services-disabled.backup backup 19.9KiB 2026-04-19 05:56:49
2 chr-initial.backup backup 19.4KiB 2026-04-19 05:50:21
3 chr-firewall-basic.backup backup 20.5KiB 2026-04-19 05:57:48
4 chr-security-basic.backup backup 21.8KiB 2026-04-20 05:16:23
Видна история бэкапов с первой статьи. Каждый этап зафиксирован.
Таблица портов после настройки
| Сервис | Порт | Протокол | Статус | Доступ |
|---|---|---|---|---|
| FTP | 21 | TCP | отключён | — |
| Telnet | 23 | TCP | отключён | — |
| WWW | 80 | TCP | отключён | — |
| SSH | 2222 | TCP | активен | 192.168.168.0/24, только по ключу |
| Winbox | 8291 | TCP | активен | 192.168.168.0/24 |
| API | 8728 | TCP | отключён | — |
| API-SSL | 8729 | TCP | отключён | — |
Troubleshooting
SSH по ключу не работает — Permission denied
Проверь что ключ импортировался:
/user ssh-keys print
Если список пустой — импортируй заново. Убедись что файл ключа есть на роутере:
/file print
Заблокировал себя в ssh-blacklist
Подключайся через qm terminal и чисти список:
/ip firewall address-list remove [find list=ssh-blacklist]
NTP не синхронизируется — статус waiting
Подожди 2-3 минуты после включения. Если не меняется — проверь DNS:
/ip dns print
/ping pool.ntp.org count=3
Случайно удалил sys0dmin и admin отключён
Только через qm terminal 110. В консоли CHR:
/user enable admin
/user add name=sys0dmin password=ПАРОЛЬ group=full
Как проверить что вход по паролю действительно отключён
Попробуй подключиться без ключа:
ssh -p 2222 -o PubkeyAuthentication=no sys0dmin@192.168.168.29
Должен получить Permission denied. Если просит пароль — значит password-authentication не отключён явно. Отключи:
/ip ssh set password-authentication=no
FAQ по безопасности RouterOS
Как проверить кто подключён к MikroTik прямо сейчас?
/ip service print
/user active print
Как посмотреть заблокированные IP адреса?
/ip firewall address-list print where list=ssh-blacklist
Что делать если забыл пароль от sys0dmin?
Подключайся через qm terminal 110 — консоль Proxmox не требует SSH. Сбрось пароль:
/user set sys0dmin password=НОВЫЙ_ПАРОЛЬ
Нужно ли отключать Winbox если им не пользуюсь?
Да. Если Winbox не нужен — отключай:
/ip service disable winbox
Как добавить второй SSH ключ для другого администратора?
/user ssh-keys import public-key-file=second_key.pub user=sys0dmin
/user ssh-keys print
Что дальше
CHR теперь закрыт нормально. Дефолтный admin отключён, SSH работает только по ключам, брутфорсеры получат бан после трёх попыток, логи пишут кто и что делал.
Это вторая статья цикла по MikroTik CHR. Следующая — настройка сети: статический IP вместо DHCP, DNS, маршруты и NAT для выхода в интернет через CHR.
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →


