Linux: Системный администратор
1.69K subscribers
57 photos
7 videos
15 files
18 links
Здесь вы найдете полезные советы, практические материалы и интересные инсайты по администрированию Linux. Погружаемся в мир команд, скриптов и серверов вместе! 🚀

Авторский канал действующего админа 👨🏼‍💻
加入频道
💡 Как ускорить резолв DNS в Linux (и не словить таймаут)

Иногда curl, apt, ping и др. тормозят из-за медленного DNS. Особенно при неверной конфигурации /etc/resolv.conf. Вот как это проверить и поправить:


🔧 1. Проверяем текущий DNS:


systemd-resolve --status | grep 'DNS Servers' -A2


или:


resolvectl status


Убедись, что указан локальный (127.0.0.53) резолвер, если используется systemd-resolved, или явные DNS (например, 8.8.8.8) — если нет.


⚙️ 2. Проверяем /etc/resolv.conf:


cat /etc/resolv.conf


Если там:


nameserver 127.0.0.53


— ок для systemd-resolved.

Если там:


nameserver 127.0.0.1


опасно! Убедись, что локальный DNS работает (dnsmasq, unbound и пр.). Иначе — будут фризы.


🚑 3. Подключи быстрые DNS напрямую (если нужно):


sudo nano /etc/systemd/resolved.conf


Добавь:


[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9


Применить:


sudo systemctl restart systemd-resolved



📌 Совет:

Проверь производительность DNS:


systemd-resolve google.com --statistics


Или используй dig, drill и resolvectl query.


#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
2👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🔗 goto: Навигация в консоли на новом уровне! 🚀

🔥 goto — это удобный инструмент для быстрого перемещения по директориям в командной строке. Если вы устали от постоянного набора длинных путей к папкам, этот инструмент станет вашим спасением!

🎯 Что делает goto?
- Позволяет сохранять короткие алиасы для директорий.
- Упрощает переход к важным папкам одной командой.
- Работает быстро, удобно и просто!

📌 Ключевые функции:
1. Добавление алиасов:

goto add <alias> <path>

Пример:

goto add projects ~/Documents/Projects


2. Навигация по алиасу:

goto <alias>

Пример:

goto projects


3. Список всех алиасов:

goto list


4. Удаление алиасов:

goto remove <alias>


💻 Установка
Просто клонируйте репозиторий и следуйте инструкциям:

git clone https://github.com/grafviktor/goto.git
cd goto
make install


🛠 Для кого?
- Разработчиков, которые работают с множеством проектов.
- Системных администраторов, часто переключающихся между директориями.
- Всех, кто хочет оптимизировать свою работу в терминале.


📥 Репозиторий: https://github.com/grafviktor/goto

#Linux@linux_odmin #Github@linux_odmin

👉 @linux_odmin
3👍1
🚨 tcpdump + iptables: ищем странный трафик с минимальными усилиями

Бывает сервер грузится входящими соединениями, но откуда — непонятно. Ловим сразу по факту, не копаясь в логах.

🎯 Цель: отловить соединения к нестандартному порту, которых быть не должно.

🔧 Шаги:

1. Выясни, куда идет трафик:


ss -tnlp


Смотри, какие порты слушаются. Допустим, нашли неожиданный порт 4444.

2. Добавь временное правило в iptables, чтобы логировать:


iptables -I INPUT -p tcp --dport 4444 -j LOG --log-prefix "INCOMING 4444: " --log-level 4


3. Лови трафик через tcpdump, если логов нет или нужно больше деталей:


tcpdump -i any port 4444 -n


Или в файл:


tcpdump -i any port 4444 -n -w suspicious.pcap


4. Проверка логов:


dmesg | grep 'INCOMING 4444'


Или в journald:


journalctl -k | grep 'INCOMING 4444'


5. Удаление правила после анализа:


iptables -D INPUT -p tcp --dport 4444 -j LOG --log-prefix "INCOMING 4444: " --log-level 4


⚠️ Зачем и когда применять:

– Быстрое выявление подозрительной активности
– Минимальное вмешательство в работу сервиса
– Отличный способ понять, «кто ломится» на редкие или ошибочно открытые порты

💡 tcpdump + iptables LOG — мощный дуэт для экспресс-анализа трафика без сложных тулов.

Сохрани, пригодится при разборе аномалий ⚙️

#Linux@linux_odmin #Github@linux_odmin

👉 @linux_odmin
👍5
🔒 Быстрый способ ограничить доступ к SSH по стране с помощью ipset + iptables

Если нужно быстро отрезать SSH от всего мира, кроме, скажем, России (или наоборот — закрыть доступ для определённой страны), вот практический способ.


1. Установи нужные пакеты:


apt install ipset xtables-addons-common -y


2. Скачай GeoIP базы:


/usr/lib/xtables-addons/xt_geoip_dl
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip /usr/share/xt_geoip/*


3. Создай ipset с нужной страной:


ipset create geo-ru hash:net


4. Загрузи IP-диапазоны страны (например, Russia):


wget -O - https://ipdeny.com/ipblocks/data/countries/ru.zone | while read ip; do ipset add geo-ru $ip; done


5. Применение iptables-правила:


iptables -A INPUT -p tcp --dport 22 -m set ! --match-set geo-ru src -j DROP


📌 Быстрый и действенный способ снизить количество bruteforce-попыток к SSH, особенно если сервер рассчитан на работу только из одной страны.

⚠️ Geo-блокировка не панацея — используйте вместе с fail2ban, ключами и сменой порта.

💡Можно применить тот же принцип для любого сервиса — не только SSH. Просто поменяй порт и ipset.

#Linux@linux_odmin #Github@linux_odmin

👉 @linux_odmin
👍6
🔥 Диагностика внезапных потерь связи через ip route get

Сеть вроде «живая», ping до шлюза идёт, но пакеты не доходят до нужного хоста? Быстрая проверка маршрута решит многое.

📌 Что делать:


ip route get 8.8.8.8


🔍 Что покажет:

- интерфейс, через который идёт маршрут
- IP-адрес источника (важно при policy routing)
- реальный шлюз
- отметку mtu, cache, unreachable и др.

🛠 Пример:


ip route get 8.8.8.8
8.8.8.8 via 192.168.1.1 dev eth0 src 192.168.1.100 uid 1000


Если вместо via ...unreachable, значит маршрут битый или его нет.

👀 Когда использовать:

- подозрение на policy routing
- неочевидные проблемы при SNAT/DNAT
- быстро понять, почему не ходит трафик

💡 Трюк:
Добавь -o к ip — получишь вывод в JSON, удобно парсить в скриптах:


ip -j route get 8.8.8.8 | jq .


Сохрани, пригодится в проде, когда всё внезапно «перестаёт работать».

#Linux@linux_odmin #Github@linux_odmin

👉 @linux_odmin
👍51
🔥 Неожиданный source IP у входящих соединений? Проверяем Reverse Path Filtering (rp_filter)

📌 Столкнулись с асимметричной маршрутизацией, при которой ss или tcpdump показывают странный source IP? Или iptables дропает "легитимные" соединения? — проблема может быть в rp_filter.


1. Нужно проверить текущие настройки:


sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter


1 — strict mode (по умолчанию);
0 — отключено;
2 — loose mode (рекомендуется при асимметрии или сложной маршрутизации).

2. Временно изменить поведение:


sysctl -w net.ipv4.conf.all.rp_filter=2
sysctl -w net.ipv4.conf.default.rp_filter=2


3. Постоянно через /etc/sysctl.conf:


net.ipv4.conf.all.rp_filter=2
net.ipv4.conf.default.rp_filter=2



❗️ Когда применять:
Если используется policy-based routing, мульти-хоминг или VPN с отдельными маршрутами — strict режим (1) может ломать соединения.

💡Используйте 2 для loose проверки, если трафик приходит по одному интерфейсу, а уходит через другой.

#Linux@linux_odmin #Github@linux_odmin

👉 @linux_odmin
👍2
🎉Коллеги, всех причастных с праздником!!!

Желаю, чтобы начальство думало о тебе не только тогда, когда “ничего не работает”.

👉 @linux_odmin
🎉94
🔥 Bash-скрипт: Поиск больших файлов в системе

Когда место на сервере внезапно заканчивается, найти "пожирателей" места бывает непросто. Вот простой скрипт, который покажет топ-20 самых больших файлов:


#!/bin/bash

# Где искать (по умолчанию — весь /)
SEARCH_DIR="/"

# Сколько файлов показывать
TOP=20

echo "=== Топ-$TOP самых больших файлов в $SEARCH_DIR ==="
find "$SEARCH_DIR" -type f -printf '%s %p\n' 2>/dev/null | sort -nr | head -n $TOP | awk '{printf "%10d MB %s\n", $1/1024/1024, $2}'


Как использовать:

1. Сохраните в /usr/local/bin/bigfiles.sh.
2. Сделайте исполняемым:


chmod +x /usr/local/bin/bigfiles.sh

3. Запускайте, например:


/usr/local/bin/bigfiles.sh


#Linux@linux_odmin #Github@linux_odmin

👉 @linux_odmin
👍41
💡 Как я ускоряю поиск по логам в Linux

Сегодня покажу вам приём, который не раз спасал мне нервы при анализе логов.

Представим, что нужно найти ошибки в большом лог-файле, например /var/log/nginx/access.log. Обычно все начинают с:


cat access.log | grep "500"


Но это медленно. Лучше так:


grep "500" access.log


Ещё лучше — использовать less и внутри него grep-подобный поиск:


less +F access.log


А затем нажать /500 — и перейти по найденным совпадениям. Работает быстро, особенно на больших логах.

А если хочется реального профита, то вот мой любимый трюк:


grep -E "500|502|503" access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head


Что делает эта команда:
- Ищет ошибки 500/502/503
- Извлекает IP-адреса (предположим, это первое поле)
- Считает, сколько раз каждый IP дал ошибку
- Показывает топ атакующих/плохих клиентов

Эта команда — мини-аналитика в одну строку. Часто помогает сразу понять, где проблема.


#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍8
🚀 Netplan: быстрая настройка второго IP на интерфейсе

Нужно добавить второй адрес без простоя? Netplan справится за пару секунд.

1. Редактируем конфиг:


# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
ens33:
addresses:
- 192.168.1.10/24
- 192.168.1.20/24 # ← второй IP
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]


2. Применяем изменения без перезагрузки:


netplan apply


3. Проверяем:


ip a show ens33


Зачем так?
– Удобно для быстрого тестирования сервисов.
– Применяется атомарно (не рвёт соединения).
– Работает одинаково в Ubuntu/Debian с Netplan.

⚠️ Трюк: можно применить временно:


netplan try


- изменения откатятся, если не подтвердить за 120 сек.

Сохрани себе — выручит, когда надо быстро поднять доп. IP без рестарта сети.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍4
ss вместо netstat: быстрое выявление зависших соединений

netstat устарел, а вот ss работает быстрее и даёт больше деталей.
Полезно, когда сервер "подвис" на куче TCP-сессий.

Базовые приёмы:

1. Все активные TCP-соединения:


ss -tuna


(-t TCP, -u UDP, -n без DNS, -a все сокеты)

2. Сортировка по количеству соединений с IP:


ss -tan | awk '{print $6}' | sort | uniq -c | sort -nr | head


→ Быстро видим топ-источники трафика.

3. Состояния TCP (например, зависшие TIME-WAIT):


ss -tan state time-wait


4. Отбор по порту:


ss -tan sport = :443


Зачем?
– Диагностика DDoS / "залипших" коннектов.
– Поиск проблемных клиентов.
– Быстрая альтернатива netstat без лишних зависимостей.

👉 ss -p — сразу показывает PID процесса, владеющего сокетом.

Проверь свой сервер — удивишься количеству "мертвых" коннектов.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍3
🚀 Быстрый способ ограничить скорость на интерфейсе с tc

Иногда нужно временно урезать пропускную способность - тест, симуляция плохого канала, защита от перегрузки. Делается это без лишних пакетов - встроенным Traffic Control.


Пример: ограничим eth0 до 10 Мбит/с


# Очистить старые правила
tc qdisc del dev eth0 root 2>/dev/null

# Добавить qdisc с ограничением
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms


🔹 rate - целевая скорость.
🔹 burst - размер «рывка» (буфер), лучше 2–3× MTU.
🔹 latency - допустимая задержка очереди.


📌 Проверка:


tc -s qdisc show dev eth0


📌 Сброс:


tc qdisc del dev eth0 root



💡 Когда полезно:

- тестирование поведения приложений при низкой скорости;
- эмуляция 3G/4G-сетей;
- временное сдерживание исходящего трафика при ddos/backup.

Сохрани, пригодится.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
4👍1
🔥 iptables: быстрое логирование и дроп подозрительных пакетов

Иногда нужно понять, что именно ломится в сервер, но без спама в dmesg.

Минимальный рабочий набор:


# 1. Создаём цепочку для логирования
sudo iptables -N LOG_DROP

# 2. Логируем с ограничением частоты (1 сообщение/сек)
sudo iptables -A LOG_DROP -m limit --limit 1/second -j LOG \
--log-prefix "[FW DROP] " --log-level 4

# 3. Дропаем пакет
sudo iptables -A LOG_DROP -j DROP

# 4. Применяем к подозрительному трафику (пример: TCP 23)
sudo iptables -A INPUT -p tcp --dport 23 -j LOG_DROP


Где смотреть логи:

- journalctl -k -f
- или /var/log/kern.log (Debian/Ubuntu)

💡 Best practice:

- Используйте -m limit, чтобы не утопить систему в логах
- Для массового анализа можно отправлять в rsyslog с отдельным тегом

Сохрани — пригодится, если нужно быстро вычислить мусорный трафик и отрезать его 🚫

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍31
🚀 Быстрый контроль за соединениями через ss

Когда нужно понять, кто держит соединение, какой порт занят или где «течёт» трафик — ss быстрее и информативнее, чем устаревший netstat.

Пример: найти все процессы, слушающие порты TCP


ss -ltnp


-l — только прослушивающие сокеты
-t — TCP
-n — не пытаться резолвить имена
-p — показать PID/имя процесса

Активные установленные соединения:


ss -tn state established


Отфильтровать по порту:


ss -tn sport = :443


💡 ss может фильтровать по состояниям, адресам и портам прямо в команде — это экономит время при отладке сетевых проблем и поиске подозрительных подключений.

Когда применять:

- диагностика зависших сервисов
- поиск «висящих» соединений
- аудит входящих/исходящих подключений

Сохрани, пригодится.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍63
🔥 net.ipv4.conf.all.rp_filter - твой тихий телохранитель от IP spoofing

Многие админы забывают, что rp_filter в Linux может спасти от подмены IP пакетов, но при кривой настройке ломает сложные маршруты.

Проверка:


sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.conf.default.rp_filter


Значения:

- 0 - фильтр выключен
- 1 - строгий режим (пакет отбрасывается, если обратный маршрут не совпадает с интерфейсом входа)
- 2 - «loose mode» (разрешает асимметричную маршрутизацию, но всё ещё фильтрует spoof)

Безопасная настройка для большинства серверов:


sysctl -w net.ipv4.conf.all.rp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1


Для сложных схем с несколькими WAN:


sysctl -w net.ipv4.conf.all.rp_filter=2
sysctl -w net.ipv4.conf.default.rp_filter=2


Применить навсегда:


cat >> /etc/sysctl.conf <<EOF
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
EOF
sysctl -p


💡 Когда включать strict (1) - одиночный WAN, простая маршрутизация.
💡 Когда loose (2) - мульти-WAN, policy routing, сложные VPN-топологии.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍4
🔥 Быстро проверить, что слушает порт в Linux

Иногда нужно понять, какой процесс занял порт (например, 80 или 443) и почему сервис не стартует.

🔎 Проверка через ss:


ss -ltnp | grep ':80'


-l — только listening сокеты
-t — TCP
-n — не резолвить имена
-p — показывать PID/имя процесса

Пример вывода:


LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))


Альтернативы:

lsof -i :80 — если привычнее через lsof
fuser 80/tcp — быстрый вариант, сразу PID

⚡️ Когда полезно:

при конфликте сервисов (Apache vs Nginx)
при отладке firewall (порт слушает, но снаружи не доступен)
при проверке автозапуска демонов

👉 Лайфхак: если процесс «убегает» после запуска, можно использовать ss -ltunp в цикле:


watch -n1 "ss -ltunp | grep ':80'"


Так поймаете короткоживущие процессы.

#Linux@linux_odmin #Шпаргалка@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍7
Когда iptablesnftables: почему правила "не работают"

Частая ошибка при настройке firewall на дистрибутивах (Ubuntu 22.04, Debian 12, RHEL 9):
🔹 админ вносит правила в iptables, но трафик не фильтруется.

👉 Причина - современные системы используют nf_tables backend, и старый iptables лишь транслируется в nftables. В итоге: часть правил "теряется" или конфликтует.

Как проверить:


# какой бэкенд используется
iptables -V
# если увидите "nf_tables" — значит это не классический iptables


Что делать правильно:

1. Если нужен привычный iptables:


update-alternatives --config iptables


→ выбрать iptables-legacy (и для ip6tables тоже).

2. Лучше сразу перейти на nftables:


nft list ruleset
nft add rule inet filter input tcp dport 22 accept


Когда применять:

- Если правила не применяются, хотя "вбиты" в iptables.
- При миграции старых скриптов/ansible-ролей.
- Для единообразия конфигураций в новых ОС.

💡 Новые проекты сразу вести на nftables. Старые - либо переводить, либо жёстко фиксировать iptables-legacy.

#Linux@linux_odmin #Шпаргалка@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍5🔥1
🔐 Защищаем SSH с помощью Fail2Ban

Всем привет! 👋 Сегодня поговорим о базовой, но крайне важной утилите для защиты вашего сервера - Fail2Ban. Если у вас есть сервер с доступом по SSH, этот пост для вас.

Что такое Fail2Ban?

Fail2Ban — это утилита, которая анализирует логи служб (например, SSH, Apache, Nginx) на предмет подозрительной активности, такой как многократные неудачные попытки входа. При обнаружении нарушителя (бота или злоумышленника), Fail2Ban автоматически блокирует его IP-адрес на определённое время с помощью файрвола.

Как это защищает SSH?

Основная угроза для SSH - это брутфорс-атаки (атаки перебором), когда боты пытаются подобрать ваш пароль, пробуя тысячи комбинаций. Fail2Ban эффективно противостоит этому:

1. Мониторинг логов: Он постоянно следит за файлом /var/log/auth.log (или аналогом в вашей системе).
2. Обнаружение аномалий: Если с одного IP-адреса поступает, скажем, 5 неудачных попыток входа подряд, Fail2Ban это замечает.
3. Блокировка: Утилита мгновенно добавляет правило в файрвол (например, iptables или ufw), которое блокирует этот IP-адрес.
4. Снятие блокировки: Через заданное время (например, 10 минут или час) IP-адрес автоматически разблокируется.

Быстрая настройка для SSH (на примере Debian/Ubuntu)

Настроить базовую защиту очень просто:

1. Установка:


sudo apt update
sudo apt install fail2ban


2. Создание локального конфигурационного файла:
Никогда не редактируйте jail.conf! Создайте его копию jail.local, чтобы ваши настройки не перезаписались при обновлении.


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


3. Настройка jail.local:
Откройте файл sudo nano /etc/fail2ban/jail.local и найдите секцию [sshd]. Убедитесь, что она включена:


[sshd]
enabled = true


Вы можете изменить стандартные параметры, например:

- maxretry = 5 - количество неудачных попыток до бана.
- bantime = 10m - время блокировки (10 минут).
- findtime = 10m - временное окно, в течение которого считаются попытки.

4. Перезапуск службы:


sudo systemctl restart fail2ban


5. Проверка статуса:
Чтобы увидеть, заблокировал ли Fail2Ban кого-нибудь, используйте команду:


sudo fail2ban-client status sshd


#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍3
Сколько раз вы слышали истории о том, как злоумышленники получали доступ к Kubernetes-кластерам через неправильно настроенные права доступа или незащищённые секреты? В эпоху, когда контейнеризация стала стандартом, безопасность K8s — это уже не опция, а жизненная необходимость для любой серьёзной инфраструктуры.

📅 9 сентября в 20:00 Денис Шишикин проведёт открытый вебинар «Обеспечение безопасности в Kubernetes» в рамках курса «DevOps Advanced». Это практическое занятие для тех, кто хочет защитить свои кластеры от типовых угроз и научиться применять проверенные практики безопасности.

На вебинаре разберут конкретные инструменты и подходы — механизмы контроля доступа через RBAC, ограничение привилегий подов с помощью Pod Security Admission, безопасную работу с секретами через Sealed Secrets. Денис покажет, как сканировать манифесты и кластеры с помощью Trivy и kube-bench.

Особенно полезно будет DevOps-инженерам, системным администраторам и всем, кто работает с Kubernetes в продакшне. Спикер объяснит, какие угрозы характерны для K8s-кластеров и как проводить базовый аудит безопасности ресурсов и конфигураций.

👉 Вебинар бесплатный, но регистрация обязательна — места ограничены: https://vk.cc/cP9DCw

🎁 Каждый участник вебинара получит бонус — скидку на полный курс. Главное — успеть записаться.

Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
🤝1
nftables без fail2ban: динамический бан брутфорса SSH (IPv4/IPv6)

Задача: быстро отстреливать источники, ломающие ssh, без демонов и лог-парсеров. Решение - динамический set с таймаутом + правило, которое само добавляет нарушителя.

Шаги

1. Создаём таблицу, набор и цепочку:


sudo nft -f - <<'EOF'
table inet fw {
set ssh_bad {
type inet_addr
flags timeout
timeout 1h # дефолт для элементов
}

chain input {
type filter hook input priority 0; policy accept;

iif lo accept
ct state established,related accept

# уже занесённых — вон:
ip saddr @ssh_bad drop

# детект частых новых соединений на 22/tcp и бан + дроп:
tcp dport 22 ct state new limit rate over 10/minute \
add @ssh_bad { ip saddr timeout 2h } counter drop
}
}
EOF


2. Ручное управление бан-листом (админ-бан/разбан):


sudo nft add element inet fw ssh_bad { 203.0.113.5 timeout 24h comment "manual" }
sudo nft delete element inet fw ssh_bad { 203.0.113.5 }


3. Наблюдение за изменениями сета (для отладки):


sudo nft monitor set


4. Персистентность (Debian/Ubuntu/RHEL/Alma):


# Проверь синтаксис и атомарно загрузись
sudo nft -c -f /etc/nftables.conf && sudo nft -f /etc/nftables.conf
sudo systemctl enable --now nftables


совет: вынеси блок в /etc/nftables.d/ssh-ban.nft и подключи include в /etc/nftables.conf.


Зачем и когда

- Базовая защита от брутфорса без сторонних сервисов.
- Подходит для edge/VM/контейнер-хостов, где не нужен полный fail2ban.
- Работает в family inet → одна логика и для IPv4, и для IPv6.

Трюки / best practices

- limit rate over срабатывает только при превышении порога - нормальные пользователи не пострадают.
- Не делай flush table inet fw в бою: обнулятся текущие баны (timeouts). Обновляй правила точечно (nft -a list ruleset, затем delete rule handle … / add rule …) или проверяй конфиг -c перед загрузкой.
- Для нестандартных портов поменяй tcp dport 22 на свой.

#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin

👉 @linux_odmin
👍4