NetworkAdmin.ru
4.78K subscribers
224 photos
26 videos
2 files
511 links
Авторский блог про сетевое и системное администрирование.

Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Download Telegram
🔍 Проверка контрольной суммы ISO-образа Windows: защита от подделок

Скачивание ISO-образов Windows с неофициальных источников может привести к установке модифицированных версий с вредоносным ПО. Для обеспечения безопасности рекомендуется проверять контрольные суммы файлов.

🏃 Проверка с помощью PowerShell. В PowerShell можно использовать командлет Get-FileHash для вычисления хеш-суммы файла:


Get-FileHash "C:\Path\to\your\file.iso" -Algorithm SHA256


По умолчанию используется алгоритм SHA256, но можно указать другие: SHA1, SHA384, SHA512, MD5.

⭐️ Проверка с помощью certutil. Также можно использовать встроенную утилиту certutil:


certutil -hashfile "C:\Path\to\your\file.iso" SHA256


📁 Сравнение с оригинальными хешами. Полученные хеш-суммы следует сравнить с официальными:

1. На сайте Visual Studio Downloads (требуется учетная запись Microsoft).
2. На ресурсе RG-Adguard, где можно искать по хешу.

🔎 Автоматическая проверка соответствия. Для автоматизации проверки можно использовать следующий скрипт в PowerShell:


$expectedHash = "c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d"
(Get-FileHash "C:\Path\to\your\file.iso" -Algorithm SHA256).Hash -eq $expectedHash


Если результат True, файл подлинный; если False - файл может быть поврежден или подделан.

#windows #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
Откуда Windows «знает», что файл из интернета?

Когда вы скачиваете файл из браузера, а потом открываете его свойства, Windows может предупредить: «Файл получен с другого компьютера и может быть небезопасным». Это происходит не случайно.

Как Windows узнаёт источник?

Файл, скачанный на NTFS-диск, получает специальную метку в альтернативном потоке данных (Alternate Data Stream, ADS) с именем Zone.Identifier. Эта метка добавляется браузером автоматически и никак не зависит от расширения — она будет даже у mp3, .txt или .jpg.


▪️ Посмотреть содержимое метки:


Get-Content -Path ".\hard_rock.mp3" -Stream Zone.Identifier


Или в Блокноте:


notepad.exe hard_rock.mp3:Zone.Identifier


▪️ Пример содержимого:


[ZoneTransfer]
ZoneId=3
ReferrerUrl=https://ya.ru
HostUrl=https://ya.ru/file.mp3


🌟 Что значит ZoneId:

0 - Мой компьютер
1 - Локальная интрасеть
2 - Доверенные сайты
3 - Интернет (по умолчанию для всего, что скачано)
4 - Ограниченные сайты


Даже если вы переименуете файл или перенесёте его, метка сохраняется. Некоторые антивирусы и скрипты используют эту информацию для усиленной проверки.

▪️ Как убрать предупреждение:

1. Через свойства файла → Разблокировать

2. Через PowerShell:


Unblock-File .\hard_rock.mp3


#windows #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥7🤔31
🔒 Безопасность Python-скриптов: как защитить код и данные

Python - язык простой и удобный, но в плане безопасности исходников у него есть слабое место: скрипты легко читаются, модифицируются и анализируются. Если ты разрабатываешь утилиту, обрабатываешь конфиденциальные данные или просто хочешь защититься от «любопытных», стоит продумать меры защиты. Разберём основные подходы:

1️⃣ Компиляция в байткод

Python автоматически компилирует .py в .pyc, но и их можно дизассемблировать. Более надёжный способ - сборка в .pyd/.so (динамическую библиотеку):


pip install cython
cythonize -i myscript.py


На выходе - скомпилированный бинарник. Исходный код спрятан, но не полностью защищён от реверса.

2️⃣ Шифрование и упаковка. Можно шифровать скрипты и расшифровывать их только в момент выполнения:

Использовать PyArmor, который шифрует байткод:


pip install pyarmor
pyarmor obfuscate myscript.py


Использовать Nuitka или PyInstaller - обфускация + упаковка в исполняемый файл:


pyinstaller --onefile myscript.py


3️⃣ Изоляция через виртуальное окружение. Размещай код в venv, где минимум привилегий и стороннего ПО.

Для чувствительных задач - запускай скрипты через Docker, изолируя переменные окружения и доступ к файловой системе.

4️⃣ Безопасное хранение секретов. Не храни API-ключи и пароли в коде:

📍 Используй .env файл + библиотеку python-dotenv
📍 Храни секреты в HashiCorp Vault, AWS SSM или аналогах
📍 Шифруй конфиги с GPG, если нужно хранить локально


Полной защиты от реверса не будет - Python не компилируемый в машинный код язык. Но затруднить анализ, защитить данные и повысить безопасность вполне реально.

#python #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122🔥1
👣 Как защищать API-интерфейсы

Три базовых, но эффективных подхода, которые стоит внедрить в любом API:

1️⃣ Rate Limiting - ограничение количества запросов. Ограничивает количество запросов от одного IP, токена или пользователя за определённый интервал времени. Защищает от: DDoS-атак, брутфорса, скрейпинга.

📍 В NGINX:


limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

location /api/ {
limit_req zone=api_limit burst=20 nodelay;
}


📍 В Express.js (Node.js):


const rateLimit = require("express-rate-limit");

const limiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 100
});

app.use("/api/", limiter);


2️⃣ CORS (Cross-Origin Resource Sharing). Механизм безопасности браузера, позволяющий указать, какие домены могут обращаться к API.

📍 Пример настройки CORS в Express.js:


const cors = require('cors');
app.use(cors({
origin: 'https://yourfrontend.com'
}));


Не забудьте запретить * в production - это дырка в безопасности.

3️⃣ Token-Based Access (JWT / OAuth2). Пользователь аутентифицируется, получает токен и использует его для доступа к API. Сервер проверяет подпись токена.

📍 Пример в Express.js:


const jwt = require('jsonwebtoken');

function authenticateToken(req, res, next) {
const token = req.headers['authorization']?.split(' ')[1];
if (!token) return res.sendStatus(401);

jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}


Итого:

Rate Limiting - спасает от злоупотреблений.
CORS - управляет доступом между доменами.
Token-based доступ - дает безопасность и гибкость.

Правильная комбинация этих механизмов - основа для защиты любого публичного API.

#API #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71
🔒 SELinux: как работает и стоит ли его включать

Security-Enhanced Linux (SELinux) - это механизм управления доступом на уровне ядра, разработанный NSA и Red Hat. Он добавляет ещё один уровень защиты поверх традиционной модели прав доступа в Linux и дает системе возможность жестко контролировать, кто и что может делать в ОС, даже если у процесса уже есть root-доступ.

SELinux реализует модель Mandatory Access Control (MAC) - обязательного управления доступом. В отличие от Discretionary Access Control (DAC), где владелец объекта определяет права, MAC применяет централизованные политики, которым обязаны следовать все процессы и пользователи.

Каждому процессу и файлу присваивается контекст безопасности. Контекст включает в себя:
📍 тип объекта (например, httpd_sys_content_t)
📍 роль и домен процесса (например, httpd_t)

SELinux определяет, может ли процесс с данным контекстом взаимодействовать с файлом по текущей политике. Если нет - доступ будет заблокирован, даже если пользователь - root.

▪️ Режимы работы SELinux:

Enforcing - политика активна, запрещенные действия блокируются
Permissive - действия не блокируются, но журналируются
Disabled - SELinux отключен


Проверить режим можно так:


getenforce


Или через:


sestatus


▪️ Когда стоит включать SELinux?

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

🔲 Но SELinux имеет крутую кривую обучения. Он может мешать "работать как привыкли", если не понимать, как он устроен. Ошибки конфигурации могут блокировать нужные процессы, а диагностика требует навыков чтения журналов (/var/log/audit/audit.log).

🌟 Совет: На старте используйте Permissive режим, чтобы изучить логи и не получить «белый экран» от nginx. Постепенно можно перейти в Enforcing, когда все отлажено.

Если безопасность - ваш приоритет, SELinux однозначно стоит включать. Но как и с любым инструментом, важно сначала его понять.

#SELinux #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93
🔎 Отслеживание изменений в системных группах и sudoers

В любой продвинутой системе администрирования важнейшая задача - контроль за правами пользователей. Добавление в группу sudo, изменение состава wheel, docker или других критичных групп может дать пользователю слишком много полномочий. И если такие изменения проходят незамеченными - это уже уязвимость. Разберемся, как отслеживать такие события в Linux.

