家长控制

来自 ArchWiki

存在多种方法来保护和限制儿童在计算机上的活动。

注意: 任何安全功能仅在您强制执行的级别上有效。例如,即使在操作系统中安装了家长控制应用程序后,孩子仍然可以通过下载和启动任何 Linux 发行版的 Live 镜像来绕过它。

应用程序

  • timekpr-next — Timekpr-nExT,一个新鲜、简单且易于使用的屏幕时间管理应用程序,可帮助优化在计算机上花费的时间。
https://mjasnik.gitlab.io/timekpr-next/ || timekpr-nextAUR
  • timeoutd — timekpr 的轻量级替代品,它每分钟扫描 /var/run/utmp,并检查 /etc/timeouts 中是否有与受限用户匹配的条目。
https://github.com/sohonet/timeoutd || timeoutdAUR
  • logkeys — 一个守护进程,将按键记录到日志文件中以供后续检查。
https://github.com/kernc/logkeys || logkeysAUR

限制打开应用程序

malcontent 允许为基于 flatpak 的应用程序设置访问限制。

malcontent-client set-app-filter timmy x-scheme-handler/http

这将禁止用户 timmy 打开 Flatpak 提供的 Web 浏览器。

使用 Tinyproxy 和 Firehol 进行白名单

以下描述将使您能够使用 fireholAURtinyproxy (或 tinyproxy-gitAUR) 通过 URL 白名单过滤任何用户对互联网的访问。

/etc/tinyproxy/tinyproxy.conf 由以下更改组成

FilterURLs On
FilterDefaultDeny Yes
Filter "/etc/tinyproxy/whitelist"

/etc/tinyproxy/whitelist 应包含仅允许选定用户访问的 URL。一个简单的例子

(www|wiki|static).archlinux.org
google.com

/etc/firehol/firehol.conf 应包含以下行

transparent_proxy "80 443" 8888 "nobody root bin myaccount"

其中 myaccount 是我的帐户,不应被 Tinyproxy 过滤。

OpenDNS 家长控制

OpenDNS 提供免费的 DNS 服务,作为您 ISP 默认服务器的替代方案。此外,它们还提供可选的过滤功能。可以进行不同级别的过滤;有关详细信息,请参阅 OpenDNS 主页。

对于动态 IP 地址,最好在 OpenDNS 上保持更新。使用 ddclient 并按如下方式编辑 /etc/ddclient/ddclient.conf

# OpenDNS.com account-configuration
use=web, web=myip.dnsomatic.com
server=updates.opendns.com
protocol=dyndns2
login=myopendns@email.address
password=myopendnspassword
myhostname

您有时甚至可以将路由器设置为使用 OpenDNS,从而允许保护扩展到连接到该路由器的所有设备。

编辑 /etc/hosts

您可以配置您的 /etc/hosts 文件来阻止访问某些域。一种更严厉的方法是仅允许在 /etc/hosts 中明确声明的域,如此处 所述。如果您这样做,请记住这将影响您的整个系统,因此例如,除非您在 /etc/hosts 中进行正确的绑定,否则 pacman 可能无法连接到更新服务器。

使用 named 进行阻止列表

另请参阅:BIND

创建根区文件 ("/var/named/denied.zone"),将所有内容重定向到 localhost

@                               1D IN SOA   ns1.example.com. root.example.com. (
                                   42    ; serial (yyyymmdd##)
                                   3H    ; refresh
                                   15M   ; retry
                                   1W    ; expiry
                                   1D )  ; minimum ttl
                               1D  IN  NS      ns.example.com.
                      1D  IN  A       127.0.0.1
                      1D  IN  AAAA    ::1

*                      1D  IN  A       127.0.0.1
*                      1D  IN  AAAA    ::1

添加

zone "SOME-DOMAIN-1.TLD" IN { type master; file "denied.zone"; };
...
zone "SOME-DOMAIN-N.TLD" IN { type master; file "denied.zone"; };

到 named.conf。

最近的 named 版本支持 DoT 和 DoH,因此您可以将 named 暴露给互联网,并从您的 lan 外部使用它。(例如,Firefox 可以使用 DoH,Android 设备具有用于 DoT 的全局“专用 DNS 服务器”设置)

Squid

Squid 是功能丰富的代理,支持授权、缓存、TLS 拦截、通过防火墙的透明性、基于 MAC、IP、域和 TLS SNI 的访问列表。它有单独的 文章。与 nftables 结合使用,Squid 可用于完全控制儿童可以浏览哪些网站(请参阅 [1])。

浏览器插件

存在一些用于 Web 浏览器的插件来过滤 Web 内容。其中一些甚至可以阻止检查其正文的页面,而不仅仅是其 URL。但是,请注意,这不是一种非常安全的方式。以安全模式启动 Firefox、修改 Firefox 配置文件目录或 Firefox 配置文件管理器是尝试关闭基于 Firefox 的插件的明显方法。如果一切都失败了,孩子可能 просто 使用不同的浏览器。