Fail2Ban 刚刚阻止了我的 IP 进行 3 次 SSH 尝试。它添加了 iptables 规则,我可以使用“sudo iptables -L -n”命令查看它。但我仍然可以访问该站点并通过 SSH 登录!可能是什么问题?是因为我使用 CloudFlare 吗?我已将 Nginx 设置为将真实 IP 而不是 Cloud Flare IP 写入访问日志。这还不够吗?
Chain fail2ban-ssh (1 references)
target prot opt source destination
DROP all -- 119.235.14.8 0.0.0.0/0
RETURN all -- 0.0.0.0/0 0.0.0.0/0
输入链:
Chain INPUT (policy DROP)
target prot opt source destination
fail2ban-NoAuthFailures tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
fail2ban-nginx-dos tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,8090
fail2ban-postfix tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465
fail2ban-ssh-ddos tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22
fail2ban-ssh tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 22
ufw-before-logging-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-before-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-after-logging-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-reject-input all -- 0.0.0.0/0 0.0.0.0/0
ufw-track-input all -- 0.0.0.0/0 0.0.0.0/0
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
答案1
更新 2019:原始答案中的 API 用途已被弃用,取而代之的是 API v4,请改用新版本。 Cloudflare 的 Fail2ban 解禁操作失败谢谢@baptx 评论
iptables无法获取真实ip,所以应该使用cloudflare的api在云端将该IP列入黑名单。
这是我的操作配置文件
# Fail2Ban configuration file
#
# Author: Charles Chou
# Modified: Norman Yee
# fix original cloudflare-blacklist.conf
# $Revision$
#
[Definition]
# Option: actionstart
# Notes.: command executed once at the start of Fail2Ban.
# Values: CMD
#
actionstart =
# Option: actionstop
# Notes.: command executed once at the end of Fail2Ban
# Values: CMD
#
actionstop =
# Option: actioncheck
# Notes.: command executed once before each actionban command
# Values: CMD
#
actioncheck =
# Option: actionban
# Notes.: command executed when banning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
#
actionban = curl -s "https://www.cloudflare.com/api.html?a=ban&key=<ip>&u=<account>&tkn=<token>"
# Option: actionunban
# Notes.: command executed when unbanning an IP. Take care that the
# command is executed with Fail2Ban user rights.
# Tags: <ip> IP address
# <failures> number of failures
# <time> unix timestamp of the ban time
# Values: CMD
#
actionunban = curl -s "https://www.cloudflare.com/api.html?a=nul&key=<ip>&u=<account>&tkn=<token>"
[Init]
# Option: account
# Notes.: In the actionban and actionunban sections,replace CLOUDFLARE_LOGIN with your CloudFlare login email
# Values: your CloudFlare account
#
account = [email protected]
# Option: token
# Notes.: In the actionban and actionunban sections, replace CLOUDFLARE_API_TOKEN with your API key
# Values: Your CloudFlare API key
#
token = Your API key here