Архив рубрики: Публикации

Как разбить строки в Python

В этой статье объясняется, как разделить строки в Python с помощью методов «split()» и «partition()». Эти методы особенно полезны, если вы хотите преобразовать предложение или группу слов в анализируемые и повторяемые типы Python. Все примеры кода в этой статье протестированы на Python версии 3.8.6.

 

Метод разделения

Метод split() может использоваться для разделения слов с использованием разделителя, указанного пользователем. Он возвращает список разделенных слов без разделителя. Если разделитель не указан пользователем, пробел (один или несколько) используется в качестве единственного разделителя.

Например, приведенный ниже код вернет в качестве вывода «[‘Linux’, ‘Ex’]»:

text = "Linux Ex"

text.split()

 

Приведенный ниже код вернет «[‘AndreyEx’, ‘ru’]» в качестве вывода, когда «.» используется как разделитель:

text = "AndreyEx.ru"

text.split(“.”)

 

Разделитель не обязательно должен состоять из одного символа. Метод split принимает два аргумента:

  • sep: разделитель, который будет использоваться для разделения
  • maxsplit: количество делений, которое нужно сделать

Оба эти аргумента необязательны. Как упоминалось выше, если аргумент «sep» не указан, пробел используется в качестве разделителя для разделения. Аргумент «maxsplit» имеет значение по умолчанию «-1» и по умолчанию разбивает все вхождения. Рассмотрим код ниже:

text = "AndreyEx.co.us"

text.split(“.”)

 

В качестве вывода он вернет «[‘AndreyEx’, ‘co’, ‘us’]». Если вы хотите остановить разделение при первом появлении разделителя, укажите «1» в качестве аргумента «maxsplit».

text = "AndreyEx.co.us"

text.split(“.”, 1)

 

Приведенный выше код вернет в качестве вывода «[‘AndreyEx’, ‘co.us’]». Просто укажите количество вхождений, когда вы хотите, чтобы процесс разделения остановился, в качестве второго аргумента.

Обратите внимание, что если есть последовательные разделители, для остальных разделителей после первого разделения будет возвращена пустая строка (когда аргумент «maxsplit» не используется):

text = "AndreyEx.ru"

text.split(".")

 

Приведенный выше код вернет «[‘AndreyEx’,», ‘ru’] »в качестве вывода. Если вы хотите удалить пустые строки из результирующего списка, вы можете использовать следующий оператор понимания списка:

text = "AndreyEx.ru"

result = text.split(".")

result = [item for item in result if item != ""]

print (result)

 

Вы получите «[‘AndreyEx’, ‘ru’]» в качестве вывода после выполнения приведенного выше примера кода.

Обратите внимание, что метод split() перемещается слева направо для разделения строк на слова. Если вы хотите разделить строку справа налево, используйте вместо этого «rsplit()». Его синтаксис, использование и аргументы точно такие же, как у метода split().

Если при использовании методов «split()» или «rsplit()» в строке не обнаружен разделитель, исходная строка возвращается как единственный элемент списка.

 

Метод разделения

Метод partition() может использоваться для разделения строк, и он работает идентично методу split() с некоторыми отличиями. Наиболее заметное отличие состоит в том, что он сохраняет разделитель и включает его как элемент в результирующий кортеж, содержащий разделенные слова. Это особенно полезно, если вы хотите разделить строку на повторяющийся объект (в данном случае кортеж), не удаляя исходные символы. Рассмотрим код ниже:

text = "AndreyEx.ru"

result = text.partition(".")

print (result)

 

Приведенный выше пример кода вернет «(‘AndreyEx’, ‘.’, ‘ru’)» в качестве вывода. Если вы хотите, чтобы результат был типа списка, используйте вместо этого следующий пример кода:

text = "AndreyEx.ru"

result = list(text.partition("."))

print (result)

 

Вы должны получить «[‘AndreyEx’, ‘.’, ‘ru’]» в качестве вывода после выполнения приведенного выше примера кода.

Метод partition() принимает только один аргумент, называемый sep. Пользователи могут указать разделитель любой длины. В отличие от метода split(), этот аргумент является обязательным, поэтому вы не можете пропустить разделитель. Однако вы можете указать пробел в качестве разделителя.

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

text = "AndreyEx.co.us"

result = list(text.partition("."))

print (result)

 

