CFW防火墙阻止ddos攻击

CFW简介

项目地址:https://github.com/Cyberbolt/cfw

技术原理:
CFW通过ss -Hntu | awk '{print $5,$6}'命令获取当前服务器的所有连接

如果客户端的请求超过设定的并发数,该ip就会被iptables屏蔽,并保存在ipset数据结构中。

CFW通过调用 iptables 命令实现 Linux 端口的开关,使用CFW需要关闭发行版自带的防火墙(如 firewalldufw)避免冲突。

# 禁用firewald防火墙
systemctl mask firewalld --now

# 禁用ufw防火墙
systemctl mask ufw --now

Linux安装CFW

参考:https://linux.cn/article-15412-1.html

# RHEL安装依赖包
yum install -y curl ipset python3 git net-tools

# Debian安装依赖包
sudo apt install -y curl ipset python3 git net-tools

# 安装cfw
curl https://raw.githubusercontent.com/Cyberbolt/cfw/main/install.py | python3

# 激活环境变量
source ~/.bashrc

# 查看CFW运行状态
systemctl status cfw -l

image.png


配置CFW

配置文件在 /etc/cfw/config.yaml 中,默认配置如下:

# CFW 运行端口
port: 6680
# CFW 检测连接的频率,单位:秒。此处默认 5 秒一次。
frequency: 5
# 允许每个 IP 连接的最大并发数,超过将被 CFW 封禁。
max_num: 100
# 解封 IP 的时间。此处默认 IP 被封禁后 600 秒将自动解封。
## 若此处值为 0,则永久封禁。--bug,能设为0报错
unblock_time: 600
# 数据备份时间,单位:秒。
backup_time: 60

# IPv4 白名单路径。写在文本文件中,一行一个 IP,支持子网掩码。)本地地址、内网地址默认在该文件中)
whitelist: /etc/cfw/ip_list/whitelist.txt
# IPv4 黑名单路径。写在文本文件中,一行一个 IP,支持子网掩码。
blacklist: /etc/cfw/ip_list/blacklist.txt

# IPv6 白名单路径。写在文本文件中,一行一个 IP。
whitelist6: /etc/cfw/ip_list/whitelist6.txt
# IPv6 黑名单路径。写在文本文件中,一行一个 IP。
blacklist6: /etc/cfw/ip_list/blacklist6.txt

# 日志文件的路径
log_file_path: /etc/cfw/log/log.csv
# 日志文件的最大行数。(达到最大行数后将自动滚动。若此处值为 0,则不限制最大行数)
log_max_lines: 10000000

常用操作


IP黑名单管理

  • IPV4黑名单管理
# 查看 IPv4 黑名单:
cfw blacklist

# 手动封禁单个 IPv4 地址:
cfw block [ip]

# 手动解封单个 IPv4 地址:
cfw unblock [ip]
  • IPV6黑名单管理
# 查看 IPv6 黑名单:
cfw blacklist6

# 手动封禁单个 IPv6 地址:
cfw block6 [ip]

# 手动解封单个 IPv6 地址:
cfw unblock6 [ip]

Linux 端口操作

IPV4端口操作

# 放行 IPv4 端口:
cfw allow [port]

# 阻止 IPv4 端口:
cfw deny [port]

# 单独放行 IPv4 TCP 端口:
cfw allow [port]/tcp
## 示例如 
cfw allow 69.162.81.155/tcp

# 单独阻止 IPv4 TCP 端口:
cfw deny [port]/tcp
## 示例如 
cfw deny 69.162.81.155/tcp

# IPv4 UDP 端口操作同理
# 查看所有放行的 IPv4 端口:
cfw status

image.png

IPV6端口操作

# 放行 IPv6 端口:
cfw allow6 [port]

# 阻止 IPv6 端口:
cfw deny6 [port]

# 单独放行 IPv6 TCP 端口:
cfw allow6 [port]/tcp
## 示例如 
cfw allow6 69.162.81.155/tcp

# 单独阻止 IPv6 TCP 端口:
cfw deny6 [port]/tcp
## 示例如
cfw deny6 69.162.81.155/tcp

# IPv6 UDP 端口操作同理

# 查看所有放行的 IPv6 端口:
cfw status6

日志操作

[num] 为查询日志的条数,查询结果将按时间倒序。

# 动态查询日志
cfw log [num]

卸载CFW

# 卸载CFW
curl https://raw.githubusercontent.com/Cyberbolt/cfw/main/uninstall.py | python3

升级CFW

CFW版本大于等于v1.0.3可使用cfw update对软件进行升级

# 对cfw软件进行升级
cfw update

猜你喜欢

转载自blog.csdn.net/omaidb/article/details/129258210