Règle FORWARD iptables

Bonjour,

Je suis en train de mettre en place 1 firewall chez moi et je recherche une réponse à cette question:

  • peut-on filtrer le “FORWARD” par une macadresse (-m mac --mac-source xx:xx:xx:xx:xx:xx) tout comme le “INPUT” ?

But du jeu : tout mettre à “DROP” (INPUT, OUTPUT, FORWARD) et n’autoriser QUE certaines macadresses à “traverser” le firewall et faire du NAT.

Mon firewall est en DMZ sur ma box fibre, donc tous les flux entrants passent par lui.

La réponse se trouve dans les pages de manuel d’iptables. Oui, la correspondance “mac” est disponible dans les chaînes PREROUTING, INPUT et FORWARD.

1 J'aime

Je n’ai rien trouvé en ce sens dans les pages du manuel d’iptables… Sinon je n’aurais pas poster mon problème… :wink:

En tout cas, chez moi, la correspondance “mac” dans la chaîne FORWARD ne fonctionne pas, ni dans PREROUTING. Lorsque je teste en n’autorisant qu’une seule macadresse, les autres passent sans soucis.

“mac” est une extension de correspondance. Dans la page de manuel d’iptables, on lit :

MATCH AND TARGET EXTENSIONS
iptables can use extended packet matching and target modules. A list
of these is available in the iptables-extensions(8) manpage.

Et dans la page de manuel d’iptables-extensions, on peut lire la description de la correspondance “mac” :

mac
[!] --mac-source address
Match source MAC address. It must be of the form
XX:XX:XX:XX:XX:XX. Note that this only makes sense for packets
coming from an Ethernet device and entering the PREROUTING, FOR‐
WARD or INPUT chains.

Il faut nous monter le jeu de règles complet affiché par iptables-save, et décrire précisément comment tu testes.

Voici, sans entrée dans les détails, ce qu’il y a dans mon script /etc/init.d/iptables:

*** le “start”:**

sysctl -w net.ipv4.ip_forward=1 (j’active le mode routeur de mon serveur SRVA, le firewall)

$0 stop

iptables -A POSTROUTING -t nat -j MASQUERADE

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1234 -j DNAT --to-destination ${IP_SRVB}:1234

iptables -A FORWARD -p tcp -d ${IP_SRVB} --dport 1234 -j ACCEPT

*** le “stop”:**

iptables -F
iptables -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -t nat -F
iptables -t nat -X
iptables -N EstablishedConn
iptables -A EstablishedConn -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I OUTPUT -j EstablishedConn
iptables -I INPUT -j EstablishedConn
iptables -I FORWARD -j EstablishedConn

et la boucle locale…

Ensuite viennent les différents filtres INPUT, filtrer par la “mac” (plusieurs) : ssh, http/https, ping, smtp…

Ce que j’ai testé:

  • 1 : iptables -t nat -A PREROUTING -i eth0 -p tcp -m mac --mac-source xx:xx:xx:xx:xx:xx --dport 1234 -j DNAT --to-destination ${IP_SRV}:1234
    ==> Laisse passer d’autres “mac”

  • 2 : iptables -A FORWARD -p tcp -d ${IP_SRV} -m mac --mac-source xx:xx:xx:xx:xx:xx --dport 1234 -j ACCEPT
    ==> Laisse passer d’autres “mac”

  • 3 : Les 2 en même temps…
    ==> Laisse passer d’autres “mac”

Ce n’est pas ce que j’ai demandé. Relis mon message.

Toi, tu dois être MOA ou MOE ou chef de projet ou instit, vu le ton de tes réponses !!!
MDR
:smile: :joy::wink:

Voici :

