Системный администратор
Все для системного администратора. По всем вопросам @evgenycarter РКН clck.ru/3KoDXp
Show more📈 Analytical overview of Telegram channel Системный администратор
Channel Системный администратор (@i_odmin) in the Russian language segment is an active participant. Currently, the community unites 26 728 subscribers, ranking 4 956 in the Technologies & Applications category and 24 202 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 26 728 subscribers.
According to the latest data from 25 October, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 52 over the last 30 days and by -1 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 10.26%. Within the first 24 hours after publication, content typically collects 5.93% reactions from the total number of subscribers.
- Post reach: On average, each post receives 2 742 views. Within the first day, a publication typically gains 1 585 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 11.
- Thematic interests: Content is focused on key topics such as linux, grep, диск, строка, /var.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Все для системного администратора.
По всем вопросам @evgenycarter
РКН clck.ru/3KoDXp”
Thanks to the high frequency of updates (latest data received on 26 October, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
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 октября на онлайн-митапе ребята покажут, где рождается скорость, как устроен такой диск внутри и как не уронить систему при отказе.Участие бесплатное. Подробности и регистрация по ссылке.
