Админские угодья
1.46K subscribers
458 photos
40 videos
220 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
RustScan – Инструмент для быстрого сканирования портов

Данный проект может похвастаться высокой скоростью работы(Сканирует все 65 тыс. портов за 3 секунды), гибкой расширяемостью и адаптивным методом работы.

https://github.com/RustScan/RustScan
2
📌 Fail2Ban — это утилита для защиты серверов от брутфорс-атак и других видов несанкционированного доступа путем временной блокировки IP-адресов.

1. Установка Fail2Ban
Debian/Ubuntu:

sudo apt update && sudo apt install fail2ban -y

CentOS/RHEL:

sudo yum install epel-release -y
sudo yum install fail2ban -y

Arch Linux:

sudo pacman -S fail2ban




2. Управление сервисом
Запуск и включение Fail2Ban

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Перезапуск и проверка статуса

sudo systemctl restart fail2ban
sudo systemctl status fail2ban




3. Конфигурация Fail2Ban
Файл конфигурации по умолчанию:

/etc/fail2ban/jail.conf

Рекомендуется создать локальную копию:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Редактировать:

sudo nano /etc/fail2ban/jail.local


Основные параметры

[DEFAULT]
bantime = 10m # Время бана (10 минут)
findtime = 10m # Временной промежуток для поиска нарушений
maxretry = 5 # Количество неудачных попыток до блокировки
ignoreip = 127.0.0.1/8 # IP-адреса, которые не будут заблокированы




4. Настройка фильтров
Фильтры хранятся в /etc/fail2ban/filter.d/.
Пример фильтра sshd.conf (`/etc/fail2ban/filter.d/sshd.conf`):

[Definition]
failregex = ^%(__prefix_line)sFailed password for .* from <HOST> port \d+ ssh2
ignoreregex =




5. Настройка jail для SSH
Файл /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log # Для Debian/Ubuntu
# logpath = /var/log/secure # Для CentOS/RHEL
maxretry = 3
bantime = 1h




6. Перезапуск и проверка работы

sudo systemctl restart fail2ban
sudo fail2ban-client status


Проверить конкретный jail:

sudo fail2ban-client status sshd




7. Разблокировка IP
Список заблокированных IP:

sudo fail2ban-client status sshd

Разблокировать IP:

sudo fail2ban-client set sshd unbanip 192.168.1.100




8. Логирование и отладка
Просмотр журнала Fail2Ban:

sudo journalctl -u fail2ban --no-pager

Лог-файл:

sudo tail -f /var/log/fail2ban.log




9. Полезные команды
Блокировка IP вручную

sudo fail2ban-client set sshd banip 192.168.1.200

Добавление в белый список (whitelist)
Добавьте IP в ignoreip в /etc/fail2ban/jail.local:

ignoreip = 127.0.0.1/8 192.168.1.100

Удаление бана с IP

sudo fail2ban-client set sshd unbanip 192.168.1.100

Удаление всех банов

sudo fail2ban-client set sshd unban --all




10. Автозапуск после перезагрузки

sudo systemctl enable fail2ban




11. Интеграция с UFW (Ubuntu)
Если используется UFW:

sudo nano /etc/fail2ban/jail.local

Добавьте:

[sshd]
enabled = true
backend = auto
port = ssh
filter = sshd
banaction = ufw

Перезапустите Fail2Ban:

sudo systemctl restart fail2ban


Эта шпаргалка содержит основные команды и конфигурации для защиты сервера от атак с помощью Fail2Ban
👍43
Наглядное руководство по туннелированию SSH и переадресации портов

Если говорить коротко, то я жалею, что не знал о пробросе портов и туннелировании раньше. В этой статье я пытаюсь лучше понять это и поделиться с вами некоторым опытом и советами.
Темы: сценарии использования, конфигурация, SSH jumphosts, локальная/удаленная/динамическая переадресация портов и ограничения

https://ittavern.com/visual-guide-to-ssh-tunneling-and-port-forwarding/
3
Утилиты на PowerShell для системных администраторов

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

https://habr.com/ru/articles/799463/

https://github.com/Sync1er/ChernigovEugeniyUtilities
7
Деление сети на подсети: шпаргалка
6🆒4👍2
ArcherySec — open-source инструмент, который позволяет проводить сканирование инфраструктуры

export TIME_ZONE='Asia/Kolkata'
git clone https://github.com/archerysec/archerysec.git
cd archerysec
NAME=User [email protected] PASSWORD=admin@123A bash setup.sh
./run.sh


ArcherySec интегрируется с 80+ коммерческими и открытыми инструментами и имеет удобный ArcherySec CLI — локально развертываемый инструмент командной строки, предназначенный для запуска на любом хосте Linux.

https://github.com/archerysec/archerysec
2
Установка Microsoft Office 2024 на Mac или обновление до последнего, поддерживаемого версией MacOS