1️⃣ Мониторинг файла /etc/sudoers и его include-директории. Файл sudoers и его конфиги в /etc/sudoers.d/ содержат правила доступа к sudo. Для мониторинга можно использовать:

▪️ auditd (если включен):


auditctl -w /etc/sudoers -p wa -k sudoers-change
auditctl -w /etc/sudoers.d/ -p wa -k sudoers-include


Потом смотрим:


ausearch -k sudoers-change
ausearch -k sudoers-include


▪️ inotify с помощью inotifywait:


inotifywait -m /etc/sudoers /etc/sudoers.d/ -e modify,create,delete


2️⃣ Контроль изменений групп и пользователей. Изменения групп (/etc/group) и паролей (/etc/passwd, /etc/shadow) тоже критичны. Подключаем auditd:


auditctl -w /etc/group -p wa -k group-change
auditctl -w /etc/gshadow -p wa -k group-shadow


И проверяем, кто добавлен в sudo:


grep sudo /etc/group


3️⃣ Логируем команды изменения групп. Изменения через usermod, gpasswd, adduser, deluser удобно отслеживать через auditd:


auditctl -a always,exit -F arch=b64 -S usermod -S groupadd -S groupdel -S gpasswd -k group-admin


4️⃣ Альтернатива - logwatch или ossec. Можно настроить инструменты централизованного логирования и получать уведомления при любых изменениях состава групп или конфигураций sudo. Например: Logwatch, OSSEC, Wazuh, Tripwire.

#linux #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🔒 Использование VLAN в домашних и офисных сетях

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

VLAN (Virtual LAN) - это способ логического разделения одной физической сети на несколько изолированных друг от друга сегментов. Устройства в разных VLAN не видят друг друга, пока не настроен маршрутизатор.


▪️ Сценарии для дома:

📍 Разделение умного дома и основной сети — изоляция IoT-устройств (камеры, лампочки, чайники) от домашней Wi-Fi-сети с личными данными.
📍 Детская VLAN с ограничениями - создаем отдельный сегмент с фильтрацией сайтов и доступом по расписанию.
📍 Гостевая Wi-Fi - изолируем гостей от основной сети.

▪️ Сценарии для офиса:

📍 VLAN для бухгалтерии - выделенный сегмент с доступом только к 1С и серверам документов.
📍 VLAN для VoIP - стабильная телефония без помех от общего трафика.
📍 VLAN для видеонаблюдения - чтобы камеры не грузили общий канал.
📍 Разделение Wi-Fi по ролям (сотрудники, гости, администрация).

▪️ Как настраивать?

1️⃣ На свитче (управляемом): назначаем порты access (одна VLAN) или trunk (несколько VLAN).

Пример на Cisco:


interface FastEthernet0/1
switchport mode access
switchport access vlan 10


2️⃣ На роутере: интерфейсы или саб-интерфейсы на разные VLAN.

Настройка маршрутизации между VLAN при необходимости.

3️⃣ На клиенте (Linux):


ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.168.10.2/24 dev eth0.10
ip link set up eth0.10


Даже в домашних условиях VLAN дает возможность для наведения порядка, контроля и повышения безопасности в сети.

#vlan #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥4🤔21🗿1
🛡 Как корректно отслеживать и логировать выполнение Ansible-плейбуков

Если вы регулярно работаете с Ansible - важно не только писать рабочие плейбуки, но и контролировать, когда, кем и как они были запущены. Особенно, если в вашей инфраструктуре Ansible используется как часть CI/CD или централизованного управления.

1️⃣ Включаем логирование в конфиге Ansible. В файле /etc/ansible/ansible.cfg (или в локальной копии ansible.cfg) пропишите:


[defaults]
log_path = /var/log/ansible.log


Ansible начнет писать все свои действия в указанный файл. Убедитесь, что у пользователя, запускающего Ansible, есть права на запись.

2️⃣ Используйте теги и переменные для понятности. Добавляйте теги к задачам:


- name: Установка nginx
apt:
name: nginx
state: present
tags:
- web
- nginx


Это поможет фильтровать задачи в логах, запускать только нужные части и документировать назначение.

3️⃣ Логируйте переменные, хосты, результаты. Для отладки - полезно писать значения переменных в лог:


- name: Показываем значение переменной
debug:
var: some_variable


Также можно логировать hostname, пользователя и дату запуска, добавляя кастомную задачу:


- name: Логируем запуск
shell: echo "{{ ansible_date_time.iso8601 }}: {{ inventory_hostname }} - {{ ansible_user }}" >> /var/log/ansible_run.log


4️⃣ Используйте Ansible Callback Plugins. Для более глубокого логирования можно подключить callback-плагины.

Например, json или yaml:


[defaults]
stdout_callback = yaml


А если хотите логировать в файл в формате JSON, можно использовать:


[defaults]
callback_whitelist = json
stdout_callback = json
log_path = /var/log/ansible-json.log


5️⃣ Храните вывод выполнения с ansible-playbook. При запуске:


ansible-playbook site.yml | tee -a /var/log/ansible-run-$(date +%F-%T).log


Так у вас будет отдельный лог под каждое выполнение.

6️⃣ Интеграция с CI/CD и мониторингом. Если Ansible запускается через GitLab, Jenkins, Drone и прочее - обязательно сохраняйте артефакты выполнения и возвращайте статус завершения. Также можно отправлять результаты выполнения в телегу через webhook после ansible-playbook.

#ansible #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔒 Ужесточаем политику паролей в linux с PAM и libpwquality

Слабые пароли - одна из важных и актуальных тем. В linux можно усилить требования к паролям через PAM и модуль libpwquality, чтобы пользователи не ставили что-то вроде qwerty123.

▪️ Установка


yum install libpwquality #centOS

apt install libpam-pwquality #ubuntu/debian


▪️ Настройка. Редактируем файл:


/etc/security/pwquality.conf


Пример строгих настроек:


minlen = 12
minclass = 3
maxrepeat = 2
maxsequence = 3
dictcheck = 1


minlen - минимальная длина пароля
minclass - количество обязательных классов символов (строчные, заглавные, цифры, спецсимволы)
maxrepeat - максимум одинаковых символов подряд
maxsequence - длина допустимой последовательности (abc, 123 и т.д.)
dictcheck - проверка на словарные пароли


▪️ Подключение в PAM. Открываем:


/etc/pam.d/common-password # debian/ ubuntu
/etc/pam.d/system-auth # centOS


Находим строку с pam_pwquality.so и добавляем параметры:


password requisite pam_pwquality.so retry=3 enforce_for_root


retry=3 - количество попыток ввода
enforce_for_root - применить правила даже для root


▪️ Проверка. Меняем пароль:


passwd user


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

#security #password

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
🔹 Шифрование диска в linux

Если существует риск кражи носителей с данными, стоит задуматься о шифровании. На linux это проще всего реализовать через LUKS, который позволяет зашифровать раздел и работать с ним как с обычным блочным устройством.

▪️ Установка:


apt install cryptsetup # debian


▪️ Создание и подключение зашифрованного раздела
1️⃣Инициализируем шифрование (данные будут уничтожены):


cryptsetup luksFormat /dev/sdb1


2️⃣ Подключаем зашифрованный раздел:


cryptsetup luksOpen /dev/sdb1 lukscrypt


После этого появится устройство /dev/mapper/lukscrypt.

▪️ Использование. Создаем файловую систему и монтируем:


mkfs.ext4 /dev/mapper/lukscrypt
mkdir /mnt/crypt
mount /dev/mapper/lukscrypt /mnt/crypt


Теперь раздел доступен в системе, а при следующем подключении для расшифровки нужно будет выполнить cryptsetup luksOpen и ввести пароль.

#LUKS #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91
🔒 Конфигурации nftables для защиты сервера

nftables - это замена iptables, встроенная в ядро linux. Она объединяет фильтрацию, NAT и маршрутизацию в единую подсистему и считается более быстрой и удобной. Разберемся, как можно построить базовую защиту сервера.

▪️ Минимальная конфигурация. Создадаем новый ruleset с таблицей для фильтрации трафика:


sudo nft add table inet filter
sudo nft 'add chain inet filter input { type filter hook input priority 0; policy drop; }'


Мы сразу задали policy drop, то есть по умолчанию все запрещено. Теперь разрешим только нужное.

