commit 9f0357ce824b10bde6295a3fe83c7f037e66f899
parent 3f5df3ef8d73478e2f98f5c19872e1c68df2a9b0
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Wed, 26 Dec 2018 20:20:50 +0100
Merge pull request #312 from njfox/logging_timestamp
Change logging timestamp format so fail2ban can parse it
Diffstat:
2 files changed, 8 insertions(+), 21 deletions(-)
diff --git a/README.md b/README.md
@@ -451,27 +451,15 @@ Though this is unlikely to be required in small deployment, you can fine-tune so
### Fail2Ban Setup
-Bitwarden_rs logs failed login attempts to stdout. We need to set this so the host OS can see these. Then we can setup Fail2Ban.
+As of release 1.5.0, bitwarden_rs supports logging to file. See [Logging](#logging) above for information on how to set this up.
-#### Logging Failed Login Attempts to Syslog
+#### Logging Failed Login Attempts
-We need to set the logging driver to syslog so the host OS and Fail2Ban can see them.
+After specifying the log file location, failed login attempts will appear in the logs in the following format:
-If you are using docker commands, you will need to add: `--log-driver syslog --log-opt tag=$TAG` to your command.
-
-If you are using docker-compose, add this to you yaml file:
-```
- bitwarden:
- logging:
- driver: "syslog"
- options:
- tag: "$TAG"
-```
-With the above settings in the docker-compose file. Any failed login attempts will look like this in your syslog file:
```
-MMM DD hh:mm:ss server-hostname $TAG[773]: [YYYY-MM-DD][hh:mm:ss][bitwarden_rs::api::identity][ERROR] Username or password is incorrect. Try again. IP: XXX.XXX.XXX.XXX. Username: email@domain.com.
+[YYYY-MM-DD hh:mm:ss][bitwarden_rs::api::identity][ERROR] Username or password is incorrect. Try again. IP: XXX.XXX.XXX.XXX. Username: email@domain.com.
```
-You can change the '$TAG' to anything you like. Just remember it because it will be in the Fail2Ban filter.
#### Fail2Ban Filter
@@ -485,11 +473,9 @@ And add the following
before = common.conf
[Definition]
-_daemon = $TAG
-failregex = ^%(__prefix_line)s.*Username or password is incorrect\. Try again\. IP: <HOST>\. Username:.*$
+failregex = ^.*Username or password is incorrect\. Try again\. IP: <HOST>\. Username:.*$
ignoreregex =
```
-Dont forget to change the '$TAG' to what you set it as from above.
#### Fail2Ban Jail
@@ -504,7 +490,8 @@ enabled = true
port = 80,443,8081
filter = bitwarden
action = iptables-allports[name=bitwarden]
-logpath = /var/log/syslog
+logpath = /path/to/bitwarden/log
+backend = polling
maxretry = 3
bantime = 14400
findtime = 14400
diff --git a/src/main.rs b/src/main.rs
@@ -71,7 +71,7 @@ fn init_logging() -> Result<(), fern::InitError> {
.format(|out, message, record| {
out.finish(format_args!(
"{}[{}][{}] {}",
- chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"),
+ chrono::Local::now().format("[%Y-%m-%d %H:%M:%S]"),
record.target(),
record.level(),
message