Я использую nginx в контейнере докера, и я могу с легкостью поделиться своим файлом журнала на моем контейнере dginx nginx с хостом. Журнал находится на нем и работает в папке /var/log/nginx
.Защищенный сервер с Fail2ban и Docker
У меня есть установка fail2ban на хосте для проверки файлов журналов, в частности access.log
.
Испытываю простой фильтр
# Fail2Ban configuration file
# Author: Miniwark
[Definition]
failregex = ^<HOST> .*"GET .*w00tw00t
# try to access to admin directory
^<HOST> .*"GET .*admin.* 403
^<HOST> .*"GET .*admin.* 404
# try to access to install directory
^<HOST> .*"GET .*install.* 404
# try to access to phpmyadmin
^<HOST> .*"GET .*dbadmin.* 404
^<HOST> .*"GET .*myadmin.* 404
^<HOST> .*"GET .*MyAdmin.* 404
^<HOST> .*"GET .*mysql.* 404
^<HOST> .*"GET .*websql.* 404
^<HOST> .*"GET \/pma\/.* 404
# try to access to wordpress (we use another CMS)
^<HOST> .*"GET .*wp-content.* 404
^<HOST> .*"GET .*wp-login.* 404
# try to access to typo3 (we use another CMS)
^<HOST> .*"GET .*typo3.* 404
# try to access to tomcat (we do not use it)
^<HOST> .*"HEAD .*manager.* 404
# try to access various strange scripts and malwares
^<HOST> .*"HEAD .*blackcat.* 404
^<HOST> .*"HEAD .*sprawdza.php.* 404
ignoreregex =
И я активный легко в /etc/fail2ban/jail.local
[nginx-nokiddies]
# ban script kiddies
enabled = true
port = http,https
filter = nginx-nokiddies
logpath = /var/log/nginx*/*access.log
maxretry = 1
перезапустить/стоп/старт/перезагрузить Fail2ban обслуживание. Затем я проверить это регулярное выражение с
fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/nginx-nokiddies.conf
Это соответствует тысячам линии, особенно с любым администратором запроса.
Основная проблема: fail2ban не работает автоматически, поэтому не отправляет почту, как раньше. Действительно, он отлично работает, когда я использую установку nginx непосредственно на хосте.
Журнал находятся в базовом формате, называют «комбинированные» форматы, как это:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
Нет разрешения проблемы, потому что мой Nginx контейнер и его дети полные права (777), чтобы быть уверенным, я могу изменить его конечно же!
Почему fail2ban процесс не запрещает ip и не соответствует чему-либо с докером?
Хорошая идея, но я хочу отключить пользователя на главном брандмауэре моего хоста, а не в контейнере, так что можно заблокировать кого-то в контейнере nginx, а также на главном брандмауэре? Достаточно ли блокировать кого-то в контейнере nginx? Это заблуждение? – kiedis
Нет заблуждений @kiedis, вы правы. Я действительно не уверен, какая польза от использования fail2ban в контейнере докера будет обеспечиваться, если кто-то не разветвит fail2ban для связи с брандмауэром на хостеле докера –