CFW (Cyber Firewall) 是一个人性化的 Linux 防火墙。它旨在协助阻止拒绝服务攻击(DDOS),同时能控制 Linux 端口开关。

该软件基于 iptables 和 ipset,使用 Python 开发,使用时建议关闭发行版自带的防火墙(如 firewalld、ufw)避免冲突。

通过 CFW,您将能够:

  • 通过自定义的规则自动封禁互联网中的恶意 ip,以防止拒绝服务攻击

  • 控制开启或关闭 Linux 的 TCP/UDP 端口

  • 获得友好的交互式体验

如欲配合 CDN 使用,请将 CDN 的 ip 段设置为 CFW 白名单。

实现方法

CFW 通过 ss -Hntu | awk '{print $5,$6}' 命令获取当前服务器的所有连接。客户端的请求若超过设定并发数,该 ip 将被 iptables 封禁,并存储在 ipset 数据结构中。

CFW 通过调用 iptables 命令实现 Linux 端口开关。

安装

请先确保系统拥有以下依赖:

示例 1 (Debian, Ubuntu)

apt install -y curl ipset python3 git net-tools

示例 2 (CentOS)

yum install -y curl ipset python3 git net-tools

安装好系统依赖后,输入以下命令安装 CFW:

sudo curl https://raw.githubusercontent.com/Cyberbolt/cfw/main/install.py | python3

完成安装后,使用 source ~/.bashrc 激活 CFW 的环境变量。(新开 shell 将自动激活环境变量)

卸载

sudo curl https://raw.githubusercontent.com/Cyberbolt/cfw/main/uninstall.py | python3

链接

  • GitHub: https://github.com/Cyberbolt/cfw
  • 电光笔记: https://www.cyberlight.xyz/
  • Potato Blog: https://www.liuya.love/

配置

配置文件在 /etc/cfw/config.yaml 中,修改配置文件后运行 systemctl restart cfw 即可生效。

配置文件参数说明:

# CFW 运行端口
port: 6680
# CFW 检测连接的频率,单位:秒。此处默认 5 秒一次。
frequency: 5
# 允许每个 ip 连接的最大并发数,超过将被 CFW 封禁。
max_num: 100
# 解封 ip 的时间。此处默认 ip 被封禁后 600 秒将自动解封。若此处值为 0,则永久封禁。
unblock_time: 600
# 数据备份时间,单位:秒。
backup_time: 60# ipv4 白名单路径。写在 txt 中,一行一个 ip,支持子网掩码。(本地地址、内网地址默认在该文件中)
whitelist: /etc/cfw/ip_list/whitelist.txt
# ipv4 黑名单路径。写在 txt 中,一行一个 ip,支持子网掩码。
blacklist: /etc/cfw/ip_list/blacklist.txt# ipv6 白名单路径。写在 txt 中,一行一个 ip。
whitelist6: /etc/cfw/ip_list/whitelist6.txt
# ipv6 黑名单路径。写在 txt 中,一行一个 ip。
blacklist6: /etc/cfw/ip_list/blacklist6.txt# 日志文件的路径
log_file_path: /etc/cfw/log/log.csv
# 日志文件的最大行数。(达到最大行数后将自动滚动。若此处值为 0,则不限制最大行数)
log_max_lines: 10000000

相关命令

命令中所有 [] 表示变量。

运行

停止 CFW systemctl stop cfw

启动 CFW systemctl start cfw

重启 CFW systemctl restart cfw

ip 黑名单管理

手动封禁单个 ipv4 cfw block [ip]

手动解封单个 ipv4 cfw unblock [ip]

查看 ipv4 黑名单 cfw blacklist

手动封禁单个 ipv6 cfw block6 [ip]

手动解封单个 ipv6 cfw unblock6 [ip]

查看 ipv6 黑名单 cfw blacklist6

Linux 端口操作

放行 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

放行 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

日志操作

动态查询日志 cfw log [num]。‘num’ 为查询日志的条数,查询结果将按时间倒序。

更多

如果您在使用中遇到任何问题,欢迎在 https://github.com/Cyberbolt/cfw/issues 处留言。

使用人性化的 Linux 防火墙 CFW 阻止 DDOS 攻击相关推荐

  1. 使用人性化的Linux防火墙CFW阻止DDOS攻击

    CFW (Cyber Firewall) 是一个人性化的 Linux 防火墙.它旨在协助阻止拒绝服务攻击 (DDOS),同时能控制 Linux 系统端口的开关.由于基于 Linux 原生运行,CFW ...

  2. linux防火墙能阻止cc攻击吗,linux csf 防火墙 防止少量的ddos cc攻击很有效

    上篇博客说到,httpd请求数过多,apache连接数不够,加大连接数的做法,在受ddos,cc攻击的情况下,最终的结果就是系统资源耗尽,导致死机. 测试服务器,也没有想到会受到攻击,什么防范措施也没 ...

  3. 宝塔防火墙可以防ddos攻击吗

    最近遇到一个有趣的问题,那就是一位客户咨询主机吧,宝塔面板的防火墙可以防ddos攻击吗? 主机吧的答案是不能的. DDoS本身是一个网络流量攻击,通过对攻击目标产生大量非法请求,占用其网络,使目标网络 ...

  4. Linux防火墙策略阻止漏扫

    Linux防火墙策略 代码如下(示例): #!/bin/bash #iptables 设置 #iptables 清空命令 ####################################### ...

  5. 用防火墙可以防御DDoS攻击吗?

    相信不少站长或多或少都经历过DDoS攻击(DDoS攻击是通过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的),一旦你的网站被人DDoS攻击后,网站就会无法被访问了,严重时服务器都能卡死. 如果网 ...

  6. linux ddos攻击ip,Linux操作系统中实现DDOS攻击的方法

    软件用的是最有名的DDOS,首先说我们用来攻击的客户机和服务器的配置方法,使用当下最有名的REDHATLinux进行测试,本次攻击测试我使用的是FEDORA CORE3. 开始设置服务器: 解压 ta ...

  7. “BillGates”Linux僵尸被用于DDoS攻击

    Akamai的安全研究人员报告(PDF), 地下网络犯罪分子过去半年利用BillGates Linux僵尸网络发动攻击流量超过100Gbps的大规模DDoS攻击. BillGates恶意程序是针对Li ...

  8. 简单几步即可判断Linux系统有无被DDOS攻击的方法

    Dos攻击或者DDos攻击目的是使服务器或者网络资源耗尽,使其他用户无法使用.一般来说,这种攻击主要针对重要的网站或服务,比如银行.信用卡支付网关甚至是根域名服务器.Dos攻击主要通过强制目标主机重启 ...

  9. DDoS deflate - Linux下防御/减轻DDOS攻击

    前言 互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事.在没有硬防的情况下,寻找软件代替是最直接的方法,比如用iptables,但是iptables不能在自动屏蔽,只能手动屏蔽. ...

最新文章

  1. Windows Storage Server 2008做存储服务器应用案例
  2. .NET零基础入门06:面向对象入门
  3. shell中各种括号的作用
  4. java编程思想第四版第三章要点习题
  5. 这40个linux命令,提高工作效率
  6. VTK:模型之DiscreteMarchingCubes
  7. 一位资深程序员的成长故事
  8. 干货:看产品总监,如何做全场景的需求梳理?
  9. 前端学习(1151):let经典面试题1
  10. Filecoin Gas基础费率跌至4.40 nanoFIL
  11. 【机器人】激光测距传感器的数据处理步骤
  12. jQuery EasyUI API 中文文档 - 数值微调器(NumberSpinner)
  13. 终极分类器(识别器),一个人工智能的美好愿景
  14. echart 世界地图发光_使用echart.js来绘制世界地图
  15. 基于JAVA影院网上售票系统演示录像计算机毕业设计源码+系统+数据库+lw文档+部署
  16. linux 输入法成繁体字_寻找Ubuntu中繁体字输入法
  17. sys.path用法介绍
  18. mysql 未找到 WinSxS_win7的winsxs文件清理方法
  19. 架设个人FTP——ServU
  20. 【设计模式之旅】01|开篇:我们为什么要学习设计模式

热门文章

  1. CSDN自动展开全文的插件
  2. mysql stop failed_Mysql报错:Failed to stop mysqld.service: Unit mysqld.service not loaded.
  3. Unity3d 实现节奏空间(Beat Saber)模型切割功能项目工程源码。
  4. Matlab直方图显示y值
  5. 禁止复制服务器文件夹,远程桌面服务器 禁止复制文件夹
  6. Person owns Dog...
  7. Java之HashTab基本用法
  8. biomarker研究思路
  9. 屏山计算机学校,四川省屏山县职业技术学校计算机应用专业好吗
  10. 【转】计算机分类经典书籍推荐