send dns requests through tor
This commit is contained in:
parent
31e1aba73f
commit
acf263db0f
10 changed files with 66 additions and 19 deletions
|
@ -67,6 +67,7 @@ in
|
||||||
"network.connectivity-service.DNSv6.domain" = "::1";
|
"network.connectivity-service.DNSv6.domain" = "::1";
|
||||||
network.dns.localDomains = "::1";
|
network.dns.localDomains = "::1";
|
||||||
network.dns.forceResolve = true;
|
network.dns.forceResolve = true;
|
||||||
|
"media.peerconnection.enabled" = false;
|
||||||
"media.rdd-ffmpeg.enabled" = true;
|
"media.rdd-ffmpeg.enabled" = true;
|
||||||
"media.navigator.mediadatadecoder_vpx_enabled" = true;
|
"media.navigator.mediadatadecoder_vpx_enabled" = true;
|
||||||
} // optionalAttrs sway.enable { "browser.tabs.inTitlebar" = 0; };
|
} // optionalAttrs sway.enable { "browser.tabs.inTitlebar" = 0; };
|
||||||
|
|
|
@ -15,7 +15,8 @@ rustPlatform.buildRustPackage {
|
||||||
hash = "sha256-dMkUJMQjlKzmSsgtH0xOZ5Bk654+h84M1cTx8hVM5SQ=";
|
hash = "sha256-dMkUJMQjlKzmSsgtH0xOZ5Bk654+h84M1cTx8hVM5SQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-cn9vtRO+negpIVs0rnp2y5q7L4w554dfBK9MtbWd8FA=";
|
useFetchCargoVendor = true;
|
||||||
|
cargoHash = "sha256-YSi7sObmclTR6BSQPSN54/2aurXxCl/q2i8hutlJXkw=";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "tool to find the path of xdg config files";
|
description = "tool to find the path of xdg config files";
|
||||||
|
|
|
@ -15,7 +15,8 @@ rustPlatform.buildRustPackage {
|
||||||
hash = "sha256-nbC/nM6orM19Qh/1bpN6gxOqvhCO4cVBumgEFl9G4Rs=";
|
hash = "sha256-nbC/nM6orM19Qh/1bpN6gxOqvhCO4cVBumgEFl9G4Rs=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-l7uRTGV2iYbWbJSvs+YHwMSYmVW3FHa7sgbO2mub7a0=";
|
useFetchCargoVendor = true;
|
||||||
|
cargoHash = "sha256-S+NpQti2fgaz1UogqXbo+1mgkmetf/brQFcDrW00ZiU=";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "tool to find files by name in parent directories";
|
description = "tool to find files by name in parent directories";
|
||||||
|
|
|
@ -42,7 +42,7 @@ in
|
||||||
spotify = "enforce";
|
spotify = "enforce";
|
||||||
"thunderbird.apparmor.d" = "enforce";
|
"thunderbird.apparmor.d" = "enforce";
|
||||||
xdg-open = "enforce";
|
xdg-open = "enforce";
|
||||||
child-open-any = "enforce";
|
# child-open-any = "enforce";
|
||||||
child-open = "enforce";
|
child-open = "enforce";
|
||||||
firefox-glxtest = "enforce";
|
firefox-glxtest = "enforce";
|
||||||
firefox-vaapitest = "enforce";
|
firefox-vaapitest = "enforce";
|
||||||
|
|
|
@ -68,7 +68,6 @@
|
||||||
systemd.tpm2.enable = false;
|
systemd.tpm2.enable = false;
|
||||||
systemd.enableEmergencyMode = false;
|
systemd.enableEmergencyMode = false;
|
||||||
virtualisation.vswitch.enable = false;
|
virtualisation.vswitch.enable = false;
|
||||||
services.resolved.enable = false;
|
|
||||||
security.unprivilegedUsernsClone = true;
|
security.unprivilegedUsernsClone = true;
|
||||||
security.apparmor.enable = true;
|
security.apparmor.enable = true;
|
||||||
security.allowSimultaneousMultithreading = true;
|
security.allowSimultaneousMultithreading = true;
|
||||||
|
|
|
@ -2,11 +2,23 @@
|
||||||
{
|
{
|
||||||
networking = {
|
networking = {
|
||||||
nameservers = lib.mkForce [ "127.0.0.1" "::1" ];
|
nameservers = lib.mkForce [ "127.0.0.1" "::1" ];
|
||||||
|
# nameservers = lib.mkForce [ "127.0.0.1:8053" "[::1]:8053" ];
|
||||||
dhcpcd.extraConfig = "nohook resolv.conf"; # dhcp
|
dhcpcd.extraConfig = "nohook resolv.conf"; # dhcp
|
||||||
networkmanager.dns = "none"; # nm
|
networkmanager.dns = "none"; # nm
|
||||||
resolvconf.useLocalResolver = true; # resoved
|
resolvconf.useLocalResolver = true; # resoved
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.tor = {
|
||||||
|
enable = true;
|
||||||
|
client.enable = true;
|
||||||
|
torsocks = {
|
||||||
|
enable = true;
|
||||||
|
allowInbound = false;
|
||||||
|
};
|
||||||
|
settings.SafeSocks = true;
|
||||||
|
settings.TestSocks = true;
|
||||||
|
};
|
||||||
|
|
||||||
services.dnscrypt-proxy2 = {
|
services.dnscrypt-proxy2 = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
@ -18,20 +30,22 @@
|
||||||
odoh_servers = false;
|
odoh_servers = false;
|
||||||
require_nolog = true;
|
require_nolog = true;
|
||||||
require_nofilter = true;
|
require_nofilter = true;
|
||||||
|
listen_addresses = [ "127.0.0.1:53" ];
|
||||||
|
proxy = "socks5://${config.services.tor.torsocks.server}";
|
||||||
|
force_tcp = true;
|
||||||
|
|
||||||
sources.public-resolvers = let
|
sources.public-resolvers = let
|
||||||
serverList = pkgs.fetchurl {
|
serverList = pkgs.fetchurl {
|
||||||
# fetching during build prevents issues e.g. when the certificate can't be validated if the clock is wrong
|
# fetching during build prevents issues e.g. when the certificate can't be validated if the clock is wrong
|
||||||
url = "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md";
|
url = "https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md";
|
||||||
hash = "sha256-NrcMn57GS38qrE7f6GYcdUJCMAr9drl57omVnuS6oEU=";
|
hash = "sha256-2Pjs37mMolfWaaTf2c+tTbc1mzjCncK9qLyyZJn0LgA=";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
urls = [
|
urls = [
|
||||||
"https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
|
"https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v3/public-resolvers.md"
|
||||||
"https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
|
"https://download.dnscrypt.info/resolvers-list/v3/public-resolvers.md"
|
||||||
# "file://${serverList}"
|
|
||||||
];
|
];
|
||||||
cache_file = "/var/lib/dnscrypt-proxy2/public-resolvers.md";
|
cache_file = serverList;
|
||||||
minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
|
minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ in
|
||||||
./firefox.nix
|
./firefox.nix
|
||||||
./tooling.nix
|
./tooling.nix
|
||||||
./dns.nix
|
./dns.nix
|
||||||
|
./tor.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config = mkIf (enable && tooling.enable && network) {
|
config = mkIf (enable && tooling.enable && network) {
|
||||||
|
|
|
@ -72,13 +72,6 @@ in
|
||||||
operand = "dest.port";
|
operand = "dest.port";
|
||||||
data = "443";
|
data = "443";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
type = "regexp";
|
|
||||||
sensitive = false;
|
|
||||||
operand = "dest.host";
|
|
||||||
data = "(channels|cache)\\.nixos\\.org";
|
|
||||||
}
|
|
||||||
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
37
hardening/opensnitch/tor.nix
Normal file
37
hardening/opensnitch/tor.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (config.grimmShared)
|
||||||
|
enable
|
||||||
|
tooling
|
||||||
|
network
|
||||||
|
;
|
||||||
|
inherit (lib)
|
||||||
|
mkIf
|
||||||
|
;
|
||||||
|
|
||||||
|
created = "1970-01-01T00:00:00.0+00:00";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
|
||||||
|
config = mkIf (enable && tooling.enable && network) {
|
||||||
|
services.opensnitch.rules = {
|
||||||
|
tor = mkIf (config.services.tor.enable) {
|
||||||
|
name = "tor";
|
||||||
|
enabled = true;
|
||||||
|
action = "allow";
|
||||||
|
duration = "always";
|
||||||
|
inherit created;
|
||||||
|
operator = {
|
||||||
|
type = "simple";
|
||||||
|
sensitive = false;
|
||||||
|
operand = "process.path";
|
||||||
|
data = lib.getExe' config.services.tor.package "tor";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -33,7 +33,7 @@ in
|
||||||
type = "regexp";
|
type = "regexp";
|
||||||
sensitive = false;
|
sensitive = false;
|
||||||
operand = "process.command";
|
operand = "process.command";
|
||||||
data = "/nix/store/[a-z0-9]{32}-electron-unwrapped-${escapeRegex (getVersion pkgs.electron)}/libexec/electron/electron.*${escapeRegex "${pkgs.vesktop}/opt/Vesktop/resources/app.asar"}";
|
data = "${escapeRegex "${pkgs.electron}"}/libexec/electron/.*${escapeRegex "${pkgs.vesktop}/opt/Vesktop/resources/app.asar"}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ in
|
||||||
type = "regexp";
|
type = "regexp";
|
||||||
sensitive = false;
|
sensitive = false;
|
||||||
operand = "process.command";
|
operand = "process.command";
|
||||||
data = "/nix/store/[a-z0-9]{32}-electron-unwrapped-${escapeRegex (getVersion pkgs.electron)}/libexec/electron/electron.*${escapeRegex "${pkgs.vesktop}/opt/Vesktop/resources/app.asar"}";
|
data = "${escapeRegex "${pkgs.electron}"}/libexec/electron/.*${escapeRegex "${pkgs.vesktop}/opt/Vesktop/resources/app.asar"}";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type = "lists";
|
type = "lists";
|
||||||
|
@ -78,7 +78,7 @@ in
|
||||||
type = "regexp";
|
type = "regexp";
|
||||||
sensitive = false;
|
sensitive = false;
|
||||||
operand = "process.command";
|
operand = "process.command";
|
||||||
data = "/nix/store/[a-z0-9]{32}-electron-unwrapped-${escapeRegex (getVersion pkgs.electron)}/libexec/electron/electron.*${escapeRegex "--utility-sub-type=network.mojom.NetworkService"}.*--user-data-dir=/home/.+/\.config/vesktop.+";
|
data = "${escapeRegex "${pkgs.electron}"}/libexec/electron/.*${escapeRegex "--utility-sub-type=network.mojom.NetworkService"}.*--user-data-dir=/home/.+/\.config/vesktop.+";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type = "simple";
|
type = "simple";
|
||||||
|
@ -105,7 +105,7 @@ in
|
||||||
type = "regexp";
|
type = "regexp";
|
||||||
sensitive = false;
|
sensitive = false;
|
||||||
operand = "process.command";
|
operand = "process.command";
|
||||||
data = "/nix/store/[a-z0-9]{32}-electron-unwrapped-${escapeRegex (getVersion pkgs.electron)}/libexec/electron/electron.*${escapeRegex "--utility-sub-type=network.mojom.NetworkService"}.*--user-data-dir=/home/.+/\.config/vesktop.+";
|
data = "${escapeRegex "${pkgs.electron}"}/libexec/electron/.*${escapeRegex "--utility-sub-type=network.mojom.NetworkService"}.*--user-data-dir=/home/.+/\.config/vesktop.+";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ in
|
||||||
type = "regexp";
|
type = "regexp";
|
||||||
sensitive = false;
|
sensitive = false;
|
||||||
operand = "process.command";
|
operand = "process.command";
|
||||||
data = "/nix/store/[a-z0-9]{32}-electron-unwrapped-${escapeRegex (getVersion pkgs.electron)}/libexec/electron/electron.*${escapeRegex "--utility-sub-type=network.mojom.NetworkService"}.*--user-data-dir=/home/.+/\.config/vesktop.+";
|
data = "${escapeRegex "${pkgs.electron}"}/libexec/electron/.*${escapeRegex "--utility-sub-type=network.mojom.NetworkService"}.*--user-data-dir=/home/.+/\.config/vesktop.+";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
type = "lists";
|
type = "lists";
|
||||||
|
|
Loading…
Add table
Reference in a new issue