Пример кода выдаст в качестве вывода «[‘AndreyEx’, ‘.’, ‘Co.us’]». Если вы хотите разделить все вхождения разделителя и включить разделитель в окончательный список, возможно, вам придется использовать шаблон «Регулярное выражение» или «Регулярное выражение». В примере, упомянутом выше, вы можете использовать шаблон RegEx следующим образом:

import re

text = "AndreyEx.co.us"

result = re.split("(.)", text)

print (result)

 

Вы получите «[‘AndreyEx’, ‘.’, ‘Co’, ‘.’, ‘Us’]» в качестве вывода после выполнения приведенного выше примера кода. Точка была экранирована в операторе RegEx, упомянутом выше. Обратите внимание, что хотя приведенный выше пример работает с одним символом точки, он может не работать со сложными разделителями и сложными строками. Возможно, вам придется определить свой собственный шаблон RegEx в зависимости от вашего варианта использования. Пример приведен здесь, чтобы дать вам некоторое представление о процессе сохранения разделителя в окончательном списке с помощью операторов RegEx.

Метод partition() иногда может оставлять пустые строки, особенно когда разделитель не найден в строке, которую нужно разделить. В таких случаях вы можете использовать операторы понимания списка для удаления пустых строк, как описано в разделе о методе «split()» выше.

text = "AndreyEx"

result = list(text.partition("."))

result = [item for item in result if item != ""]

print (result)

 

После выполнения приведенного выше кода вы должны получить в качестве вывода «[‘AndreyEx’]».

 

Вывод

Для простых и понятных разделений вы можете использовать методы «split()» и «partition()», чтобы получить повторяющиеся типы. Для сложных строк и разделителей вам нужно будет использовать операторы RegEx.



2021-02-25T12:04:32
Python

Tinyproxy: что это и как настроить?

Tinyproxy — это прокси HTTP/HTTPS. Это легкий, быстрый, очень простой в настройке прокси-сервис с открытым исходным кодом. Tinyproxy также можно настроить как обратный прокси. Его удобно использовать в качестве небольшого прокси с меньшим количеством системных ресурсов, потому что он очень легкий.

Функции

  • Tinyproxy легко настроить и изменить.
  • Небольшой объем памяти означает, что она занимает очень мало места в операционных системах. Его объем памяти составляет почти 2 МБ.
  • Анонимный режим позволяет авторизовать отдельные HTTP-заголовки, которые должны быть разрешены, а какие — нет.
  • Контроль доступа путем блокировки неавторизованного пользователя.
  • Фильтрация позволяет пользователю заблокировать или разрешить определенный домен, создав черный список и белый список.
  • Функции конфиденциальности контролируют как входящие, так и исходящие данные с серверов HTTPS / HTTP.

Установить TinyProxy

Обновите системные пакеты, введя следующую команду.

ubuntu@ubuntu:~$ sudo  apt-get  update

ubuntu@ubuntu:~$ sudo  apt-get  upgrade -y

После завершения обновления установите Tinyproxy, введя эту команду.

ubuntu@ubuntu:~$ sudo apt-get -y install tinyproxy

Tinyproxy будет установлен. Чтобы запустить и проверить статус Tinyproxy, введите эти команды.

ubuntu@ubuntu:~$ sudo systemctl tinyproxy start

ubuntu@ubuntu:~$ sudo systemctl tinyproxy status

Настроить веб-браузер

Чтобы ваш Tinyproxy работал, вам нужно изменить некоторые настройки в своем веб-браузере. Для этого зайдите в настройки сети своего веб-браузера и нажмите ручную настройку прокси-сервера, а в строке прокси-сервера HTTP введите свой общедоступный IP_Address, на котором вы хотите запустить Tinyproxy. И номер порта (по умолчанию номер порта tinyproxy — 8888).

Вы также можете использовать foxyproxy для настройки своего веб-браузера. Это инструмент управления прокси, который намного лучше, чем ограниченные возможности настройки прокси Firefox. Это расширение для веб-браузеров Firefox и Chrome, которое можно загрузить из их магазинов.

Конфигурация Tinyproxy

Файл конфигурации Tinyproxy находится по следующему пути «etc / tinyproxy / tinyproxy.conf».

Чтобы получить к нему доступ, введите следующую команду.

ubuntu@ubuntu:~$ cd  etc/tinyproxy/tinyproxy.conf

Чтобы внести изменения в файл конфигурации Tinyproxy, откройте его с помощью vim.