# Generated by iptables-save v1.6.0 on Fri Jul  6 19:01:32 2018
*nat
:PREROUTING ACCEPT [76002:5360600]
:INPUT ACCEPT [2:104]
:OUTPUT ACCEPT [988:236525]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40001 -j DNAT --to-destination 192.168.1.161:40001
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40002 -j DNAT --to-destination 192.168.1.162:40002
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40003 -j DNAT --to-destination 192.168.1.164:40003
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40004 -j DNAT --to-destination 192.168.1.169:40004
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40006 -j DNAT --to-destination 192.168.1.166:40006
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40010 -j DNAT --to-destination 192.168.1.164:40010
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40021 -j DNAT --to-destination 192.168.1.166:40021
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40022 -j DNAT --to-destination 192.168.1.166:40022
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40030 -j DNAT --to-destination 192.168.1.160:40030
-A PREROUTING -i eth0 -p tcp -m tcp --dport 614 -j DNAT --to-destination 192.168.1.160:614
-A PREROUTING -i eth0 -p tcp -m tcp --dport 615 -j DNAT --to-destination 192.168.1.161:615
-A PREROUTING -i eth0 -p tcp -m tcp --dport 616 -j DNAT --to-destination 192.168.1.162:616
-A PREROUTING -i eth0 -p tcp -m tcp --dport 617 -j DNAT --to-destination 192.168.1.164:617
-A PREROUTING -i eth0 -p tcp -m tcp --dport 619 -j DNAT --to-destination 192.168.1.169:619
-A POSTROUTING -j MASQUERADE
COMMIT
# Completed on Fri Jul  6 19:01:32 2018
# Generated by iptables-save v1.6.0 on Fri Jul  6 19:01:32 2018
*filter
:INPUT DROP [75511:5334948]
:FORWARD DROP [0:0]
:OUTPUT DROP [565:204275]
:CountryDrop - [0:0]
:DNSIn - [0:0]
:DNSOut - [0:0]
:EstablishedConn - [0:0]
:FTPOut - [0:0]
:HTTPIn - [0:0]
:HTTPOut - [0:0]
:HTTPSIn - [0:0]
:IncomingFrag - [0:0]
:IncomingNULL - [0:0]
:IncomingXMAS - [0:0]
:IntrusionDrop - [0:0]
:LocalBoucle - [0:0]
:MailServerHTTPS - [0:0]
:MailServerIn - [0:0]
:MailServerPingIn - [0:0]
:MailServerRoundcube - [0:0]
:MailServerSMTPExt - [0:0]
:MailServerSSHIn - [0:0]
:MySQLOut - [0:0]
:NFSOut - [0:0]
:NTPIn - [0:0]
:NTPOut - [0:0]
:NoScan - [0:0]
:PingIn - [0:0]
:PingOut - [0:0]
:SMTP - [0:0]
:SSHIn - [0:0]
:SYNPackets - [0:0]
-A INPUT -j IntrusionDrop
-A INPUT -j MailServerIn
-A INPUT -j MailServerHTTPS
-A INPUT -j MailServerSSHIn
-A INPUT -j MailServerPingIn
-A INPUT -j HTTPIn
-A INPUT -j HTTPSIn
-A INPUT -j NTPIn
-A INPUT -j DNSIn
-A INPUT -j SSHIn
-A INPUT -j PingIn
-A INPUT -j IncomingNULL
-A INPUT -j IncomingXMAS
-A INPUT -j IncomingFrag
-A INPUT -j SYNPackets
-A INPUT -j NoScan
-A INPUT -j CountryDrop
-A INPUT -j LocalBoucle
-A INPUT -j EstablishedConn
-A FORWARD -j IntrusionDrop
-A FORWARD -j CountryDrop
-A FORWARD -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "IPTables:"
-A FORWARD -j EstablishedConn
-A FORWARD -d 192.168.1.161/32 -p tcp -m tcp --dport 40001 -j ACCEPT
-A FORWARD -d 192.168.1.162/32 -p tcp -m tcp --dport 40002 -j ACCEPT
-A FORWARD -d 192.168.1.164/32 -p tcp -m tcp --dport 40003 -j ACCEPT
-A FORWARD -d 192.168.1.169/32 -p tcp -m tcp --dport 40004 -j ACCEPT
-A FORWARD -d 192.168.1.166/32 -p tcp -m tcp --dport 40006 -j ACCEPT
-A FORWARD -d 192.168.1.164/32 -p tcp -m tcp --dport 40010 -j ACCEPT
-A FORWARD -d 192.168.1.166/32 -p tcp -m tcp --dport 40021 -j ACCEPT
-A FORWARD -d 192.168.1.166/32 -p tcp -m tcp --dport 40022 -j ACCEPT
-A FORWARD -d 192.168.1.160/32 -p tcp -m tcp --dport 40030 -j ACCEPT
-A FORWARD -d 192.168.1.160/32 -p tcp -m tcp --dport 614 -j ACCEPT
-A FORWARD -d 192.168.1.161/32 -p tcp -m tcp --dport 615 -j ACCEPT
-A FORWARD -d 192.168.1.162/32 -p tcp -m tcp --dport 616 -j ACCEPT
-A FORWARD -d 192.168.1.164/32 -p tcp -m tcp --dport 617 -j ACCEPT
-A FORWARD -d 192.168.1.169/32 -p tcp -m tcp --dport 619 -j ACCEPT
-A OUTPUT -j IntrusionDrop
-A OUTPUT -j MailServerSMTPExt
-A OUTPUT -j MailServerRoundcube
-A OUTPUT -j SMTP
-A OUTPUT -j NFSOut
-A OUTPUT -j FTPOut
-A OUTPUT -j HTTPOut
-A OUTPUT -j NTPOut
-A OUTPUT -j DNSOut
-A OUTPUT -j PingOut
-A OUTPUT -j CountryDrop
-A OUTPUT -j LocalBoucle
-A OUTPUT -j MySQLOut
-A OUTPUT -j EstablishedConn
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.160/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.161/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.162/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.164/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.169/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.199/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.160/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.161/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.162/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.164/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.169/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.199/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.166/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 192.168.1.1/32 -d 192.168.1.167/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.160/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.161/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.162/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.164/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.169/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.199/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.160/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.161/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.162/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.164/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.169/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.199/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.166/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSIn -s 1.1.1.1/32 -d 192.168.1.167/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSOut -s 192.168.1.199/32 -d 192.168.1.1/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSOut -s 192.168.1.199/32 -d 192.168.1.1/32 -p udp -m udp --dport 53 -j ACCEPT
-A DNSOut -s 192.168.1.199/32 -d 1.1.1.1/32 -p tcp -m tcp --dport 53 -j ACCEPT
-A DNSOut -s 192.168.1.199/32 -d 1.1.1.1/32 -p udp -m udp --dport 53 -j ACCEPT
-A EstablishedConn -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FTPOut -s 192.168.1.161/32 -p tcp -m multiport --dports 20,21 -j ACCEPT
-A FTPOut -s 192.168.1.162/32 -p tcp -m multiport --dports 20,21 -j ACCEPT
-A FTPOut -s 192.168.1.164/32 -p tcp -m multiport --dports 20,21 -j ACCEPT
-A FTPOut -s 192.168.1.169/32 -p tcp -m multiport --dports 20,21 -j ACCEPT
-A FTPOut -s 192.168.1.199/32 -p tcp -m multiport --dports 20,21 -j ACCEPT
-A HTTPIn -d 192.168.1.160/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.161/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.162/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.164/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.169/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.199/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.166/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.167/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPIn -d 192.168.1.199/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPOut -s 192.168.1.199/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A HTTPSIn -d 192.168.1.199/32 -p tcp -m tcp --dport 40099 -j ACCEPT
-A IncomingFrag -f -j DROP
-A IncomingNULL -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A IncomingXMAS -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A IntrusionDrop -s 103.207.37.40/32 -j DROP
-A IntrusionDrop -s 195.22.125.28/32 -j DROP
-A IntrusionDrop -s 103.207.38.153/32 -j DROP
-A IntrusionDrop -s 124.29.246.106/32 -j DROP
-A IntrusionDrop -s 103.207.38.156/32 -j DROP
-A IntrusionDrop -s 190.120.191.18/32 -j DROP
-A IntrusionDrop -s 189.198.156.86/32 -j DROP
-A IntrusionDrop -s 177.241.45.125/32 -j DROP
-A IntrusionDrop -s 203.81.71.8/32 -j DROP
-A IntrusionDrop -s 80.82.70.118/32 -j DROP
-A IntrusionDrop -s 80.211.144.224/32 -j DROP
-A IntrusionDrop -s 179.145.4.47/32 -j DROP
-A IntrusionDrop -s 177.143.177.73/32 -j DROP
-A IntrusionDrop -s 190.94.207.55/32 -j DROP
-A IntrusionDrop -s 195.22.125.27/32 -j DROP
-A IntrusionDrop -s 201.240.21.238/32 -j DROP
-A IntrusionDrop -s 201.141.38.55/32 -j DROP
-A IntrusionDrop -s 104.152.52.23/32 -j DROP
-A IntrusionDrop -s 186.237.60.151/32 -j DROP
-A IntrusionDrop -s 192.241.192.50/32 -j DROP
-A IntrusionDrop -s 93.88.76.73/32 -j DROP
-A IntrusionDrop -s 188.166.164.162/32 -j DROP
-A IntrusionDrop -s 107.170.230.58/32 -j DROP
-A IntrusionDrop -s 37.49.224.67/32 -j DROP
-A IntrusionDrop -s 193.169.252.20/32 -j DROP
-A IntrusionDrop -s 107.170.228.78/32 -j DROP
-A IntrusionDrop -s 193.169.252.21/32 -j DROP
-A IntrusionDrop -s 185.234.216.190/32 -j DROP
-A IntrusionDrop -s 192.241.234.202/32 -j DROP
-A IntrusionDrop -s 37.49.227.115/32 -j DROP
-A IntrusionDrop -s 91.234.99.217/32 -j DROP
-A IntrusionDrop -s 107.170.253.114/32 -j DROP
-A IntrusionDrop -s 107.170.228.177/32 -j DROP
-A IntrusionDrop -s 36.108.169.195/32 -j DROP
-A IntrusionDrop -s 162.243.131.219/32 -j DROP
-A IntrusionDrop -s 37.49.224.85/32 -j DROP
-A IntrusionDrop -s 107.170.228.237/32 -j DROP
-A IntrusionDrop -s 89.40.123.58/32 -j DROP
-A IntrusionDrop -s 37.49.227.18/32 -j DROP
-A IntrusionDrop -s 107.170.232.18/32 -j DROP
-A IntrusionDrop -s 190.64.208.82/32 -j DROP
-A IntrusionDrop -s 107.170.231.162/32 -j DROP
-A IntrusionDrop -s 80.82.77.17/32 -j DROP
-A IntrusionDrop -s 37.49.227.8/32 -j DROP
-A IntrusionDrop -s 185.234.218.152/32 -j DROP
-A IntrusionDrop -s 107.170.230.111/32 -j DROP
-A IntrusionDrop -s 171.34.218.167/32 -j DROP
-A IntrusionDrop -s 124.243.245.66/32 -j DROP
-A IntrusionDrop -s 107.170.229.125/32 -j DROP
-A IntrusionDrop -s 192.241.208.242/32 -j DROP
-A IntrusionDrop -s 78.190.211.219/32 -j DROP
-A IntrusionDrop -s 190.216.251.102/32 -j DROP
-A IntrusionDrop -s 89.216.97.200/32 -j DROP
-A IntrusionDrop -s 143.0.253.238/32 -j DROP
-A IntrusionDrop -s 216.230.135.58/32 -j DROP
-A IntrusionDrop -s 148.244.195.230/32 -j DROP
-A IntrusionDrop -s 58.82.247.152/32 -j DROP
-A IntrusionDrop -s 195.216.244.171/32 -j DROP
-A IntrusionDrop -s 107.170.254.21/32 -j DROP
-A IntrusionDrop -s 177.189.229.21/32 -j DROP
-A IntrusionDrop -s 162.243.132.162/32 -j DROP
-A IntrusionDrop -s 37.49.224.117/32 -j DROP
-A IntrusionDrop -s 115.231.212.82/32 -j DROP
-A IntrusionDrop -s 210.14.78.91/32 -j DROP
-A IntrusionDrop -s 84.21.28.154/32 -j DROP
-A IntrusionDrop -s 107.170.229.36/32 -j DROP
-A IntrusionDrop -s 104.152.52.24/32 -j DROP
-A IntrusionDrop -s 192.241.210.75/32 -j DROP
-A IntrusionDrop -s 185.234.216.139/32 -j DROP
-A IntrusionDrop -s 205.209.234.98/32 -j DROP
-A IntrusionDrop -s 89.248.171.89/32 -j DROP
-A IntrusionDrop -s 195.22.126.39/32 -j DROP
-A IntrusionDrop -s 46.98.90.64/32 -j DROP
-A IntrusionDrop -s 117.5.147.77/32 -j DROP
-A IntrusionDrop -s 151.21.126.179/32 -j DROP
-A IntrusionDrop -s 89.248.160.156/32 -j DROP
-A IntrusionDrop -s 198.23.59.118/32 -j DROP
-A IntrusionDrop -s 107.170.230.160/32 -j DROP
-A IntrusionDrop -s 93.174.93.251/32 -j DROP
-A IntrusionDrop -s 107.170.231.45/32 -j DROP
-A IntrusionDrop -s 185.234.218.133/32 -j DROP
-A IntrusionDrop -s 217.61.20.236/32 -j DROP
-A IntrusionDrop -s 103.236.253.45/32 -j DROP
-A IntrusionDrop -s 91.234.99.212/32 -j DROP
-A IntrusionDrop -s 193.169.252.131/32 -j DROP
-A IntrusionDrop -s 193.169.252.130/32 -j DROP
-A IntrusionDrop -s 186.10.186.64/32 -j DROP
-A IntrusionDrop -s 192.241.232.150/32 -j DROP
-A IntrusionDrop -s 52.172.35.173/32 -j DROP
-A IntrusionDrop -s 107.170.254.144/32 -j DROP
-A IntrusionDrop -s 37.49.227.144/32 -j DROP
-A IntrusionDrop -s 89.248.171.134/32 -j DROP
-A IntrusionDrop -s 27.79.242.191/32 -j DROP
-A IntrusionDrop -s 203.202.246.49/32 -j DROP
-A IntrusionDrop -s 115.73.182.89/32 -j DROP
-A LocalBoucle -i lo -j ACCEPT
-A LocalBoucle -o lo -j ACCEPT
-A MailServerHTTPS -d 192.168.1.160/32 -p tcp -m tcp --dport 40030 -j ACCEPT
-A MailServerIn -d 192.168.1.160/32 -p tcp -m tcp --dport 25 -j ACCEPT
-A MailServerIn -d 192.168.1.160/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 993 -j ACCEPT
-A MailServerIn -d 192.168.1.160/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 587 -j ACCEPT
-A MailServerPingIn -d 192.168.1.160/32 -p icmp -m mac --mac-source D4:3D:7E:50:26:90 -j ACCEPT
-A MailServerPingIn -d 192.168.1.160/32 -p icmp -m mac --mac-source B8:27:EB:75:85:AD -j ACCEPT
-A MailServerPingIn -d 192.168.1.160/32 -p icmp -m mac --mac-source B8:27:EB:FE:4C:A5 -j ACCEPT
-A MailServerPingIn -d 192.168.1.160/32 -p icmp -m mac --mac-source B8:27:EB:73:DE:B9 -j ACCEPT
-A MailServerPingIn -d 192.168.1.160/32 -p icmp -m mac --mac-source 00:11:32:68:6C:25 -j ACCEPT
-A MailServerPingIn -d 192.168.1.160/32 -p icmp -m mac --mac-source 00:11:32:68:6C:26 -j ACCEPT
-A MailServerPingIn -d 192.168.1.160/32 -p icmp -m mac --mac-source B8:27:EB:D9:81:01 -j ACCEPT
-A MailServerRoundcube -d 192.168.1.166/32 -p tcp -m tcp --dport 40006 -j ACCEPT
-A MailServerSMTPExt -s 192.168.1.160/32 -p tcp -m tcp --dport 25 -j ACCEPT
-A MailServerSMTPExt -s 192.168.1.160/32 -p tcp -m tcp --dport 587 -j ACCEPT
-A MailServerSSHIn -d 192.168.1.160/32 -p tcp -m mac --mac-source B8:27:EB:FE:4C:A5 -m tcp --dport 614 -j ACCEPT
-A MailServerSSHIn -d 192.168.1.160/32 -p tcp -m mac --mac-source D4:3D:7E:50:26:90 -m tcp --dport 614 -j ACCEPT
-A MySQLOut -s 192.168.1.160/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A MySQLOut -s 192.168.1.161/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A MySQLOut -s 192.168.1.162/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A MySQLOut -s 192.168.1.164/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A MySQLOut -s 192.168.1.169/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A MySQLOut -s 192.168.1.199/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 111 -j ACCEPT
-A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p udp -m udp --dport 111 -j ACCEPT
-A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p udp -m udp --dport 2049 -j ACCEPT
-A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 2049 -j ACCEPT
-A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p udp -m udp --dport 892 -j ACCEPT
-A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 892 -j ACCEPT
-A NTPIn -d 192.168.1.160/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPIn -d 192.168.1.161/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPIn -d 192.168.1.162/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPIn -d 192.168.1.164/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPIn -d 192.168.1.169/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPIn -d 192.168.1.199/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPIn -d 192.168.1.166/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPIn -d 192.168.1.167/32 -p udp -m udp --sport 123 -j ACCEPT
-A NTPOut -s 192.168.1.199/32 -p udp -m udp --dport 123 -j ACCEPT
-A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,PSH,URG FIN,PSH,URG -j DROP
-A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A NoScan -i eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
-A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source D4:3D:7E:50:26:90 -j ACCEPT
-A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:79:30:DB -j ACCEPT
-A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:75:85:AD -j ACCEPT
-A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:FE:4C:A5 -j ACCEPT
-A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source 00:11:32:68:6C:25 -j ACCEPT
-A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source 00:11:32:68:6C:26 -j ACCEPT
-A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:73:DE:B9 -j ACCEPT
-A PingOut -s 192.168.1.199/32 -p icmp -j ACCEPT
-A SMTP -s 192.168.1.199/32 -d 192.168.1.160/32 -p tcp -m tcp --dport 25 -j ACCEPT
-A SSHIn -d 192.168.1.164/32 -p tcp -m mac --mac-source D4:3D:7E:50:26:90 -m tcp --dport 617 -j ACCEPT
-A SSHIn -d 192.168.1.164/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 617 -j ACCEPT
-A SSHIn -d 192.168.1.160/32 -p tcp -m mac --mac-source D4:3D:7E:50:26:90 -m tcp --dport 614 -j ACCEPT
-A SSHIn -d 192.168.1.160/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 614 -j ACCEPT
-A SSHIn -d 192.168.1.161/32 -p tcp -m mac --mac-source D4:3D:7E:50:26:90 -m tcp --dport 615 -j ACCEPT
-A SSHIn -d 192.168.1.161/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 615 -j ACCEPT
-A SSHIn -d 192.168.1.162/32 -p tcp -m mac --mac-source D4:3D:7E:50:26:90 -m tcp --dport 616 -j ACCEPT
-A SSHIn -d 192.168.1.162/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 616 -j ACCEPT
-A SSHIn -d 192.168.1.169/32 -p tcp -m mac --mac-source D4:3D:7E:50:26:90 -m tcp --dport 619 -j ACCEPT
-A SSHIn -d 192.168.1.169/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 619 -j DROP
-A SSHIn -d 192.168.1.199/32 -p tcp -m mac --mac-source D4:3D:7E:50:26:90 -m tcp --dport 699 -j ACCEPT
-A SSHIn -d 192.168.1.199/32 -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 699 -j ACCEPT
-A SSHIn -d 192.168.1.199/32 -p tcp -m mac --mac-source B8:27:EB:FE:4C:A5 -m tcp --dport 699 -j ACCEPT
-A SYNPackets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
COMMIT
# Completed on Fri Jul  6 19:01:32 2018

