Системный администратор
Все для системного администратора. По всем вопросам @evgenycarter РКН clck.ru/3KoDXp
Ko'proq ko'rsatish📈 Telegram kanali Системный администратор analitikasi
Системный администратор (@i_odmin) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 26 728 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 4 956-o'rinni va Rossiya mintaqasida 24 202-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 26 728 obunachiga ega bo‘ldi.
25 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 52 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 10.26% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.93% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 2 742 marta ko‘riladi; birinchi sutkada odatda 1 585 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 11 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent linux, grep, диск, строка, /var kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Все для системного администратора.
По всем вопросам @evgenycarter
РКН clck.ru/3KoDXp”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 26 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
grep [ОПЦИИ] 'ШАБЛОН' [ФАЙЛ...]
команда | grep [ОПЦИИ] 'ШАБЛОН'
⚙️ Топ-опции (must-have)
-i - без учёта регистра
-n - номер строки
-H - печатать имя файла
-r / -R - рекурсивно по каталогам (-R следует по symlink)
-l - только имена файлов с совпадениями
-L - файлы без совпадений
-v - инверсия (показать НЕ совпавшие строки)
-c - количество совпадений (строк)
-o - вывести только совпавшую часть
-w - совпадение целого слова
-x - совпадение всей строки целиком
--color=auto - подсветка
🧠 Контекст вокруг совпадения
-A 5 - 5 строк после
-B 5 - 5 строк до
-C 5 - 5 строк вокруг
grep -nC 2 'error' /var/log/syslog
🧵 Несколько шаблонов
-e - несколько выражений
-f patterns.txt - шаблоны из файла
grep -E -e 'error' -e 'warn' app.log
grep -f patterns.txt app.log
🔤 Режимы регулярных выражений
🩵BRE (по умолчанию): grep 'a\{2\}'
🩵ERE: grep -E 'a{2,}' (удобнее)
🩵PCRE: grep -P '(?<=id=)\d+' (lookbehind и т.п.)
🧩 Мини-шпаргалка по regex
Якоря и позиции
🩵 ^ начало строки, $ конец строки
🩵 \< начало слова, \> конец слова (в GNU grep часто работает)
Квантификаторы
🩵 ? 0 или 1
🩵 * 0+
🩵 + 1+ (в ERE/PCRE)
🩵 {n}, {n,}, {n,m}
Классы
🩵 . любой символ кроме \n
🩵 [0-9], [A-Za-z], [^...] (не из набора)
🩵 POSIX: [[:digit:]] [[:alpha:]] [[:alnum:]] [[:space:]]
🧪 Практика: логи и инциденты
Ошибки/варнинги
grep -iE 'error|warn|fatal' /var/log/syslog
Сервис по systemd-журналу
journalctl -u nginx --no-pager | grep -i 'error'
Кто ломится по SSH (auth.log)
grep -i 'failed password' /var/log/auth.log | tail
Найти IP в логе
grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | sort -u
📁 Поиск в конфиге
Рекурсивно, исключая мусор
grep -RIn --exclude-dir={.git,node_modules} --exclude='*.min.*' 'listen' /etc/nginx
Показать строки, где параметр закомментирован/не закомментирован
grep -nE '^\s*#?\s*PermitRootLogin' /etc/ssh/sshd_config
🧨 Трюки: grep + find
Только по *.conf
find /etc -name '*.conf' -print0 | xargs -0 grep -nH 'timeout'
Большие файлы — быстрее
LC_ALL=C grep -n 'pattern' big.log
✅ Быстрые проверки (exit code)
🩵 0 - найдено
🩵 1 - не найдено
🩵 2 - ошибка
grep -q 'pattern' file && echo OK || echo NO
📲 Мы в MAX
👉 @i_odmin
nft list ruleset # Показать все правила
nft add table ip filter # Создать таблицу filter для IPv4
nft add chain ip filter input # Создать цепочку input в таблице filter
2. Добавление правил
- Принять пакеты от локального хоста:
nft add rule ip filter input ip saddr 127.0.0.1 accept
- Блокировать входящий трафик на порт 80:
nft add rule ip filter input tcp dport 80 drop
- Разрешить весь исходящий трафик:
nft add rule ip filter output accept
3. Удаление
nft delete rule ip filter input handle <номер> # Удалить правило по handle
nft delete chain ip filter input # Удалить цепочку input
nft delete table ip filter # Удалить таблицу filter
4. Сохранение и загрузка конфигурации
nft list ruleset > /etc/nftables.conf # Сохранить правила
nft -f /etc/nftables.conf # Загрузить правила из файла
5. Создание логирования
nft add rule ip filter input log prefix "IN: " level debug
🔵Типы объектов
1. Таблицы (tables) – В nftables таблицы служат для организации правил. Каждая таблица привязывается к семейству (например, ip, ip6).
2. Цепочки (chains) – Цепочки представляют собой наборы правил. Основные встроенные цепочки: input, output, forward.
3. Правила (rules) – Условия и действия, выполняемые на пакетах, такие как accept, drop, reject, log.
🔵Основные операторы
- accept – Разрешить пакет.
- drop – Заблокировать пакет.
- reject – Отклонить с ответом.
- log – Вести лог пакетов.
🔵Примеры сложных правил
1. Ограничение скорости (rate limiting):
nft add rule ip filter input limit rate 5/second accept
2. Использование сетов для IP-адресов:
nft add set ip filter blacklist { type ipv4_addr; }
nft add rule ip filter input ip saddr @blacklist drop
nft add element ip filter blacklist { 192.168.1.1, 10.0.0.0/8 }
3. Redirect на другой порт:
nft add rule ip nat prerouting tcp dport 80 redirect to 8080
- Используйте nft monitor для слежения за изменениями правил в реальном времени.
- Включайте логирование при тестировании правил для отладки (log prefix "TEST: ").
- nftables имеет более гибкий синтаксис, чем iptables, и поддерживает более сложные условия и комбинации.
📲 Мы в MAX
👉 @i_odmin/, домашних ПК и серверов общего назначения.
🟡Плюсы: Отличная совместимость, высокая стабильность, можно уменьшать размер раздела "на лету" (в отличие от XFS).
🟡Минусы: Ограничение на размер тома (1 EB) и файла (16 TB) - хотя для большинства это не проблема.
2. XFS
🟡Вердикт: "Король больших данных".
🟡Где использовать: Большие хранилища, сервера с интенсивной записью, базы данных. Дефолтная ФС в RHEL/CentOS.
🟡Плюсы: Мгновенное форматирование гигантских дисков, отличная работа с большими файлами и высокой параллельной нагрузкой.
🟡Минусы: Нельзя уменьшить размер раздела (только увеличить).
3. ZFS (OpenZFS)
🟡Вердикт: "Больше, чем просто ФС".
🟡Где использовать: NAS, критически важные хранилища данных (Proxmox, TrueNAS).
🟡Плюсы: Встроенный RAID, сжатие, дедупликация, защита от "bit rot" (порчи данных), мгновенные снэпшоты.
🟡Минусы: Требовательна к RAM (нужна ECC память для идеальной надежности), сложнее в настройке, лицензионные нюансы в ядре Linux.
4. Btrfs
🟡Вердикт: "Современный комбайн".
🟡Где использовать: Системы, где нужны снэпшоты (как в ZFS), но на уровне ядра Linux. Используется по умолчанию в Fedora и SUSE.
🟡Плюсы: Copy-on-Write (CoW), работа с подтомами (subvolumes), легкое добавление дисков "на лету".
📌Windows
🔵NTFS: Стандарт с 1993 года. Журналируемая, поддерживает ACL (права доступа), шифрование. Надежна, но фрагментация — её вечная болезнь.
🔵ReFS (Resilient File System): Ответ Microsoft на ZFS. Устойчива к повреждениям, умеет "лечить" данные, но пока не может быть загрузочной для ОС.
🛠 Полезные команды (Cheat Sheet)
Проверить тип ФС и занятое место:
df -hT
Посмотреть информацию о блочных устройствах (и UUID):
lsblk -f
Проверить, не закончились ли иноды (частая причина "No space left on device", когда место есть):
df -i
Принудительная проверка ФС (только на отмонтированном диске!):
fsck /dev/sdX
💡Для баз данных (PostgreSQL/MySQL) часто рекомендуют XFS или ext4 с отключенным atime (временем последнего доступа), чтобы лишний раз не дергать диск при чтении.
На чем крутятся ваши продакшн-сервера? Консервативный ext4, мощный XFS или вы фанат ZFS? Пишите в комменты 👇
📲 Мы в MAX
👉 @i_odmin
/system logging action
add name="pppoe"
/system logging
add action=pppoe topics=pppoe,info,!ppp,!debug
Буфер журнала будет выглядеть примерно так же, как этот:
[admin@mainGW] > /log print where buffer=pppoe
13:11:08 pppoe,info PPPoE connection established from 00:0C:42:04:4C:EE
Теперь мы можем написать скрипт, который будет определять, добавлена ли новая запись.
:global lastTime;
:global currentBuf [ :toarray [ /log find buffer=pppoe ] ] ;
:global currentLineCount [ :len $currentBuf ] ;
:global currentTime [ :totime [/log get [ :pick $currentBuf ($currentLineCount -1) ] time ] ];
:global message "";
:if ( $lastTime = "" ) do={
:set lastTime $currentTime ;
:set message [/log get [ :pick $currentBuf ($currentLineCount-1) ] message];
} else={
:if ( $lastTime < $currentTime ) do={
:set lastTime $currentTime ;
:set message [/log get [ :pick $currentBuf ($currentLineCount-1) ] message];
}
}
После обнаружения новой записи она сохраняется в переменной «message», которую в дальнейшем можно использовать для анализа сообщений журнала, например, для получения mac-адресов PPPoE-клиентов.
📲 Мы в MAX
👉 @i_odmin.pem, .crt, .cer, .key): Текстовый формат (ASCII), начинается с -----BEGIN.... Самый частый в Linux/Nginx/Apache.
- DER (.der, .cer): Бинарный формат. Часто встречается в Java и Windows.
- PFX/P12 (.pfx, .p12): Контейнер-сейф. Хранит и сертификат, и приватный ключ, и цепочку. Часто используется в Windows и для импорта/экспорта.
🛠 OpenSSL: Команды на каждый день
Самая полезная часть. Копируй и вставляй.
1. Проверка удаленного сервера
Посмотреть, какой сертификат отдает сайт, и проверить цепочку:
openssl s_client -connect domain.com:443 -showcerts
Лайфхак: Добавь -servername domain.com, если на IP висит несколько сайтов (SNI).
Посмотреть только дату истечения сертификата на сайте:
echo | openssl s_client -servername domain.com -connect domain.com:443 2>/dev/null | openssl x509 -noout -dates
2. Работа с локальными файлами
Прочитать содержимое сертификата (кто выдал, кому, когда истекает):
openssl x509 -in cert.pem -text -noout
Проверить, соответствует ли приватный ключ сертификату (хеши должны совпасть):
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in privkey.pem | openssl md5
3. Генерация CSR (Запрос на сертификат)
Создать ключ и запрос (CSR) одной командой:
openssl req -new -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr
4. Конвертация форматов
PEM -> PFX (для IIS/Windows):
openssl pkcs12 -export -out domain.pfx -inkey domain.key -in domain.crt -certfile root-ca.crt
PFX -> PEM (достать ключ и серт):
# Только ключ (без пароля)
openssl pkcs12 -in domain.pfx -nocerts -nodes -out domain.key
# Только сертификат
openssl pkcs12 -in domain.pfx -nokeys -out domain.crt
🧠 Анатомия Cipher Suite
Что значит строка: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384?
1. TLS: Протокол.
2. ECDHE: Key Exchange (Как договорились о ключах). Эллиптические кривые, Ephemeral (генерируется каждый раз — это PFS).
3. RSA: Authentication (Проверка подлинности). Сертификат RSA.
4. AES_256_GCM: Bulk Encryption (Чем шифруем данные). Алгоритм AES, 256 бит, режим GCM (быстро и безопасно).
5. SHA384: MAC/PRF (Целостность). Хеширование для проверки пакетов.
Совет: Старайтесь использовать GCM или ChaCha20-Poly1305. Избегайте режимов CBC в старых протоколах.🛡 Чек-лист 1. HSTS (HTTP Strict Transport Security): Заголовок, заставляющий браузер ходить только по HTTPS. -
Strict-Transport-Security: max-age=31536000; includeSubDomains
2. Forward Secrecy (PFS): Если украдут ключ сервера, прошлый трафик не расшифруют. Требует шифров ECDHE или DHE.
3. OCSP Stapling: Сервер сам шлет статус валидности сертификата, ускоряя загрузку страницы для клиента.
4. CAA Record: DNS-запись, указывающая, каким CA разрешено выдавать сертификаты для вашего домена.
📲 Мы в MAX
👉 @i_odminbytebytego.com
2. Поиск в кэше (браузер/ОС) — не найдено
3. DNS-запрос к резолверу
4. Поиск в кэше резолвера — не найдено
5. Запрос к корневому DNS-серверу (Root NS)
6. Ответ: адрес TLD .com
7. Запрос к TLD-серверу .com
8. Ответ: адрес авторитетного сервера для bytebytego.com
9. Запрос к авторитетному DNS-серверу
10. Ответ: запись A/AAAA — IP 172.67.21.11
11. Сохранение IP в кэше резолвера
12. Передача IP в браузер: 172.67.21.11
13. Сохранение IP в кэше браузера/ОС
14. HTTP-запрос: GET /index.html
15. HTTP-ответ: OK
📲 Мы в MAX
👉 @i_odmin/var/log/messages или /var/log/syslog, либо напрямую из journalctl) с одного или нескольких удалённых хостов. Очень эффективен даже при работе с большими лог-файлами (1 ГБ и более).
Поддерживаются и другие форматы логов, можно использовать любые лог-файлы, но именно этот основной сценарий определял реализацию: у нас backend веб-сервиса работал как systemd-сервисы на множестве Linux-инстансов, генерировал большое количество логов, и нам нужен был способ эффективно читать эти логи с гистограммой временной шкалы — примерно как в Graylog, но проще и быстрее.
https://github.com/dimonomid/nerdlog
📲 Мы в MAX
👉 @i_odmin20 октября на онлайн-митапе ребята покажут, где рождается скорость, как устроен такой диск внутри и как не уронить систему при отказе.Участие бесплатное. Подробности и регистрация по ссылке.