ubuntu@ubuntu:~$ sudo vim  etc/tinyproxy/tinyproxy.conf

Перейдите в строку Разрешить 127.0.0.1 и замените ее своим общедоступным IP-адресом.

Теперь перейдите к строке #Listen 192.168.0.1. Закомментируйте эту строку и напишите в ней свой IP_Address.

Разрешить и заблокировать диапазон IP-адресов пользователей

Tinyproxy позволяет вам добавлять или блокировать IP-адрес пользователя или диапазон IP-адресов от использования tinyproxy. Чтобы разрешить или заблокировать IP-адрес пользователя, перейдите в строку Allow 127.0.0.1 и ниже этой строки добавьте IP-адреса, которые вы хотите разрешить [IP_Address]. Чтобы разрешить диапазон IP-адресов чуть ниже строки Разрешить 192.168.0.0, добавьте строку

Allow [IP_Address/range]

Чтобы заблокировать IP-адрес пользователя или диапазон IP-адресов, просто закомментируйте IP_Address, который вы хотите заблокировать. В tinyproxy по умолчанию все IP-адреса заблокированы.

Авторизация

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

BasicAuth user password [Your Password]

Добавление фильтра

Вы также можете добавить фильтр трафика, блокируя веб-сайты с помощью tinyproxy. Следуйте инструкциям по добавлению фильтров трафика.

Перейдите в строку Фильтр «/etc/tinyproxy/filter». Закомментируйте эту строку. Вы можете установить фильтр по URL или доменам. Также ниже этой строки закомментируйте другую строку: «FilterExtanded On» . И «FilterDefaultDeny Yes».

Сохраните изменения и добавьте домены сайтов, которые хотите заблокировать, в файле фильтра. Вы можете получить доступ к файлу фильтра по пути «/ etc / tinyproxy / filter» . Так что откройте его с помощью vim.

ununtu@ubuntu:~$ sudo vim etc/tinyproxy/filter

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

Каждый раз, когда вы вносите какие-либо изменения в список фильтров или файл конфигурации tinyproxy, вы должны перезапустить службу tinyproxy. Для перезапуска службы tinyproxy введите команду.

ubuntu@ubuntu:~$ service tinyproxy restart

Теперь разрешите брандмауэр, набрав команду.

ubuntu@ubuntu:~$ sudo iptables -A INPUT -j ACCEPT -m comment --comment “tinyproxy” -s 192.163.28.73/24 -p tcp --dport 8888

Регулировать TinyProxy с помощью задания Cron

Если вы хотите запланировать время для своего tinyproxy, например, когда вы хотите запустить, перезапустите или остановите tinyproxy. Вы можете сделать это с помощью специальной функции Linux cron job. Он следует этому шаблону time (минута, час, день месяца, месяц, день недели) path. Чтобы отредактировать задание cron, введите команду crontab -e.

Чтобы запланировать время запуска tinyproxy, введите следующие команды.

0 6 * * * etc/init.d/tinyproxy start

Чтобы запланировать время остановки tinyproxy, введите следующие команды.

0 23 * * * etc/init.d/tinyproxy stop

Это означает, что служба tinyproxy будет автоматически запускаться в 6 утра и заканчиваться в 23 часа каждый день.

Вывод

Tinyproxy — полезный и простой инструмент для настройки прокси HTTP/HTTPS. Это для небольших серверов, но если вы хотите, чтобы прокси-сервер работал для больших сетей, вам может потребоваться прокси-сервер squid. Здесь мы поделились лишь некоторыми советами, но они достаточно хороши. Используя это простое руководство по установке, настройке и использованию tinyproxy, вы сможете настроить свой tinyproxy.



2021-02-25T08:56:03
Вопросы читателей

Шифрование в состоянии покоя в MariaDB

Неактивное шифрование предотвращает доступ злоумышленника к зашифрованным данным, хранящимся на диске, даже если у него есть доступ к системе. Базы данных с открытым исходным кодом MySQL и MariaDB теперь поддерживают функцию шифрования в состоянии покоя, которая отвечает требованиям нового законодательства ЕС о защите данных. Шифрование MySQL в состоянии покоя немного отличается от MariaDB, поскольку MySQL обеспечивает шифрование только для таблиц InnoDB. В то время как MariaDB также предоставляет возможность шифровать файлы, такие как журналы повторного выполнения, журналы медленных операций, журналы аудита, журналы ошибок и т. д. Однако оба они не могут зашифровать данные в ОЗУ и защитить их от вредоносного корня.

