dvershinin/fds
GitHub: dvershinin/fds
fds 是一个人性化的 FirewallD/Cloudflare CLI 客户端,用简洁命令替代 firewall-cmd 完成日常封禁管理任务。
Stars: 16 | Forks: 0
# fds
那个**不**糟**D**糕的 **F**irewallD CLI 应用程序。
## 什么是 `fds`?
防火墙管理通常是您在设置服务器时执行一次的任务。
但是,如果您像专业人士一样维护服务器,您会定期*经常*监控日志,并在恶意用户出现时将其封锁。
FirewallD 是一款出色的防火墙软件。它具有区域、源的概念,并支持 IP 集合。
然而,在封锁和管理被封锁的 IP 地址方面,其客户端应用程序 `firewall-cmd` 远谈不上用户友好。
此外,如果您还使用 Cloudflare 防火墙,您也会希望将被封锁的 IP 地址同步到其中,以获得最佳保护。
`fds` 是 FirewallD/Cloudflare 的 CLI 客户端,您会喜欢随时使用它。
它是 FirewallD 的替代客户端。
使用它来执行简单或复杂的封禁任务,以代替 `firewall-cmd`。
看看使用 `fds` 让事情变得多么简单:
```
fds block
fds block 1.2.3.4
```
它使管理您的 FirewallD 变得轻松且人性化。
## 在 CentOS/RHEL、Fedora 和 Amazon Linux 上安装
首先,安装 RPM 仓库配置:
```
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
```
## 免费安装
要进行免费安装和使用,请禁用二进制包子仓库,
该仓库包含 `fds` 的非必要依赖项:
```
sudo yum -y install yum-utils
sudo yum-config-manager --disable getpagespeed-extras
```
现在您可以安装 `fds`:
```
sudo yum -y install fds
```
## 通过订阅安装
通过[订阅 GetPageSpeed RPM 仓库](https://www.getpagespeed.com/repo-subscribe),您可以访问除 `fds` 之外的[许多软件包](https://extras.getpagespeed.com/redhat/8/x86_64/repoview/),并支持其开发。
只需运行以下命令:
```
sudo yum -y install fds
```
该订阅附带了用于聚合 IP 前缀的软件包。
`fds` 可以使用它们,从而从根本上克服一些[严重的 FirewallD 错误](https://fds.getpagespeed.com/firewalld/)。
因此,如果您是订阅者,强烈建议您同时运行以下命令:
### 仅限 CentOS/RHEL 7
```
sudo yum -y install python2-aggregate6
```
### CentOS/RHEL 8+、Fedora 和 Amazon Linux
```
sudo yum -y install python3-aggregate6
```
## `fds` 能做什么
`fds` 是面向 FirewallD 用户的实用程序。它是一个可以轻松执行日常防火墙任务的助手:
* 封锁 Tor 用户
* 封锁国家/地区
* 封锁任意 IP 地址
* 在 Cloudflare 上执行同样的封锁操作
### 集成
默认情况下,`fds` 仅与 FirewallD 配合操作。
要启用 [Cloudflare 集成](docs/cloudflare.md),请运行:
```
fds config
```
## 封锁 Tor
您可以通过运行以下命令来封锁所有 Tor 出口节点:
```
fds block tor
```
请注意,由于这些地址不断变化,您可能需要在 cron 中运行此命令。
## 封禁单个 IP
```
fds block 1.2.3.4
```
这以一种专业(©)的方式封锁 IP 地址,确保该 IP 位于名为 `networkblock4` 的集合中,
并且该集合是 FirewallD `drop` 区域的源。使用 IP 集合是进行一致防火墙管理的基石!
`fds` 也足够智能,可以中断来自该 IP 地址的任何现有连接。
如果恶意请求正在进行中,这非常有用。
您可以通过在 `--ipset` 中指定,来设置用于封锁的已创建/使用的 IP 集合的基名,例如
对于 `banned4` (IPv4) 或 `banned4` (IPv6),请使用:
```
fds block 1.2.3.4 --ipset banned
```
## 封禁国家或大洲
```
fds block
fds block China
fds block Asia
```
要封锁名称中包含空格的国家,请使用引号:
```
fds block "Country Name"
```
您可以通过运行以下命令列出所有可用于封锁的国家名称:
```
fds list countries
```
您可以通过运行以下命令列出所有可用于封锁的大洲:
```
fds list continents
```
### `--no-reload` (`-nr`)
使用此可选标志可防止重新加载 FirewallD。
这在添加多个封锁时非常有用,因为它能确保更快的封锁速度:
```
fds block 1.2.3.4 --no-reload
fds block 2.3.4.5 --no-reload
fds block Country1 --no-reload
...
fds block Country2
```
在上面的示例中,我们封锁了一些 IP 地址和几个国家。
最后一次封锁操作将重新加载 FirewallD 并实际应用我们的封禁。
或者,在调用所有的 `fds block` 时带上 `--no-reload` 选项,并在最后调用 `firewall-cmd --reload`。
## 列出所有被封锁的网络和国家
以下命令可让您轻松查看被封锁的内容:
```
fds list blocked
```
## 解锁国家或 IP/网络
像下面这样使用 `fds unblock ...`:
```
fds unblock China
fds unblock 1.2.3.4
```
## 重置所有封禁
您可以快速移除所有封锁(以及由此产生的、与 `fds` 关联的所有 IP 集合):
```
fds reset
```
## 注意事项
`fds` 软件包会自动安装一个 cron 作业,每天同步您被封锁的 IP 集合。
因此,无需采取任何操作即可确保某个国家(或 Tor)保持被封锁状态。
### 计划中
* 与 [`trusted-lists`](https://github.com/dvershinin/trusted-lists) IP 集合集成,以实现轻松的白名单管理
* 声明一个由服务器组成的 CDN,并从一个地方跨这些服务器推送封锁命令(类似 ansible),这对于来自中央服务器(蜜罐)的动态封锁非常有用
* 丢弃出站连接(快捷方式:https://cogitantium.blogspot.com/2017/06/how-to-drop-outbound-connections-with.html)
有关开发设置(如果不使用软件包),请参阅贡献指南。
## 文件
* 未使用:`/etc/fds.conf`(有关当前被封锁的国家或其他适合单个配置文件的小型数据集的信息)
* 未使用:`/var/lib/fds`:区域文件,(状态数据)+(有关当前被封锁内容的信息)(???)
* `/var/cache/fds`:cachecontrol 缓存
* `/root/.cloudflare/cloudflare.cfg` Cloudflare 身份验证
标签:Cloudflare, FirewallD, IP封禁, MITRE ATT&CK, 运维工具, 逆向工具, 防火墙