Blokování portů ve VPN kromě jednoho

Blokování portů ve VPN kromě jednoho
« kdy: 07. 04. 2018, 16:24:49 »
Popis problemu:
Na servery je nainstalovany OpenVPN server, ktory funguje celkom dobre.
Na servery je okrem ineho aplikacia, ktora pocuva na porte 12345.
Chcem aby klienti mali povoleny len ten jeden port 12345 (a jeden klient (ja) aby mal pristup aj na ostatnych klientov (porty 80, 21 a pod ...)).
VPN sluzi len cisto na to, aby sa klient pripojil na jednu aplikaciu na porte 12345 (nic viac, ziadny forwarding).
V konfiguracii vpn servera (server.conf) je direktiva
Kód: [Vybrat]
client to clientktora zabezpecuje aby sa klienti videli. Ak tu direktivu pouzijem, tak vsetci sa vidia. Ak direktivu zrusim, klienti sa nevidia.
OpenVPN funguje na IP 10.8.0.0/24. Skusil som to nastavit v UFW, ale nejako to nefunguje.
IP adresa ktora ma mat pristup vsade je 10.8.0.155
Kód: [Vybrat]
Do                         Operácia    Od
--                         --------    --
22                         ALLOW       Anywhere
1194/tcp                   ALLOW       Anywhere
12345/tcp                  ALLOW       Anywhere
Anywhere                   ALLOW       10.8.0.155
21                         DENY        10.8.0.0/24
21                         ALLOW       Anywhere
80                         DENY        10.8.0.0/24
80/tcp                     ALLOW       Anywhere
Zaciatok firewalu vyzera takto.
Povolil som kazdemu port 22, 1194 a 12345.
Dalej som povolil vsetko pre 10.8.0.155
Pre rozsah 10.8.0.0/24 som zakazal port 21, 80 a pre ostatnych tieto porty povolil.
Aj ked mam ufw takto nastaveny, tak klientom z 10.8.0.0/24 funguje aj port 80 aj 21 atd ...
Ako by som dosiahol to co potrebujem ?
Je to vobec mozne ?

« Poslední změna: 08. 04. 2018, 21:53:29 od Petr Krčmář »


Re:blokovanie vpn rozsahu okrem ...
« Odpověď #1 kdy: 07. 04. 2018, 18:10:55 »
sorry !
ovpn mi funguje dobre, takze nevidel som dovod davat sem konfigurak, ale budis
Kód: [Vybrat]
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key 
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
topology subnet
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
user nobody
group nogroup
persist-key
persist-tun
log-append /var/log/openvpn.log
status openvpn-status.log
verb 3
#client-to-client
OS ubuntu 14.04
Problem vidim na urovni firewallu (nepustal som sa do iptables, radsej som pouzil pre mna jednoduchsi ufw) a tabulku ufw som dal v prvom prispevku

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #2 kdy: 07. 04. 2018, 20:25:28 »
V UFW si nastav deny incoming (ufw deny incoming) - pozor, aby tě to neodtstřihlo od serveru. Poté povol komunikaci přes VPN na port 12345 plus jednu IP co může vidět všude, což jde udělat asi nějak takto...
Kód: [Vybrat]
ufw allow from 10.8.0.0/24 to any port 12345
ufw allow from 10.8.0.155 to any

naseptavac

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #3 kdy: 07. 04. 2018, 21:27:04 »
A na jakou ip adresu pristupuji ti klienti (port 12345 a ty ostatni porty)?
UFW bezi? (sudo ufw status [verbose])
Vis, ze existuji slozky a soubory jako /etc/default/ufw a /etc/ufw/?
Ses si jistej, ze v "client to client" jsou dve mezery?

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #4 kdy: 07. 04. 2018, 22:00:25 »
Pristupuju na 10.8.0.1 (len na port 12345 maju mat pristup).
ufw bezi
etc/default/ufw
Kód: [Vybrat]
IPV6=no
DEFAULT_INPUT_POLICY="DROP"
DEFAULT_OUTPUT_POLICY="ACCEPT"
DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_APPLICATION_POLICY="SKIP"
MANAGE_BUILTINS=no
IPT_SYSCTL=/etc/ufw/sysctl.conf
IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns"
V direktive nie su 2 medzeri, su tam pomlcky (mam to v konfiguraku pre server.conf) ale to som pisal z hlavy, takze som tam omylom dal miesto pomlcok medzeri


