mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-22 14:34:54 -05:00
Bruteforce login security #1733
Closed
opened 2025-11-02 04:11:36 -06:00 by GiteaMirror
·
11 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No Label
topic/security
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#1733
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @xy2z on GitHub (Apr 26, 2018).
[ ]):Description
By default, it is possible to bruteforce login on Gitea...
From reading other topics, it seems fail2ban is the preferred way to protect from these attacks.
IMO This is an important message to tell to new users in the "Installation" docs, including a tutorial on how to set it up (eg. using Docker) - both for gitea login and git login bruteforce attacks.
@TangentFoxy commented on GitHub (Apr 26, 2018):
Since you mention it... how would you set it up? I've looked up usage before, but struggled with understanding.
@xy2z commented on GitHub (Apr 26, 2018):
You prove my point :) we need a tutorial.
And sorry, I don't know
@4oo4 commented on GitHub (Apr 27, 2018):
This works for me. But remember that fail2ban is powerful and can cause lots of issues if you do it incorrectly, so make sure to test this before relying on it so you don't lock yourself out.
Gitea returns an
HTTP 200for bad logins in the web logs, but if you have logging options on inapp.ini, then you should be able to go off oflog/gitea.log, which gives you something like this on a bad authentication:2018/04/26 18:15:54 [I] Failed authentication attempt for user from xxx.xxx.xxx.xxxSo we set our filter in
/etc/fail2ban/filter.d/gitea.conf:And configure it in
/etc/fail2ban/jail.d/jail.local.Make sure and read up on fail2ban and configure it to your needs, this bans someone for 15 minutes (from all ports) when they fail authentication 10 times in an hour.
I also have other filters looking at the web access logs for HTTP error codes, but I'm guessing this is more effective. Since I run a reverse proxy to gitea with nginx, I also had to add this to my nginx config so that the IPs all didn't show up as
127.0.0.1proxy_set_header X-Real-IP $remote_addr;I would be surprised if there wasn't some kind of rate limiting built in to the app itself to help mitigate, if not it should definitely be looked at.
@xy2z commented on GitHub (Apr 27, 2018):
@4oo4
I don't think there is. I just tried a simple bruteforce attack on my own git, and I could get ~1000 in 10 minutes, not sure if it's my server or gitea that's slowing it down a bit. Anyway, that's 144.000 attempts a day...
And thanks for the guide, I'll try it out.
@xy2z commented on GitHub (Jul 14, 2018):
This doesn't work on my Gitea via Docker - I would be banned from all ports, but still have access to my docker websites, really weird...
So I found this blog post http://www.the-lazy-dev.com/en/install-fail2ban-with-docker/
Create a new fail2ban action file in
/etc/fail2ban/action.d/iptables-docker.conf:Change the
actioninjail.localgitea section to:action = iptables-dockerRestart fail2ban.
Can someone confirm this works on their docker setup, so the docs can be updated.
@ghost commented on GitHub (Jul 14, 2018):
If a site is seeing a brute force attack why be reactionary and not proactive? A proof of work upon login could go a long way.
@Mebus commented on GitHub (Mar 28, 2019):
How can I set this up within my Docker container? Could this be integrated into the default Docker Image?
@xy2z commented on GitHub (Mar 28, 2019):
@Mebus See https://docs.gitea.io/en-us/fail2ban-setup/
Note: If you have Gitea running on a port other than 80/443, eg. '3000', then you need to change the fail2ban config - this was my initial issue.
But I agree there should be an integrated solution in Gitea.
@porunov commented on GitHub (Aug 1, 2019):
Any idea how to add bruteforce login security for
git clone <myrepo>? Failed logins forgit cloneare shown without ip addresses. Am I missing something?@GAS85 commented on GitHub (Jul 18, 2022):
This seems very old issue. Could be please documentation updated? E.g. Add how to set this header in all Reverse Proxies examples here https://docs.gitea.io/en-us/reverse-proxies/.
I came here to check Apache2 solution for the header.
@delvh commented on GitHub (Apr 29, 2023):
Yes.
Exists already as you linked the article yourself: https://docs.gitea.com/administration/fail2ban-setup
I disagree. I don't see how Gitea can do this better than a service that is specialized for these kinds of things.
Every approach to implement it in Gitea will only bloat Gitea substantially.
So, as everything mentioned in this issue has been implemented, I think we can close this one.