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"
Итого мы имеем, что послали любителей халявы на хуй + сразу же их определили в бан.
Fortune cookie: Today's spam: ELIMINATE YOUR CREDIT CARD DEBT WITHOUT BANKRUPTCY!
Leave a Reply