Loading...
 
[Zobrazit/Skrýt nabídky vlevo]
[Zobrazit/Skrýt nabídky vpravo]

redundantni-firewall

Popis implementace firewallu na COS7.

Firewall na COS7 je staven na moznou redundanci jak hw, tak internetu. Firewall ma se svoji zalohou spojeni pouze jednou spojovackou a zbytek ip adres, rout a ip rules je obsluhovan pomoci keepalived. Dale je replikovana tabulka conntracku pomoci conntrackd-tools, coz zajisti ze pri prepnuti routeru nezmizi navazane spojeni. Sluzby ktere firewall obsluhuje, jako napr. openport, vpn, web proxy atp jsou koncipovane jako nspawn kontejnery. Tyto jsou pak cele syncovany mezi firewally.

Samotny firewall pouziva nftables coby nahradu iptables. Vzhledem k tomu je nutne pouzit kernel-ml (mainline) z elrepo repozitare.

nftables

nftables v mnohem predci iptables. Pouziva stejne hooky v jadre, ale umi atomickou zmenu firewallu a navic, pokud se ve firewallu objevi chyba, firewall se neaplikuje vubec, takze nedojde k polovicnimu natazeni firewallu.

Ovlada se zmenou konfigurace v /etc/nftables, ktery se cely (vyjma exclude_sync) syncuje mezi routery. Diky concatenaci promennych atp umoznuje globalni definice promennych aj.

Reload se dela pomoci systemd, takze systemctl reload nftables Pokud je tam nejaka chyba, systemd vrati chybu a napr. pomoci journalctl -xe se lze podivat kde presne, v jakem souboru a radce.

Zakladni vypis pravidel se dela pomoci nft list ruleset. Vice v dokumentaci nftables.

Priklad connmarkingu

# zkopirujeme conmark na paket<>(and 0xff znamena masku)
add rule ip mangle PREROUTING counter meta mark set ct mark and 0xff<--><-->
## nastav paket mark dle interfacu.
add rule ip mangle PREROUTING iifname $INET1_IFACE counter meta mark set mark and 0xffffff00 xor 0x64
add rule ip mangle PREROUTING iifname $INET2_IFACE counter meta mark set mark and 0xffffff00 xor 0x65
## zkopirujeme paket mark na konexi (and 0xff znamena masku)
add rule ip mangle POSTROUTING counter ct mark set mark and 0xff


Keepalived

Keepalived umoznuje definovat promenne podle router_id, takze umoznuje sdilet naprosto stejny konfig mezi masterem a slave routerem. To resi direktiva config-id v souboru /etc/sysconfig/keepalived
Nasledne lze definovat promenne dle aktualniho routeru, napr:

# variables - ifaces
    @master $WAN_IFACE=eth100
    @master $LAN_IFACE=eth100
    @backup $WAN_IFACE=eth100
    @backup $LAN_IFACE=eth100

    @master state MASTER
    @master priority 100
    @backup state BA    
    @backup priority 50


Dale keepalived obsluhuje klasicky ip adresy, mene klasicky routy (virtual_routes) a take ip rules (virtual_rules). Pokud mame 2 uplinky a potrebujeme 2 routovaci tabulky, pak nam je umozni naplnit take z keepalived. Jen je nutnost kazdou routu pridat 2x, pokazde s jinou "table" Syntax je v podstate totozny k prikazu "ip".

IPv6 je adekvatni IPv4.

NAT helper / conntracking

Od kernelu 4.7 jsou defaultne vypnute conntracky v kernelu a musi se but explicitne zapnout a nebo pouzit conntrack destination v iptables nebo obdobu v nft. Protoze stran NFT je pomerne slaba dokumentace jeste, uvedu funkcni reseni sem:

Definice helperu

add ct helper ip filter ftpstdf { type "ftp" protocol tcp; } ;
add ct helper ip filter pptpstd { type "pptp" protocol tcp; } ;


Jejich pouziti:

add rule ip filter FORWARD tcp dport 21 ct helper set "ftpstdf" counter
add rule ip filter FORWARD tcp sport 21 ct helper set "ftpstdf" counter

add rule ip filter FORWARD tcp sport 1723 ct helper set "pptpstd" counter
add rule ip filter FORWARD tcp dport 1723 ct helper set "pptpstd" counter

Created by darek. Last Modification: Pátek 22 of červen, 2018 13:37:42 CEST by darek.