Dakle tu mi je potreban samo SSH pristup tom serveru sa odredjenih lokacija.
Ali bih takodje ogranicio OUTPUT tabelu, da moze da se pristupi samo tih nekoliko servera. Dakle FTP, SSH, RDP, MySQL, MSSQL. Za slucaj da neko od kolega pozeli da skida torente i kojesta, a zaboravi da se diskonektuje.
Takođe i samo sajtovima koji su hostovani na tim serverima. Što znači još i portove 80 i 443.
Išao sam logikom da mi policy bude DROP na input i output. Kasnije ću namestiti i na forward.
Nakon toga htedoh samo da dozvolim određene rulove u tim tabelama i ovo je primer.
[root@vpn ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED # Ovo videh da treba da stavim, pojma nemam čemu služi, valjda za trenutno uspostavljene konekcije, šta god da to u praksi znači
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:openvpn
DROP icmp -- anywhere anywhere icmp echo-request # Ovo je valjda OK praksa ako zelim da me ne pinguju. Ne shvatam prave prednosti toga, ali stavih
ACCEPT icmp -- anywhere anywhere # takodje negde videh da sve ostalo osim pinga treba da dozvolim
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:ssh
ACCEPT udp -- anywhere anywhere udp spt:openvpn
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED # Ovo videh da treba da stavim, pojma nemam čemu služi, valjda za trenutno uspostavljene konekcije, šta god da to u praksi znači
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:openvpn
DROP icmp -- anywhere anywhere icmp echo-request # Ovo je valjda OK praksa ako zelim da me ne pinguju. Ne shvatam prave prednosti toga, ali stavih
ACCEPT icmp -- anywhere anywhere # takodje negde videh da sve ostalo osim pinga treba da dozvolim
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:ssh
ACCEPT udp -- anywhere anywhere udp spt:openvpn
Naravno tu je i
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.8.0.0/24 anywhere
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 10.8.0.0/24 anywhere
E sad, kako sam ja mislio da kapiram, sa DROP polisom na OUTPUT Chain-u i samo dozvoljenim portovima ka SSH i openvpn, mislio sam da nikakav drugi saobracaj mi nece biti dozvoljen sa OpenVPN servera. Ali evo upravo sam zakacen i pisem ovde bez problema. Cak i kad proverim koja mi je public adresa, ispise mi adresu openvpn servera.
Sta sam pogresno shvatio? :)
E da, ip6tables još mi je ACCEPT, ali bih sve to stavio na DROP bez ikakvih rulova. Sta gubim tim? Recimo ako neko ima public ipv6 adresu, nece moci da se nakaci na server?
# ip6tables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination