Авторский блог про сетевое и системное администрирование.
Сайт: networkadmin.ru
Реклама: @dad_admin
Биржа: https://telega.in/c/networkadminru
Post #466
3.04K
NE @networkadminru
Showing posts older than #468 · Back to latest
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)"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/themes/powerlevel10k
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
alias gs='git status'
alias ll='ls -alF'
alias ..='cd ..'
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
DNS1: 192.168.1.10
DNS2: 192.168.1.11
Установку/удаление 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
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
net.ipv4.icmp_echo_ignore_all = 1
Параметры вроде tcp_mem, tcp_rmem, tcp_wmem зависят от объема оперативной памяти и автоматически настраиваются при загрузке. Их можно регулировать вручную при необходимости, но в большинстве случаев дефолтных значений достаточно.
Динамическое обновление конфигурации без перезапуска сервера
Поддержку API RESTful для управления в реальном времени
Работу с базами данных (MySQL, PostgreSQL, Cassandra)
Поддержку DHCPv4 и DHCPv6
sudo apt update && sudo apt install -y isc-kea-dhcp4-server
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
sudo systemctl restart kea-dhcp4
cat /var/lib/kea/dhcp4.leases
dhclient -v eth0
sudo ss -tulpn | grep kea
Подключение к MySQL или PostgreSQL для хранения аренды IP
Настройка статических IP-адресов для MAC-адресов
Работа с DHCPv6 для IPv6-сетей
Динамическое управление через API RESTful
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
#include <linux/bpf.h>
int xdp_drop(struct __sk_buff *skb) {
return XDP_DROP; // Отбрасываем пакет
}
clang -O2 -target bpf -c xdp_drop.c -o xdp_drop.o
sudo ip link set dev eth0 xdp obj xdp_drop.o
DDoS-защита - можно отбрасывать вредоносный трафик без нагрузки на процессор.
Балансировка нагрузки - построение L4-L7 балансировщиков без iptables.
Мониторинг сети - сбор детальной статистики по пакетам в реальном времени.
%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"
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"'
'}';
access_log /var/log/nginx/access.log json_combined;
Если вы используете Zabbix, ELK (Elasticsearch + Logstash + Kibana), Grafana или другие системы мониторинга – обработка JSON-логов упростится, так как для него уже есть готовые парсеры.
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
$server_name – имя виртуального хоста
$ssl_protocol – используемый TLS-протокол
$ssl_cipher – алгоритм шифрования
SNMPv1 – устаревшая, передает данные в открытом виде (НЕ рекомендуется).
SNMPv2c – улучшенная версия, но всё еще без шифрования.
SNMPv3 – наиболее безопасная, поддерживает аутентификацию и шифрование (РЕКОМЕНДУЕТСЯ).
sudo apt install snmp snmpd -y # Для Debian/Ubuntu
sudo yum install net-snmp net-snmp-utils -y # Для CentOS/RHEL
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
Enable-WindowsOptionalFeature -Online -FeatureName SNMP
iptables -A INPUT -p udp --dport 161 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p udp --dport 161 -j DROP
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

Get-WinEvent -LogName Security | Where-Object { $_.Id -eq 4625 } | Select-Object TimeCreated, Id, Message
Get-WinEvent -LogName System -MaxEvents 10 | Where-Object { $_.Level -eq 2 }
$start = (Get-Date).AddDays(-1) # Логи за последние 24 часа
Get-WinEvent -LogName Security | Where-Object { $_.TimeCreated -ge $start -and $_.Message -match "admin" }
LogParser.exe "SELECT TimeGenerated, EventID, Message FROM System WHERE EventType = 1" -i:EVT
LogParser.exe "SELECT TimeGenerated, SID, Message FROM Security WHERE EventID = 4625" -i:EVT
LogParser.exe "SELECT TOP 10 Image, COUNT(*) AS Hits FROM 'C:\Windows\System32\winevt\Logs\Application.evtx' GROUP BY Image ORDER BY Hits DESC" -i:EVT
screen - отличная утилита для работы в Linux, особенно если хочется сохранить SSH-сессию при разрыве соединения. Но кроме этого, её можно использовать для совместной работы в одной консоли, как аналог TeamViewer/AnyDesk, но для терминала.
screen -d -m -S shared
screen -x shared
chmod u+s $(which screen)
chmod 755 /var/run/screen
rm -fr /var/run/screen/*
screen -d -m -S shared
screen -r shared
Ctrl-a :multiuser on
Ctrl-a :acladd zerox
screen -x root/shared
Ctrl-a :writelock on
netstat -ano | findstr :3389
Get-NetTCPConnection | Where-Object { $_.State -eq "Listen" }
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location
Get-Process | Sort-Object CPU -Descending
Get-LocalUser | Where-Object { $_.Enabled -eq $true }
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"}
Security - неудачные попытки входа
System - странные ошибки служб
Application - нестандартные ошибки
Get-EventLog -LogName Security -Newest 50
always - перезапуск всегда (даже при корректном завершении)
on-success – только если сервис завершился без ошибок
on-failure – при ошибках или принудительном завершении (SIGKILL, timeout)
on-abnormal – при завершении сигналом или зависании
on-abort – если сервис был принудительно завершён
on-watchdog – при срабатывании watchdog timeout
no – автозапуск отключен (значение по умолчанию)
mkdir -p /etc/systemd/system/nginx.service.d
nano /etc/systemd/system/nginx.service.d/override.conf
[Service]
Restart=always
RestartSec=5s
systemctl daemon-reload
systemctl status nginx
kill -9 <PID>
systemctl status nginx
[Unit]
OnFailure=your-notify-script.service
netdom computername fs01 /ADD new-fs01.corpdev.loc
PermitRootLogin no
Port 2222
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers user1@192.168.1.100
apt install fail2ban # Debian/Ubuntu
yum install fail2ban # CentOS/RHEL
[sshd]
enabled = true
maxretry = 3
findtime = 10m
bantime = 1h
X11Forwarding no
PermitEmptyPasswords no
systemctl restart sshd
sshd -t # Проверка конфигурации на ошибки