CFW(Cyber??Firewall)是一款人性化的Linux防火墙。它旨在帮助防止拒绝服务攻击(DDOS),并且可以控制Linux系统端口的打开和关闭。由于基于Linux原生运行,CFW具有良好的软件兼容性。该软件基于iptables和ipset,使用Python开发。使用时建议关闭发行版自带的防火墙(如firewalld、ufw),避免冲突。通过CFW,您将能够:通过自定义规则自动拦截互联网中的恶意ip,防止拒绝服务攻击保护Linux所有端口免受DDOS攻击,而不仅仅是web应用获得良好的软件兼容性,原生支持Nginx、Caddy等服务器支持使用CDN。使用CDN时,请将CDN的ip段设置为CFW白名单控制,以启用或禁用Linux系统的TCP/UDP端口,以获得友好的命令行交互体验。后台Web应用运行在复杂的网络中,随时可能面临恶意攻击,导致拒绝服务。为了禁止这些不友好的ip,CFW为此而生。CFW最初的灵感来自宝塔面板的Nginx防火墙。但是在使用Nginx防火墙的过程中遇到了很多困难。防火墙只防护针对Web应用(一般是80和443端口)的CC攻击,不能防护Linux服务器的其他端口。同时防火墙需要按月付费,并且一直捆绑宝塔生态(最新的宝塔面板甚至需要登录手机实名制绑定的账号),从而限制软件的自由度。我们想在干净的Linux中的所有端口上运行防火墙,所以我们自己开发了一个。由于CFW是基于iptables和ipset,难免会和发行版自带的防火墙(如firewalld、ufw)冲突。我们添加了CFW来控制端口切换。实现CFW,通过ss-Hntu|获取当前服务器的所有连接awk'{print$5,$6}'命令。如果客户端的请求超过设定的并发数,该ip会被iptables阻塞,存储在ipset数据结构中。CFW通过调用iptables命令实现Linux端口的切换。请确保系统具有以下依赖项:示例1(Debian、Ubuntu)sudoaptinstall-ycurlipsetpython3gitnet-tools示例2(CentOS)sudoyuminstall-ycurlipsetpython3gitnet-tools安装系统后dependencies,输入以下命令安装CFW:sudocurlhttps://raw.githubusercontent.com/Cyber??bolt/cfw/main/install.py|python3安装完成后,使用source~/.bashrc激活CFW的环境变量。(新的shell会自动激活环境变量)在linux终端输入systemctlstatuscfw,如果显示active(running)字样,说明CFW运行成功,服务器重启时会自动运行。卸载sudocurlhttps://raw.githubusercontent.com/Cyber??bolt/cfw/main/uninstall.py|python3链接GitHub:https://github.com/Cyber??bolt/cfwCyber??light笔记:https://www.cyberlight.xyz/土豆博客:https://www.liuya.love/配置配置文件在/etc/cfw/config.yaml。修改配置文件后,运行systemctlrestartcfw生效。配置文件参数说明:#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,支持子网掩码。黑名单:/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命令中的所有[]表示变量。runstopCFWsystemctlstopcfwstartCFWsystemctlstartcfwrestartCFWsystemctlrestartcfwip黑名单管理手动屏蔽单个ipv4cfwblock[ip]手动解锁单个ipv4cfwunblock[ip]查看ipv4黑名单cfwblacklist手动屏蔽单个ipv6cfwblock6[ip]手动解封单个ipv6cfwunblock6[ip]查看ipv6黑名单cfwblacklist6Linux端口操作releaseipv4portcfwallow[port]blockipv4portcfwdeny[port]releaseipv4TCPportcfwallow[port]/tcpalone,For例子cfwallow69.162.81.155/tcpblockipv4TCPportcfwdeny[port]/tcpalone,例子cfwdeny69.162.81.155/tcpipv4UDPportoperation同样查看所有允许的ipv4portscfwstatusallowipv6portcfwallow6[port]blockipv6portcfwdeny6[port]allowipv6TCPportcfwallow6[port]/tcpalone,例如cfwallow669.162.81.155/tcpblockipv6TCPportcfwdeny6[port]/tcpalone,例如cfwdeny669.162.81.155/tcpipv6UDP端口操作同查看所有允许的ipv6端口cfwstatus6日志操作动态查询日志cfwlog[num]。'num'为查询日志条数,查询结果将按时间倒序排列。更多如果您在使用过程中遇到任何问题,请在https://github.com/Cyber??bolt/cfw/issues留言。在您的帮助下,CFW可以不断壮大。
