Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 12736 В разделе
Sysadmin
от June 12th, 2026,
В подшивках: Git
Заебали. ЗАЕБАЛИ! Эти козлы вообще берега потеряли. Огромная нагрузка, быстро засирающийся кеш, медленная связь, игнор любых robots.txt и каких-то правил. Я уже думаю закрыть полностью git и другие сайты для интернета, сделав их приватными сервисами. РКН и Минцифры так заботятся о нас, загоняя в чебурнет ради безопасности от внешних угроз, конечно же, а тем временем эта бомбежка идет и из сети ростелекома в том числе.
Первым делом нужно заблочить доступ в местах, куда нормальный человек вообще никогда не полезет и использовать это в целях блокировки:
if ($request_uri ~* "/(raw|src|commits|blame)/commit/") {
set $block_bot 1;
}
# Если переменная активирована, возвращаем 418 и сразу стопорим обработку
if ($block_bot = 1) {
return 418;
}
Это пометит в логах такие говнозапросы кодом 418. Потом в приложении нужно отключить скачивание архивов. Боты прожамкивают все ссылки на них и генерируют огромного размера кеш. Всего за 1 вечер у меня он вырос на 30 гигов. Добавить в app.ini:
[repository] DISABLE_DOWNLOAD_SOURCE_ARCHIVES = true
Я мигрировал с Gitea на Forgejo, проверьте имя опции для своего приложения, если не сработало сразу.
В принципе, вы уже на этом этапе ощутите прирост скорости и эффективность очистки кешей архивов через панель администратора. Это все можно завернуть на fail2ban, если вам не жалко памяти и процессорного времени потому, что хостов будет великое множество.
Создаем новое правило в файле /etc/fail2ban/jail.d/nginx-fuck-ai-bots.conf
[nginx-bot-blocker] enabled = true port = http,https filter = nginx-bot logpath = /var/log/nginx/k8s-git-access.log maxretry = 1 bantime = 86400 findtime = 60 ignoreip = 127.0.0.1/8 192.168.0.0/16 10.0.0.0/8 action = iptables-multiport[name=nginx-bot, port="http,https", protocol=tcp]
Можно сделать модифицированную копию этого action с добавлением маски /24, fail2ban начнет вваливать их небольшими подсетями, это сэкономит немного памяти. Но памяти сожрется очень много, сразу говорю.
Производительность можно увеличить переходом на кастомный action с ipset (ставится отдельно):
action = iptables-ipset-24[name=nginx-bot, port="http,https", protocol=tcp, blocktype=DROP]
А сам action в файле /etc/fail2ban/action.d/iptables-ipset-24.conf сделать таким:
[INCLUDES]
before = iptables-common.conf
[Definition]
actionstart = ipset create <ipmset> hash:net timeout <default-timeout><familyopt>
<iptables> -I <chain> -p <protocol> -m multiport --dports <port> -m set --match-set <ipmset> src -j <blocktype>
actionflush = ipset flush <ipmset>
actionstop = <iptables> -D <chain> -p <protocol> -m multiport --dports <port> -m set --match-set <ipmset> src -j <blocktype>
<actionflush>
ipset destroy <ipmset>
actionban = ipset add <ipmset> <subnet> timeout <bantime> -exist
actionprolong = %(actionban)s
actionunban = ipset del <ipmset> <subnet> -exist
[Init]
default-timeout = 600
ipmset = f2b-<name>
familyopt =
subnet = $(echo <ip> | grep -oP '^\d+\.\d+\.\d+').0/24
[Init?family=inet6]
ipmset = f2b-<name>6
familyopt = <sp>family inet6
Обращаю внимание на тип таблицы hash:net и получение subnet.
Теперь нужно создать сам фильтр /etc/fail2ban/filter.d/nginx-bot.conf
[Definition] failregex = ^"[^"]*","<HOST>","[^"]*","418","[^"]*/(raw|src|commits|blame)/commit/[^"]*" ignoreregex =
У меня логи пишутся в формате csv чтобы их было легко парсить. Если у вас дефолт, то должно быть что-то типа
failregex = ^<host> -.*GET.*/(raw|src|commits|blame)/commit/.* 418
Если все зашибок в логе fail2ban вы увидите что-то типа
2026-06-12 04:48:55,646 fail2ban.filter [2601244]: INFO Added logfile: '/var/log/nginx/k8s-git-access.log' (pos = 11892730, hash = 3766ecb7dadb449dee6e990831a627eb3468e574)
2026-06-12 04:48:55,665 fail2ban.jail [2601244]: INFO Jail 'sshd' started
2026-06-12 04:48:55,666 fail2ban.jail [2601244]: INFO Jail 'nginx-bot-blocker' started
2026-06-12 04:48:55,854 fail2ban.filter [2601244]: INFO [nginx-bot-blocker] Found 14.191.222.88 - 2026-06-12 04:48:55
2026-06-12 04:48:55,866 fail2ban.actions [2601244]: NOTICE [nginx-bot-blocker] Ban 14.191.222.88
2026-06-12 04:48:56,067 fail2ban.filter [2601244]: INFO [nginx-bot-blocker] Found 113.181.28.191 - 2026-06-12 04:48:56
2026-06-12 04:48:56,083 fail2ban.actions [2601244]: NOTICE [nginx-bot-blocker] Ban 113.181.28.191
2026-06-12 04:48:56,092 fail2ban.filter [2601244]: INFO [nginx-bot-blocker] Found 156.255.247.131 - 2026-06-12 04:48:56
2026-06-12 04:48:56,289 fail2ban.actions [2601244]: NOTICE [nginx-bot-blocker] Ban 156.255.247.131
2026-06-12 04:48:56,479 fail2ban.filter [2601244]: INFO [nginx-bot-blocker] Found 113.176.240.57 - 2026-06-12 04:48:56
Также можно понаблюдать как ваш фаервол заваливает адресами
watch -n 1 "iptables -L f2b-nginx-bot -n|wc"
Итого мы имеем, что послали любителей халявы на хуй + сразу же их определили в бан.

№ 12719 В разделе
Sysadmin
от March 14th, 2026,
В подшивках: Backups, Linux, Mail.ru
Дело было вечером, делать было нечего… А бэкапить почту все равно нужно в свете последних событий, где mail.ru выкатил нехилый ценник за пользование почтой через imap. Готовые решения мне не понравились и некоторым я, откровенно говоря, не доверял. Появилась цель создать простой эффективный инструмент, способный подключаться по современным протоколам безопасности, возможностью дедупликации и инкрементации бэкапных файлов новыми письмами и дальнейшим беспроблемным импортом в новый почтовый сервер.
Сайт с документацией https://imap2mbox.blindage.org
Программа предназначена для однократного запуска и не имеет функций архивирования, это простой инструмент для выкачивания писем в mbox файлы с возможностью докачать новые письма позже без повторной полной выкачки. Для архивации файлов используйте специализированное ПО, например, borg или даже самописный bash скрипт, что удобнее. Файлы mbox могут быть опционально сжаты в gzip прямо во время выкачивания писем, но тогда вы лишитесь возможности делать инкрементный бэкап с помощью того же borg просто потому, что файл стал бинарным и немного меняется каждое сжатие.
Запуск рекомендуется делать регулярно через cron. Также можно контейнеризировать весь набор ПО для бэкапа почты и запускать в Kubernetes по Cronjob, сохранив конфиг в секрет. Вывод программы подготовлен к использованию с системами сбора логов в kv формате. Там же на сайте есть helm чарт с кронджобой.

№ 12704 В разделе
Sysadmin
от January 22nd, 2026,
# Сбросить порт (замените 1-1.2 на ваш порт) echo '1-1.2' | sudo tee /sys/bus/usb/drivers/usb/unbind echo '1-1.2' | sudo tee /sys/bus/usb/drivers/usb/bind
Полный сброс всего USB-контроллера (радикальный способ)
# Отключить USB-контроллер sudo sh -c "echo 0 > /sys/bus/pci/drivers/xhci_hcd/unbind" # Включить обратно sudo sh -c "echo 1 > /sys/bus/pci/drivers/xhci_hcd/bind"

№ 12688 В разделе
Sysadmin
от November 11th, 2025,
В подшивках: Linux, Virtualbox, Virtualization
Допустим, что у вас стоит задача создать образ для вашей виртуальной машины куда вы запишете некоторые файлы или даже создать специальный раздел из существующего образа диска. В Linux есть возможность примонтировать этот образ виртуального диска и использовать как обычное блочное устройство!
Первым шагом нужно создать ваш новый виртуальный диск. Это можно сделать прямо в VirtualBox в менеджере дисков.
Следующий шаг это установить необходимые утилиты и модули ядра из поставки Qemu.
sudo apt install qemu-utils qemu-block-extra sudo modprobe nbd max_part=8 qemu-nbd --version
Вся подготовка завершена, теперь можно указать новое блочное устройство.
sudo qemu-nbd -c /dev/nbd0 /tmp/New-disk-image.vdi
Наконец, финальный шаг это создать таблицу разметки и новую партицию в новом блочном устройстве. Как пример, я создам файловую систему ЕХТ4 и примонтирую к своей хост системе. Вы также можете даже записать какие-то специальные образы используя утилиту dd.
cfdisk /dev/nbd0 mkfs.ext4 /dev/nbd0p1 tune2fs -L VDIPART1 /dev/nbd0p1
На всякий случай проверим таблицу разметки.
vlad@turtle:/$ fdisk -l /dev/nbd0 Disk /dev/nbd0: 256 GiB, 274877906944 bytes, 536870912 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x10b50298 Device Boot Start End Sectors Size Id Type /dev/nbd0p1 2048 536870911 536868864 256G 83 Linux
Теперь можно как обычно примонтировать этот раздел и потом после работы отмонтировать.
sudo mount /dev/nbd0p1 /mnt/ sudo rsync -avz /my/special/files/ /mnt/ sudo umount /mnt
Отключение. Необходимо перед использованием в VirtualBox!
qemu-nbd -d /dev/nbd0
Вы великолепны.
Fortune cookie: brunette bush, n: The dark side of the moon.