Рейтинг:0

WireGuard разрешает доступ к одному сервису в сети

флаг cn

Я запускаю сервер WireGuard на своем Raspberry Pi, используя https://github.com/linuxserver/docker-wireguard изображение. Я хочу разрешить сверстникам делать две вещи:

  1. Подключение к одному NAS через SMB
  2. Пинг того же NAS

Я написал следующие правила iptables, чтобы заархивировать это (WG0 интерфейс WireGuard, eth0 тот, что «в сторону» моей сети):

# Сбросить (сбросить) правила
iptables -t физ -F
iptables-F

# Разрешить трафик WireGuard
iptables --policy ВВОД ПРИНЯТЬ
iptables --policy ВЫВОД ПРИНЯТЬ

# Запретить любой прямой трафик по умолчанию
iptables --policy ПЕРЕНОС ВПЕРЕД

# Разрешить трафик SAMBA на NAS
NAS="192.168.178.23/32"
iptables -A FORWARD -i wg0 -p tcp --dport 445 -d "$NAS" -m состояние --state НОВОЕ,СВЯЗАННОЕ,УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A FORWARD -o wg0 -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ

# Разрешить эхо-запрос ICMP
iptables -A FORWARD -i wg0 -p icmp --icmp-type 8 -d "$NAS" -m состояние --state НОВОЕ,СВЯЗАННОЕ,УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A FORWARD -o wg0 -p icmp --icmp-type 0 -m состояние --state СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ

# IP туннеля NAT во внутренний IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Они работают, поэтому при подключении через WireGuard я могу пропинговать и подключить NAS через SMB, но я не могу пропинговать любую другую службу в сети или получить доступ к HTTP-интерфейсу NAS.

Однако у меня есть несколько вопросов, чтобы точно понять, что я сделал:

  1. При настройке ВХОД/ВЫВОД политика УРОНИТЬ, ничего не работает. Я предполагаю, что это связано с тем, что пакеты WireGuard UDP, полученные на WG0 отбрасываются политикой?
  2. Если я все равно установлю политику и добавлю правило в ПОЗВОЛЯТЬ трафик из/в WG0, в результате контейнер не сможет ни к чему подключиться через eth0 и только ВПЕРЕД трафик из WG0?
  3. Правило, позволяющее СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ трафик через WG0 должен соответствовать только трафику, полученному в ответ на TCP:445 или ICMP:echo-request. Не нужно быть более конкретным (например, соответствующий порт/протокол), верно?
  4. Правило ПОЗВОЛЯТЬэхо-ответы не нужны, потому что менее конкретное правило, позволяющее СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ трафик над ним будет совпадать перед ним, верно?
  5. Со всей фильтрацией на ВПЕРЕД цепочка, я предполагаю, что мне не нужно фильтровать нат столы РАЗМЕЩЕНИЕ chain, потому что любой трафик, который не предназначен для NAS по протоколу TCP:445 или ICM:echo-request, в любом случае не дойдет до этого места. Это правильно?
Рейтинг:1
флаг 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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.