naseptavac

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #5 kdy: 07. 04. 2018, 22:20:46 »
Hele, nekde je neco spatne anebo jinak, nez si myslis, a ty nam sem presto davas prevazne slovni odpovedi misto vystupu utilit. Kdyz ty tu chybu nevidis a postujes sem slovni odpovedi, jak asi mame uvidet tu chybu my? To jsou snad uplne zaklady, proboha.

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #6 kdy: 08. 04. 2018, 09:07:07 »
Este raz sa ospravedlnujem. Vsetky konfiguraky co su potrebne pre vyriesenie problemu tu bez problemov mozem dat. Ale na zaciatku som uvazil, ze ak ovpn funguje dobre, tak conf neni potrebny a dal som tu len vypis s ufw.
Nasledne mi bolo pripomenute, ze existuje aj /etc/default/ufw tak som tu hodil aj ten vypis (bez komentarov # aby nebol zbytocne dlhy).
V adresary /etc/ufw mam 28 suborov + dalsi adresar (s dalsimi 4 subormi).
Podla nazvov suborov napr.
Kód: [Vybrat]
after.rules.20170114_170424
before.rules.20170114_170424
usudzujem, ze obsahuju pravidla pred a po zmenach vo firewalle (niektore maju priznak 6 (to bude pre ipv6, takze toto sa asi bude ignorovat, kedze ipv6 mam vypnute)).
Tu je vypis  /etc/ufw/after.rules
Kód: [Vybrat]
#
# rules.input-after
#
# Rules that should be run after the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-after-input
#   ufw-after-output
#   ufw-after-forward
#

# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-after-input - [0:0]
:ufw-after-output - [0:0]
:ufw-after-forward - [0:0]
# End required lines

# don't log noisy services by default
-A ufw-after-input -p udp --dport 137 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp --dport 138 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp --dport 139 -j ufw-skip-to-policy-input
-A ufw-after-input -p tcp --dport 445 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp --dport 67 -j ufw-skip-to-policy-input
-A ufw-after-input -p udp --dport 68 -j ufw-skip-to-policy-input

# don't log noisy broadcast
-A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input

# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
Ja tam vsak nevidim ziadne zmeny, ktore by som vykonaval cez ufw ja.
Prip. tu mozem dat aj vypis iptables -L, ale nechcem zbytocne zas***at forum konfigmi, ktore nies u potrebne.
Este prikladam ukecany vypis ufw
Kód: [Vybrat]
Do                         Operácia    Od
--                         --------    --
22                         ALLOW IN    Anywhere
1194/tcp                   ALLOW IN    Anywhere
12345/tcp                  ALLOW IN    Anywhere
Anywhere                   ALLOW IN    10.8.0.155
21                         DENY IN     10.8.0.0/24
21                         ALLOW IN    Anywhere
80                         DENY IN     10.8.0.0/24
80/tcp                     ALLOW IN    Anywhere
10000                      DENY IN     10.8.0.0/24
10000/tcp                  ALLOW IN    Anywhere
9981                       DENY IN     10.8.0.0/24
9981/tcp                   ALLOW IN    Anywhere
9091                       DENY IN     10.8.0.0/24
9091/tcp                   ALLOW IN    Anywhere
9982                       DENY IN     10.8.0.0/24
9982                       ALLOW IN    Anywhere
443                        DENY IN     10.8.0.0/24
443                        ALLOW IN    Anywhere
25                         ALLOW IN    Anywhere



m.a

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #7 kdy: 08. 04. 2018, 09:47:45 »
Kód: [Vybrat]
21                         DENY IN     10.8.0.0/24
21                         ALLOW IN    Anywhere
80                         DENY IN     10.8.0.0/24
80/tcp                     ALLOW IN    Anywhere

Pozrel by som sa aj do vypisu iptables.Vypis z ufw bez uvedenia protokolu (80 vs 80/tcp) znamena, ze to pravidlo je nastavene pre UDP aj pre TCP - cize, pre 80/tcp tam mas to pravidlo dvakrat - raz ako deny, raz ako allow - bolo by dobre vidiet, v akom su skutocne poradi.

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #8 kdy: 08. 04. 2018, 10:03:41 »
takze pridavam sem aj iptables -L
Kód: [Vybrat]
Chain INPUT (policy DROP)
target     prot opt source               destination         
ufw-before-logging-input  all  --  anywhere             anywhere           
ufw-before-input  all  --  anywhere             anywhere           
ufw-after-input  all  --  anywhere             anywhere           
ufw-after-logging-input  all  --  anywhere             anywhere           
ufw-reject-input  all  --  anywhere             anywhere           
ufw-track-input  all  --  anywhere             anywhere           

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ufw-before-logging-forward  all  --  anywhere             anywhere           
ufw-before-forward  all  --  anywhere             anywhere           
ufw-after-forward  all  --  anywhere             anywhere           
ufw-after-logging-forward  all  --  anywhere             anywhere           
ufw-reject-forward  all  --  anywhere             anywhere           
ufw-track-forward  all  --  anywhere             anywhere           

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ufw-before-logging-output  all  --  anywhere             anywhere           
ufw-before-output  all  --  anywhere             anywhere           
ufw-after-output  all  --  anywhere             anywhere           
ufw-after-logging-output  all  --  anywhere             anywhere           
ufw-reject-output  all  --  anywhere             anywhere           
ufw-track-output  all  --  anywhere             anywhere           

Chain ufw-after-forward (1 references)
target     prot opt source               destination         

Chain ufw-after-input (1 references)
target     prot opt source               destination         
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-ns
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:netbios-dgm
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:netbios-ssn
ufw-skip-to-policy-input  tcp  --  anywhere             anywhere             tcp dpt:microsoft-ds
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootps
ufw-skip-to-policy-input  udp  --  anywhere             anywhere             udp dpt:bootpc
ufw-skip-to-policy-input  all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST

Chain ufw-after-logging-forward (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-after-logging-input (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-after-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-after-output (1 references)
target     prot opt source               destination         

Chain ufw-before-forward (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ufw-user-forward  all  --  anywhere             anywhere           

Chain ufw-before-input (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere           
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-logging-deny  all  --  anywhere             anywhere             ctstate INVALID
DROP       all  --  anywhere             anywhere             ctstate INVALID
ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
ACCEPT     icmp --  anywhere             anywhere             icmp source-quench
ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
ACCEPT     icmp --  anywhere             anywhere             icmp parameter-problem
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
ACCEPT     udp  --  anywhere             anywhere             udp spt:bootps dpt:bootpc
ufw-not-local  all  --  anywhere             anywhere           
ACCEPT     udp  --  anywhere             224.0.0.251          udp dpt:mdns
ACCEPT     udp  --  anywhere             239.255.255.250      udp dpt:1900
ufw-user-input  all  --  anywhere             anywhere           

Chain ufw-before-logging-forward (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-input (1 references)
target     prot opt source               destination         

Chain ufw-before-logging-output (1 references)
target     prot opt source               destination         

Chain ufw-before-output (1 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere           
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ufw-user-output  all  --  anywhere             anywhere           

Chain ufw-logging-allow (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW ALLOW] "

Chain ufw-logging-deny (2 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ctstate INVALID limit: avg 3/min burst 10
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 10 LOG level warning prefix "[UFW BLOCK] "

Chain ufw-not-local (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type MULTICAST
RETURN     all  --  anywhere             anywhere             ADDRTYPE match dst-type BROADCAST
ufw-logging-deny  all  --  anywhere             anywhere             limit: avg 3/min burst 10
DROP       all  --  anywhere             anywhere           

Chain ufw-reject-forward (1 references)
target     prot opt source               destination         

Chain ufw-reject-input (1 references)
target     prot opt source               destination         

Chain ufw-reject-output (1 references)
target     prot opt source               destination         

Chain ufw-skip-to-policy-forward (0 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere           

Chain ufw-skip-to-policy-input (7 references)
target     prot opt source               destination         
DROP       all  --  anywhere             anywhere           

Chain ufw-skip-to-policy-output (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere           

Chain ufw-track-forward (1 references)
target     prot opt source               destination         

Chain ufw-track-input (1 references)
target     prot opt source               destination         

Chain ufw-track-output (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             ctstate NEW
ACCEPT     udp  --  anywhere             anywhere             ctstate NEW

Chain ufw-user-forward (1 references)
target     prot opt source               destination         

Chain ufw-user-input (1 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     udp  --  anywhere             anywhere             udp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:openvpn
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:12345
ACCEPT     all  --  10.8.0.155           anywhere           
DROP       tcp  --  10.8.0.0/24          anywhere             tcp dpt:ftp
DROP       udp  --  10.8.0.0/24          anywhere             udp dpt:fsp
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:fsp
DROP       tcp  --  10.8.0.0/24          anywhere             tcp dpt:http
DROP       udp  --  10.8.0.0/24          anywhere             udp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
DROP       tcp  --  10.8.0.0/24          anywhere             tcp dpt:webmin
DROP       udp  --  10.8.0.0/24          anywhere             udp dpt:10000
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:webmin
DROP       tcp  --  10.8.0.0/24          anywhere             tcp dpt:9981
DROP       udp  --  10.8.0.0/24          anywhere             udp dpt:9981
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:9981
DROP       tcp  --  10.8.0.0/24          anywhere             tcp dpt:9091
DROP       udp  --  10.8.0.0/24          anywhere             udp dpt:9091
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:9091
DROP       tcp  --  10.8.0.0/24          anywhere             tcp dpt:9982
DROP       udp  --  10.8.0.0/24          anywhere             udp dpt:9982
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:9982
ACCEPT     udp  --  anywhere             anywhere             udp dpt:9982
DROP       tcp  --  10.8.0.0/24          anywhere             tcp dpt:https
DROP       udp  --  10.8.0.0/24          anywhere             udp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     udp  --  anywhere             anywhere             udp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:25

Chain ufw-user-limit (0 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             limit: avg 3/min burst 5 LOG level warning prefix "[UFW LIMIT BLOCK] "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain ufw-user-limit-accept (0 references)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere           

Chain ufw-user-logging-forward (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-input (0 references)
target     prot opt source               destination         

Chain ufw-user-logging-output (0 references)
target     prot opt source               destination         

Chain ufw-user-output (1 references)
target     prot opt source               destination         
BTW vpn klienti by nemali mat skrz openvpn pristup na internet. Proste ich koncova aplikacia bezi na 10.8.0.1 na porte 12345, takze  preto ich ani nesmerujem von a nenastavoval som
Kód: [Vybrat]
echo 1 > /proc/sys/net/ipv4/ip_forward

m.a

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #9 kdy: 08. 04. 2018, 12:37:31 »
Este mi napadlo: V prvom poste pises o tom, ze klientom z 10.8.0.0/24 "funguje" 21 aj 80 - predpokladam, ze si tym chcel povedat, ze na 10.8.0.1 bezia nejake FTP a HTTP demony a klienti sa bez problemov pripoja na 10.8.0.1:21 a 10.8.0.1:80. Je to tak?

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #10 kdy: 08. 04. 2018, 14:31:35 »
Da sa to aj tak povedat.
Ak pouzijem v nastaveni (openvpn) /etc/openvpn/serve.conf directivu
Kód: [Vybrat]
client-to-clienttak klienti sa vidia aj navzajom (co vlastne nechcem).
Kazdy klient v ovpn sieti ma maly web a ftp server a mozu si na nich navzajom chodit.
Toto teraz vlastne blokujem tou direktivou client-to-client, ale v tomto pripade nemoze nikto ku nikomu.
Ak chcem nieco na ich web, alebo ftp server nahrat, tak musim direktivu client-to-client zaremovat "#", restartnut openvpn, urobim to co potrebujem, odermujem client-to-client a znova restartnem openvpn.
To je dost neprakticke, preto to chcem poriesit firewallom.
Mozno pomoze obrazok s popisom :)

naseptavac

Re:blokovanie vpn rozsahu okrem ...
« Odpověď #11 kdy: 08. 04. 2018, 21:41:47 »
Takze tobe jde o dostupnost portu na klientech? V tom pripade nema smysl nastavovat firewall na serveru. Data OpenVPN mezi klienty netecou pres kernel serveru jako data mezi regulernimi interfacy. Nahod si treba na serveru sam pro sebe proxy a nebudes muset sachovat s client-to-client. Respektive, pokud by ti stacil vestaveny proxy v shh, staci se konektit na server pres ssh -D...

Palo M.

Re:Blokování portů ve VPN kromě jednoho
« Odpověď #12 kdy: 09. 04. 2018, 07:27:27 »
Aj v pripade, ze by mu islo o dostupnost portov na vpn-klientoch, moze mat vyznam nastavovat firewall na openvpn-serveri (napriklad ak darebacik chce, aby ten jeden "privilegovany" vpn-klient mohol chodit na ostatnych klientov, ale ostatni klienti aby sa medzi sebou "nevideli"). Ibaze v takom pripade tie firewallove pravidla nemaju byt pre input chain, ale pre forward chain.

Ale cely ten darebacikov popis je pomerne nekonzistentny, takze si nie som uplne isty, ze ide o tento pripad (teda ze napriklad vpn-klient 10.8.0.150 je zaroven http-server pocuvajuci na 10.8.0.150:80). Najprv totiz pisal len o "klientoch" (ani zmienka o tom, ze z hladiska http su to zaroven servery). Ten obrazok zase vyzera, akoby kazdy klient bol aj http a ftp server, ale zase potom co tie "rozne porty" na vpn-serveri?

Darebacik, kym nenapises jasne, co chces dosiahnut, tak zmysluplnu odpoved nedostanes.
- Kde ti bezia ake sluzby (na ktorej adrese+porte pocuvaju)?
- Odkial kam (z ktorej zdrojovej adresy na ktoru cielovu adresu+port) ma byt pristup povoleny
- Pre istotu aj ktore pristupy maju byt zakazane
- Aky je vlastne zmysel toho OpenVPN? (Vidim, ze server ma len neverejnu LAN adresu 192.168.1.3, ako sa teda ti VPN klienti nan pripajaju? Tiez cez LAN 192.168.0.0/16? Naco potom VPN?)

Ono ked nevies strucne a jasne popisat situaciu, tak vznika dost velke podozrenie ze to je preto, ze v tom mas sam riadny hokej. Vacsina odborne zdatnych ludi v takom pripade nema velku motivaciu ti radit. Pretoze vedia, ako to v takych pripadoch konci.

darebacik_z_prace

Re:Blokování portů ve VPN kromě jednoho
« Odpověď #13 kdy: 09. 04. 2018, 09:43:06 »
Napisem to presne a detailne ked pridem z prace.
Nechcel som to tak zo siroka pisat, pretoze som si myslel, ze to nebude zlozite poriesit firewallom

naseptavac

Re:Blokování portů ve VPN kromě jednoho
« Odpověď #14 kdy: 09. 04. 2018, 11:48:55 »
Nastavovat firewall na serveru vyznam mit muze, ale ne pro komunikaci klient-klient :)