В этой статье мы научимся настраивать шифрование на уровне базы данных для MariaDB.

 

Начиная

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

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

Если вы используете сервер LAMP, файлы для добавления этого плагина находятся в каталоге «/opt/lamp». В противном случае изменения вносятся в папку «/etc/mysql/conf.d».

 

Создание ключей шифрования

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

Мы создадим новую папку «keys» в каталоге « /etc/mysql/» и воспользуемся утилитой OpenSSL для случайной генерации трех шестнадцатеричных строк и перенаправления вывода в новый файл в папке ключей. Введите следующие команды:

ubuntu@ubuntu:~$ sudo mkdir /etc/mysql/keys

ubuntu@ubuntu:~$ echo -n "1;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"

ubuntu@ubuntu:~$ echo -n "2;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"

ubuntu@ubuntu:~$ echo -n "3;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"

 

Где 1,2,3 — ключевые идентификаторы; мы включаем их, чтобы создать ссылку на ключи шифрования, используя переменную innodb_default_encryption_key_id в MariaDB. Выходной файл будет выглядеть так:

1;01495ba35e1c9602e14e40bd6de41bb8

2;3cffa4a5d288e90108394dbf639664f8

3;9953297ed1a58ae837486318840f5f1d

Шифрование ключевого файла

Мы можем легко установить системную переменную file_key_management_filename с соответствующим путем внутри плагина File Key Management. Но оставлять ключи в виде обычного текста небезопасно. Мы можем до некоторой степени снизить риск, назначив права доступа к файлам, но этого недостаточно.

Теперь мы зашифруем ранее созданные ключи, используя случайно сгенерированный пароль. Напротив, размер ключа может варьироваться от 128/192/256 бит.

ubuntu@ubuntu:~$ openssl rand -hex 192> /etc/mysql/keys/enc_paswd.key

 

Поэтому мы будем использовать OpenSSL ENC команду в терминале для шифрования enc_key.txt файл enc_key.enc, с помощью ключа шифрования , созданного выше. Кроме того, MariaDB поддерживает только режим CBC AES для шифрования ключей шифрования.

ubuntu@ubuntu:~$ openssl enc -aes-256-cbc -md sha1 -pass file:/etc/mysql/keys/enc_paswd.key -in /etc/mysql/keys/enc_key.txt -out /etc/mysql/keys/enc_key.enc && sudo rm /etc/mysql/keys/enc_key.txt

 

Мы также удаляем наш файл enc_keys.txt, поскольку он больше не нужен. Кроме того, мы всегда можем расшифровать наши данные в MariaDB, если наш файл паролей в безопасности.

 

Настройка плагина управления файловыми ключами

Теперь мы настроим MariaDB с помощью плагина File Key Management, добавив следующие переменные в файл конфигурации. Файлы конфигурации обычно находятся в ‘/etc/mysql’ и по умолчанию читают все файлы .cnf. Или вы можете создать новый файл конфигурации «mariadb_enc.cnf» в каталоге /etc/mysql/conf.d/.

Теперь ваш файл конфигурации может выглядеть совершенно иначе. Однако добавьте эти переменные шифрования в [sqld]. Если ключ зашифрован, плагину требуется настроить две системные переменные, то есть file_key_management_filename и file_key_management_filekey.

[sqld]



#File Key Management Plugin

plugin_load_add=file_key_management

file_key_management = ON file_key_management_encryption_algorithm=aes_cbc file_key_management_filename = /etc/mysql/keys/enc_keys.enc

file_key_management_filekey = /etc/mysql/keys/enc_paswd.key



# InnoDB/XtraDB Encryption Setup

innodb_default_encryption_key_id = 1

innodb_encrypt_tables = ON

innodb_encrypt_log = ON

innodb_encryption_threads = 4



# Aria Encryption Setup

aria_encrypt_tables = ON



# Temp & Log Encryption

encrypt-tmp-disk-tables = 1

encrypt-tmp-files = 1

encrypt_binlog = ON

 

Вы можете найти подробную информацию о каждой системной переменной на официальном сайте MariaDB.

 

Защита файла паролей

Мы изменим права доступа к каталогу MySQL, чтобы защитить пароль и другие конфиденциальные файлы. Право собственности на MariaDB будет изменено на текущего пользователя, которым в Ubuntu является mysql.

sudo chown -R mysql:root /etc/mysql/keys

sudo chmod 500 /etc/mysql/keys/

 

Теперь мы изменим пароль и права доступа к зашифрованным файлам на

sudo chown mysql:root /etc/mysql/keys/enc_paswd.key /etc/mysql/keys/enc_key.enc



sudo chmod 600 /etc/mysql/keys/enc_paswd.key /etc/mysql/keys/enc_key.enc

 

Теперь перезапустите службу базы данных.

sudo service mysql restart

Вывод

В этой статье мы узнали, как шифрование на уровне базы данных является актуальной задачей и как мы можем настроить шифрование в состоянии покоя в MariaDB. Единственным недостатком плагина File Key Management является то, что он не поддерживает ротацию ключей. Однако, помимо этого подключаемого модуля, существует множество других решений для шифрования управления ключами, например подключаемый модуль AWS Key Management и подключаемый модуль Eperi Key Management. Вы можете найти более подробную информацию об этих плагинах на официальном сайте MariaDB.



2021-02-25T04:45:11
MariaDB

MikroTik – подключение флэшки.

Рассмотрим способ организации общей сетевой папки небольшого размера, расположенной на флэшке. Для этих целей используется роутер MikroTik Rb750Gr3 с прошивкой 6.47.7 и самая обычная флэшка на 8Gb.

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

Базовая настройка роутера выполнена по этой инструкции.

Вставляем флэшку в USB разъем на корпусе роутера.

 

Входим в меню MikroTik через WinBox и переходим на вкладку Files.

В списке файлов видим все содержимое флэшки. Кирилический алфавит не воспроизводится.

Переходим в раздел меню System >> Disks

Видим отсутствие дисков.

 

Вводим команду в терминале.



Видим, что диск все таки есть, но не отображается.

Можно вывести список файлов на диске



 

Отформатируем флэшку в Fat32. Для этого сперва нужно отсоединить ее, указав номер диска, в данном случае 0.



Далее вводим команду.



Начнется форматирование флэшки.

Когда мы увидим надпись formatted: 100% можно еще раз вывести список дисков командой



После этих действий флэшка начала корректно отображаться в графическом интерфейсе.

Для форматирования в графическом интерфейсе последовательность такая же, как и в командном терминале: сперва нажимаем Eject Drive, затем Format Drive. Далее выбираем диск, файловую систему, метку и нажимаем старт.

*форматирование не является обязательным действием если файловая система fat32 или ext3

 

Общий доступ через SMB.

 Активация SMB.

Переходим в 1 IP >> 2 SMB

Выполняем следующие настройки:

3.Enable – отмечаем галочкой (активация SMB).

4.Domain: WORKGROUP имя локальной сети или домена.

5.Comment: комментарий.

6.Allow Guests: разрешение для доступа гостей (в нашем случае отключено, т.к. папка нужна для админов).

7.Interfaces: bridge1 (мост в котором 4 порта локальной сети).

8.Нажимаем кнопку Apply для сохранения настроек.

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



 

Настройка общей папки.

В окне SMB Settings нажимаем кнопку Shares и на + создаем новую общую папку.

1.Name: share1 – имя латинскими буквами, можно оставить по умолчанию.

2.Directory: disk1/PC360 путь к будущей общей папке и ее название.

(Max Sessions – максимальное количество подключений.)

3.Нажимаем кнопку ОК.

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



В списке файлов появится созданная папка.

 

Настройка пользователей.

В окне SMB Settings нажимаем кнопку Users и выполняем настройки.

1.Нажимаем +

2.Name: admin111 (имя пользователя латинскими буквами)

3.Password: 12345Password (пароль доступа)

4.Read Only – убираем галочку (будет разрешено чтение и запись).

5.Нажимаем ОК.

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



 

Проверим наличие общей папки в сети.  В адресной строке ПК вводим IP-адрес роутера в локальной сети. Папка видна в общем доступе.

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

Так же к папке можно подключиться по ftp. Вводим в адресной строке IP-адрес роутера с ftp префиксом ftp://192.168.111.1  затем вводим логин и пароль администратора роутера (НЕ от созданного пользователя SMB). Видим общую папку. Для доступа можно использовать сторонние программы, например Total Commander.

*в меню роутера должен быть активирован доступ по ftp (IP >> Services >> ftp), обычно он активирован по умолчанию

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



2021-02-21T13:20:44
Настройка ПО

Linux. Создание загрузочной флешки для Windows

В начале этого века для установки дистрибутивов Linux на персональный компьютер требовалось знать несколько десятков команд. Неопытный пользователь был не в состоянии установить систему «в один клик», как это можно было сделать с Windows. Теперь всё изменилось с точностью наоборот. Поэтому сохраняю инструкцию по установке Windows. Читать

How to Secure MikroTik RouterOS Login Users

MikroTik RouterOS usually sits between WAN and LAN of any network. WAN network is always an insecure network because attackers always try to hack RouterOS so that they can compromise it for their own benefit. If any hacker can compromise MikroTik RouterOS, he can damage RouterOS as well as associated network. As a network administrator, we should always take anti hacking steps to secure MikroTik RouterOS. There are a lot of security tasks those we should take care to harden MikroTik RouterOS. Among these security tasks, we studied how to secure RouterOS login services which are enabled by default. In this article, we will see how to secure MikroTik RouterOS login users from being hacked easily.




Why Do We Need to Harden Login Users?




Because hackers usually try to login RouterOS using username and password if they don’t exploit any vulnerability in RouterOS Firmware. So, we have to harden login users as much as possible so that hackers cannot guess username and password so easily. There are various techniques to harden login users in MikroTik RouterOS. In the following sections we will see some best practices to harden MikroTik RouterOS login users.




Removing Default Username and Password




Default username and password is a common vulnerability to any application because by default any application comes with a default username and password to access it first time so easily. Default username and password is usually known by anyone including hackers and we often forget to remove or modify default username and password. Hackers or any tool (used to login to any application) use default username and password at first to compromise it.




Like other application MikroTik RouterOS comes with a default username admin and black password. As admin user is known to all, it is best practice to remove admin user from RouterOS so that none can use admin user to login MikroTik RouterOS. However, if you wish to keep admin user anyway, don’t forget to set a strong password for admin user. It will also be better to limit admin user access from specific IP addresses.




Making Strong Password for Write and Full Permission Users




Hackers usually do brute forcing using various tools to discover username and password of RouterOS. Tools usually use character combination to find used username and password. So, if we use strong username and password combination, it will take so much time to disclose username and password of RouterOS.






MikroTik RouterOS has three types of login users. These are read, write and full permission user. Read permission users cannot do anything in RouterOS configuration. But can read anything. So, we should be careful enough to set strong username and password for read permission user. Write permission users can alter RouterOS configuration. So, we should be more careful to set strong username and password for the write permission users. It will also be best practice to limit write permission user access from specific IP addresses. Full permission users can do anything in RouterOS. So, we should pay special care to set strong username and password for the full permission users. Never forget to limit full permission user access from specific IP addresses.




Login user can easily be made strong by using long character username and password. It is best practices to use password more than 10 characters long and to use character, numeric and alpha numeric values in password.




Applying User Access from Specific IP Address




MikroTik RouterOS has an awesome feature to limit user access from specific IP address. If we apply IP based user access restriction, user will only be able to login from specific IP addresses. So, user will be secure and hackers will hardly be able to login using user credential.




It is best practice to enable IP based user access for the full permission users and also write permission users. The following steps will show how to apply IP based user access in MikroTik RouterOS.







  • Login MikroTik Router using Winbox with full permission user.
  • Go to System > Users menu item. User List windows will be appeared.
  • Click on Users tab and then double click on any user who will be restricted by IP address. User property window will be appeared.
  • From user property windows, click on Allowed Address input box and put your desired IP Address or IP Block from where user will be permitted.
  • Click Apply and OK button.




Applying IP Based User Access in MikroTik RouterOS
Applying IP Based User Access in MikroTik RouterOS




The user will now be restricted and can only be accessible from the desired IP address. Similarly we can enable IP based access for the other users.




Besides enabling IP based user restriction we should be careful enough to restrict login services from specific IP address. Then, MikroTik RouterOS will be more harder but don’t forget to write down applied restriction. If you forget your applied policy, you will never access RouterOS.




How to secure MikroTik RouterOS login users by enabling IP based user access has been discussed in this article. I hope, you will now be able to harden RouterOS login users from the hackers and keep safe. However, if you face any confusion to apply IP based user restriction, feel free to discuss in comment or contact me from Contact page. I will try my best to stay with you.



2021-02-19T12:09:34
MikroTik RouterOS Hardening Guidelines