#cli-tool #dns #cli #blackhole

app singularity

将已知恶意域名拉入一个或多个黑洞列表的命令行工具

11个版本 (7个破坏性版本)

0.8.0 2021年12月31日
0.7.0 2021年2月19日
0.6.1 2021年2月5日
0.6.0 2020年11月15日

#454 in 命令行界面

每月下载量 30次

MIT许可证

26KB
481

Singularity

将已知恶意域名拉入黑洞列表的命令行工具。主要目的是与PDNS Recursor一起使用。该工具可以从多个adlist源拉入黑洞域名,并以各种格式输出到多个位置。

相关博客文章。

安装

需要Rust的稳定构建版本,最好是最新版本。最低支持版本:1.52.0。

  • 来自crates.io:cargo install singularity
  • 从源:cargo install --path .

用法

  • 基本用法:singularity

CLI选项

可以使用--help标志查看所有CLI选项。选项有

  • -v--verbose:启用额外的调试输出到stdout
  • -c--config:使用自定义配置文件而不是默认配置文件
  • -t--timeout:等待每个HTTP请求成功的超时时间(以毫秒为单位)(默认:1000)

配置文件

默认情况下,工具将使用当前系统依赖位置的配置文件。在Linux上,这是$HOME/.config/singularity/singularity.conf。如果不存在,则会创建该文件并包含空值。

完整的配置文件示例

whitelist = ["my-cool-domain.com"]

[[adlist]]
source = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
format = "hosts"

[[adlist]]
source = "file:/absolute/path"
format = "domains"

[[adlist]]
source = "https://raw.githubusercontent.com/notracking/hosts-blocklists/master/dnsmasq/dnsmasq.blacklist.txt"
format = "dnsmasq"

[[output]]
type = "hosts"
destination = "/etc/powerdns/hosts"
blackhole_address = "0.0.0.0"
include = ["extra-hosts"]

[[output]]
type = "hosts"
destination = "/etc/hosts"
deduplicate = true

[[output]]
type = "pdns-lua"
destination = "/etc/powerdns/blackhole.lua"
blackhole_address = "::"
output_metric = true
metric_name = "blocked-queries"

白名单

一个域名数组,您希望不包括在最终输出中。这些匹配是精确的,因此google.com只会匹配google.com,但不会匹配其任何子域名。配置选项可以完全省略,以使用默认空白名单。

广告列表

一个描述广告列表源的数组。它们有两个键

  • source:广告列表源URL。URL方案可以是 httphttpsfile。如果是一个 file URL,则其路径将在本地系统中解释为绝对文件系统路径。
  • format:广告列表条目所在的格式。对于默认的 hosts 值,可以省略此选项。值可以是以下之一:
    • hosts:标准的 /etc/hosts 风格的条目;0.0.0.0 malicious.domain。假设每个条目中的地址是不指定的 0.0.0.0 IP 地址。具有不同IP地址或以IP地址作为域名的条目将被忽略。
    • domains:每行只是一个域名:malicious.domain
    • dnsmasq:每行是dnsmasq的 addressserver 配置行;address=/example.com/#

无论来源或格式如何,任何以 # 开头的广告列表中的行都将被忽略,并且不会包含在输出中。

输出

一个对象数组,描述了输出黑名单域的位置和方式。每个输出的类型由 type 键指定。可能类型如下:

  • hosts:输出标准 hosts 格式,其中每行以 <blackhole_address> <name> 的格式。可以通过在 include 数组选项中设置它们的路径来将其他 hosts 文件包含在输出中。
  • pdns-lua:输出一个 Lua 脚本,可用于 PDNS Recursor 的 lua-dns-script 配置选项。脚本将硬编码每个黑名单域。通过使用 preresolve() 函数,脚本将以 A 记录或包含 blackhole_addressAAAA 记录响应对黑名单域的查询。记录的类型取决于 blackhole_address 是否是 IPv4 或 IPv6 地址。默认情况下,脚本将输出一个名为 blocked-queries 的度量,每次脚本响应被阻止的域名时都会增加。它可以通过与其他 Recursor 度量相同的方式访问。可以通过 output_metric 设置来禁用此度量,并且可以通过 metric_name 设置来自定义度量的名称。这两个设置都可以省略以使用它们的默认值。

每种输出类型的附加配置

  • blackhole_address:在黑洞响应中使用的地址
  • deduplicate:在输出中删除重复条目。在使用多个来源时可能会出现重复条目。

依赖项

~13-25MB
~438K SLoC