Недавно я описал простой процесс загрузки последнего Microsoft Office с сайта Microsoft и его активации для Windows 10/11. До этого рассказывал более технические детали, оказавшимися читателям интересными, но сложноватыми. Один из вопросов, регулярно задаваемых в комментариях, был про Microsoft Office для Mac. Сейчас я расскажу, как иметь последнюю версию и не думать про активацию, поговорим о том, что делать тем, у кого давно установлена версия 2016, 2019 или 2021, следует ли думать про 2024 и как обновляться. Также в конце статьи расскажу о способе решения проблем с Microsoft Office, позволяющем чинить неработающую инсталляцию. Данная статья не техническая, в ней много картинок и рассуждений о том, когда, что и как устанавливать. Не пропагандирую ни решения Microsoft Office, ни его пиратства, просто рассказываю, как установить его при желании, без всяких торрентов.

Итак, для начала о версиях Microsoft Office для Mac. Исторически версии для Mac выходили на год позднее версий для Windows и несли в своем названии год выпуска, отличный от того, что у Windows версии. Например, Office 2004 для Mac (версия 11.0) вышел в мае 2004, на год позднее чем Office 2003 для Windows (тоже версия 11.0), вышедший в октябре 2003. Office 2008 для Mac (версия 12.0) вышла через год после Office 2007; Office 2011 для Mac (версия 14.0) через полгода после Office 2010. Далее для Windows Microsoft переключился на Click2Run технологию, и версии для Mac стали выходить практически одновременно и нести то же имя, что версии для Windows. Начиная с Office 2016 внутренняя версия продукта замерла на 16.x и на Windows и на Mac, продукт обновлялся, получал новые возможности и исправления, и в зависимости от купленной вами лицензии вы получали тот или иной набор возможностей.

https://habr.com/ru/companies/timeweb/articles/840166/
👍42
Шпаргалка по командам Docker
👍3
Шпаргалка по PowerShell


Основные команды
- Get-Help <команда> – получить справку по команде
- Get-Command – список доступных команд
- Get-Command -Module <модуль> – команды из конкретного модуля
- Get-Alias – список псевдонимов команд
- Get-Process – список запущенных процессов
- Get-Service – список служб

Навигация по файловой системе
- Get-Location – текущий путь
- Set-Location <путь> – перейти к каталогу
- Get-ChildItem или ls – просмотр содержимого каталога
- New-Item -Path <путь> -Name <имя> -ItemType <тип> – создать файл или папку

Работа с файлами и папками
- Copy-Item -Path <источник> -Destination <назначение> – копировать файл/папку
- Move-Item -Path <источник> -Destination <назначение> – переместить файл/папку
- Remove-Item -Path <путь> – удалить файл/папку
- Rename-Item -Path <путь> -NewName <новое имя> – переименовать файл/папку

Работа с текстом и выводом
- Write-Output "текст" – вывод текста
- Write-Host "текст" – вывод текста на экран
- Read-Host -Prompt "вопрос" – ввод данных от пользователя
- Get-Content <файл> – чтение содержимого файла
- Set-Content <файл> – запись в файл
- Add-Content <файл> – добавление текста в файл

Переменные
- $<имя_переменной> = значение – создание переменной
- $var += значение – добавление к значению переменной
- $null – пустое значение

Условия и циклы
- if (<условие>) { <действие> } – условие if
- foreach ($item in $array) { <действие> } – цикл foreach
- while (<условие>) { <действие> } – цикл while

Работа с процессами и службами
- Start-Process <программа> – запуск программы
- Stop-Process -Name <имя> – завершение процесса
- Start-Service <служба> – запуск службы
- Stop-Service <служба> – остановка службы

Фильтрация и сортировка
- Where-Object { <условие> } – фильтрация объектов
- Sort-Object <свойство> – сортировка объектов

Примеры:
1. Получение списка файлов:

Get-ChildItem -Path "C:\папка"


2. Копирование файла:

Copy-Item -Path "C:\путь\файл.txt" -Destination "D:\копия\файл.txt"


3. Вывод чисел от 1 до 10:

for ($i = 1; $i -le 10; $i++) { Write-Output $i }


4. Фильтрация процессов по имени:

Get-Process | Where-Object { $_.Name -eq "notepad" }
4
💡Советы по написанию и отладке Bash скриптов

Комментарии
Используйте комментарии для объяснения кода. Это поможет вам и другим разработчикам понять, что делает скрипт. Комментарии начинаются с символа #.



#!/bin/bash
# This script prints the current date and time
echo "Current date and time: $(date)"


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


#!/bin/bash -x
echo "Debugging mode enabled"


Логирование
Записывайте важные события и ошибки в лог-файлы для последующего анализа. Это помогает отслеживать работу скрипта и выявлять проблемы.


#!/bin/bash
LOG_FILE="/path/to/logfile.log"
echo "Script started at $(date)" >> "$LOG_FILE"



Обработка ошибок
Используйте команды set -e и trap для обработки ошибок. Команда set -e завершает выполнение скрипта при ошибке, а команда trap позволяет выполнять команды при возникновении определенных событий.


#!/bin/bash
set -e
trap 'echo "An error occurred. Exiting..."' ERR
echo "Starting script..."
# Your script commands here


Использование функций
Разделяйте код на функции для улучшения читаемости и повторного использования. Функции позволяют структурировать код и делать его более понятным.


#!/bin/bash
function greet {
local name=$1
echo "Hello, $name!"
}
greet "John"
👍42
Шпаргалка по RAID

mdadm — утилита для работы с программными RAID-массивами различных уровней. В данной инструкции рассмотрим примеры ее использования.

Информация о RAID
cat /proc/mdstat - состояние всех RAID
mdadm -D /dev/md0 - подробная инфа о конкретном RAID
lsblk - список дисков с разделами, местом, типом
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 на md0
mount /dev/md0 /mnt - разово примонтировать md0 к /mnt


nano /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/sde

mdadm -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
👍4
Утилита для бэкапов Borgbackup

Дедуплицирующий архиватор с сжатием и защищенным шифрованием.

BorgBackup дает вам:
Экономия места при хранении резервных копий.
Безопасное, аутентифицированное шифрование.
Сжатие: lz4, zstd, zlib, lzma или без него.
Возможность монтирования резервных копий с помощью FUSE.
Простая установка на различных платформах: Linux, macOS, BSD, ...
Свободное программное обеспечение (лицензия BSD).
Поддерживается большим и активным сообществом разработчиков с открытым исходным кодом.

GitHub https://github.com/borgbackup/borg

Demo https://www.borgbackup.org/demo.html
👍31
TCP vs UDP

Приведу 7 отличий, которые было бы неплохо знать.

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

https://habr.com/ru/articles/732794/
👍42
Как удалить файл с именем -rf?

Удаление файла с именем -rf в UNIX/Linux может быть немного сложным, потому что -rf может быть воспринято как опция команды rm. Чтобы удалить файл с таким именем, можно использовать один из следующих способов:

1. Использовать путь к файлу
Укажите полный или относительный путь к файлу, используя ./ перед именем файла:

rm ./-rf

Это укажет командной строке, что -rf — это имя файла, а не параметр.

2. Использовать параметр `--`
Параметр -- сообщает команде rm, что все последующие аргументы следует трактовать как имена файлов, даже если они начинаются с -.

rm -- -rf


Оба этих метода помогут удалить файл с именем -rf безопасно.
2🔥2
SSH под капотом
👍4
📌 Мониторинг нагрузки на CPU в реальном времени

Часто нужно быстро проверить загрузку процессора на сервере, не прибегая к сложным инструментам. Вот простой скрипт на Bash, который поможет отслеживать нагрузку на CPU в реальном времени с обновлением каждые 2 секунды!


#!/bin/bash

echo "Мониторинг загрузки CPU (нажмите Ctrl+C для выхода)"
while true; do
echo -n "CPU: "
mpstat 1 1 | awk '/Average:/ {printf "%.2f%%\n", 100 - $NF}'
sleep 2
done


Как работает?
- Использует команду mpstat для получения загрузки процессора.
- Вычисляет процент загруженности, вычитая idle-процент из 100.
- Выводит результат в удобочитаемом формате.
- Обновляется каждые 2 секунды.

Как запустить?
1️⃣ Установите пакет sysstat, если его нет:

sudo apt install sysstat # Для Debian/Ubuntu
sudo yum install sysstat # Для CentOS/RHEL

2️⃣ Сделайте скрипт исполняемым:

chmod +x cpu_monitor.sh

3️⃣ Запустите:

./cpu_monitor.sh
3
Шпаргалка по управлению пользователями и группами в Linux

1. Добавление пользователя (useradd):
- Создание нового пользователя:

sudo useradd username

- Создание пользователя с домашним каталогом:

sudo useradd -m username


2. Установка и изменение пароля (passwd):
- Установка пароля для пользователя:

sudo passwd username

- Смена пароля текущего пользователя:

passwd


3. Управление привилегиями (sudo):
- Добавление пользователя в sudoers для получения привилегий администратора:

sudo usermod -aG sudo username

- Открытие файла конфигурации sudoers для редактирования:

sudo visudo


4. Управление группами (groups):
- Создание новой группы:

sudo groupadd groupname

- Добавление пользователя в группу:

sudo usermod -aG groupname username

- Удаление пользователя из группы:

sudo gpasswd -d username groupname

- Список групп, к которым принадлежит пользователь:

groups username
👍63