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 createhash:net timeout -I -p -m multiport --dports -m set --match-set src -j actionflush = ipset flush actionstop = -D -p -m multiport --dports -m set --match-set src -j ipset destroy actionban = ipset add timeout -exist actionprolong = %(actionban)s actionunban = ipset del -exist [Init] default-timeout = 600 ipmset = f2b- familyopt = subnet = $(echo | grep -oP '^d+.d+.d+').0/24 [Init?family=inet6] ipmset = f2b- 6 familyopt = family inet6
Обращаю внимание на тип таблицы hash:net и получение subnet.
Теперь нужно создать сам фильтр /etc/fail2ban/filter.d/nginx-bot.conf
[Definition] failregex = ^"[^"]*","","[^"]*","418","[^"]*/(raw|src|commits|blame)/commit/[^"]*" ignoreregex =
У меня логи пишутся в формате csv чтобы их было легко парсить. Если у вас дефолт, то должно быть что-то типа
failregex = ^-.*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 чарт с кронджобой.

№ 12706 В разделе
3D printing
от January 26th, 2026,

№ 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
Let’s say you need to create an image for your virtual machine where you’ll write some files or even create a special partition from an existing disk image. In Linux, you can mount this virtual disk image and use it like a regular block device!
The first step is to create your new virtual disk. This can be done directly in VirtualBox’s disk manager.
The next step is to install the necessary utilities and kernel modules from the Qemu distribution.
sudo apt install qemu-utils qemu-block-extra sudo modprobe nbd max_part=8 qemu-nbd --version
All preparations are complete; now you can specify the new block device.
sudo qemu-nbd -c /dev/nbd0 /tmp/New-disk-image.vdi
Finally, the final step is to create a partition table and a new partition on the new block device. As an example, I’ll create an EXT4 filesystem and mount it on my host system. You can also write special images using the dd utility.
cfdisk /dev/nbd0 mkfs.ext4 /dev/nbd0p1 tune2fs -L VDIPART1 /dev/nbd0p1
Just in case, let’s check the partition table.
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
Now you can mount this partition as usual and then unmount it after you’re done.
sudo mount /dev/nbd0p1 /mnt/ sudo rsync -avz /my/special/files/ /mnt/ sudo umount /mnt
Disconnect. Required before use in VirtualBox!
qemu-nbd -d /dev/nbd0
You’re awesome.
Fortune cookie: Today's spam: Are you hung like a horse?