Je ne vois aucune utilisation de la correspondance mac dans la chaîne FORWARD ou PREROUTING. Ce que j’ai besoin de voir, c’est le jeu de règles avec les règles contenant une correspondance mac. J’ai aussi besoin de savoir comment tu testes et tu constates que le filtrage par adresse MAC est inopérant.

PS : stp utilise la mise en forme “texte préformaté” pour une meilleure lisibilité des textes bruts.

J’ai simplement “désactivé” le filtrage par mac dans la règle FORWARD, puisque non fonctionnelle pour l’instant. Logique donc qu’elle n’apparaisse pas !!! Je la réactive…

Voici les infos que tu as besoin de voir (si j’ai bien compris), filtrage mac réactivé :

*nat
:PREROUTING ACCEPT [5:263]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:60]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 40004 -m mac --mac-source 64:7C:34:62:78:08 -j ACCEPT
................
-A FORWARD -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 40004 -j ACCEPT
................
  • Comment je teste : simplement en accédant en https sur une URL, de mon PC (qui n’est pas autorisé) et d’un autre PC (qui est autorisé)

  • Comment je constate : simplement en faisant un tail -f de la log iptables que j’active (ou désactive) au lancement de /etc/init.d/iptables… C’est dans cette log que je vois le forward se faire…ou que je ne vois rien si c’est “interdit”… C’est donc là que je vois que la mac autorisée passe ET que l’autre mac, non autorisée, passe aussi… Puis j’ai la page de l’URL qui s’affiche aussi, montrant donc que ça passe…

On a du mal à se comprendre, on dirait. Ce que je demande, c’est

  • le jeu de règles complet affiché par iptables-save incluant les règles avec une correspondance mac

  • les commandes ou URL précis utilisés pour tester

  • les adresses IP et MAC et la position dans le réseau par rapport au firewall des postes utilisés pour tester

  • iptables-save :

    *nat
    :PREROUTING ACCEPT [40520:2750732]
    :INPUT ACCEPT [6:344]
    :OUTPUT ACCEPT [360:30323]
    :POSTROUTING ACCEPT [0:0]
    -A PREROUTING -i eth0 -p tcp -m tcp --dport 40004 -m mac --mac-source 64:7C:34:62:78:08 -j ACCEPT
    -A POSTROUTING -j MASQUERADE
    COMMIT

    *filter
    :INPUT DROP [40309:2739097]
    :FORWARD DROP [0:0]
    :OUTPUT DROP [13:4745]
    :CountryDrop - [0:0]
    :DNSIn - [0:0]
    :DNSOut - [0:0]
    :EstablishedConn - [0:0]
    :FTPOut - [0:0]
    :HTTPIn - [0:0]
    :HTTPOut - [0:0]
    :HTTPSIn - [0:0]
    :IncomingFrag - [0:0]
    :IncomingNULL - [0:0]
    :IncomingXMAS - [0:0]
    :IntrusionDrop - [0:0]
    :LocalBoucle - [0:0]
    :MySQLOut - [0:0]
    :NFSOut - [0:0]
    :NTPIn - [0:0]
    :NTPOut - [0:0]
    :NoScan - [0:0]
    :PingIn - [0:0]
    :PingOut - [0:0]
    :SMTP - [0:0]
    :SYNPackets - [0:0]
    -A INPUT -j IntrusionDrop
    -A INPUT -j HTTPIn
    -A INPUT -j HTTPSIn
    -A INPUT -j NTPIn
    -A INPUT -j DNSIn
    -A INPUT -j PingIn
    -A INPUT -j IncomingNULL
    -A INPUT -j IncomingXMAS
    -A INPUT -j IncomingFrag
    -A INPUT -j SYNPackets
    -A INPUT -j NoScan
    -A INPUT -j CountryDrop
    -A INPUT -j LocalBoucle
    -A INPUT -j EstablishedConn
    -A FORWARD -j IntrusionDrop
    -A FORWARD -j CountryDrop
    -A FORWARD -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix “IPTables:”
    -A FORWARD -j EstablishedConn
    -A FORWARD -p tcp -m mac --mac-source 64:7C:34:62:78:08 -m tcp --dport 40004 -j ACCEPT
    -A OUTPUT -j IntrusionDrop
    -A OUTPUT -j SMTP
    -A OUTPUT -j NFSOut
    -A OUTPUT -j FTPOut
    -A OUTPUT -j HTTPOut
    -A OUTPUT -j NTPOut
    -A OUTPUT -j DNSOut
    -A OUTPUT -j PingOut
    -A OUTPUT -j CountryDrop
    -A OUTPUT -j LocalBoucle
    -A OUTPUT -j MySQLOut
    -A OUTPUT -j EstablishedConn
    -A DNSIn -s 192.168.1.1/32 -d 192.168.1.169/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A DNSIn -s 192.168.1.1/32 -d 192.168.1.199/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A DNSIn -s 192.168.1.1/32 -d 192.168.1.169/32 -p udp -m udp --dport 53 -j ACCEPT
    -A DNSIn -s 192.168.1.1/32 -d 192.168.1.199/32 -p udp -m udp --dport 53 -j ACCEPT
    -A DNSOut -s 192.168.1.199/32 -d 192.168.1.1/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A DNSOut -s 192.168.1.199/32 -d 192.168.1.1/32 -p udp -m udp --dport 53 -j ACCEPT
    -A DNSOut -s 192.168.1.199/32 -d 1.1.1.1/32 -p tcp -m tcp --dport 53 -j ACCEPT
    -A DNSOut -s 192.168.1.199/32 -d 1.1.1.1/32 -p udp -m udp --dport 53 -j ACCEPT
    -A EstablishedConn -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FTPOut -s 192.168.1.169/32 -p tcp -m multiport --dports 20,21 -j ACCEPT
    -A FTPOut -s 192.168.1.199/32 -p tcp -m multiport --dports 20,21 -j ACCEPT
    -A HTTPIn -d 192.168.1.169/32 -p tcp -m tcp --dport 80 -j ACCEPT
    -A HTTPIn -d 192.168.1.199/32 -p tcp -m tcp --dport 80 -j ACCEPT
    -A HTTPOut -s 192.168.1.199/32 -p tcp -m tcp --dport 80 -j ACCEPT
    -A HTTPSIn -d 192.168.1.199/32 -p tcp -m tcp --dport 40099 -j ACCEPT
    -A IncomingFrag -f -j DROP
    -A IncomingNULL -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
    -A IncomingXMAS -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
    -A LocalBoucle -i lo -j ACCEPT
    -A LocalBoucle -o lo -j ACCEPT
    -A MySQLOut -s 192.168.1.169/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
    -A MySQLOut -s 192.168.1.199/32 -d 192.168.1.166/32 -p tcp -m tcp --dport 3306 -j ACCEPT
    -A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 111 -j ACCEPT
    -A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p udp -m udp --dport 111 -j ACCEPT
    -A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p udp -m udp --dport 2049 -j ACCEPT
    -A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 2049 -j ACCEPT
    -A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p udp -m udp --dport 892 -j ACCEPT
    -A NFSOut -s 192.168.1.199/32 -d 192.168.1.167/32 -p tcp -m tcp --dport 892 -j ACCEPT
    -A NTPIn -d 192.168.1.169/32 -p udp -m udp --sport 123 -j ACCEPT
    -A NTPIn -d 192.168.1.199/32 -p udp -m udp --sport 123 -j ACCEPT
    -A NTPOut -s 192.168.1.199/32 -p udp -m udp --dport 123 -j ACCEPT
    -A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,PSH,URG FIN,PSH,URG -j DROP
    -A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
    -A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
    -A NoScan -i eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
    -A NoScan -i eth0 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP
    -A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source D4:3D:7E:50:26:90 -j ACCEPT
    -A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:79:30:DB -j ACCEPT
    -A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:75:85:AD -j ACCEPT
    -A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:FE:4C:A5 -j ACCEPT
    -A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source 00:11:32:68:6C:25 -j ACCEPT
    -A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source 00:11:32:68:6C:26 -j ACCEPT
    -A PingIn -d 192.168.1.199/32 -p icmp -m mac --mac-source B8:27:EB:73:DE:B9 -j ACCEPT
    -A PingOut -s 192.168.1.199/32 -p icmp -j ACCEPT
    -A SMTP -s 192.168.1.199/32 -d 192.168.1.160/32 -p tcp -m tcp --dport 25 -j ACCEPT
    -A SYNPackets -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
    COMMIT

  • URL : https://www.mondomaine.fr:40004

  • IPs + macs :
    . autorisé (GSM) : PAS D’IP FIXE // 64:7C:34:62:78:08 // externe au réseau local
    . PC non autorisé : 192.168.1.81 // D4:3D:7E:50:26:90 // dans le réseau local, ne passe pas par le firewall en sortie (PC ==> BOX ==> WAN ==> BOX ==> FIREWALL ==> URL SERVEUR)

