Microsoft выпустила чек-лист по подготовке к окончанию поддержки Windows 10 - это произойдёт 14 октября 2025 года. Если кратко, то пользователей ждёт развилка из двух дорог.
Первый путь - обновление до Windows 11, если «железо» ещё тянет.
Второй - расстаться с компьютером (утилизировать), если он не соответствует требованиям новой ОС.
---
Приму в дар вашу технику, не соответствующую новым требованиям Microsoft 😁
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39🤡10🔥4👍2
SNMP (Simple Network Management Protocol) - один из самых популярных протоколов для мониторинга сетевого оборудования, серверов и рабочих станций. Он позволяет получать данные о загрузке процессора, памяти, сетевых интерфейсах и многом другом. Однако, неправильная настройка SNMP может стать уязвимостью в системе. Разберем, как его правильно настроить.
SNMPv1 – устаревшая, передает данные в открытом виде (НЕ рекомендуется).
SNMPv2c – улучшенная версия, но всё еще без шифрования.
SNMPv3 – наиболее безопасная, поддерживает аутентификацию и шифрование (РЕКОМЕНДУЕТСЯ).
Для безопасного мониторинга лучше взять SNMPv3 с аутентификацией и шифрованием.
sudo apt install snmp snmpd -y # Для Debian/Ubuntu
sudo yum install net-snmp net-snmp-utils -y # Для CentOS/RHEL
Редактирование конфигурации (/etc/snmp/snmpd.conf)
agentAddress udp:161,udp6:[::1]:161
rocommunity public default -V systemonly
sysLocation "Server Room"
sysContact "admin@networkadmin.ru"
sudo systemctl restart snmpd
sudo systemctl enable snmpd
snmpwalk -v2c -c public 127.0.0.1
Для Windows 10/11 и Windows Server:
Enable-WindowsOptionalFeature -Online -FeatureName SNMP
Затем включите службу в services.msc и настройте параметры в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP через реестр.
На Linux (iptables/firewalld):
iptables -A INPUT -p udp --dport 161 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 161 -j DROP
На Windows:
New-NetFirewallRule -DisplayName "Allow SNMP" -Direction Inbound -Protocol UDP -LocalPort 161 -Action Allow -RemoteAddress 192.168.1.0/24
Zabbix
LibreNMS
Telegraf + InfluxDB + Grafana
snmpwalk/snmpget
Пример запроса данных с устройства:
snmpget -v2c -c public 192.168.1.1 .1.3.6.1.2.1.1.5.0
#SNMP #linux #windows #monitoring
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
По умолчанию Nginx ведёт логи в текстовом формате, но уже давно умеет писать их в JSON. Однако, в большинстве конфигураций всё ещё используются старые текстовые логи. Если вы до сих пор не перешли на JSON, самое время это сделать – его проще анализировать вручную и обрабатывать в автоматизированных системах.
log_format в конфигурационный файл:
log_format json_combined escape=json '{'
'"time_local":"$time_local",'
'"remote_addr":"$remote_addr",'
'"remote_user":"$remote_user",'
'"request":"$request",'
'"status":"$status",'
'"body_bytes_sent":"$body_bytes_sent",'
'"request_time":"$request_time",'
'"http_referrer":"$http_referer",'
'"http_user_agent":"$http_user_agent"'
'}';
Добавляем в http { } или в настройки виртуального хоста:
access_log /var/log/nginx/access.log json_combined;
После перезапуска Nginx сервер начнёт записывать логи в JSON.
Если вы используете Zabbix, ELK (Elasticsearch + Logstash + Kibana), Grafana или другие системы мониторинга – обработка JSON-логов упростится, так как для него уже есть готовые парсеры.
Но даже в консоли JSON-логи обрабатывать намного удобнее с помощью jq:
jq '.' access.log
jq '.request' access.log
jq '. | select(.status=="404")' access.log
jq '. | select(.status=="404") | .request' access.log
jq '. | select(.status=="404") | .time_local, .request' access.log
jq -r '.request' access.log
Метрики запроса и прокси-серверов:
$request_length – длина запроса
$upstream_addr – адрес upstream-сервера
$upstream_status – HTTP-ответ от upstream
$upstream_response_time – время ответа backend'а
$upstream_connect_time – время установки соединения с upstream
$upstream_header_time – время получения HTTP-заголовков от upstream
Безопасность и TLS:
$server_name – имя виртуального хоста
$ssl_protocol – используемый TLS-протокол
$ssl_cipher – алгоритм шифрования
#Nginx #JSON
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍2
OneDrive предустановлен во всех версиях Windows 10 и 11, интегрирован в систему и запускается автоматически при входе в систему. По умолчанию OneDrive устанавливается отдельно для каждого пользователя в его профиле:
%localappdata%\Microsoft\OneDrive. Если OneDrive вам не нужен, его можно удалить, но важно сделать это для всех пользователей, включая будущие учетные записи.
taskkill /f /im OneDrive.exe
%SystemRoot%\System32\OneDriveSetup.exe /uninstall
rd "%UserProfile%\OneDrive" /Q /S
rd "%LocalAppData%\Microsoft\OneDrive" /Q /S
rd "%ProgramData%\Microsoft OneDrive" /Q /S
reg delete "HKEY_CURRENT_USER\Software\Microsoft\OneDrive" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OneDrive" /f
reg load "HKU\Default" "C:\Users\Default\NTUSER.DAT"
reg delete "HKEY_USERS\Default\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "OneDriveSetup" /f
reg unload "HKU\Default"
Теперь новые пользователи на этом компьютере не получат OneDrive в своих профилях.
#windows #OneDrive
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29❤3🔥3
Современные нагрузки требуют высокой производительности сетевых решений, а классические инструменты вроде
iptables и nftables уже не всегда справляются. Здесь на сцену выходят eBPF (Extended Berkeley Packet Filter) и XDP (eXpress Data Path) - технологии для глубокой фильтрации и анализа трафика прямо в ядре Linux.eBPF - механизм в ядре Linux, позволяющий безопасно выполнять программы в режиме ядра без изменения исходного кода. Используется для фильтрации пакетов, мониторинга, трассировки и профилирования системы.
XDP - подсистема ядра Linux, основанная на eBPF, позволяющая обрабатывать пакеты на самом раннем этапе их поступления в систему (на уровне драйвера сетевой карты).
sudo apt install -y bpfcc-tools linux-headers-$(uname -r) #на Debian/Ubuntu
sudo dnf install -y bpftool bcc #на RHEL/Fedora
sudo /usr/sbin/tc qdisc add dev eth0 clsact
sudo /usr/sbin/tc filter add dev eth0 egress bpf direct-action obj xdp_prog_kern.o
Это позволит анализировать выходящий трафик с интерфейса eth0.
#include <linux/bpf.h>
int xdp_drop(struct __sk_buff *skb) {
return XDP_DROP; // Отбрасываем пакет
}
Компилируем и загружаем программу в XDP:
clang -O2 -target bpf -c xdp_drop.c -o xdp_drop.o
sudo ip link set dev eth0 xdp obj xdp_drop.o
Теперь весь трафик на интерфейсе eth0 будет блокироваться на уровне драйвера.
DDoS-защита - можно отбрасывать вредоносный трафик без нагрузки на процессор.
Балансировка нагрузки - построение L4-L7 балансировщиков без iptables.
Мониторинг сети - сбор детальной статистики по пакетам в реальном времени.
Примеры таких решений: Cilium, Suricata, Falco, Katran (Facebook), XDP Firewall.
#linux #eBPF #XDP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Если вам нужен гибкий и высокопроизводительный DHCP-сервер для управления IP-адресами в сети, стоит обратить внимание на Kea DHCP от ISC. В отличие от классического ISC DHCP, Kea предлагает:
Динамическое обновление конфигурации без перезапуска сервера
Поддержку API RESTful для управления в реальном времени
Работу с базами данных (MySQL, PostgreSQL, Cassandra)
Поддержку DHCPv4 и DHCPv6
Для примера, развернем DHCP-сервер Kea на Ubuntu/Debian и настроим его на раздачу IP-адресов.
sudo apt update && sudo apt install -y isc-kea-dhcp4-server
На CentOS/RHEL Kea можно установить через EPEL:
sudo dnf install -y epel-release
sudo dnf install -y kea
/etc/kea/kea-dhcp4.confПример минимальной конфигурации:
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "eth0" ]
},
"subnet4": [
{
"subnet": "192.168.1.0/24",
"pools": [
{ "pool": "192.168.1.100 - 192.168.1.200" }
],
"option-data": [
{ "name": "routers", "data": "192.168.1.1" },
{ "name": "domain-name-servers", "data": "8.8.8.8, 8.8.4.4" }
]
}
]
}
}
eth0 - сетевой интерфейс, с которого раздаются адреса
192.168.1.100 - 192.168.1.200 - пул IP-адресов
192.168.1.1 - шлюз по умолчанию
8.8.8.8, 8.8.4.4 - DNS-серверы
sudo systemctl enable --now kea-dhcp4
sudo systemctl status kea-dhcp4
Проверяем логи для диагностики:
journalctl -u kea-dhcp4 --no-pager -n 50
Если нужно перезапустить DHCP-сервер после изменения конфигурации:
sudo systemctl restart kea-dhcp4
cat /var/lib/kea/dhcp4.leases
Запросим новый IP с клиента:
dhclient -v eth0
Если адрес не выдается, смотрим активные порты Kea:
sudo ss -tulpn | grep kea
Подключение к MySQL или PostgreSQL для хранения аренды IP
Настройка статических IP-адресов для MAC-адресов
Работа с DHCPv6 для IPv6-сетей
Динамическое управление через API RESTful
#linux #DHCP #Kea
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍3
Настройка сетевого стека в Linux - тема специфичная и непростая. В сети полно материалов, но большинство из них просто копируют друг друга, а рекомендации часто устаревшие. Ниже актуальная на сегодня подборка параметров, которые стоит учитывать при настройке сервера. Основной акцент - на управление памятью и таймаутами. Оперативки сейчас много, так что имеет смысл использовать это преимущество.
net.ipv4.tcp_max_orphans = 65536
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.ip_local_port_range = 10240 65535
net.core.somaxconn = 16384
net.core.rmem_default = 851968
net.core.wmem_default = 851968
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rfc1337 = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Дополнительно - игнорировать ICMP echo-запросы (ping):
net.ipv4.icmp_echo_ignore_all = 1
Параметры вроде tcp_mem, tcp_rmem, tcp_wmem зависят от объема оперативной памяти и автоматически настраиваются при загрузке. Их можно регулировать вручную при необходимости, но в большинстве случаев дефолтных значений достаточно.
#linux #sysctl #TCP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥6❤4
Если нужно быстро узнать, какие приложения, обновления или MSI-пакеты были установлены или удалены на Windows-системе за последнюю неделю - поможет встроенный журнал Reliability Monitor и небольшой PowerShell-скрипт.
Скрипт вытащит:
Установку/удаление MSI пакетов
Установку/удаление приложений из Microsoft Store
Установленные обновления Windows
Пользователя, от имени которого происходили действия
$DaysAgo = (Get-Date).AddDays(-7)
$RealiabilityFilter = "TimeGenerated > '$DaysAgo' and (SourceName='Microsoft-Windows-WindowsUpdateClient' or SourceName='MsiInstaller')"
Get-CimInstance -ClassName Win32_ReliabilityRecords -Filter $RealiabilityFilter |
Select-Object TimeGenerated, ProductName, User, Message |
Out-GridView
Скрипт использует данные из журнала Win32_ReliabilityRecords и отфильтровывает события только по установке/удалению софта. Отображение в Out-GridView - удобно и наглядно для быстрого анализа.
Отличный инструмент, если нужно быстро понять, что происходило с системой в плане установки ПО.
#windows #audit #security
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
Надежный DNS - это основа стабильной работы инфраструктуры. Если основной DNS падает, могут лечь и внутренние сервисы, и доступ к внешним ресурсам. Один из проверенных способов построения отказоустойчивой DNS-системы - связка Bind9 (авторитетный DNS) + Unbound (рекурсивный кеширующий DNS).
Bind9 отвечает за авторитетные зоны — внутренние домены, PTR-записи, сервисные SRV и т.д.
Unbound обрабатывает внешние запросы (Google, GitHub, NTP и прочее), кеширует и защищает от DNS-рекурсии.
Между ними можно использовать dnsdist для балансировки и DDoS-защиты (опционально).
Обе службы работают на разных портах (например, Bind на 1053, Unbound на 53).
sudo apt install bind9
Конфигурация зоны:
zone "corp.lan" {
type master;
file "/etc/bind/zones/db.corp.lan";
allow-query { any; };
};
Слушаем нестандартный порт:
options {
listen-on port 1053 { any; };
recursion no;
};
sudo apt install unbound
Базовый
unbound.conf:
server:
interface: 0.0.0.0
access-control: 192.168.0.0/16 allow
verbosity: 1
# Кеширование и защита
cache-max-ttl: 86400
hide-identity: yes
hide-version: yes
# Проксирование запросов во внутренние зоны на Bind
local-zone: "corp.lan." transparent
forward-zone:
name: "corp.lan"
forward-addr: 127.0.0.1@1053
Прописываем оба IP-адреса на клиентах или в DHCP:
DNS1: 192.168.1.10
DNS2: 192.168.1.11
Используем keepalived или VRRP для виртуального IP, если хотим активный кластер.
1. Используйте dnsdist для фильтрации, балансировки и rate-limit.
2. Следите за логами (/var/log/syslog или systemd-journald).
#DNS #Bind9 #Unbound
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Если вы проводите много времени в терминале - переход на zsh и настройка Oh My Zsh может серьёзно упростить и ускорить вашу работу. Это не просто замена bash, а настоящий рабочий инструмент с автодополнением, подсветкой синтаксиса, git-индикацией и кучей других плюшек.
sudo apt install zsh # или brew install zsh на macOS
chsh -s $(which zsh) # сделаем zsh шеллом по умолчанию
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Powerlevel10k:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k
И укажите в .zshrc:
ZSH_THEME="powerlevel10k/powerlevel10k"
plugins=(git z sudo zsh-autosuggestions zsh-syntax-highlighting)
git - алиасы вроде gst (git status), gco (git checkout)
z - умное перемещение по папкам (находит нужную по частичному совпадению)
sudo - быстрое добавление sudo при повторе команды с ESC+ESC
zsh-autosuggestions - автоподсказки по истории
zsh-syntax-highlighting - подсветка ошибок до нажатия Enter
Автоисправление команд (grpe → grep)
Алиасы можно описывать прямо в .zshrc:
alias gs='git status'
alias ll='ls -alF'
alias ..='cd ..'
#zsh #linux #terminal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12👎2😁1💊1
Если вы регулярно пишете Dockerfile'ы, следует добавить в свой арсенал Hadolint - это линтер, который проверяет как синтаксис, так и best practices. Он поможет выявить ошибки, неточности и неочевидные нюансы на этапе написания. В том числе - проверит shell-команды с помощью правил из ShellCheck.
Hadolint можно использовать:
Локально (через Docker или бинарник)
Через онлайн-версию
FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go mod tidy && \
CGO_ENABLED=0 GOOS=linux go build -o app .
FROM alpine:3.19
RUN apk add --no-cache ca-certificates
WORKDIR /root/
COPY --from=build /app/app .
CMD ["./app"]
Проверка:
docker run --rm -i hadolint/hadolint < Dockerfile
Вывод Hadolint:
DL3007: Не используйте latest, всегда указывайте версию (например, alpine:3.19)
DL3018: Указывайте конкретные версии пакетов при apk add - это улучшает воспроизводимость сборки
FROM debian:bookworm
RUN apt-get update && \
apt-get install -y --no-install-recommends apache2 && \
apt-get clean && rm -rf /var/lib/apt/lists/*
EXPOSE 80 443
VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"]
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Hadolint замечает:
DL3008: Указывайте точные версии пакетов (например, apache2=2.4.57-1)
DL3009: Чистите списки apt-пакетов после установки
DL3015: Используйте --no-install-recommends, чтобы не тащить лишнее
latest, без версий, без очистки - всё это может привести к нестабильной сборке. Особенно при CI/CD. Линтер Hadolint позволяет быстро выявить подобные места, не дожидаясь багов в проде.
brew install hadolint # macOS
sudo apt install hadolint # Ubuntu (через snap или вручную)
Или через Docker:
docker run --rm -i hadolint/hadolint < Dockerfile
Рекомендации Hadolint в большинстве случаев точны, понятны и логичны. Если вы ещё не используете его - самое время начать.
#Docker #Hadolint
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
По умолчанию настройки GPO (Group Policy Objects) в Windows обновляются в следующих случаях:
Обновление происходит только если служба Group Policy Client (gpsvc) обнаружит изменение версии политики. Номер версии хранится в файле:
<Имя_контроллера_домена>\SYSVOL\<домен>\Policies\<GUID>\gpt.ini
Хотите применить изменения немедленно на удалённой машине? Используйте один из способов:
1. Кликните правой кнопкой по нужному OU (организационному подразделению)
2. Выберите "Group Policy Update"
Invoke-GPUpdate -Computer "PC01" -RandomDelayInMinutes 0
Команда принудительно обновит политики на удалённой системе без задержек.
#windows #GPO #GroupPolicy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤔1🤡1
Одна из полезных, но редко используемых функций SMB - Access-Based Enumeration (ABE). Она скрывает файлы и папки, к которым у пользователя нет доступа, делая сетевые шары более удобными и безопасными.
При включении ABE пользователь видит только те файлы и папки, к которым у него есть NTFS-доступ (минимум Read). Всё остальное остаётся скрытым. Это особенно полезно в папках с большим количеством вложенных директорий (например, для отделов компании).
Windows Server (SMB):
Get-SmbShare DOCS | Set-SmbShare -FolderEnumerationMode AccessBased
Samba (Linux, FreeBSD). Добавьте в
smb.conf:
hide unreadable = Yes
Скрытие самих расшаренных папок:
access based share enum = Yes
#SMB #server
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🗿4
Среди утилит для сбора информации о железе в Linux
dmidecode выделяется особенным подходом:в отличие от
lshw, hwinfo или inxi, она не опрашивает оборудование напрямую, а читает таблицу DMI/SMBIOS, где уже содержится вся нужная информация. Поэтому работает практически мгновенно, без лишней нагрузки.
# Информация о процессоре
dmidecode -t 4
# или
dmidecode -t processor
Тип оборудования Ключ -t
BIOS 0 или bios
Система 1 или system
Материнская плата 2 или baseboard
Корпус 3 или chassis
Процессор 4 или processor
Память 17 или memory
Кэш 7 или cache
Порты, слоты и т.д. 8–9 и выше
dmidecode -s processor-version
dmidecode -s processor-frequency
Чтобы увидеть все доступные ключи:
dmidecode -s
dmidecode -q -t processor
dmidecode корректно работает только на физическом железе. В виртуальных машинах информация может быть неполной или отсутствовать совсем - это зависит от гипервизора и его настроек.#linux#dmidecode
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Ядро Linux - это не монолит, в котором всё скомпилировано раз и навсегда. Оно устроено куда гибче. Большинство драйверов, подсистем и расширений — это загружаемые модули ядра (kernel modules), которые можно подключать и отключать "на лету", без перезагрузки системы.
Модуль ядра - это объектный файл (.ko), содержащий часть функциональности, которая может быть подключена к ядру динамически. Это может быть драйвер оборудования, файловая система, сетевая функциональность и даже механизмы безопасности (например, AppArmor или SELinux).
lsmod
Эта команда выведет список активных модулей, сколько раз они используются и какими другими модулями зависят.
modprobe имя_модуля
Если вы знаете, какой драйвер нужен (например, vfat для FAT-файловых систем), вы можете подгрузить его в ядро прямо во время работы.
modprobe -r имя_модуля
Не все модули можно выгрузить - если они заняты (используются другими модулями или активными процессами), команда завершится ошибкой.
Обычно они находятся в
/lib/modules/$(uname -r)/kernel/Можно искать по названию:
find /lib/modules/$(uname -r) -type f -name '*имя*'
Модули ядра напрямую влияют на:
производительность
безопасность
стабильность системы
поддержку "нестандартного" оборудования
#linux #kernel #modules
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
В Windows Server 2019 и 2022 есть неприятная особенность (или всё-таки баг?), из-за которой нельзя изменить часовой пояс через графический интерфейс. Даже с правами администратора попытка изменить настройки через классическую панель (timedate.cpl) или "Параметры" приводит к ошибке о недостатке разрешений.
С помощью tzutil:
tzutil /s "Russian Standard Time"
Или PowerShell:
Get-TimeZone -ListAvailable | Where-Object DisplayName -like "*Moscow*" | Set-TimeZone
Также можно запустить timedate.cpl с повышенными правами (Run as Administrator) и всё заработает как надо.
#WindowsServer #timezone
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🤔1🤡1