Bloqueio de usuários no grupo sudo do uso do DNS

0

Estou executando o Ubuntu 16.04 LTS, usando o iptables v1.6.0 e o dnsmasq v2.75.

Meu teste de unidade para o iptables, até agora, é o seguinte

#!/bin/bash --
ipt=/sbin/iptables
$ipt -F
$ipt -X
$ipt -t nat -F
$ipt -t nat -X
$ipt -t mangle -F
$ipt -t mangle -X
$ipt -t raw -F
$ipt -t raw -X
$ipt -N TCP
$ipt -N UDP
$ipt -P INPUT DROP
$ipt -P OUTPUT DROP
$ipt -P FORWARD DROP
$ipt -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
$ipt -A INPUT -p icmp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ipt -A OUTPUT -p icmp -j ACCEPT

# INPUT
$ipt -A INPUT -i lo -j ACCEPT
$ipt -A INPUT ! -i lo -s 127.0.0.0/8 -j DROP
$ipt -A INPUT -m conntrack --ctstate INVALID -j DROP

# 'NEW'

# TCP
$ipt -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
$ipt -I TCP -p tcp -m recent --update --seconds 60 --name TCP-PORTSCAN -j DROP
$ipt -A TCP -p tcp -j RETURN

# UDP
$ipt -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
$ipt -I UDP -p udp -m recent --update --seconds 60 --name UDP-PORTSCAN -j DROP
$ipt -A UDP -p udp -j RETURN

# ! 'NEW'
$ipt -A INPUT -p udp -m conntrack --ctstate ESTABLISHED \
  --sport 53 -j ACCEPT

# OUTPUT
$ipt -A OUTPUT -o lo -j ACCEPT
$ipt -A OUTPUT ! -o lo -d 127.0.0.0/8 -j DROP

# TODO: 
for yewzr in $(cat /usr/local/etc/dns.group.conf); do
$ipt -A OUTPUT -p udp -m owner --uid-owner nobody -m conntrack --ctstate NEW,ESTABLISHED --dport 53 -j ACCEPT
# << modified per attempt

# FORWARD
# LOG
$ipt -A TCP -p tcp -m limit --limit 3/min -j LOG --log-prefix "ipt_TCP_denied: " --log-level 4
$ipt -A UDP -p udp -m limit --limit 3/min -j LOG --log-prefix "ipt_UDP_denied: " --log-level 4
$ipt -A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "ipt_OUTPUT_denied: " --log-level 4

# DROP
$ipt -A INPUT -p tcp -m recent --set --name TCP-PORTSCAN -j DROP
$ipt -A INPUT -p udp -m recent --set --name UDP-PORTSCAN -j DROP

O objetivo de minhas lutas é que eu não quero interação com protocolos DNS quando os processos / usuário estiverem dentro do grupo, 'sudo'.

As coisas que tentei até agora são:

Bloqueio do acesso Via iptables usando:

$ipt -A OUTPUT -p udp -m owner --gid-owner sudo --dport 53 -j DROP

Como o Ubuntu usa o DNSMasq, que cai para o nouser / nogroup após a inicialização, isso obviamente não está correto. Então, eu também tentei:

$ipt -A OUTPUT -p udp -o lo -d 127.0.0.0/8  -m owner --gid-owner sudo --dport 53 -j DROP

com:

$ipt -A OUTPUT -p udp -m owner --uid-owner nouser --dport 53 -j ACCEPT

O nslookup para a primeira tentativa obviamente falha para qualquer um que tente obter informações devido ao dnsmasq. Para a segunda tentativa, não fico feliz em nslookups (felizmente) de um usuário sudo, (infelizmente) não de um usuário permitido dns.

Pesquisei documentação sobre ACLs dentro de configurações do dnsmasqs em relação aos usuários locais do host em que o dnsmasq está (assim como off, que não é difícil de descobrir, que termina com o mesmo problema.).

Estou muito aberto a sugestões sobre como realizar a negação explícita de usuários privilegiados do uso do DNS. Lembre-se de que meu objetivo é restringir um usuário sudo de todos os protocolos de rede, exceto o http explicitamente direcionado a repositórios usando ipsets com um conjunto definido direcionado a repositórios e resolvido via /etc/hosts .

    
por miphix 02.07.2017 / 20:18

0 respostas