Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Brute-Force Protection #6152

Closed
dmeier86 opened this issue Feb 24, 2017 · 5 comments
Closed

Brute-Force Protection #6152

dmeier86 opened this issue Feb 24, 2017 · 5 comments

Comments

@dmeier86
Copy link

Rocket.Chat Version: 0.51.0
Running Instances: 1
DB Replicaset OpLog:
Node Version: 4.5.0

See:
#2737
We do need a brute-force-protection or at least an implementation for fail2ban.
Failed logins are written in the Logs at Admin-Interface - but fail2ban can't read those.

Any Solution anyone?

@nixwizard
Copy link

When dealing with distributed brutefroce, reCaptcha it more effective than banning IPs. It would be nice to have a possibility to turn it on for the login process.

@TwizzyDizzy
Copy link

@rocket-cat close

Closing this in favour of #2737. If you think this is not correct, please get back to me :)

Cheers
Thomas

@ruKurz
Copy link
Contributor

ruKurz commented Mar 22, 2020

I like the title of this issue! It states out the real intention: "prevent brute force attacks" (unfortunately the description is reduced to log failed login attempts).

To fend off Bruteforce attacks effectively there are a lot of things you can do against it, e.g.

Some of them are implemented at the application level and some at the infrastructure level. While logging of failed login attempts is taken over by the application, fail2ban is a system component, outside the runtime of the application. For example, failed logins could also be stored in the database. And after a configurable number of failed attempts, the affected user account is then locked.

EDIT: added growing delay until the next login

@TwizzyDizzy
Copy link

For example, failed logins could also be stored in the database. And after a configurable number of failed attempts, the affected user account is then locked.

This is not a good idea, because then I can lock you out of your account.

Tarpitting (increasing waiting time before new login can be tried) based on the source IP seems to be a good way.

This way you cannot lock my account because if you try, my logins are still not tarptitted because I (usually) am from a different IP.

Cheers
Thomas

@ruKurz
Copy link
Contributor

ruKurz commented Mar 22, 2020

Agreed! Before locking an account, delaying further authentication attempts is better. For example, if you make 5 failed attempts, your iPhone will lock for 1 minute, 6 attempts will lock it for 5 minutes, 7 will lock it for 15, and anything more than that will lock it for 1 hour.

But after many failed attempts the user ID should be blocked anyway. This is also recommended by the BSI (ORP.4).

For both increasing delay and account locking, login attempts must be stored in the database.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants