如何使fail2ban读取json docker日志

时间:2016-03-23 14:21:24

标签: logging nginx docker docker-compose fail2ban

是否可以配置我的fail2ban jail.conf来检查docker日志,而不是将日志安装在主机中。例如,将logpath设置为容器日志的路径。

Jail.conf:

...
#example
[nginx-http-auth]
    enabled = true
    filter  = nginx-http-auth
    port    = http,https
    logpath = /var/lib/docker/containers/819564257d4*/*e0923e-json.log
...

但这没什么用,因为docker logs命令和日志文件之间有一点区别:

# docker logs @nginx_container_name 
  

2016/03/23 12:39:52 [错误] 6#6:* 350上游过早关闭   从上游,客户端读取响应头时连接:    @ATTACKER_IP ,服务器: @MY_DNS ,请求:“GET /Blog/wp-login.php HTTP / 1.1”,上游:“http://172.17.0.3:8001/Blog/wp-login.php”,主机:   “的 @MY_IP:80”    @ATTACKER_IP - [23 / Mar / 2016:12:39:52 +0000]“GET /Blog/wp-login.php HTTP / 1.1”502 173“ - ”“Python-urllib / 2.7"

# cat /var/lib/docker/containers/819564257d4*/*e0923e-json.log
  

{“log”:“2016/03/23 12:39:52 [错误] 6#6:* 350上游过早关闭连接,同时从上游读取响应头,客户端: @ATTACKER_IP ,server: @MY_DNS ,请求:\“GET /Blog/wp-login.php HTTP / 1.1 \”,上游:\“http://172.17.0.3:8001/Blog/wp-login.php \”,主机:\“ @MY_IP :80 \ “\ n”, “流”: “标准输出”, “时间”: “2016-03-23T12:39:52.219982304Z”}   {“log”:“ @ATTACKER_IP - - [23 / Mar / 2016:12:39:52 +0000] \”GET /Blog/wp-login.php HTTP / 1.1 \“502 173 \“ - \”\“Python-urllib / 2.7 \”\ n“,”stream“:”stdout“,”time“:”2016-03-23T12:39:52.421767592Z“}

我准确地将日志文件挂载到主机中,我知道这是愚蠢的,所以我的问题是:

  • 有没有办法让rsyslog读取json日志文件 docker nginx container
  • 如果没有,如何配置docker来制作syslog日志格式
  • 如果没有,如何在容器上配置syslog以便传递 登录我的主人?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以配置容器以将日志发送到syslog,请参阅https://docs.docker.com/engine/admin/logging/overview/

答案 1 :(得分:0)

您还可以更改 nginx-http-auth 守护程序的fail2ban正则表达式规则。 正则表达式规则在此文件夹中:

/etc/fail2ban/filter.d