▪️ Разрешаем базовое


sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input ip protocol icmp accept
sudo nft add rule inet filter input tcp dport {22,80,443} accept


Что тут происходит:

принимаем все соединения в состоянии ESTABLISHED и RELATED
разрешаем локальный интерфейс (lo)
разрешаем ping (ICMP)
открываем SSH, HTTP и HTTPS


▪️ Защита SSH. Ограничим количество соединений по SSH, чтобы усложнить перебор паролей:


sudo nft add rule inet filter input tcp dport 22 ct state new limit rate 10/minute accept
sudo nft add rule inet filter input tcp dport 22 drop


Теперь на SSH можно будет открыть не более 10 новых подключений в минуту.

▪️ Блокируем сканеров и мусор. Пример простого анти-сканера:


# блокируем пакеты без флагов (NULL scan)
sudo nft add rule inet filter input tcp flags == 0 drop

# блокируем XMAS-скан
sudo nft add rule inet filter input tcp flags & (fin|psh|urg) == (fin|psh|urg) drop


▪️ Проверка и сохранение. Посмотреть активные правила:


sudo nft list ruleset


Сохранить конфиг:


sudo sh -c "nft list ruleset > /etc/nftables.conf"
sudo systemctl enable nftables
sudo systemctl restart nftables


#nftables #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
😢 Скрыть содержимое bash-скрипта с помощью shc

Если нужно показать работу скрипта, но не отдавать исходники - можно скомпилировать его в бинарник через shc. Инструмент преобразует .sh в C-код и собирает исполняемый файл, на выходе пользователь получит работающий бинарник, но не читаемый скрипт.

▪️ Установка (Debian/Ubuntu):

apt install shc gcc


▪️ Пример. Есть script.sh:

#!/bin/bash
v=$1
echo "Simple BASH script. Entered VARIABLE: $v"


Компилируем:

shc -f -r script.sh


Появятся script.sh.x (бинарник) и script.sh.x.c (сгенерированный C). Запуск:

./script.sh.x 123
# Simple BASH script. Entered VARIABLE: 123


▪️ Полезные опции:

-e DD/MM/YYYY - срок годности; после даты бинарник не запустится.
-m "msg" - сообщение при истечении срока.

Пример с истечением:

shc -e 31/12/2025 -m "Срок истек" -f -r script.sh
./script.sh.x # Выдаст сообщение о просрочке


📌 Важное замечание по безопасности

shc - это обфускация, а не криптография. В конечном бинарнике содержимое может быть восстановлено (есть утилиты вроде UnSHc). Также секреты, записанные в скрипт, при выполнении будут лежать в памяти и их можно попытаться снять дампом. Это защита от случайного копирования, но не от целенаправленного анализа.


#script #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍84🤡1
🤠 Быстрый аудит безопасности

Бывает такое, что сервер уже настроен и работает, но не покидает ощущение - вдруг что-то упустил, оставил какую-то уязвимость - незащищенные параметры SSH, лишние службы, слабые настройки sysctl. Чтобы быстро проверить систему, удобно использовать Lynis, инструмент для аудита безопасности и оценки соответствия стандартам.

Lynis - это утилита с открытым исходным кодом, которая выполняет анализ конфигурации linux и unix подобных систем и выдает рекомендации по усилению безопасности. Она проверяет десятки аспектов системы:

настройки ядра и PAM,
файрвол и службы,
права на файлы,
SSH, cron, логирование,
пакеты и обновления.


▪️ Установка


apt install lynis #debian или ubuntu

yum install lynis #CentOS


▪️Проверка системы. Запустить аудит можно буквально одной командой:


lynis audit system


После выполнения вы получите подробный отчет с результатами и рекомендациями.
Файл отчета по умолчанию сохраняется в: /var/log/lynis.log
а краткий отчет в: /var/log/lynis-report.dat

▪️ Расшифровка результатов

В конце проверки Lynis показывает оценку безопасности - чем она выше, тем лучше.
Также будут даны рекомендации, например:


[WARNING] SSH root login is enabled
[SUGGESTION] Install a firewall management tool (ufw/firewalld)


Просто проходите по списку и исправляйте. После доработок можно снова запустить аудит и посмотреть, насколько улучшился индекс.

Официальный сайт 📌

