🔒 Автоблокировка SSH-брутфорса через nftables
Даже если у тебя стоит fail2ban - иногда проще и быстрее решить задачу силами самого nftables. Минимум зависимостей, максимум контроля.
Пример: бан по 5 неудачным попыткам за 1 минуту
Как это работает
-
- Если за минуту ≥5 попыток — IP летит в
- Всё внутри одного ruleset’а, без демонов.
👉 Подходит для серверов, где хочется минимализма и нет нужды в сложных паттернах от fail2ban.
👉 Но осторожно: банится любой IP, даже если это сканер мониторинга или кривой клиент.
Сохрани, пригодится 😉
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Даже если у тебя стоит fail2ban - иногда проще и быстрее решить задачу силами самого nftables. Минимум зависимостей, максимум контроля.
Пример: бан по 5 неудачным попыткам за 1 минуту
table inet sshguard {
set ssh_blacklist {
type ipv4_addr
flags timeout
timeout 1h
}
map ssh_counter {
type ipv4_addr : counter
}
chain input {
type filter hook input priority 0;
# Разрешаем локалку и уже забаненных
ip saddr @ssh_blacklist drop
tcp dport 22 ct state new add @ssh_counter { ip saddr } counter
tcp dport 22 ct state new ip saddr @ssh_counter { ip saddr } >= 5 add @ssh_blacklist { ip saddr } drop
# Разрешаем SSH по умолчанию (после фильтра)
tcp dport 22 accept
}
}
Как это работает
-
ssh_counter считает подключения по IP.- Если за минуту ≥5 попыток — IP летит в
ssh_blacklist на 1 час.- Всё внутри одного ruleset’а, без демонов.
👉 Подходит для серверов, где хочется минимализма и нет нужды в сложных паттернах от fail2ban.
👉 Но осторожно: банится любой IP, даже если это сканер мониторинга или кривой клиент.
Сохрани, пригодится 😉
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍2🔥1
🚀 Быстрый способ отследить «зависшие» TCP-сессии
Иногда сервис «висит», но порты открыты и соединения висят в
🔍 Как проверить:
👉 Обрати внимание на колонку
🛠 Что делать:
1. Сбросить проблемные соединения:
2. Добавить sysctl-тюнинг, чтобы ядро не держало «мертвяков» вечно:
💡 Это помогает, если юзеры «обрываются» без выхода или при нестабильных VPN.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Иногда сервис «висит», но порты открыты и соединения висят в
ESTABLISHED. Классика: приложение не отвечает, но сокеты не закрываются.🔍 Как проверить:
ss -tnao state established 'sport = :22'
-tnao - TCP, numeric, all, с таймерами;state established - только активные соединения;'sport = :22' - фильтр по SSH (меняй на свой порт).👉 Обрати внимание на колонку
timer:on (keepalive,...) - соединение живое;on (timewait,...) или долго висит без активности → зомби-сессия.🛠 Что делать:
1. Сбросить проблемные соединения:
ss -K dport = :22 state established
2. Добавить sysctl-тюнинг, чтобы ядро не держало «мертвяков» вечно:
sysctl -w net.ipv4.tcp_keepalive_time=300
sysctl -w net.ipv4.tcp_keepalive_probes=5
sysctl -w net.ipv4.tcp_keepalive_intvl=60
💡 Это помогает, если юзеры «обрываются» без выхода или при нестабильных VPN.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍5🔥2
🚨 Иногда сетевой интерфейс «пропадает» после перезагрузки, особенно на серверах с systemd-networkd. Причина - интерфейсы могут переименовываться (например,
Фиксируем имя интерфейса:
🔧 Решение через systemd-link
1. Узнаём MAC-адрес:
2. Создаём правило:
3. Перезапускаем:
Теперь интерфейс всегда будет называться
- Удобнее писать unit-файлы, firewall-правила и netplan-конфиги.
- Избежите «сломанных» сетевых настроек после обновления/замены железа.
👉 Можно использовать Driver= или Path= вместо MAC, если карты одинаковые.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
ens3 → enp0s3).Фиксируем имя интерфейса:
🔧 Решение через systemd-link
1. Узнаём MAC-адрес:
ip link show
2. Создаём правило:
cat >/etc/systemd/network/10-persistent.link <<EOF
[Match]
MACAddress=52:54:00:ab:cd:ef
[Link]
Name=lan0
EOF
3. Перезапускаем:
systemctl restart systemd-udevd
systemctl restart systemd-networkd
Теперь интерфейс всегда будет называться
lan0.- Удобнее писать unit-файлы, firewall-правила и netplan-конфиги.
- Избежите «сломанных» сетевых настроек после обновления/замены железа.
👉 Можно использовать Driver= или Path= вместо MAC, если карты одинаковые.
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍9❤1
Перевод статей из серии «Кунг-фу стиля Linux»:
— Удобная работа с файлами по SSH
— Мониторинг дисковой подсистемы
— Глобальный поиск и замена строк с помощью ripgrep
— Упрощение работы с awk
— Наблюдение за файловой системой
— Наблюдение за файлами
— Удобный доступ к справке при работе с bash
— Великая сила make
— Устранение неполадок в работе incron
— Расшаривание терминала в браузере
— Синхронизация настроек
— Бесплатный VPN по SSH
— Превращение веб-приложений в полноценные программы
— Утилита marker и меню для командной строки
— sudo и поворот двух ключей
— Программное управление окнами
— Организация работы программ после выхода из системы
— Регулярные выражения
— Запуск команд
— Разбираемся с последовательными портами
— Базы данных — это файловые системы нового уровня
— О повторении кое-каких событий сетевой истории
— PDF для пингвинов
— Делаем все и сразу
— Файловые системы пользовательского пространства теперь доступны и в Windows
— Делиться — это плохо
— Автоматическое генерирование заголовочных файлов
— Простые конвейеры
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
— Удобная работа с файлами по SSH
— Мониторинг дисковой подсистемы
— Глобальный поиск и замена строк с помощью ripgrep
— Упрощение работы с awk
— Наблюдение за файловой системой
— Наблюдение за файлами
— Удобный доступ к справке при работе с bash
— Великая сила make
— Устранение неполадок в работе incron
— Расшаривание терминала в браузере
— Синхронизация настроек
— Бесплатный VPN по SSH
— Превращение веб-приложений в полноценные программы
— Утилита marker и меню для командной строки
— sudo и поворот двух ключей
— Программное управление окнами
— Организация работы программ после выхода из системы
— Регулярные выражения
— Запуск команд
— Разбираемся с последовательными портами
— Базы данных — это файловые системы нового уровня
— О повторении кое-каких событий сетевой истории
— PDF для пингвинов
— Делаем все и сразу
— Файловые системы пользовательского пространства теперь доступны и в Windows
— Делиться — это плохо
— Автоматическое генерирование заголовочных файлов
— Простые конвейеры
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍4🔥3
Короткий совет по Linux 💡
Если вы хотите очистить пустые каталоги, команда find может упростить эту работу:
Параметр -type d выполняет поиск каталогов, -empty выбирает пустые каталоги, а -exec rmdir {} выполняет команду rmdir для их удаления.
Команда rmdir гарантирует, что каталог пуст перед его удалением.
В качестве альтернативы, вы также можете использовать эту команду для выполнения той же задачи:
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Если вы хотите очистить пустые каталоги, команда find может упростить эту работу:
$ find . -type d -empty -exec rmdir -v {} +Параметр -type d выполняет поиск каталогов, -empty выбирает пустые каталоги, а -exec rmdir {} выполняет команду rmdir для их удаления.
Команда rmdir гарантирует, что каталог пуст перед его удалением.
В качестве альтернативы, вы также можете использовать эту команду для выполнения той же задачи:
$ find . -type d -empty -delete#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
NetAlertX — инструмент для мониторинга сетевой активности и обнаружения изменений в подключенных устройствах. Он помогает администратору отслеживать новые устройства в сети, анализировать подключение и уведомлять о любых подозрительных изменениях. Утилита может быть полезной для повышения безопасности сети и оптимизации управления подключениями.
https://github.com/jokob-sk/NetAlertX
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
https://github.com/jokob-sk/NetAlertX
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍6
Управление виртуальными машинами KVM из консоли
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
# virsh list – показать список запущенных ВМ# virsh list --all – показать список всех машин (в том числе выключенных)# virsh shutdown <vm name> — выключить виртуальную машину# virsh start <vm name> — запустить виртуальную машину# virsh suspend <vm name> — приостановить виртуальную машину# virsh resume <vm name> — запустить приостановленную виртуальную машину# virsh reboot <vm name> — перезапустить виртуальную машину# virsh destroy <vm name> — уничтожить виртуальную машину# virsh undefine <vm name> — удалить машину из списка и удалить все файлы, принадлежащие ей (обычно применяется после выполнения команды virsh destroy).# virsh vcpuinfo <vm name> — информация о процессоре на виртуальной машине # virsh domid <vm name> — получить идентификатор виртуальной машины# virsh domuuid <vm name> — получить UUID виртуальной машины# virsh dominfo <vm name> — получить сведения о виртуальной машине# virsh domstate <vm name> — просмотр состояния виртуальной машины# virsh dumpxml <vm name> — вывести файл конфигурации указанной виртуальной машины в XML формате#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍8
Команда crontab: опции, ключи и примеры использования
Планировщик cron для запуска задач с заданными интервалом времени от имени текущего пользователя. Формат планирования задачи: "(минута) (час) (день_месяца) (месяц) (день_недели) команда".
Редактирует файл crontab для текущего пользователя:
Выводит список существующих задая для текущего пользоваетеля:
Удаляет все задачи cron для текущего пользователя:
Пример задачи, которая запускается ежедневно в 10:00. * означает любое значение:
Пример задачи, которая запускается каждую минуту 3-го апреля:
Пример задачи, которая запускается каждую пятницу в 02:30:
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Планировщик cron для запуска задач с заданными интервалом времени от имени текущего пользователя. Формат планирования задачи: "(минута) (час) (день_месяца) (месяц) (день_недели) команда".
Редактирует файл crontab для текущего пользователя:
crontab -eВыводит список существующих задая для текущего пользоваетеля:
crontab -lУдаляет все задачи cron для текущего пользователя:
crontab -rПример задачи, которая запускается ежедневно в 10:00. * означает любое значение:
0 10 * * * {{path/to/script.sh}}Пример задачи, которая запускается каждую минуту 3-го апреля:
* * 3 Apr * {{path/to/script.sh}}Пример задачи, которая запускается каждую пятницу в 02:30:
30 2 * * Fri {{path/to/script.sh}}#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍6
Как проверить, что процесс слушает нужный порт?
Бывало такое, что сервис не отвечает, и непонятно, слушает ли он вообще нужный порт? Давайте разберёмся, как это проверить.
📡 Способы проверки:
1️⃣ ss (современный вариант
-
-
-
-
-
2️⃣ lsof (список открытых файлов, включая порты):
Покажет, какой процесс слушает 80-й порт.
3️⃣ netstat (старый, но работает):
4️⃣ Сокетный тест с
Если порт открыт, увидим сообщение
💡 Пример реального кейса: Apache не запускается, потому что другой процесс уже занял порт 80. Как быстро его прибить?
или
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Бывало такое, что сервис не отвечает, и непонятно, слушает ли он вообще нужный порт? Давайте разберёмся, как это проверить.
📡 Способы проверки:
1️⃣ ss (современный вариант
netstat):
ss -tulnp
-
-t — TCP;-
-u — UDP;-
-l — только слушающие сокеты;-
-n — не резолвить имена;-
-p — показать процессы.2️⃣ lsof (список открытых файлов, включая порты):
lsof -i :80
Покажет, какой процесс слушает 80-й порт.
3️⃣ netstat (старый, но работает):
netstat -tulnp
4️⃣ Сокетный тест с
nc:
nc -zv 127.0.0.1 80
Если порт открыт, увидим сообщение
succeeded.💡 Пример реального кейса: Apache не запускается, потому что другой процесс уже занял порт 80. Как быстро его прибить?
fuser -k 80/tcp
или
kill $(lsof -t -i :80)
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍6
Как быстро узнать, какие процессы грузят систему?
Если сервер вдруг начал тормозить, первым делом проверяем загрузку CPU и памяти. Вот мои любимые команды:
🔹 top — классика, показывает активные процессы в реальном времени.
🔹 htop — улучшенная версия top с удобным интерфейсом.
🔹 ps aux --sort=-%cpu | head — топ 10 процессов по загрузке CPU.
🔹 ps aux --sort=-%mem | head — топ 10 процессов по потреблению памяти.
А если хотите найти, какая конкретно команда грузит диск:
или
Какие инструменты используете вы, когда сервер внезапно начинает «тупить»? 🚀
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
Если сервер вдруг начал тормозить, первым делом проверяем загрузку CPU и памяти. Вот мои любимые команды:
🔹 top — классика, показывает активные процессы в реальном времени.
🔹 htop — улучшенная версия top с удобным интерфейсом.
🔹 ps aux --sort=-%cpu | head — топ 10 процессов по загрузке CPU.
🔹 ps aux --sort=-%mem | head — топ 10 процессов по потреблению памяти.
А если хотите найти, какая конкретно команда грузит диск:
iotop -oили
iostat -dx 1Какие инструменты используете вы, когда сервер внезапно начинает «тупить»? 🚀
#Linux@linux_odmin #LinuxTips@linux_odmin #Команды@linux_odmin
👉 @linux_odmin
👍7❤2