Bonjour à tous,
Je fais appel à la communauté DF afin de m'aider à résoudre un problème.
Voilà, je viens de m'installer une machine Debian 10 sur laquelle j'ai installé/configuré les paquets dnscrypt-proxy et iptables.
Malheureusement, après avoir parcouru un certains nombre de site et essayé un certains nombre de solution, je n'arrive pas à trouver la solution.
Mon problème est donc le suivant: Je n'arrive pas à faire fonctionner dnscrypt-proxy au travers du pare-feu.
Pour précision:
La résolution DNS via dnscrypt-proxy fonctionne correctement sans le pare-feu.
Vous trouverez ci-dessous mon/mes fichiers de configuration iptables, ainsi que mon/mes fichiers de logs:
Requête nslookup sans IPTABLES
nslookup www.google.fr
Server: 127.0.2.1
Address: 127.0.2.1#53
Non-authoritative answer:
Name: www.google.fr
Address: 216.58.213.131
Name: www.google.fr
Address: 2a00:1450:4007:80c::2003
Requête nslookup avec IPTABLES
nslookup www.google.fr
;; connection timed out; no servers could be reached
Fichier de configuration IPTABLES:
#! /bin/sh
### BEGIN INIT INFO
# Provides: PersonalFirewall
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Personal Firewall
# Description: Init the firewall rules
### END INIT INFO
# programme iptables IPV4 et IPV6
IPT=/sbin/iptables
# Les IPs
#IP_TRUSTED=xx.xx.xx.xx
do_start() {
# Efface toutes les regles en cours. -F toutes. -X règles personnelles
$IPT -t filter -F
$IPT -t filter -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
# strategie (-P) par defaut : Interdire toute connexion entrante et sortante
$IPT -t filter -P INPUT DROP
$IPT -t filter -P FORWARD DROP
$IPT -t filter -P OUTPUT DROP
# Logs du firewall
$IPT -A INPUT -j LOG --log-prefix "INPUT_DROP ]"
$IPT -A FORWARD -j LOG --log-prefix "FORWARD_DROP ]"
$IPT -A OUTPUT -j LOG --log-prefix "OUTPUT_DROP ]"
# Refuse les paquets invalides
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Anti Scan
$IPT -A INPUT -p tcp --tcp-flags FIN,URG,PSH FIN,URG,PSH -j DROP
$IPT -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
#Make sure NEW incoming tcp connections are SYN packets
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
#Packets with incoming fragments
$IPT -A INPUT -f -j DROP
#incoming malformed XMAS packets
$IPT -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
#Incoming malformed NULL packets
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Autoriser Loopback
$IPT -t filter -A INPUT -i lo -m comment --comment "lo:IN" -j ACCEPT
$IPT -t filter -A OUTPUT -o lo -m comment --comment "lo:OUT" -j ACCEPT
# Permettre a une connexion ouverte de recevoir du trafic en entree
$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ICMP (Ping)
$IPT -t filter -A INPUT -p icmp -m comment --comment "ICMP:IN" -j ACCEPT
$IPT -t filter -A OUTPUT -p icmp -m comment --comment "ICMP:OUT" -j ACCEPT
#Autoriser sortie FTP
$IPT -t filter -A OUTPUT -p tcp --dport 21 -m comment --comment "FTP:OUT:21" -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 20 -m comment --comment "FTP:OUT:20" -j ACCEPT
# DNS :53
$IPT -t filter -A OUTPUT -p tcp --dport 53 -m comment --comment "DNS:OUT:53:tcp" -j ACCEPT
$IPT -t filter -A OUTPUT -p udp --dport 53 -m comment --comment "DNS:OUT:53:udp" -j ACCEPT
$IPT -t filter -A INPUT -p tcp --dport 53 -m comment --comment "DNS:IN:53:tcp" -j ACCEPT
$IPT -t filter -A INPUT -p udp --dport 53 -m comment --comment "DNS:IN:53:udp" -j ACCEPT
# HTTP:80
$IPT -t filter -A INPUT -p tcp --dport 80 -m comment --comment "HTTP:IN:80" -j ACCEPT
# HTTPS:443
$IPT -t filter -A INPUT -p tcp --dport 443 -m comment --comment "HTTPS:IN:443" -j ACCEPT
# DNSCRYPT
$IPT -t filter -A OUTPUT -p udp --dport 443 -j ACCEPT
# NTP OUT
$IPT -t filter -A OUTPUT -p udp --dport 123 -m comment --comment "NTP:OUT:123" -j ACCEPT
echo "firewall started [OK]"
}
# fonction qui arrete le firewall
do_stop() {
# Efface toutes les regles
$IPT -t filter -F
$IPT -t filter -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
# remet la strategie
$IPT -t filter -P INPUT ACCEPT
$IPT -t filter -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD ACCEPT
#
echo "firewall stopped [OK]"
}
# fonction status firewall
do_status() {
# affiche les regles en cours
clear
echo Status IPV4
echo -----------------------------------------------
$IPT -L -n -v
echo
}
case "$1" in
start)
do_start
exit 0
;;
stop)
do_stop
exit 0
;;
restart)
do_stop
do_start
exit 0
;;
status)
do_status
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop|restart|status}"
exit 1
;;
esac
Fichier de LOG IPTABLES:
OUTPUT_DROP ]IN= OUT=lo SRC=127.0.0.1 DST=127.0.0.1 LEN=29 TOS=0x18 PREC=0xA0 TTL=64 ID=53726 DF PROTO=UDP SPT=57845 DPT=57845 LEN=9
INPUT_DROP ]IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.0.1 LEN=29 TOS=0x18 PREC=0xA0 TTL=64 ID=53726 DF PROTO=UDP SPT=57845 DPT=57845 LEN=9
OUTPUT_DROP ]IN= OUT=lo SRC=127.0.0.1 DST=127.0.2.1 LEN=59 TOS=0x00 PREC=0x00 TTL=64 ID=43185 PROTO=UDP SPT=41465 DPT=53 LEN=39
INPUT_DROP ]IN=lo OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:08:00 SRC=127.0.0.1 DST=127.0.2.1 LEN=59 TOS=0x00 PREC=0x00 TTL=64 ID=43185 PROTO=UDP SPT=41465 DPT=53 LEN=39
OUTPUT_DROP ]IN= OUT=enp5s2 SRC=192.168.1.29 DST=1.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=32259 DF PROTO=TCP SPT=56056 DPT=443 WINDOW=64240 RES=0x00 SYN URGP=0
OUTPUT_DROP ]IN= OUT=enp5s2 SRC=192.168.1.29 DST=1.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=32260 DF PROTO=TCP SPT=56056 DPT=443 WINDOW=64240 RES=0x00 SYN URGP=0
Je pense que la solution est toute bête, mais je n'arrive pas à la trouver...
Faut-il que je crée une règle de nattage ? PREROUTING/POSTROUTING ?
En vous remerçiant d'avance pour l'aide que vous pourriez m'apporter.
Dernière modification par JackOs29 (24-03-2020 18:25:08)