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"
Итого мы имеем, что послали любителей халявы на хуй + сразу же их определили в бан.
Fortune cookie: A proctologist is a doctor who puts in a hard day at the orifice.
Leave a Reply