OpenWrt-t futtató router mögött van egy ftp szerverem. Ahhoz hogy kívülről is el lehessen érni, a 21-es port forwardon kívül az alábbi custom szabályt is be kellett állítani:
iptables -t raw -I PREROUTING -p tcp --dport 21 -j CT --helper ftp
Ezt az OpenWrt GUI lementette a /ect/firewall.user file-ba, amit a /etc/config/firewall config meg felnyalt ezzel a sorával:
config include
option path '/etc/firewall.user'
OpenWrt 21.02.x alatt ez ment is szépen, csak fel kellett tenni a kmod-ipt-nathelper és kmod-ipt-raw csomagokat is.
Azonban OpenWrt 22.03.x alatt már iptables based firewall3 helyett nftables based firewall4 van, nincs iptables parancs, ezért nem megy a fenti custom rule.
A tünet a következő: ftp login lemegy, login / pass megad, elfogadja a helyeset, de utána nem történik semmi, nincs hibaüzenet, csak áll az ftp kliens. (mc beépített)
Keresgéltem, hogy miként lehetne a fenti szabályt nftables-el megoldani, de nem sikerült, ilyen szinten nem értek a hálózat mélységeihez.
Aztán észrevettem, hogy van a firewall beállításnál a forward szabályánál az advanced fülön van egy olyan lehetőség, hogy "Match helper" és egy legördülőből ki lehet választani az "FTP passive connection tracking (FTP)" lehetőséget.
Sajnos, ha ezt beállítom, akkor a forward komplett megszűnik, még telnet-el sem lehet a 21-es portra kapcsolódni. Ha kikapcsolom, akkor a login folyamatig újra megy az ftp, csak utána áll meg.
Tudom, hogy az ftp egy elavult, unsecure, stb. protokoll, de ebben az esetben nem tudom megkerülni.
Tud esetleg valaki megoldást a problémára?
- 615 megtekintés
Hozzászólások
Még nem.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Mindenképpen tűzfal contrack vonalon akarod megoldani a problémát, vagy szóba jöhet más módszer is?
Konkrétan arra gondolok, hogy az ftp szervernek megadhatod, hogy a passzív portjait mely tartományból válassza és ha ezt elegendően kicsire veszed, akkor ezt a 10-100 portot a 21-es porthoz hasonlóan direktben az ftp sterver felé is forwardolhatod. Bónusz: az ftp szerveren szokott lenni olyan opció is, hogy megadhatod, hogy a kliensek felé mit küldjön, milyen IP-n látszik. Ide az owrt WAN IP-t megadva a kliens felé csak olyan adat megy, ami neked pont jó kell legyen.
- A hozzászóláshoz be kell jelentkezni
Ha másképp nem sikerül, akkor elmegyek ebbe az irányba, csak először úgy szeretném megoldani, ahogy eddig is ment.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Nekem ez megoldotta (igaz, nem az új nftables használatával - majd egyszer azt is megtanulom):
iptables -t raw -A PREROUTING -p tcp --dport 21 -j CT --helper ftp
Előtte a kmod-nf-nathelper csomagot fel kell rakni, abban vannak az ftp conntrack modulok (tehát pont úgy, ahogy írtad a régiebbi OpenWrt-ken).
És amúgy van iptables, valamelyik compat csomagból elérhető.
Az iptables-sel beállított szabály így jelenik meg az nft-ben:
root@OpenWrt:/etc/config# nft list table ip raw
table ip raw {
chain PREROUTING {
type filter hook prerouting priority raw; policy accept;
meta l4proto tcp # xt_tcp counter packets 87 bytes 4326 # xt_CT
}
}
ami iptables-szel így néz ki:
iptables -L -v -t raw
# Warning: iptables-legacy tables present, use iptables-legacy to see them
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
87 4326 CT tcp -- any any anywhere anywhere tcp dpt:ftp CT helper ftp
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
- A hozzászóláshoz be kell jelentkezni
Pontosan melyik az a csomag, amiben van iptables?
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Ez van nálam:
lrwxrwxrwx 1 root root 27 Dec 19 15:56 /usr/sbin/iptables -> /usr/sbin/xtables-nft-multi
az meg az xtables-nft csomagban van.
De van még egy iptables-zz-legacy csomag is.
(Az az igazság, hogy én felraktam egy csomó mindent válogatás nélkül, hogy menjen a régi iptables-re alapuló firewall script).
- A hozzászóláshoz be kell jelentkezni
Felraktam az xtables-nft csomagot és kipróbáltam ezt:
xtables-nft-multi -t raw -I PREROUTING -p tcp --dport 21 -j CT --helper ftp
De hibát dob:
ERROR: No valid subcommand given.
Valid subcommands:
* iptables-xml
* xml
* iptables
* iptables-nft
* main4
* save4
* restore4
* iptables-save
* iptables-restore
* iptables-nft-save
* iptables-nft-restore
* ip6tables
* ip6tables-nft
* main6
* save6
* restore6
* ip6tables-save
* ip6tables-restore
* ip6tables-nft-save
* ip6tables-nft-restore
* iptables-translate
* ip6tables-translate
* iptables-restore-translate
* ip6tables-restore-translate
* arptables
* arptables-nft
* arptables-restore
* arptables-nft-restore
* arptables-save
* arptables-nft-save
* ebtables-translate
* ebtables
* ebtables-restore
* ebtables-save
* ebtables-nft
* ebtables-nft-restore
* ebtables-nft-save
* xtables-monitor
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Gondolom az alapján működik, hogy milyen néven indítod (argv[0]). Szóval az iptables symlink kell a működéséhez.
Vagy próbáld ki, hogy:
xtables-nft-multi iptables -t raw -I PREROUTING -p tcp --dport 21 -j CT --helper ftp
- A hozzászóláshoz be kell jelentkezni
Megcsináltam a symlink-et, és az
iptables -t raw -I PREROUTING -p tcp --dport 21 -j CT --helper ftp
parancs ugyanazt a hibát adja, mint fent a tied:
iptables v1.8.7 (nf_tables): unknown option "--helper"
Try `iptables -h' or 'iptables --help' for more information.
Pedig fent van a kmod-nf-nathelper csomag is.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Szerintem valamelyik iptables-mod-xxx csomag hiányzik még hozzá.
- A hozzászóláshoz be kell jelentkezni
22.03-ban is van lehetőség custom nftables rule-ra. /etc/nftables.d/*.nft fileokat felnyalja alapból.
https://openwrt.org/docs/guide-user/firewall/netfilter_iptables/netfilt…
De saját file-t is definiálhatsz a megfelelő helyre:
https://openwrt.org/docs/guide-user/firewall/firewall_configuration#inc…
Nyilván ide nft ruleokat kell tenni , nem iptables ruleokat.
https://wiki.nftables.org/wiki-nftables/index.php/Conntrack_helpers
- A hozzászóláshoz be kell jelentkezni
hat akkor ez az igazi megoldas, minden mas csak takolas...
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
a problémádra sajnos nem tudom a választ, de a topic megmentett egy pár napos kurvaanyázástól.
Már épp firssítettem volna a routeremet ~fél napos karbantartási időt feltételezve, de nekem (is) saját iptables alapú firewall scriptem van jelenleg...
így kicsit jobban rá kell készüljek akkor... :o
- A hozzászóláshoz be kell jelentkezni
Ehhez is vargagab mester kellett. Ki kell adni ezt a parancsot:
sysctl -w net.netfilter.nf_conntrack_helper=1
és működik minden, ahogy kell.
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
Hogy ne kelljen mindig kiadni a fenti parancsot (hiszen az csak a futó rendszerre van hatással), érdemes a /etc/sysctl.conf-ba, vagy még inkább egy önálló conf file-ba a /etc/sysctl.d könyvtárban (pl. 20-nf-conntrack-helper.conf) a következő tartalmat betenni:
net.netfilter.nf_conntrack_helper = 1
- A hozzászóláshoz be kell jelentkezni
24.10 alatt már nem megy a fenti megoldás, de vargagab ezt is megoldotta:
nft insert rule inet fw4 input tcp dport 21 ct helper set "ftp"
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni