Puncte:0

WireGuard permite accesul la un singur serviciu în rețea

drapel cn

Rulez un server WireGuard pe Raspberry Pi folosind https://github.com/linuxserver/docker-wireguard imagine. Vreau să permit colegilor să facă două lucruri:

  1. Conectați-vă la un singur NAS prin SMB
  2. Ping același NAS

Am scris următoarele reguli iptables pentru a arhiva acest lucru (wg0 este interfața WireGuard, eth0 cel „spre” rețeaua mea):

# Resetați (spăiți) regulile
iptables -t nat -F
iptables -F

# Permite traficul WireGuard
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT

# Interziceți orice trafic de redirecționare în mod implicit
iptables --policy FORWARD DROP

# Permite traficul SAMBA către NAS
NAS="192.168.178.23/32"
iptables -A FORWARD -i wg0 -p tcp --dport 445 -d "$NAS" -m stare --state NOU, RELATED, STABILIT -j ACCEPT
iptables -A FORWARD -o wg0 -m stare --state RELATED,STABLISHED -j ACCEPT

# Permiteți cererea de eco ICMP
iptables -A FORWARD -i wg0 -p icmp --icmp-type 8 -d "$NAS" -m stare --state NOU, RELATED, STABILIT -j ACCEPT
iptables -A FORWARD -o wg0 -p icmp --icmp-type 0 -m stare --state RELATED,STABLISHED -j ACCEPT

# IP tunel NAT la IP intern
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Acestea funcționează, așa că, atunci când sunt conectat prin WireGuard, pot ping și monta NAS-ul prin SMB, dar nu pot ping la niciun alt serviciu din rețea sau să accesez interfața HTTP a NAS-ului.

Totuși, am câteva întrebări pentru a înțelege exact ce am făcut:

  1. La setare INTRARE/IEȘIRE politica de a CĂDERE BRUSCA, nimic nu merge. Presupunerea mea este că se datorează faptului că pachetele WireGuard UDP au primit wg0 sunt abandonate de politica?
  2. Dacă oricum setez politica și adaug o regulă la PERMITE trafic de la/la wg0, efectul ar fi că containerul nu se poate conecta la nimic prin eth0 si doar REDIRECŢIONA trafic din wg0?
  3. Regula permite LEGATE, STABILIT trafic prin wg0 ar trebui să se potrivească numai cu traficul care răspunde fie la TCP:445, fie la ICMP:echo-request. Nu trebuie să fii mai specific acolo (de exemplu, portul/protocolul care se potrivește), nu?
  4. Regula PERMITENu este necesară introducerea de răspunsuri eco, deoarece regula mai puțin specifică permite LEGATE, STABILIT traficul de deasupra lui se va potrivi înaintea lui, nu?
  5. Cu toate filtrele pe REDIRECŢIONA lanț, presupunerea mea este că nu trebuie să filtrez pe nat Mese POSTOUTARE lanț, pentru că orice trafic care nu este pentru NAS nici pe TCP:445, fie pe ICM:echo-request nu va ajunge oricum „atât de departe”. Este corect?
Puncte:1
drapel cn

To answer your questions briefly:

  1. Yes
  2. The INPUT/OUTPUT chains are used for connections to/from local sockets on all interfaces (lo, eth0, wg0, etc). Usually you don't want to block everything outbound by default because you'll end up spending time troubleshooting things you normally take for granted (DNS, DHCP, NTP, misc processes using loopback connections, etc)
  3. Yes. Usually it's fine to just allow all RELATED,ESTABLISHED without any additional conditions (if you already allowed a connection through one way, symmetrical responses going back the other way should be fine too)
  4. Yes
  5. Yes

I think this iptables processing flowchart will also help you better understand how this works:

iptables Processing Flowchart

This is how I would write your rules:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# INPUT chain of filter table:

# drop known bad packets
iptables -A INPUT -m state --state INVALID -j DROP
# accept responses to established connections
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# accept ICMP packets
iptables -A INPUT -p icmp -J ACCEPT
# accept loopback connections
iptables -A INPUT -i lo -J ACCEPT
# accept connections to WireGuard listen port
iptables -A INPUT -p udp --dport 51820 -J ACCEPT

# FORWARD chain of filter table:

# drop known bad packets
iptables -A FORWARD -m state --state INVALID -j DROP
# forward responses to established connections
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# forward ICMP packets from WireGuard network to NAS
iptables -A FORWARD -i wg0 -d 192.168.178.23 -p icmp -J ACCEPT
# forward SMB connections from WireGuard network to NAS
iptables -A FORWARD -i wg0 -d 192.168.178.23 -p tcp --dport 445 -J ACCEPT

# POSTROUTING chain of nat table:

# masquerade all packets forwarded to LAN
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.