Puncte:0

Regulile IPSec iptables pentru serviciul local

drapel in

Am un server de acces la distanță StrongSwan IPSec care rulează pe RHEL și un client, toate pe aceeași rețea locală. Am un server Samba care rulează pe aceeași gazdă RHEL pe care vreau să fie disponibil prin VPN, dar nu în afara tunelului. Pot să pornesc tunelul IPSec cu succes (a trebuit să fac un profil MacOS cu Apple Configurator2 care să permită Perfect Forward Security pentru a avea o potrivire ciphersuite) dar nu pot face ca traficul să fie direcționat corect în interiorul serverului.Am făcut o captură de pachet și am putut vedea pachetele ESP de intrare și ICMP decriptate dintr-un ping de la client, dar serverul nu a putut răspunde. Am petrecut câteva săptămâni încercând să aflu ce reguli iptables am nevoie pentru a obține conectivitate, dar cred că îmi lipsește un fel de înțelegere. Am reușit să configurez VPN-uri OpenVPN și WireGuard, fără nicio problemă cu interfețele tun, dar IPSec, după înțelegerea mea, este decriptat de politica din nucleu, așa că nu sunt familiarizat cu modul în care ar afecta rutarea.

Mi-am bazat configurația pe documentele de exemplu oficiale StrongSwan pentru acces de la distanță, a folosit asta Swanctl config doc, a citit postările de pe forum și a tradus formatul mai vechi în cel mai nou cu acest - precum și citiți despre expediere și VPN-uri bazate pe rute - dar cred că îmi lipsește înțelegerea la nivel înalt despre modul în care rutele traficului în serverul VPN.

Diagrama de rețea logică

Diagrama de rețea logică

swanctl.conf (cu alte lucruri comentate pe care le-am încercat)

conexiuni {
        ikev2-vpn {
                fragmentare=da
                rekey_time=0s
                #mobike = nu
                versiune=2
                propuneri=aes256gcm16-prfsha384-ecp384
                remote_adrs=%orice
                adrese_locale=192.168.1.15
                #vips=10.0.3.1
                #remote_addrs=192.168.1.23
                #pools=10.0.3.0/24
                #encap=da
                #dpd_delay=300s
                piscine=pool1,pool2
        #if_id_in=6
        #if_id_out=6
                copii {
                        ikev2-vpn {
                                #start_action=niciuna
                                esp_proposals=aes256gcm16-prfsha384-ecp384
                                #local_ts=10.0.3.1/32
                                local_ts=10.0.1.0/24
                                remote_ts=10.0.2.0/24
                                #remote_ts=10.0.3.10-10.0.3.200
                                #dpd_action=clear
                                updown=/usr/libexec/strongswan/_updown iptables
                        }

                }
                local {
                        auth=ecdsa-384-sha384
                        certs = /etc/strongswan/ipsec.d/certs/server.crt
                        id = 192.168.1.15
                }
                la distanta {
                        auth=ecdsa-384-sha384
                        id = %oricare
                }
        }
}
piscine {
        piscina1 {
                #addrs=10.0.3.0/24
                adrese=10.0.1.0/24
        }
        piscina2 {
                #addrs=10.0.3.10-10.0.3.200
                adrese=10.0.2.0/24
        }
}
secrete {
        ecdsa-server {
                file=/etc/strongswan/ipsec.d/private/server.key
        }
        ecdsa-client {
                file=/etc/strongswan/ipsec.d/private/client.key
        }
}
Autoritățile {
        certitudine {
                cacert = /etc/strongswan/ipsec.d/cacerts/ca.crt
        }
}

swanctl --list-sas

ikev2-vpn: #2, ESTABLISHED, IKEv2, c98d6dc49ca0acd4_i 85342c9a0809e294_r*
  local „192.168.1.15” @ 192.168.1.15[4500]
  la distanță „client2.vpn” @ 192.168.1.23[4500] [10.0.1.1]
  AES_GCM_16-256/PRF_HMAC_SHA2_384/ECP_384
  înființată acum 53 de ani
  ikev2-vpn: #4, reqid 1, INSTALED, TUNNEL, ESP:AES_GCM_16-256
    instalat acum 53 de secunde, reintroducerea tastei în 3247s, expiră în 3907s
    în c334ea0b, 0 octeți, 0 pachete
    out 021348d4, 0 octeți, 0 pachete
    local 10.0.1.0/24
    la distanță 10.0.2.0/24

swanctl --list-conns

ikev2-vpn: IKEv2, fără reautentificare, fără rekeying
  local: 192.168.1.15
  telecomandă: %oricare
  autentificare cu cheie publică locală:
    id: 192.168.1.15
    certificate: [CERT_DN]
  autentificare la distanță cu cheie publică:
    id: %oricare
  ikev2-vpn: TUNNEL, reintroducere la fiecare 3600 de secunde
    local: 10.0.1.0/24
    la distanță: 10.0.2.0/24

starea ip -s xfrm

src 192.168.1.15 dst 192.168.1.23
        proto esp spi 0x021348d4(34818260) reqid 1(0x00000001) mod tunel
        fereastra de reluare 0 secv 0x00000000 steag af-unspec (0x00100000)
        aead rfc4106(gcm(aes)) [KEY] (288 biți) 128
        context anti-reluare: seq 0x0, oseq 0x0, bitmap 0x00000000
        configurație de viață:
          limită: soft (INF)(octeți), hard (INF)(octeți)
          limită: soft (INF)(pachete), hard (INF)(pachete)
          expirare adăugare: soft 3418 (sec), greu 3960 (sec)
          utilizare expiră: moale 0 (sec), greu 0 (sec)
        curent de viață:
          0 (octeți), 0 (pachete)
          adăugați [TIME] folosiți -
        statistici:
          fereastra de reluare 0 reluare 0 eșuat 0
src 192.168.1.23 dst 192.168.1.15
        proto esp spi 0xc334ea0b(3275024907) reqid 1(0x00000001) mod tunel
        fereastra de reluare 32 seq 0x00000000 flag af-unspec (0x00100000)
        aead rfc4106(gcm(aes)) [KEY] (288 biți) 128
        context anti-reluare: seq 0xc, oseq 0x0, bitmap 0x00000fff
        configurație de viață:
          limită: soft (INF)(octeți), hard (INF)(octeți)
          limită: soft (INF)(pachete), hard (INF)(pachete)
          expirare adăugare: soft 3300 (sec), greu 3960 (sec)
          utilizare expiră: moale 0 (sec), greu 0 (sec)
        curent de viață:
          1008 (octeți), 12 (pachete)
          adăugați [TIME] folosiți [TIME]
        statistici:
          fereastra de reluare 0 reluare 0 eșuat 0

Politica ip xfrm arată

src 10.0.1.0/24 dst 10.0.2.0/24 
        dir out prioritate 375423 ptype main 
        tmpl src 192.168.1.15 dst 192.168.1.23
                proto esp spi 0x021348d4 reqid 1 mod tunel
src 10.0.2.0/24 dst 10.0.1.0/24 
        dir fwd prioritate 375423 ptype main 
        tmpl src 192.168.1.23 dst 192.168.1.15
                proto esp reqid 1 mod tunel
src 10.0.2.0/24 dst 10.0.1.0/24 
        dir în prioritate 375423 ptype main 
        tmpl src 192.168.1.23 dst 192.168.1.15
                proto esp reqid 1 mod tunel
src 0.0.0.0/0 dst 0.0.0.0/0 
        socket în prioritate 0 ptype main 
src 0.0.0.0/0 dst 0.0.0.0/0 
        socket out priority 0 ptype main 
src 0.0.0.0/0 dst 0.0.0.0/0 
        socket în prioritate 0 ptype main 
src 0.0.0.0/0 dst 0.0.0.0/0 
        socket out priority 0 ptype main 
src ::/0 dst ::/0 
        socket în prioritate 0 ptype main 
src ::/0 dst ::/0 
        socket out priority 0 ptype main 
src ::/0 dst ::/0 
        socket în prioritate 0 ptype main 
src ::/0 dst ::/0 
        socket out priority 0 ptype main 

iptables-salvare

# Generat de iptables-save v1.8.4
*Securitate
:INPUT ACCEPT [22858074:106762962340]
: FORWARD ACCEPT [7:588]
: ACCEPT IEȘIRE [13832427:3964756363]
COMMIT
# Generat de iptables-save v1.8.4
*brut
:ACCEPTAREA PRE-ROUTARE [22858911:106763119967]
: ACCEPT IEȘIRE [13832428:3964756655]
COMMIT
# Generat de iptables-save v1.8.4
*calandru
:ACCEPTAREA PRE-ROUTARE [22858911:106763119967]
:INPUT ACCEPT [22858308:106763007491]
: FORWARD ACCEPT [7:588]
: ACCEPT IEȘIRE [13832428:3964756655]
: POSTROUTING ACCEPT [13833383:3964877586]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A LIBVIRT_PRT -o virbr0 -p udp -m udp --dport 68 -j CHECKSUM --checksum-fill
COMMIT
# Generat de iptables-save v1.8.4
*nat
:ACCEPTAREA PRE-ROUTARE [186346:34394324]
:INPUT ACCEPT [185651:34259782]
: POSTROUTING ACCEPT [16086:1727773]
: ACCEPT IEȘIRE [16085:1727689]
:LIBVIRT_PRT - [0:0]
-A POSTROUTING -j LIBVIRT_PRT
-A POSTROUTING -s 172.16.0.0/24 -o enp0s31f6 -j MASQUERADE
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A LIBVIRT_PRT -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADA
COMMIT
# Generat de iptables-save
*filtru
:INPUT ACCEPT [22831621:106727043679]
: FORWARD ACCEPT [0:0]
: ACCEPT IEȘIRE [13832420:3964757167]
:LIBVIRT_INP - [0:0]
:LIBVIRT_OUT - [0:0]
:LIBVIRT_FWO - [0:0]
:LIBVIRT_FWI - [0:0]
:LIBVIRT_FWX - [0:0]
-A FORWARD -s 10.0.2.0/24 -d 10.0.1.0/24 -i enp0s31f6 -m policy --dir in --pol ipsec --reqid 1 --proto esp -j ACCEPT
-A FORWARD -s 10.0.1.0/24 -d 10.0.2.0/24 -o enp0s31f6 -m policy --dir out --pol ipsec --reqid 1 --proto esp -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p udp -m udp --dport 67 -j ACCEPT
-A LIBVIRT_INP -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 53 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
-A LIBVIRT_OUT -o virbr0 -p tcp -m tcp --dport 68 -j ACCEPT
-A LIBVIRT_FWO -s 192.168.122.0/24 -i virbr0 -j ACCEPT
-A LIBVIRT_FWO -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWI -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A LIBVIRT_FWI -o virbr0 -j REJECT --reject-with icmp-port-unreachable
-A LIBVIRT_FWX -i virbr0 -o virbr0 -j ACCEPT
COMMIT
Ginnungagap avatar
drapel gu
Puteți adăuga ce IP trimiteți ping și pe ce IP încercați să ajungeți la Samba?
joe_shmo avatar
drapel in
Sigur. Nu sunt sigur dacă diagrama de rețea o arată bine sau dacă nu am explicat bine, dar fac ping de la client la 10.0.2.1 la serverul StrongSwan/Samba la 10.0.1.1. Acesta ajunge la server și este decriptat, dar nu este direcționat înapoi către client.Și aș dori ca serverul Samba să fie accesibil din același 10.0.1.1 ca și serverul StrongSwan, deoarece este aceeași mașină fizică în același sistem RHEL.

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.