J’ai aussi testé le blocage de la mac de mon GSM mais ça passe malgré tout.

Cela te convient-il ou te manque-t-il des choses ??
:open_mouth:

Il n’y a aucune redirection DNAT dans la chaîne nat/PREROUTING. La seule règle présente ne sert à rien puisque la politique par défaut est déjà ACCEPT.
De toute façon, la table nat n’est pas faite pour le filtrage. C’est le rôle de la table filter.

Si je comprends bien, le téléphone mobile est connecté à internet par son opérateur cellulaire ? Il est donc extérieur à la box ? Dans ce cas son adresse MAC (s’il en a seulement une) n’est pas visible par le firewall. Une machine ne peut voir les adresses MAC que des machines qui sont directement connectées aux mêmes réseaux qu’elle. S’il y a un routeur intermédiaire (ex : la box), seule l’adresse de celui-ci est visible.

La structure de ton réseau n’est pas encore claire pour moi.
Quelles sont les interfaces et réseaux du firewall ?
Le PC a une adresse IP qui semble appartenir au même réseau que la cible des redirections du jeu de règle précédent, comment se fait-il qu’il doive passer par la box et l’extérieur pour atteindre le serveur, et qu’il ne passe-t-il pas par le firewall à l’aller ?

Oui, ça j’avais bien compris.
Dois-je filtrer en INPUT d’abord avant de FORWARD ?
Dois-je, et puis-je, faire un DROP de PREROUTING et/ou NAT avant le FORWARD ?

Le smartphone a une mac “4G”, j’ai réussi à l’attraper en loguant les arrivées sur iptables.
Et le filtrage mac pour un ssh fonctionne parfaitement avec la mac du smartphone.
Mon firewall est en DMZ sur ma box, donc l’accès de l’extérieur passe par le firewall.

J’utilise un Raspberry comme firewall, donc 1 seule interface réseau. C’est suffisant pour le peu de flux entrants qu’il y a…
Pour l’instant mes PCs locaux ne passent pas par le firewall en sortie.
Mes différents serveurs ne passeront pas par le firewall en sortie. J’estime, à tort peut-être, que si les flux entrants sur mes serveurs sont filtrer ils n’ont pas besoin d’être filtrer en sortie.
J’utilise volontairement l’URL “extérieure”. J’ai une redirection chez mon fournisseur de domaine. https://test.mondomaine.fr ==> https://www.mondomaine.fr:40004

Non. Un paquet ne traverse qu’une seule chaîne de la table filter. Un paquet qui a traversé PREROUTING passera soit par FORWARD soit par INPUT.

Non, je répète que la table nat n’est pas faite pour le filtrage car ses chaînes ne voient pas passer tous les paquets. Il y a quelques cas particuliers où on veut filtrer dans PREROUTING, mais dans ce cas on peut le faire dans les tables mangle (avant le NAT) ou raw (avant le suivi de connexion et le NAT), qui ne sont pas non plus faites pour le filtrage mais ça reste mieux que la table nat.

Ce que tu as vu dans les logs d’iptables est sûrement plutôt l’adresse MAC de la box. Vérifie avec ip neigh.

C’est une blague ? Comment peux-tu empêcher de contourner le firewall s’il n’a qu’une seule interface ?
Donc si je comprends bien, il n’y a qu’un seul réseau contenant le PC, les serveurs et le “firewall” ?

Le souci est que cela crée un routage asymétrique, et le suivi de connexion (utilisé par -m state) ne voit qu’un sens du trafic ; du coup, les connexions ne passent jamais dans l’état ESTABLISHED et le NAT ne marche pas. Tu as contourné le problème avec la règle MASQUERADE mais elle a pour effet secondaire de masquer l’adresse IP source réelle des connexions.

Il n’y a pas d’URL “extérieur”. Il y a des adresses IP extérieures et intérieures.
La redirection que tu montres est une redirection HTTP, donc le client fait une nouvelle connexion directe à www.mondomaine.fr. En quelle adresse IP ce nom est-il résolu par ton PC ?

Je te réponds “morceau” par “morceau”…

EHHHHH ZUTTTTT !!!
Un “arp -a” m’a permis de vérifier… Et c’est bien l’adresse mac de ma box…
GRRRRR
:rage:
Donc je ne vais pas pouvoir filtrer l’accès extérieur par mac si je veux autoriser mon smartphone !!!

Si je mets :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 40004 -m mac --mac-source xx:xx:xx:xx:xx:xx -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 40004 -j DNAT --to-destination ${IP_SRVB}:40004

ça corrige le nat ou pas ?

De toute façon ce type de filtrage n’est pas fiable car usurper une adresse MAC est facile.

Qu’entends-tu par “corrige” ? Décris plutôt ce que tu veux que ça fasse, et je pourrai te dire si ça le fait ou pas.
Ces deux règles redirigent les connexions vers ${IP_SRVB} sauf si l’adresse MAC du paquet est celle figurant dans la première règle (ACCEPT = le paquet traverse la chaîne PREROUTING sans passer par les règles suivantes, et sera routé en fonction de son adresse de destination non modifiée).

Comment puis-je alors refuser tous les paquets exceptés ceux provenant d’adresses mac définies ?
Mais tu me dis qu’usurper une adresse mac est facile, OK… Alors comment n’accepter QUE les flux entrants de telle ou telle machine (exemple : mon smartphone) ?

Ce que je souhaite mettre en place : bloquer tous les flux https, ssh, etc… et n’autoriser ces flux qu’à certaines adresses mac (ou machines). Et si ces flux sont acceptés en entrée sur mon firewall (point d’entrée donc de mon réseau local), rediriger ces flux vers le serveur X selon le port spécifié en entrée (exemple : https://www.mondomaine.fr:1234 sera redirigé vers mon serveur B, sur le même port ou sur un autre port).

Avec la correspondance “mac”. Mais cela n’a de sens qu’avec les adresses MAC des machines directement connectée au réseau. Les trames ethernet ne traversent pas les routeurs.

Il faut connaître l’adresse IP des machines autorisées. Si une machine n’a pas d’adresse IP fixe, tu pourrais lui affecter un nom de domaine DNS dynamique et périodiquement rafraîchir la règle iptables avec ce nom afin de mettre jour l’adresse IP de la règle. Une règle iptables ne peut pas utiliser directement un nom de domaine comme source ou destination, il est résolu en adresse IP lors de la création de la règle.

Autrement, tu as la solution du VPN.

Ben je crois que je vais me diriger vers 1 VPN…

Comme l’IP “4G” du smartphone n’est pas fixe, ça va être un peu trop galère pour mettre en place une usine à gaz afin de modifier la règle iptables à chaque changement d’IP.
:roll_eyes:

Je vais donc sûrement transformé mon firewall en serveur VPN.

En tout cas merci pour toutes ces explications/aides.
:+1: