Блокировка пользователей в группе sudo от использования DNS

Я использую Ubuntu 16.04 LTS, использую iptables v1.6.0 и dnsmasq v2.75.

Пока что мой модульный тест для iptables выглядит следующим образом

#!/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

Цель моей борьбы - я не хочу взаимодействовать с протоколами DNS, когда процессы / пользователь находятся в пределах группа 'sudo.'

То, что я пробовал до сих пор:

Блокировка доступа через iptables с помощью:

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

Поскольку Ubuntu использует DNSMasq, который сбрасывается до непривилегированного nouser / nogroup после инициализации это явно не правильно. Итак, я также попытался:

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

с:

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

nslookup для первой попытки, очевидно, потерпел неудачу для любого, кто пытается получить информацию из-за dnsmasq. Во второй попытке я не получаю радости от nslookups (к счастью) от пользователя sudo, (к сожалению) не от пользователя, разрешенного DNS.

Я искал документацию по спискам ACL в конфигурациях dnsmasqs, касающихся пользователей, локальных для хоста. Dnsmasq включен (а также выключен, что нетрудно выяснить, что заканчивается той же проблемой.)

Я очень открыт для предложений о том, как добиться явного отказа привилегированным пользователям от использования DNS. Не забывайте, что моя цель - в конечном итоге ограничить пользователя sudo от -all-сетевых протоколов, кроме http, явно направленного на репозитории с использованием ipsets с определенным набором, направленным на репозитории и разрешенным с помощью /etc/hosts.

0
задан 2 July 2017 в 11:25

0 ответов

Другие вопросы по тегам:

Похожие вопросы: