Как узнать, кто активно использует swap в Linux?
1️⃣ Проверка через
1. Откройте top
2. Нажмите f, затем выберите Swap (s)
3. Подтвердите q - появится колонка с потреблением swap
Однако top не всегда корректно отображает эти данные, поэтому в
2️⃣ Точный способ через
✏️ Bash-скрипт для проверки. Можно использовать простой скрипт, который покажет, какие процессы активно используют swap:
Этот скрипт проверяет VmSwap для каждого процесса и выводит общий объём использованного swap.
🌟 Быстрая проверка в одну команду. Если нет желания писать скрипты, можно просто выполнить:
Эта команда отобразит процессы, отсортированные по объёму используемого swap.
#linux #swap #monitoring
🧑💻 NetworkAdmin
top. В top по умолчанию нет колонки с использованием swap, но её можно включить:1. Откройте top
2. Нажмите f, затем выберите Swap (s)
3. Подтвердите q - появится колонка с потреблением swap
Однако top не всегда корректно отображает эти данные, поэтому в
htop колонку со swap вовсе убрали, чтобы не вводить пользователей в заблуждение./proc. Более надёжный способ – заглянуть в файлы /proc/$PID/smaps или /proc/$PID/status:/proc/$PID/smaps – самый точный, но требует сложных вычислений/proc/$PID/status – содержит суммарное значение в поле VmSwap, удобнее для быстрого анализа
#!/bin/bash
SUM=0
OVERALL=0
for DIR in $(find /proc/ -maxdepth 1 -type d -regex "^/proc/[0-9]+"); do
PID=$(basename $DIR)
PROGNAME=$(ps -p $PID -o comm --no-headers)
for SWAP in $(grep VmSwap $DIR/status 2>/dev/null | awk '{ print $2 }'); do
let SUM=$SUM+$SWAP
done
if (( $SUM > 0 )); then
echo "PID=$PID swapped $SUM KB ($PROGNAME)"
fi
let OVERALL=$OVERALL+$SUM
SUM=0
done
echo "Overall swap used: $OVERALL KB"
Этот скрипт проверяет VmSwap для каждого процесса и выводит общий объём использованного swap.
for file in /proc/*/status; do
awk '/VmSwap|Name/{printf $2 " " $3} END { print ""}' $file
done | sort -k 2 -n -r | less
Эта команда отобразит процессы, отсортированные по объёму используемого swap.
#linux #swap #monitoring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4
imap-backup - удобный инструмент для скачивания писем из любого IMAP ящика и сохранения их локально в формате mbox.Перенос почты: например, если нужно забрать письма из облачного сервиса.
Архивирование старых писем: можно скачать только письма за последние 3 года (или другой период) и хранить их локально.
Бэкап на случай утери доступа к облачным ящикам.
apt install rubygems -y
gem install imap-backup
imap-backup setup
Или создать конфиг вручную (
~/.imap-backup/config.json). Пример для Яндекса:
{
"version": "2.0",
"accounts": [
{
"username": "zabbix@networkadmin.ru",
"password": "pass",
"local_path": "/root/.imap-backup/zabbix_networkadmin.ru",
"folders": [],
"server": "imap.yandex.ru"
}
]
}
imap-backup скачивает письма в отдельный каталог.
Каждая IMAP-папка - это отдельный файл mbox.
Формат mbox можно легко открыть в Thunderbird с помощью ImportExportTools NG.
#backup #email
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
В Active Directory можно хранить фото пользователей, которое затем отображается в Outlook, Word, Excel, Lync, SharePoint и даже используется в качестве аватарки в Windows.
$photo = [byte[]](Get-Content C:\PS\admin_photo.jpg -Encoding byte)
Set-ADUser vvkuzmin -Replace @{thumbnailPhoto=$photo}
Теперь фото появится в поддерживаемых приложениях и в системе.
#windows #activedirectory
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Chisel - это удобный инструмент для создания HTTP-туннелей и проброса трафика через ограниченные сети. Он позволяет прокидывать TCP/UDP-соединения через HTTP/HTTPS, обходя firewall'ы и NAT. Полезен для удалённого администрирования, тестирования безопасности и обхода сетевых ограничений.
chisel server --port 8080 --reverse
chisel client http://server-ip:8080 R:3389:127.0.0.1:3389
Теперь можно подключаться к удалённому серверу по
localhost:3389.#network
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍16🔥4👌1
Пример функции с аргументами:
#!/bin/bash
log_message() {
local level="$1"
local message="$2"
echo "[$level] $message"
}
log_message "INFO" "Скрипт запущен"
log_message "ERROR" "Произошла ошибка"
Пример работы с массивами:
#!/bin/bash
servers=("server1" "server2" "server3")
for srv in "${servers[@]}"; do
echo "Подключаюсь к $srv..."
done
Разбираем JSON и получаем данные:
#!/bin/bash
json='{"user": "admin", "role": "root"}'
user=$(echo "$json" | jq -r '.user')
role=$(echo "$json" | jq -r '.role')
echo "Имя пользователя: $user"
echo "Роль: $role"
#bash
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
Если вы ищете простой и надежный способ бэкапа и восстановления Linux-систем, попробуйте ReaR (Relax and Recover). Этот инструмент позволяет создавать резервные копии как физических серверов, так и виртуальных машин, формируя загрузочный ISO-образ и архив данных.
apt install rear genisoimage syslinux nfs-common
Этот метод удобен, так как не требует остановки системы и работает без установки дополнительных агентов.
OUTPUT=ISO
OUTPUT_URL=nfs://192.168.13.50/backup
BACKUP=NETFS
BACKUP_URL=nfs://192.168.13.50/backup
BACKUP_PROG_EXCLUDE=("${BACKUP_PROG_EXCLUDE[@]}" '/media' '/var/crash')
Запуск бэкапа:
rear -v -d mkbackup
На выходе получаем файлы:
backup.tar.gz, rear-debian.iso, README
Запускаем восстановление:
rear -v -d recover
ReaR автоматически восстанавливает разметку дисков, LVM, файловые системы и сетевые настройки.
#linux #backup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤2😡1
В десктопных версиях Windows 10 и 11 существует лимит на максимальное количество одновременных сетевых подключений – 20 активных сессий. Если этот предел превышен (например, при расшаривании папки или сетевого принтера), появляется ошибка:
🚫 Дополнительные подключения к этому удаленному компьютеру сейчас невозможны, так как их число достигло предела.
Microsoft искусственно ограничивает использование десктопных версий Windows в качестве сервера, предлагая приобрести лицензию Windows Server, где подобных ограничений нет.
Просмотр активных подключений:
net session
Отключение всех сессий с конкретного IP:
net session \\192.168.21.11 /d /y
Сокращение таймаута автоматического отключения неактивных клиентов (по умолчанию 15 минут, можно снизить до 5):
net config server /autodisconnect:5
$maxSessions = 18 # Устанавливаем порог (лучше немного ниже лимита)
$activeSessions = (query session 2>$null | Measure-Object -Line).Lines
if ($activeSessions -ge $maxSessions) {
Write-Host "Превышено допустимое количество подключений! Отключаем неактивные сессии..."
Get-CimInstance Win32_ServerConnection | ForEach-Object {
Net Session \\$_.ComputerName /DELETE /Y
Write-Host "Отключена сессия с $_.ComputerName"
}
} else {
Write-Host "Текущих подключений: $activeSessions. Все в пределах нормы."
}
Этот скрипт:
Проверяет количество активных подключений.
Если превышен заданный порог (например, 18 сессий), он отключает неактивные.
Выводит информацию в консоль.
Добавить исполнение в планировщик:
schtasks /create /tn "AutoCloseSessions" /tr "powershell.exe -File C:\Scripts\AutoCloseSessions.ps1" /sc minute /mo 5 /ru SYSTEM
#windows #sessions
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
В корпоративной среде возникают задачи ограничения доступа к определенным сайтам и приложениям. В Windows это можно реализовать несколькими способами: через GPO (Group Policy Object), PowerShell, брандмауэр (Windows Firewall) и DNS-фильтрацию. Сегодня разберем эти методы блокировки.
Конфигурация пользователя → Политики → Административные шаблоны → Компоненты Windows → Internet Explorer → Панель управления Интернет-параметрами
Set-Content -Path "C:\Windows\System32\drivers\etc\hosts" -Value "127.0.0.1 vk.com`n127.0.0.1 youtube.com" -Force
Этот скрипт можно развернуть через GPO при входе пользователя в систему.
Добавляем правило в брандмауэр Windows для блокировки сайтов:
New-NetFirewallRule -DisplayName "Block Facebook" -Direction Outbound -Action Block -RemoteAddress "157.240.0.0/16"
Этот метод хорош тем, что работает даже в Chrome, Yandex и других браузерах.
$ips = [System.Net.Dns]::GetHostAddresses("youtube.com") | Select-Object IPAddressToString
New-NetFirewallRule -DisplayName "Block YouTube" -Direction Outbound -Action Block -RemoteAddress $ips.IPAddressToString
Конфигурация пользователя → Административные шаблоны → Система
Конфигурация компьютера → Политики → Настройки Windows → Параметры безопасности → Политики ограничения программ
Добавляем правило для C:\Users*\AppData\Local\Telegram Desktop.
$blockedApps = @("telegram.exe", "chrome.exe", "utorrent.exe")
while ($true) {
Get-Process | Where-Object { $_.ProcessName -in $blockedApps } | Stop-Process -Force
Start-Sleep -Seconds 5
}
Этот скрипт можно добавить в автозагрузку через GPO или Task Scheduler.
New-AppLockerPolicy -Xml "C:\Policies\AppLocker.xml" -RuleCollectionType Executable
Можно указать список разрешенных программ, и все остальные просто не запустятся.
#windows #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Удаление файлов - дело секундное, но восстановление их может быть нетривиальной задачей. В файловых системах ext4 и XFS удаленные файлы могут оставаться на диске до тех пор, пока их блоки не будут перезаписаны. Поговорим про основные способы восстановления.
extundelete позволяет восстановить файлы, если файловая система не была перезаписана.Установка:
sudo apt install extundelete
Размонтируем диск (например, /dev/sdb1):
sudo umount /dev/sdb1
Восстановим все удаленные файлы:
sudo extundelete /dev/sdb1 --restore-all
Или восстановим конкретный файл:
sudo extundelete /dev/sdb1 --restore-file /home/user/deleted.txt
Файлы будут сохранены в каталоге RECOVERED_FILES.
Открываем диск:
sudo debugfs /dev/sdb1
Показываем последние удаленные файлы:
lsdel
Восстанавливаем файл по inode:
dump <номер inode> recovered_file.txt
Установим утилиту:
git clone https://github.com/ianka/xfs_undelete.git
cd xfs_undelete
make
sudo make install
Запускаем сканирование диска и восстановление файлов:
sudo xfs_undelete -d /dev/sdb1 -o /mnt/recovery
Все найденные файлы окажутся в
/mnt/recovery.#linux #recovery
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
ioping - это удобный инструмент для проверки производительности дисков в Linux. Работает по принципу ping, но для дисковой подсистемы: позволяет измерить задержки ввода-вывода (I/O latency), IOPS и скорость последовательного чтения. Утилита есть в стандартных репозиториях большинства дистрибутивов.
sudo apt install ioping#для Debian/Ubuntu
sudo yum install epel-release && sudo yum install ioping#для CentOS
sudo pacman -S ioping#для Arch Linux
ioping .
4 KiB <<< . (ext4 /dev/sda2 19.0 GiB): request=3 time=3.54 ms
4 KiB <<< . (ext4 /dev/sda2 19.0 GiB): request=4 time=3.68 ms
Это аналог ping, но показывает время выполнения дисковых операций.
ioping -R /dev/sda
21.6 k requests completed in 2.93 s, 84.5 MiB read, 7.38 k iops, 28.8 MiB/s
Параметры:
-R - стресс-тест диска для оценки его IOPS.
-c 10 - ограничение на 10 запросов (по умолчанию тест идет бесконечно).
ioping -RL /dev/sda
8.63 k requests completed in 2.79 s, 2.11 GiB read, 3.10 k iops, 774.3 MiB/s
Параметры:
-RL - измерение скорости последовательного чтения.
-s 64k - размер блока (по умолчанию 4 KiB).
ioping -c 10 -D /tmp
Флаг -D указывает ioping работать в RAM-диске /tmp, что полезно для диагностики производительности оперативной памяти.
-c N - ограничение на N запросов.
-s SIZE - размер блока (по умолчанию 4 KiB).
-q - тихий режим, без вывода каждого запроса.
-i TIME - интервал между запросами (например, -i 0.2s).
-B - вывод в формате CSV (удобно для логов).
#linux #ioping #storage
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Автоматическое монтирование сетевых папок через GPO
Чтобы автоматически монтировать сетевые папки с файлового сервера в качестве сетевых дисков, можно использовать предпочтения групповых политик (GPP).
📎 Основные возможности:
📍 Подключение сетевых дисков в зависимости от групп безопасности AD.
📍 Автоматическое назначение дисков для отделов и отдельных пользователей.
📍 Возможность подключения личного диска для каждого сотрудника.
👥 Гибкая настройка по группам
Например, можно настроить так, чтобы у всех сотрудников одного отдела автоматически подключалась папка с общими документами. Для этого достаточно добавить пользователя в соответствующую группу AD, и при следующем входе в систему у него появится нужный сетевой диск.
🔒 Персональные диски
Через GPO можно подключать не только общие, но и персональные диски для каждого сотрудника, например, для хранения личных документов.
Такой подход автоматизирует управление сетевыми ресурсами и избавляет от необходимости вручную подключать диски каждому пользователю.
#windows #network
🧑💻 NetworkAdmin
Чтобы автоматически монтировать сетевые папки с файлового сервера в качестве сетевых дисков, можно использовать предпочтения групповых политик (GPP).
Например, можно настроить так, чтобы у всех сотрудников одного отдела автоматически подключалась папка с общими документами. Для этого достаточно добавить пользователя в соответствующую группу AD, и при следующем входе в систему у него появится нужный сетевой диск.
Через GPO можно подключать не только общие, но и персональные диски для каждого сотрудника, например, для хранения личных документов.
Такой подход автоматизирует управление сетевыми ресурсами и избавляет от необходимости вручную подключать диски каждому пользователю.
#windows #network
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11😁1
Windows Subsystem for Linux (WSL) позволяет запускать Linux-приложения прямо в Windows, включая консольные утилиты, серверные сервисы и даже графические программы. Разберём, как настроить WSL и запускать Linux-приложения через PowerShell.
wsl --install
После этого система скачает и установит последнюю версию Ubuntu. Если WSL уже установлен, можно обновить ядро:
wsl --update
wsl ls -la
wsl uname -a
wsl cat /etc/os-release
wsl htop # Мониторинг процессов
wsl python3 # Запуск Python
Графические приложения (если установлен WSLg) можно запускать так:
wsl firefox
wsl /bin/bash -c "./mynoscript.sh"
wsl -d Ubuntu -- /etc/init.d/ssh start
#WSL #linux #windows
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤2
Suricata и Snort - это системы обнаружения и предотвращения вторжений (IDS/IPS), которые используют сигнатуры для детектирования атак. Однако стандартные правила могут не покрывать все возможные угрозы, поэтому часто требуется писать собственные сигнатуры.
Заголовка (определяет тип трафика)
Опций (описывают условия срабатывания)
Пример базовой сигнатуры:
alert tcp any any -> any 80 (msg:"Possible Web Exploit"; content:"cmd="; nocase; sid:1000001; rev:1;)
alert - срабатывает как оповещение
tcp any any -> any 80 - трафик по TCP с любого IP и порта на любой IP, но только на порт 80
content:"cmd="; nocase; - ищет в пакете строку "cmd=", регистр не учитывается
sid:1000001; - уникальный ID сигнатуры
alert tcp any any -> any 80 (msg:"SQL Injection Attempt"; content:"UNION SELECT"; nocase; sid:1000002; rev:1;)
Если в HTTP-трафике будет найдено UNION SELECT, правило сработает.
Пример сигнатуры для обнаружения SSH-брутфорса (5 неудачных попыток за 60 секунд):
alert tcp any any -> any 22 (msg:"SSH Brute Force Attempt"; flags:S; threshold:type threshold, track by_src, count 5, seconds 60; sid:1000003; rev:1;)
nano /etc/suricata/rules/custom.rules
Добавляем сигнатуры и обновляем конфигурацию:
suricata-update
Перезапускаем сервис:
systemctl restart suricata
nano /etc/snort/rules/local.rules
Добавляем сигнатуру и проверяем конфигурацию:
snort -T -c /etc/snort/snort.conf
Перезапускаем Snort:
systemctl restart snort
#network #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
При работе в терминале можно столкнуться с командами, о которых мало информации в man-страницах или которые не являются бинарниками. Один из таких примеров -
fc.history, но есть ещё команда fc, которая делает примерно то же самое:
# fc -l -5 # Покажет последние 5 команд
# history 5 # Тоже покажет последние 5 команд
На первый взгляд, непонятно, чем fc лучше или отличается от history. Попробуем разобраться, что это вообще за команда.
man fc
No manual entry for fc
which fc
Man-страницы нет и бинарника тоже.
alias | grep fc
Нет, алиаса тоже нет.
type fc
fc is a shell builtin
fc оказывается встроенной командой в оболочку Bash, как и pwd, cd, history, type.
1. Сначала проверяются алиасы.
2. Затем встроенные в оболочку команды.
3. Только потом ищутся бинарники в $PATH (слева направо по списку директорий).
Это объясняет, почему при наличии нескольких версий Python или PHP выполняется конкретная версия – она первая в $PATH.
alias history='echo "Здесь истории нет"'
history
Здесь истории нет. Теперь history не работает, пока не удалить алиас:
unalias history
Чтобы проверить, какие версии одной и той же команды существуют в системе, используем:
type -a history
history is aliased to `echo "Здесь истории нет"'
history is a shell builtin
#linux #history
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥2❤1🤔1
Установка Docker Engine в WSL2 позволяет использовать контейнеризацию на Windows 10 и 11 без необходимости установки Docker Desktop. Это полезно для пользователей редакций Windows Home, где Docker Desktop недоступен.
Совместимость с Windows Home: Docker Engine работает в WSL2 даже на домашних редакциях Windows.
Экономия ресурсов: Отсутствие необходимости в виртуальных машинах Hyper-V снижает потребление оперативной памяти и дискового пространства.
Отсутствие лицензионных ограничений: Docker Engine в WSL2 не требует дополнительной лицензии для коммерческого использования.
wsl --list
wsl --set-default-version 2```
wsl.exe
sudo apt-get update && sudo apt-get upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Предупреждения об установке Docker в среде WSL можно игнорировать.
sudo usermod -aG docker $USER
docker --version
docker compose version
cat /etc/wsl.conf
Если нет, добавьте следующие строки:
[boot]
systemd=true
Затем активируйте сервис Docker:
sudo systemctl enable --now docker.service
systemctl status docker.service
docker run hello-world
При успешном выполнении вы увидите приветственное сообщение от Docker.
#docker #windows #WSL2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
DNS-туннели (iodine, dnscat2) – передача данных через DNS-запросы
ICMP-туннели (ptunnel, Hans) – трафик скрывается в ICMP Echo Request/Reply
HTTP/HTTPS-туннели (HTTPTunnel, tunna) – обфускация трафика через веб-запросы
TCP/UDP-туннели (sshuttle, UDP2Raw) – маскировка через стандартные порты
VPN over TLS (SoftEther, OpenVPN over TCP 443) – имитация обычного HTTPS-трафика
Резкое увеличение запросов к внешним DNS-серверам
Подозрительная активность ICMP (слишком много echo-request/response)
Долгие и нестандартные HTTP-запросы
Сессии с высоким временем жизни и постоянным низким трафиком
Инструменты: Suricata, Zeek, Snort
Ищем признаки туннелирования в пакетах и заголовках
DNS-туннели часто используют случайные поддомены (например, abcd1234.tunnel.com)
Решение: Pi-hole, SecurityTrails, Cisco Umbrella
Отключаем ICMP для ненужных хостов
Запрещаем внешний DNS кроме корпоративного
Разрешаем выход только через прокси
Запрещаем нестандартные порты (например, 53/UDP наружу)
Suricata/Snort – анализируем трафик на предмет туннелирования
pfSense + Snort – фильтрация и блокировка известных схем туннелирования
Zeek (Bro) – пассивный мониторинг сетевой активности
SIEM-системы (ELK, Splunk, Wazuh) – корреляция подозрительных событий
Блокируем OpenVPN, WireGuard, Shadowsocks, SoftEther
Настраиваем PAC-файл с жесткими правилами обхода
#network #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14👎4🤡2🔥1