Media is too big
VIEW IN TELEGRAM
Защита от подбора пароля на устройствах MikroTik
Если у вас есть маршрутизатор MikroTik с белым IP-адресом и открытым стандартным портом SSH, вероятно, вы заметили, что журнал заполнен неудачными попытками входа в систему. В большинстве случаев это происходит из-за неумолимых попыток брутфорса SSH со стороны злоумышленников. Сегодня я расскажу вам, как можно защитить себя от подобных атак на устройствах MikroTik. Мы создадим что-то аналогичное fail2ban.
источник
👉 @sysodminof
Если у вас есть маршрутизатор MikroTik с белым IP-адресом и открытым стандартным портом SSH, вероятно, вы заметили, что журнал заполнен неудачными попытками входа в систему. В большинстве случаев это происходит из-за неумолимых попыток брутфорса SSH со стороны злоумышленников. Сегодня я расскажу вам, как можно защитить себя от подобных атак на устройствах MikroTik. Мы создадим что-то аналогичное fail2ban.
источник
👉 @sysodminof
Terminus (Tabby) – Кросс-платформенный терминал с возможностью тонкой конфигурации.
Данный терминал имеет интегрированный ssh-клиент - что делает его превосходной заменой стандартного PowerShell или PuTTY на Windows.
https://github.com/Eugeny/tabby
👉 @sysodminof
Данный терминал имеет интегрированный ssh-клиент - что делает его превосходной заменой стандартного PowerShell или PuTTY на Windows.
https://github.com/Eugeny/tabby
👉 @sysodminof
🧠 Что делает команда exec в bash — и зачем она нужна?
Многие слышали о exec, но используют редко. А зря! Это мощный инструмент, особенно в скриптах и системном администрировании.
🔹 Что делает exec?
Она заменяет текущий процесс новым, без создания дочернего. То есть, вместо запуска новой программы — текущий процесс «перевоплощается» в неё.
Простой пример:
exec topВ этом случае оболочка bash будет заменена на top, и когда вы закроете top, сессия завершится.
🛠 Где это может пригодиться:
1. В systemd-юнитах — при запуске сервиса через скрипт:
#!/bin/bash
exec /usr/bin/myapp
Это позволит системе правильно отслеживать основной процесс.
2. В контейнерах (например, Docker) — если вы запускаете скрипт в качестве ENTRYPOINT, используйте exec, чтобы сигналы (например, SIGTERM) корректно передавались вашему приложению.
3. Для перенаправления ввода/вывода:
exec >> /var/log/mynoscript.log 2>&1
Всё, что будет выведено в stdout и stderr после этой строки — пойдёт в лог.
⚡ exec не делает магии, но помогает делать вещи правильно. Особенно там, где важна замена PID и корректная работа сигналов.
👉 @sysodminof
Многие слышали о exec, но используют редко. А зря! Это мощный инструмент, особенно в скриптах и системном администрировании.
🔹 Что делает exec?
Она заменяет текущий процесс новым, без создания дочернего. То есть, вместо запуска новой программы — текущий процесс «перевоплощается» в неё.
Простой пример:
exec topВ этом случае оболочка bash будет заменена на top, и когда вы закроете top, сессия завершится.
🛠 Где это может пригодиться:
1. В systemd-юнитах — при запуске сервиса через скрипт:
#!/bin/bash
exec /usr/bin/myapp
Это позволит системе правильно отслеживать основной процесс.
2. В контейнерах (например, Docker) — если вы запускаете скрипт в качестве ENTRYPOINT, используйте exec, чтобы сигналы (например, SIGTERM) корректно передавались вашему приложению.
3. Для перенаправления ввода/вывода:
exec >> /var/log/mynoscript.log 2>&1
Всё, что будет выведено в stdout и stderr после этой строки — пойдёт в лог.
⚡ exec не делает магии, но помогает делать вещи правильно. Особенно там, где важна замена PID и корректная работа сигналов.
👉 @sysodminof
Media is too big
VIEW IN TELEGRAM
Деление IP сети на подсети при помощи маски легко и быстро. Наглядный способ!
Как выделить подсеть нужного размера из большой IP сети? Как быстро и наглядно вычислить все адреса компьютеров в нужной подсети, маску для подсети нужного размера, как найти первые и последние адреса формируемых подсетей? Как выделить несколько подсетей разного размера? В этом видео вы найдете ответы на эти вопросы.
источник
👉 @sysodminof
Как выделить подсеть нужного размера из большой IP сети? Как быстро и наглядно вычислить все адреса компьютеров в нужной подсети, маску для подсети нужного размера, как найти первые и последние адреса формируемых подсетей? Как выделить несколько подсетей разного размера? В этом видео вы найдете ответы на эти вопросы.
источник
👉 @sysodminof
Не все логи одинаковы полезны: 3 истории из жизни
В своей статье я расскажу, как выявить проблемы в ПО, не имеющего исходного кода и написанного не вами, а так же как минимальными средствами выяснить, что происходит у вас в системе. Данный текст подойдет администраторам, где по условиям работы всё запрещено, а так же инженерам АСУТП, где систему приходится эксплуатировать в жестких рамках ИБ.
https://habr.com/ru/articles/790554/
👉 @sysodminof
В своей статье я расскажу, как выявить проблемы в ПО, не имеющего исходного кода и написанного не вами, а так же как минимальными средствами выяснить, что происходит у вас в системе. Данный текст подойдет администраторам, где по условиям работы всё запрещено, а так же инженерам АСУТП, где систему приходится эксплуатировать в жестких рамках ИБ.
https://habr.com/ru/articles/790554/
👉 @sysodminof
Media is too big
VIEW IN TELEGRAM
OpenSSH: Разбираем туннели
Мы с примерами разбираем прямые туннели, обратные и создаем SOCKS туннели для проксирования веб траффика.
источник
👉 @sysodminof
Мы с примерами разбираем прямые туннели, обратные и создаем SOCKS туннели для проксирования веб траффика.
источник
👉 @sysodminof
Как работает HTTPS?
Безопасный протокол передачи гипертекста
(HTTPS) - это расширение протокола передачи гипертекста (HTTP). HTTPS передает зашифрованные данные с использованием транспортного уровня безопасности (TLS). Если данные будут перехвачены в Интернете, все, что получит угонщик, - это двоичный код.
Как шифруются и дешифруются данные?
Шаг 1 - Клиент (браузер) и сервер устанавливают TCP-соединение.
Шаг 2 - Клиент отправляет серверу " client hello". Сообщение содержит набор необходимых алгоритмов шифрования (наборов шифров) и последнюю версию TLS, которую он может поддерживать. Сервер отвечает " server hello", чтобы браузер знал, может ли он поддерживать алгоритмы и версию TLS.
Затем сервер отправляет SSL-сертификат клиенту. Сертификат содержит открытый ключ, имя хоста, дату истечения срока действия и т. д. Клиент проверяет сертификат.
Шаг 3. После проверки SSL-сертификата клиент генерирует ключ сессии и шифрует его с помощью открытого ключа. Сервер получает зашифрованный ключ сеанса и расшифровывает его с помощью закрытого ключа.
Шаг 4 - Теперь, когда клиент и сервер владеют одним и тем же сеансовым ключом (симметричное шифрование), зашифрованные данные передаются по защищенному двунаправленному каналу.
Почему HTTPS переключается на симметричное шифрование при передаче данных? Есть две основные причины:
1. Безопасность: Асимметричное шифрование работает только в одну сторону. Это означает, что если сервер попытается отправить зашифрованные данные обратно клиенту, любой сможет расшифровать их с помощью открытого ключа.
2. Ресурсы сервера: Асимметричное шифрование добавляет довольно много математических накладных расходов. Оно не подходит для передачи данных в длительных сессиях.
👉 @sysodminof
Безопасный протокол передачи гипертекста
(HTTPS) - это расширение протокола передачи гипертекста (HTTP). HTTPS передает зашифрованные данные с использованием транспортного уровня безопасности (TLS). Если данные будут перехвачены в Интернете, все, что получит угонщик, - это двоичный код.
Как шифруются и дешифруются данные?
Шаг 1 - Клиент (браузер) и сервер устанавливают TCP-соединение.
Шаг 2 - Клиент отправляет серверу " client hello". Сообщение содержит набор необходимых алгоритмов шифрования (наборов шифров) и последнюю версию TLS, которую он может поддерживать. Сервер отвечает " server hello", чтобы браузер знал, может ли он поддерживать алгоритмы и версию TLS.
Затем сервер отправляет SSL-сертификат клиенту. Сертификат содержит открытый ключ, имя хоста, дату истечения срока действия и т. д. Клиент проверяет сертификат.
Шаг 3. После проверки SSL-сертификата клиент генерирует ключ сессии и шифрует его с помощью открытого ключа. Сервер получает зашифрованный ключ сеанса и расшифровывает его с помощью закрытого ключа.
Шаг 4 - Теперь, когда клиент и сервер владеют одним и тем же сеансовым ключом (симметричное шифрование), зашифрованные данные передаются по защищенному двунаправленному каналу.
Почему HTTPS переключается на симметричное шифрование при передаче данных? Есть две основные причины:
1. Безопасность: Асимметричное шифрование работает только в одну сторону. Это означает, что если сервер попытается отправить зашифрованные данные обратно клиенту, любой сможет расшифровать их с помощью открытого ключа.
2. Ресурсы сервера: Асимметричное шифрование добавляет довольно много математических накладных расходов. Оно не подходит для передачи данных в длительных сессиях.
👉 @sysodminof
👍1
Как отлаживать bash-noscript-ы по шагам
Мне всегда хотелось иметь возможность отлаживать bash-noscripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после
Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем
Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо
переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.
👉 @sysodminof
Мне всегда хотелось иметь возможность отлаживать bash-noscripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после
#!/bin/bash, чтоб скрипт можно было отлаживать по шагам#!/bin/bash
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем
Ctrl+C и выходим из отладки.Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо
Ctrl+Cпеременная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.
# Online Bash Shell.
# Code, Compile, Run and Debug Bash noscript online.
# Write your code in this editor and press "Run" button to execute it.
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3
echo "Hello World";
👉 @sysodminof
👍2🔥1
Docker Essentials
(Part 1) - Introduction
(Part 2) - What is Docker?
(Part 3) - Installing Docker on Windows 10, macOS, and Ubuntu
(Part 4) - Running Containers
(Part 5) - Making Containers Persist
(Part 6) - Accessing Containerized Apps
(Part 7) - Creating Images
👉 @sysodminof
(Part 1) - Introduction
(Part 2) - What is Docker?
(Part 3) - Installing Docker on Windows 10, macOS, and Ubuntu
(Part 4) - Running Containers
(Part 5) - Making Containers Persist
(Part 6) - Accessing Containerized Apps
(Part 7) - Creating Images
👉 @sysodminof
👍2
Скриптик переустановки пароля пользователя MikroTik
Скрипт интересен строкой преобразования кода символа из переменной
👉 @sysodminof
# Скрипт смены пароля пользователя
# только для исполнения в терминале ROS
# by Sertik 09/06/2020
{
:global EnterString do={
:local cont 0; :local string ""
:while ($cont!=13) do={
:local key ([:terminal inkey])
:if ($key!=13) do={
:local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]]
:set string ("$string"."$char")}
:set cont $key
}
:return $string}
;
:put "Please, enter Username:"
:local RegUser [$EnterString];
:put "";
:if ([:len [/user find disabled=no name=$RegUser]]!=0) do={:put "Ok, a user with this name was found"; :put "";
:put "Please, enter new password for this user:"
:local newPass [$EnterString];
[/user remove $RegUser];
[/user add name=$RegUser password=$newPass group=full];
:put "";
:put "The user has been re-created, the password has been changed";
:put ("New user`s password: "."$newPass");
:put "Don't forget to set up access restrictions based on ip addresses";
} else={:put ("User "."$RegUser "."not found"); :put "";
}
}
Скрипт интересен строкой преобразования кода символа из переменной
$key, сграбленного с клавиатуры терминала, в сам символ.:local char [[:parse "(\"\\$[:pick "0123456789ABCDEF" (($key >> 4) & 0xF)]$[:pick "0123456789ABCDEF" ($key & 0xF)]\")"]]👉 @sysodminof
👍2
Как пробросить порт в Linux на другой сервер
Необходимо пробросить с 8821 порта сервера 10.10.10.10 на 21 порт сервера 12.12.12.12:
👉 @sysodminof
Необходимо пробросить с 8821 порта сервера 10.10.10.10 на 21 порт сервера 12.12.12.12:
iptables -A FORWARD --dst 10.10.10.10 -p tcp --dport 8821 -j ACCEPT
iptables -A FORWARD --src 10.10.10.10 -p tcp --sport 8821 -j ACCEPT
iptables -t nat -A PREROUTING -d 10.10.10.10 -p tcp --dport 8821 -j DNAT --to-destination 12.12.12.12:21
iptables -t nat -A POSTROUTING -d 12.12.12.12 -p tcp --dport 21 -j SNAT --to-source 10.10.10.10:8821👉 @sysodminof
👍2
Шпаргалка по RAID
Информация о RAID
Сборка RAID
при получении ответа mdadm: Unrecognised md component device -
* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Создание файловой системы и монтирование массива
nano /etc/fstab, прописать
Восстановление RAID
Замена жесткого диска
При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded
Статус должен стать Rebuild Status : 40% complete и так до полного восстановления
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
Запасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
Добавить диск к массиву, расширить массив
Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.
Установка mdadm
Если каким-то образом в дистрибутиве нет этого пакета
Удаление массива
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:
* где
Затем очищаем суперблоки на всех дисках, из которых он был собран:
👉 @sysodminof
mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.Информация о RAID
cat /proc/mdstat - состояние всех RAIDmdadm -D /dev/md0 - подробная инфа о конкретном RAIDlsblk - список дисков с разделами, местом, типомdf -hT - свободное место, тип файловой системы, точки монтированияСборка RAID
mdadm —zero-superblock —force /dev/sd{b,c} - обнуление суперблоков на дисках sdb sdc (для удаления инфы о других RAID)при получении ответа mdadm: Unrecognised md component device -
/dev/sdb значит, что диск не использовался для RAID, продолжаемmdadm —create —verbose /dev/md0 -l 1 -n 2 /dev/sd{b,c}* где /dev/md0 — устройство RAID, которое появится после сборки; -l 1 — уровень RAID; -n 2 — количество дисков, из которых собирается массив; /dev/sd{b,c} — сборка выполняется из дисков sdb и sdc.
Создание файловой системы и монтирование массива
mkfs.ext4 /dev/md0 - создание файловой системы ext4 на md0mount /dev/md0 /mnt - разово примонтировать md0 к /mntnano /etc/fstab, прописать
/dev/md0 /mnt ext4 defaults 1 2 - постоянное монтирование, работает после перезагрузкиВосстановление RAID
Замена жесткого диска
При выходе из строя, команда mdadm -D /dev/md0 выдаст: State : clean, degraded
mdadm /dev/md0 —remove /dev/sdc - удалить сбойный дискmdadm /dev/md0 —add /dev/sde - добавить новый диск в массивСтатус должен стать Rebuild Status : 40% complete и так до полного восстановления
Пересборка массива
Если нам нужно вернуть ранее разобранный или развалившийся массив из дисков, которые уже входили в состав RAID, вводим:
mdadm —assemble —scan - команда сама найдет необходимую конфигурацию и восстановит RAID.mdadm —assemble /dev/md0 /dev/sdb /dev/sdc - с указанием из каких дисков пересобратьЗапасной диск (Hot Spare)
Если в массиве будет запасной диск для горячей замены, при выходе из строя одного из основных дисков, его место займет запасной.
mdadm /dev/md0 —add /dev/sdd - Диском Hot Spare станет тот, который просто будет добавлен к массивуДобавить диск к массиву, расширить массив
Добавление активного диска к RAID, который будет использоваться для работы, а не в качестве запасного.
mdadm /dev/md0 —add /dev/sdemdadm -G /dev/md0 —raid-devices=3 - расширяем RAID* в данном примере подразумевается, что у нас RAID 1 и мы добавили к нему 3-й диск.
Установка mdadm
Если каким-то образом в дистрибутиве нет этого пакета
apt-get install mdadmУдаление массива
Если нам нужно полностью разобрать RAID, сначала размонтируем и остановим его:
umount /mnt* где
/mnt — каталог монтирования нашего RAID.mdadm -S /dev/md0Затем очищаем суперблоки на всех дисках, из которых он был собран:
mdadm —zero-superblock /dev/sdb
mdadm —zero-superblock /dev/sdc
mdadm —zero-superblock /dev/sdd👉 @sysodminof
👍2
Файловый сервер SFTPGo
Полнофункциональный и высококонфигурируемый SFTP-сервер с дополнительной поддержкой HTTP/S, FTP/S и WebDAV - S3, Google Cloud Storage, Azure Blob
https://github.com/drakkan/sftpgo
👉 @sysodminof
Полнофункциональный и высококонфигурируемый SFTP-сервер с дополнительной поддержкой HTTP/S, FTP/S и WebDAV - S3, Google Cloud Storage, Azure Blob
https://github.com/drakkan/sftpgo
👉 @sysodminof
GitHub
GitHub - drakkan/sftpgo: Full-featured and highly configurable SFTP, HTTP/S, FTP/S and WebDAV server - S3, Google Cloud Storage…
Full-featured and highly configurable SFTP, HTTP/S, FTP/S and WebDAV server - S3, Google Cloud Storage, Azure Blob - drakkan/sftpgo
👍2
Диспетчер Hyper-V: топ-6 инструментов управления
Если вы отвечаете за управление Hyper-V в своей организации, вы должны знать о преимуществах и недостатках шести лучших инструментов управления Hyper-V. Сегодня поговорим о Hyper-V Manager, PowerShell, Windows Admin Center, System Center Virtual Machine Manager, ProHVM by Probus IT, Igiko Management Tools.
https://bookflow.ru/dispetcher-hyper-v-top-6-instrumentov-upravleniya/
👉 @sysodminof
Если вы отвечаете за управление Hyper-V в своей организации, вы должны знать о преимуществах и недостатках шести лучших инструментов управления Hyper-V. Сегодня поговорим о Hyper-V Manager, PowerShell, Windows Admin Center, System Center Virtual Machine Manager, ProHVM by Probus IT, Igiko Management Tools.
https://bookflow.ru/dispetcher-hyper-v-top-6-instrumentov-upravleniya/
👉 @sysodminof
👍2