#linux #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍161
🏃‍♂️ Сброс пароля root в linux через GRUB

Решил посмотреть, как на практике сбрасывается пароль root, и заодно поделиться с вами. Это классическая задача, которую часто дают на собеседованиях.

Цель - получить доступ к системе с правами root, даже если пароль неизвестен. Сделать это можно, изменив параметры загрузки ядра в GRUB.


▪️ Как это делается

1. Включаем сервер и ждем появления меню загрузки GRUB.
2. Выбираем нужный пункт и нажимаем e (латинскую).
3. В открывшемся редакторе ищем строку, начинающуюся с linux или linux16.
4. В самый конец этой строки добавляем:


rw init=/bin/bash


Это позволит запустить оболочку bash вместо стандартного systemd.

5. Нажимаем Ctrl+X или F10 для загрузки. После старта вы сразу окажетесь в консоли под пользователем root без пароля. Теперь можно просто задать новый пароль:


passwd


и перезагрузить систему:


exec /sbin/init


или


reboot -f


▪️ Как это работает

Параметр init= сообщает ядру, какой процесс нужно запустить первым.
Обычно это /sbin/init (или systemd), который отвечает за загрузку системы.
Когда мы подменяем его на /bin/bash, система вместо полноценной инициализации попадает прямо в консоль.
Фактически, вы оказываетесь в самой ранней стадии загрузки с полными правами root.

▪️ Для RHEL и производных

В системах вроде RHEL, CentOS, AlmaLinux, RockyLinux используется немного другой вариант:


rw rd.break enforcing=0


После загрузки окажетесь в emergency shell, где также сможете сбросить пароль через passwd.

#linux #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23
🔐 GnuPG: шифрование и управление ключами

GnuPG (GNU Privacy Guard) - это открытая реализация стандарта OpenPGP (RFC 4880). Она позволяет:

шифровать и расшифровывать данные;
подписывать файлы и сообщения;
проверять подлинность данных;
управлять ключами (создавать, экспортировать, отзывать и т.д.).

Работает на всех системах - linux, macOS, windows, и не требует никаких внешних сервисов.


▪️ Основные команды для работы

1️⃣ Создание пары ключей:


gpg --full-generate-key


Тут нужно указать тип ключа (обычно RSA), длину (2048–4096), срок действия и e-mail для идентификации. После этого ключ сохраняется в ~/.gnupg/.

2️⃣ Просмотр ключей:


gpg --list-keys


3️⃣ Экспорт публичного ключа:


gpg --export -a user@networkadmin.ru > public.key


4️⃣ Экспорт приватного ключа:


gpg --export-secret-keys -a user@networkadmin.ru > private.key


5️⃣ Импорт ключа:


gpg --import public.key


▪️ Шифрование и подпись

Шифрование файла:


gpg -e -r user@networkadmin.ru secret.txt


Создается файл secret.txt.gpg, который можно расшифровать только соответствующим приватным ключом.

Расшифровка:


gpg -d secret.txt.gpg > secret.txt


Подпись файла:


gpg -s file.txt


Проверка подписи:


gpg --verify file.txt.sig file.txt


▪️ Несколько полезных команд

Проверить, какой ключ используется по умолчанию:


gpg --list-secret-keys --keyid-format LONG


Удалить ключ:


gpg --delete-key user@networkadmin.ru


Создать зашифрованный архив с tar:


tar cz folder | gpg -c > archive.tar.gz.gpg


#gpg #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🔒 Защита DNS-запросов на практике

DNS - это всегда один из самых уязвимых элементов сети. Каждый раз, когда вы вводите сайт в браузере, ваш компьютер отправляет незашифрованный запрос к DNS-серверу, спрашивая: какой IP-адрес у этого домена? Эти запросы можно перехватить, подменить или использовать для слежки. Чтобы защитить пользователей и инфраструктуру, появились две технологии: DNSSEC и DNS over HTTPS (DoH).

▪️ DNSSEC - подписи и верификация ответов. DNSSEC - это расширение классического DNS, добавляющее цифровую подпись к каждому ответу.
Задача DNSSEC гарантировать целостность и подлинность данных, а не шифровать трафик.

Принцип работы:

Каждый домен имеет криптографическую пару ключей (DNSKEY).
Ответ DNS подписывается приватным ключом.
Клиент или DNS-сервер-посредник проверяет подпись с помощью публичного ключа, опубликованного в зоне.
Если подпись не сходится - ответ считается поддельным.

Пример проверки DNSSEC с помощью dig:


dig linux.org +dnssec


Если в ответе есть флаг ad (Authenticated Data), значит, подпись проверена и валидна.

▪️ DNS over HTTPS (DoH) - шифрование DNS-запросов. DoH решает другую задачу, он шифрует сам трафик DNS. Запросы к DNS-серверу отправляются по HTTPS, то есть через порт 443 с TLS-шифрованием.

Преимущества:

Скрывает DNS-запросы от провайдера и промежуточных узлов.
Устойчив к подмене (например, от провайдерских фильтров).
Легко использовать в корпоративных и домашних сетях.

Пример настройки DoH в Linux с systemd-resolved. Для этого редактируем /etc/systemd/resolved.conf:


[Resolve]
DNS=1.1.1.1#cloudflare-dns.com
DNSOverTLS=yes


или используем dnscrypt-proxy, который поддерживает и DoH, и DoT (DNS over TLS).

▪️ Связка DNSSEC + DoH. DNSSEC проверяет, что данные настоящие, а DoH гарантирует, что запросы никто не подслушает.

Совместное использование этих технологий обеспечивает:

Проверку подлинности ответов DNS;
Защиту от MITM-атак и подмены записей;
Конфиденциальность и шифрование всех запросов.

Где это работает:

Cloudflare (1.1.1.1) - поддерживает DNSSEC и DoH;
Google Public DNS (8.8.8.8) - поддерживает DNSSEC;
Quad9 (9.9.9.9) - DoH + фильтрация вредоносных доменов.

Проверить поддержку DoH можно через:


curl -s https://cloudflare-dns.com/dns-query?name=example.com -H 'accept: application/dns-json'


#DNS #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122👎1
👒 Легкий TCP/UDP туннель поверх HTTP

Хочу поделиться полезным инструментом, который часто упоминают в контексте пентестов, но который одинаково удобен и администраторам: Chisel. Это один бинарник (на Go) и для сервера, и для клиента доступный для linux, windows, macOS. Работает поверх HTTP, поэтому его очень просто поднять там, где открыт веб-порт.

▪️ Коротко, зачем нужно:

▪️быстро организовать SOCKS5-прокси через открытую HTTP/HTTPS точку;
▪️поднять обратный туннель (reverse) с защищённого хоста, который не доступен извне;
▪️пробросить локальный порт на удалённый хост по HTTP, когда прямой доступ заблокирован.

▪️ Примеры (общая схема)

1️⃣ Быстрый SOCKS5-прокси. На сервере (с публичным IP, порт 80/443 доступен):


./chisel server --port 80 --socks5


На клиенте (локальная машина, откуда хотите выходить в интернет через сервер):


./chisel client http://server.example.com:80 socks


После этого в браузере можно указать SOCKS5 proxy 127.0.0.1:1080, трафик пойдет через сервер.

2️⃣ Обратный SSH-туннель (клиент инициирует соединение, сервер принимает). Если целевая (закрытая) машина не доступна извне, но может инициировать исходящее HTTP-соединение:
На публичном сервере:


./chisel server --port 80 --reverse


На внутреннем хосте (тот, к которому хотим подключиться):


./chisel client http://server.example.com:80 R:2222:localhost:22


Теперь на публичном сервере можно подключиться к внутреннему хосту:


ssh -p 2222 root@127.0.0.1


3️⃣ Проброс локального сервиса (например, MySQL на сервере) на клиент. На публичном сервере запускаем с --reverse. На внутреннем клиенте даем правило:


./chisel client http://server.example.com:80 33306:127.0.0.1:3306


После этого на клиенте MySQL будет доступен локально на порту 33306.

▪️ Дополнительно

Аутентификация: есть опция --auth user:pass и на сервере, и на клиенте, используйте для защиты туннеля.

Маскировка: --backend позволяет прятать chisel-сервер за обычным веб-сервером (перенаправлять чужие HTTP-запросы), что облегчает развертывание в средах с ограничениями.

Один бинарник, удобно распространять и для разных ОС.

#network #security

🧑‍💻 NetworkAdmin
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123