1
0
Fork 0

Allow to use captive portals without disabling VPN-only

master
dump_stack() 2019-06-01 18:35:58 +00:00
parent 7438942f91
commit 76596a3e66
Signed by: dump_stack
GPG Key ID: BE44DA8C062D87DC
2 changed files with 23 additions and 0 deletions

View File

@ -25,12 +25,30 @@ in {
iptables -A OUTPUT -o virbr+ -j ACCEPT iptables -A OUTPUT -o virbr+ -j ACCEPT
iptables -A OUTPUT -o virbr0-nic -j ACCEPT iptables -A OUTPUT -o virbr0-nic -j ACCEPT
# Allow access for special user for use captive portals without
# disabling vpn-only restrictions (to avoid leaks at the first seconds
# after connection)
iptables -A OUTPUT -m owner --uid-owner captive \
-p tcp -m multiport --dports 80,443 \
-j ACCEPT
iptables -A OUTPUT -m owner --uid-owner captive \
-p udp -m multiport --dports 53 \
-j ACCEPT
# iptables -A OUTPUT -d 192.0.2.17 -j ACCEPT # iptables -A OUTPUT -d 192.0.2.17 -j ACCEPT
${secrets.iptables} ${secrets.iptables}
''; '';
checkReversePath = false; checkReversePath = false;
}; };
# User without vpn-only restrictions (for captive portals)
users.users.captive = {
isNormalUser = true;
};
services.nscd.enable = false;
services.openvpn.servers.vpn = { services.openvpn.servers.vpn = {
autoStart = true; autoStart = true;
config = secrets.vpn-config; config = secrets.vpn-config;

View File

@ -40,9 +40,14 @@
enable = true; enable = true;
extraConfig = '' extraConfig = ''
%wheel ALL=(ALL:ALL) NOPASSWD: ${pkgs.light}/bin/light %wheel ALL=(ALL:ALL) NOPASSWD: ${pkgs.light}/bin/light
%wheel ALL=(captive) NOPASSWD: ${pkgs.firefox}/bin/firefox
''; '';
}; };
environment.systemPackages = with pkgs; [
(writeShellScriptBin "captive" "sudo -H -u captive ${pkgs.firefox}/bin/firefox")
];
security.wrappers = { security.wrappers = {
pmount.source = "${pkgs.pmount}/bin/pmount"; pmount.source = "${pkgs.pmount}/bin/pmount";
pumount.source = "${pkgs.pmount}/bin/pumount"; pumount.source = "${pkgs.pmount}/bin/pumount";