🐧Linux для админов и DevOps
описание
Практика Linux, серверов, Bash, Docker, Ansible, Kubernetes, мониторинга и DevOps. Без воды: команды, разборы ошибок, шпаргалки и реальные кейсы для админов. По всем вопросам: @Kostyan_00
239
подписчиков
Охват к подписчикам
92,5%
ERR
Реакции к просмотрам
4,06%
161 на 18 постов
Пересылки к просмотрам
1,01%
40
Постов в день
0,0
всего 21
Где отзываются чаще
доля реакций к просмотрам- 11 авг.🕵️Вычисляем шпионов в локальной сети с помощью Nmap Утро начинается не с кофе, а с «левого» девайса в подсети? Или веб‑сервер после обновления молчит на 443‑м порту? Знакомо? Тогда Nmap — ваш инструмент. Это швейцарский нож сетевой разведки, который покажет: — какие устройства реально в сети; — какие порты открыты и какие сервисы за ними; — версию ПО (вдруг там древний OpenSSH 3.0); — операционную систему хоста; — и даже найдёт несанкционированные устройства. 💡Зачем это вам? — инвентаризация сети — вы удивитесь, сколько «лишнего» болтается в локалке; — поиск чужих роутеров и устройств; — быстрая проверка сервисов после деплоя; — диагностика проблем, когда хост не пингуется; — проверка безопасности — открытые порты = потенциальные векторы атаки. 🔴 Важно: Сканировать чужие сети без разрешения — статья. Уголовная или административная, но весёлого мало. Работаем только со своими сетями или с письменным разрешением. Установка (Ubuntu/Debian) sudo apt update sudo apt install nmap nmap --version Первое сканирование подсети nmap 192.168.1.0/24 Nmap опросит все адреса и покажет, кто ответил. Вот и вся картина. Быстрое сканирование одного хоста (топ-100 портов) nmap -F 192.168.1.7 Полный анализ, режим «всезнайка» nmap -A 192.168.1.7 — Минус: дольше и заметнее. — Плюс: полная картина. Запускайте на своих серверах — лучший вариант. Сканирование конкретных портов nmap -p 22,80,443 192.168.1.7 Удобно проверить, живы ли нужные сервисы после изменения конфигурации. ✏️Шпаргалка по ключам (сохраните себе) -sS — SYN-сканирование (стелс). Требует root. -sT — полное TCP-соединение, работает без root. -sV — определение версий сервисов. -O — определение ОС (тоже root). -Pn — пропустить проверку ping (если хост «молчит», но есть). -p 80,443 — сканировать только указанные порты. -p- — все 65535 портов. -F — топ-100 портов. -T0..-T5 — скорость от медленно (0) до агрессивно (5). -oN file.txt — сохранить в текстовый файл. -oX file.xml — сохранить в XML. -v — подробный вывод. --open — только открытые порты. --top-ports 100 — заданное число популярных портов. ▶️Скорость: не гоните лошадей -T0 — медленно и максимально скрытно. -T3 — стандарт для большинства задач. -T5 — максимально, но можно словить ложные результаты или уронить слабое железо. Для повседневной работы — -T4: nmap -T4 192.168.1.6 Определение версий сервисов Вместо «http» увидите «nginx 1.18.0» или «OpenSSH 8.9». Это критично для оценки рисков: устаревшее ПО — известные уязвимости. nmap -sV 192.168.1.6 Если хост не отвечает на ping — ключ -Pn Файрвол может игнорировать ICMP. Nmap решит, что хост неактивен. Лечится командой: nmap -Pn 192.168.1.1 Сохранение результатов nmap -oN output.txt 192.168.1.1 Или XML (для автоматизации): nmap -oX output.xml 192.168.1.1 Комплексная команда (всё в одном) sudo nmap -T4 -sV -O -Pn -oN results.txt 192.168.1.1 Расшифровка: -T4 — умеренная скорость; -sV — версии сервисов; -O — ОС; -Pn — не пингуем; -oN results.txt — сохраняем результат. Понравился пост, поддержите реакцией👍 #linux #nmap #admin #иформационнаябезопасность12,38%
- 7 авг.🔒Как защитить SSH-сервер от ботов: настройка Port Knocking Открытый SSH-порт — магнит для ботов. Каждый день тысячи автоматических попыток подбора пароля. Даже с SSH-ключами постоянный шум от сканеров раздражает. Что делать? Один из надёжных способов — Port knocking («стук в дверь»). 💎 Что это? SSH-порт закрыт для всех. Открывается он только после того, как вы «постучите» в нужном порядке по трём другим портам. Всё делает демон knockd — слушает последовательность и временно разрешает доступ вашему IP. 🚪 Закрываем SSH в iptables sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j DROP Теперь никто не может даже начать подключение к 22-му порту. ⚙️Ставим и настраиваем knockd sudo apt install knockd Делаем резервную копию конфига: sudo cp /etc/knockd.conf /etc/knockd.conf.bak Редактируем /etc/knockd.conf — добавляем свой сетевой интерфейс (например, enp0s3) и меняем -A INPUT на -I INPUT 1, иначе правило не сработает. Пример рабочей конфигурации: [options] UseSyslog Interface = enp0s3 [openSSH] sequence = 7000,8000,9000 seq_timeout = 5 command = iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn [closeSSH] sequence = 9000,8000,7000 seq_timeout = 5 command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT tcpflags = syn 🚀 Включаем автозапуск и запускаем В файле /etc/default/knockd меняем START_KNOCKD=0 на 1: sudo systemctl start knockd 🕵️♂️Стучим с клиента Устанавливаем утилиту knock: sudo apt install knock Чтобы открыть SSH: knock 192.168.1.6 7000 8000 9000 Затем подключаемся: ssh admin@192.168.1.6 Закрываем порт обратной последовательностью: knock 192.168.1.6 9000 8000 7000 📝 Итог — SSH-порт полностью скрыт от сканеров — Атакующие не могут даже начать перебор паролей — Вы получаете доступ только при помощи секретной последовательности Понравился пост, поддержите реакцией👍 #ssh #linux #portknocking #iptables #admin9,60%
- 2 июл.🔍 grep: ищем всё что угодно за секунду grep — одна из тех команд, которую Вы будете использовать каждый день. Она ищет текст внутри файлов и вывода других команд. Разберём самые полезные варианты. 📄 Поиск в одном файле grep "error" /var/log/nginx/access.log Найдёт все строки, содержащие слово error. 🔁 Поиск во всех файлах папки (рекурсивно) grep -r "listen" /etc/nginx/ Флаг -r заставляет grep заходить во вложенные папки. 📍Показать номер строки и контекст Чтобы видеть не только саму строку, но и то, что вокруг неё: grep -n -C 3 "error" /var/log/syslog -n — номер строки -C 3 — показать 3 строки до и после совпадения 🎯Инвертировать поиск (всё, кроме) grep -v "debug" /var/log/app.log Покажет все строки, где нет слова debug. Удобно фильтровать шум. 🧮Посчитать количество совпадений grep -c "failure" /var/log/auth.log Просто выведет число — сколько раз встречается failure. 🔗 Использовать grep с другими командами Это самое частое применение. Например, ищем процесс по имени: ps aux | grep nginx Или смотрим, какие порты слушает система: ss -tulpn | grep :80 🔥 Пост полезный? Поставьте реакцию 👍7,56%
- 29 июн.📋 journalctl: читаем логи systemd как профессионал Если Ваша система использует systemd (а это почти все современные дистрибутивы), то все логи собирает journalctl. Забудьте про less /var/log/syslog — разберёмся с этим инструментом. 🔍 Базовая команда Показать все логи (начиная с самых старых): journalctl Выход — нажать q. ⏱️ Логи только за сегодня journalctl --since today Или за последний час: journalctl --since "1 hour ago" 📌 Логи конкретного сервиса Например, показываем логи Nginx: journalctl -u nginx Можно добавить -f — следить в реальном времени (как tail -f): journalctl -u nginx -f ⚠️ Только ошибки Показать записи с приоритетом error и выше: journalctl -p err Уровни: emerg, alert, crit, err, warning, notice, info, debug. 🧰 Полезный однострочник Логи за последние 10 минут, только ошибки, для сервиса SSH: journalctl -u ssh --since "10 minutes ago" -p err 🔥 Было полезно? Поставьте реакцию 👍6,42%
- 3 июл.🩺 Команда «Здоровье сервера» — быстрый осмотр Каждый раз вручную запускать top, free, uptime, df — долго. Этот скрипт собирает всё на одном экране за секунду. Вы сразу видите, перегружен ли сервер, хватает ли памяти и не забиты ли диски. Установка: sudo nano /usr/local/bin/health.sh Вставьте код ниже. Затем: sudo chmod +x /usr/local/bin/health.sh echo "alias health='sudo /usr/local/bin/health.sh'" >> ~/.bashrc source ~/.bashrc Теперь просто вводите health. Код: #!/bin/bash echo "=== CPU ===" top -bn1 | grep "Cpu(s)" | awk '{print "CPU: "$2+$4"%"}' echo "=== RAM ===" free -h | awk '/Mem/{print "Доступно / Всего: "$7" / "$2}' echo "=== Load Average ===" uptime | awk -F'load average:' '{print $2}' echo "=== Disks ===" df -h | grep -E '^/dev/(sd|xvd|nvme|vd)' | awk '{print $1, $2, $3, $4, $5, $6}' CPU > 80% — нагрузка. Load > ядер CPU — перегрузка. Available < 10% RAM — не хватает памяти. Disks Use% > 90% — срочно чистить. ▶️Видео на Youtube: https://www.youtube.com/watch?v=rWkvZg1gAtA5,61%
- 8 авг.✋Всем привет! Хотел бы порекомендовать вам канал Вороний блог | Linux и IT, который не только схож по теме — а именно Linux, — но и по духу и подходу к делу. 💣На нём автор каждый день публикует короткие викторины на знание Linux, полезные заметки, полноценные гайды и руководства, которые можно оставлять себе в качестве шпаргалки и в нужный момент к ним возвращаться. 🎯Так что советую присмотреться и почитать кое-что интересное: — Vocalinux - Универсальный голосовой ввод в Linux, MacOS и Windows — MicroMedia - Портативный десктопный просмотрщик видео и изображений 🦾Если откликнется — подписаться и поддержать его энтузиазм и полезные начала.5,52%
- 7 июл.🔎 Три простые команды: как проверить состояние сервера за 60 секунд Когда нужен быстрый статус сервера — достаточно трёх команд. Они помогут понять, что происходит прямо сейчас, без углубленного разбора. Время работы и нагрузка uptime Покажет время работы, нагрузку CPU за последние 1/5/15 минут и количество запущенных пользователей. Кто сейчас вошёл в систему who -u Покажет список вошедших пользователей и их активность. Топ по потреблению ресурсов top -b -n1 | head -n 5 Покажет верхние процессы по загрузке CPU/памяти (однократный снимок, без интерактива). 💡 Быстрый вывод: если команды показывают высокую загрузку или неизвестные процессы — это повод детальнее проверить логи и запланировать план действий. 🔥 Если пост полезен — поставьте реакцию 👍5,37%
- 21 июн.🔍 /proc: папка, которой не существует (но она работает) Вы наверняка заглядывали в /proc — там куча папок с цифрами и файлы вроде cpuinfo, meminfo. Выглядит как обычная директория? А вот и нет. 🎯Факт: внутри /proc нет ни одного реального файла. Все данные генерируются ядром на лету, прямо в момент обращения. Это «псевдо-файловая система» — интерфейс для общения с ядром Linux. ⚙️ Как это работает? Когда Вы выполняете: cat /proc/cpuinfo Ядро перехватывает запрос, собирает актуальную информацию о процессорах (прямо из своих структур), форматирует в текст и отдаёт Вам. Через секунду этого «файла» в памяти уже нет. Следующий cat — ядро снова собирает данные заново. 🧰 Что полезного лежит в /proc? Вот несколько примеров, которые пригодятся в работе: /proc/cpuinfo — Модель, ядра, флаги процессора → cat /proc/cpuinfo /proc/meminfo — Оперативная память (total, free, buffers) → cat /proc/meminfo /proc/uptime — Время работы системы и время idle → cat /proc/uptime /proc/version — Версия ядра и компилятор → cat /proc/version /proc/loadavg — Средняя нагрузка за 1/5/15 минут → cat /proc/loadavg /proc/net/tcp — Список TCP-соединений (сырой) → cat /proc/net/tcp /proc/self/status — Информация о текущем процессе → cat /proc/self/status ⚠️ Итог /proc — это не папка с файлами, а интерфейс для взаимодействия с ядром. Работа с ним — основа диагностики и тонкой настройки Linux-систем. Стало понятнее? Поставьте реакцию 👍4,35%
- 18 июл.🔎 Одна команда, чтобы быстро понять логи: journalctl Если у Вас systemd, то journalctl помогает смотреть логи максимально просто и удобно. Ниже — минималистичный гайд, чтобы быстро начать разбирать проблемы. ▶️Основная команда Показать всё логи за сегодня и в реальном времени: journalctl --since today -f Выводит записи с начала дня и продолжает показывать новые записи в реальном времени (как tail -f, но по журналу systemd). Быстрые полезные варианты Логи конкретного сервиса (например, nginx): journalctl -u nginx Только ошибки и выше: journalctl -p err По времени (за последние 2 часа): journalctl --since "2 hours ago" 🚀Быстрый пример одной полезной комбинации Смотреть логи сервиса nginx за последние 1 час в реальном времени: journalctl -u nginx --since "1 hour ago" -f 🔥 Был ли пост полезен? Поставьте реакцию 👍4,10%
- 19 июн.🔍 Порт занят? Узнайте, какой процесс его держит Бывает: запускаете Nginx, а он говорит «Address already in use». Знакомая ситуация? Давайте разберёмся, как найти процесс, который занял порт, и как его корректно завершить. 🧰 Команда ss (современный netstat) Утилита ss быстрее и удобнее старого netstat. Она есть почти везде. Посмотреть все слушающие порты: sudo ss -tulpn Что означает: -t – TCP -u – UDP -l – только слушающие -p – показать PID и имя процесса -n – не преобразовывать адреса в имена Пример вывода: State Recv-Q Send-Q Local Address:Port Process LISTEN 0 128 0.0.0.0:80 users:(("nginx",pid=1234)) Теперь загляните в столбец Process — там и пид, и имя. ❓ Если нужно найти только конкретный порт Добавьте фильтр по порту (например, порт 8080): sudo ss -tulpn | grep :8080 Или используйте: sudo lsof -i :8080 lsof показывает все процессы, использующие сеть. 🚫 Как освободить порт Если процесс вам не нужен, убейте его: sudo kill -9 <PID> Важно: kill -9 принудительно завершает процесс. Если это сервер (Nginx, PostgreSQL), сначала лучше попробовать systemctl stop <service>. 🔥 Полезный материал? Поставьте реакцию 👍3,96%
- 16 июн.🛡 Настройка SSH-ключей: доступ по паролю забываем навсегда 👋Если Вы до сих пор вводите пароль при каждом подключении к серверу — пора это менять. SSH-ключи быстрее, удобнее и безопаснее паролей. Разберём за 5 минут. 🔑 Шаг 1. Генерируем ключ на Вашей локальной машине Откройте терминал (Linux / macOS / WSL) и выполните: ssh-keygen -t ed25519 -C "Ваш_email@example.com" Нажмите Enter для стандартного пути ~/.ssh/id_ed25519. Можно задать пароль (passphrase) — это дополнительный пин-код для ключа. 🧠 Почему ed25519? Он быстрее RSA и даёт такой же уровень безопасности при меньшей длине. 📤 Шаг 2. Копируем Ваш публичный ключ на сервер Вариант 1 — универсальная команда: ssh-copy-id user@ip_сервера Вариант 2 — вручную, если ssh-copy-id нет: cat ~/.ssh/id_ed25519.pub | ssh user@ip_сервера "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" После этого пароль больше не потребуется — заходите сразу. 🔧 Шаг 3. Отключаем вход по паролю (рекомендуем) Зайдите на сервер и отредактируйте конфиг: sudo nano /etc/ssh/sshd_config Найдите строки и сделайте так: PasswordAuthentication no PermitRootLogin prohibit-password # или no После этого перезапустите SSH: sudo systemctl restart sshd # или ssh, в зависимости от системы ⚠️ Важно: перед этим убедитесь, что у Вас есть доступ по ключу (новая сессия должна открываться без пароля). Иначе Вы заблокируете сами себя. 🔥 Был ли пост полезен? Поставьте реакцию 👍2,84%
- 4 авг.🧠 Викторина: как найти PID процесса по его имени 💡Какая команда точно покажет PID процесса по имени "nginx" (при этом может быть несколько процессов) на большинстве систем?2,83%