FTP kasutamine OpenBSD paketifiltriga
Sisukord
Sissejuhatus
FTP on levinud andmevahetuse protokoll, mille üheks iseärasuseks on kahe töörežiimi kasutamine
- passiivne - tundub, et 2009 aastal kasutatakse reegline passiivset režiimi, nt brauserid kasutavad seda vaikimisi
- aktiivne - nn legacy režiim, mida brauseritega ei saagi kasutada, kuid ftp kliendid saab lülitada käima ka aktiivses režiimis
Käesolev tekst kirjeldab OpenBSD paketifiltriga tulemüüri kasutamist selliselt, et seda ftp protokollile vastav andmevahetus läbida saaks.
Tööpõhimõte
Passiivne ftp
klient server ___ ___ | |-------- internet ----------| | |___| |___| 41999/tcp (suvaline) -----> 21/tcp 42999/tcp (suvaline) -----> 21000/tcp (kokkulepitud)
- esmalt algatab klienti kontrollkanali ühenduse serveri 21/tcp porti, seda ühendust mööda liiguvad ftp käsud, ls, cd, pwd jt ning lepitakse kokku andmevahetuse kanali port
- seejärel algatab klient andmevahtuse pidamiseks ühenduse serveri 21000/tcp porti, mille kasutamine lepiti kontrollkanalil kokku (ftp serveri seadistuses saab tavaliselt fikseerida pordide vahemiku, millisest saab server kliendiga porte kokku leppida)
Aktiivne ftp
klient server ___ ___ | |-------- internet ----------| | |___| |___| 41999/tcp (suvaline) -----> 21/tcp 21000/tcp (kokkulepitud) <----- 20/tcp
- esmalt algatab klienti kontrollkanali ühenduse serveri 21/tcp porti, seda ühendust mööda liiguvad ftp käsud, ls, cd, pwd jt ning lepitakse kokku andmevahetuse kanali port
- seejärel algatab server pordilt 20/tcp andmevahtuse pidamiseks ühenduse kliendi 21000/tcp porti, mille kasutamine lepiti kontrollkanalil kokku
ftp kliendi tulemüür
Eesmärgiks on tulemüüri tagant privaatset aadressi kasutava ftp kliendi vahendamine avalikus võrgus töötavale ftp serverile. Paketifiltri seadistusfailis sobib kasutada selliseid reegleid
nat-anchor "ftp-proxy/*" rdr-anchor "ftp-proxy/*" rdr pass on em1 proto tcp to port ftp -> 127.0.0.1 port 8021 # nat on em2 inet tagged VALJA -> 10.0.22.254 block log all anchor "ftp-proxy/*" pass out quick on em2 inet proto tcp from 10.0.22.254 to any port 21 user proxy # pass in quick on em1 inet tag VALJA # pass out quick on em2 inet tagged VALJA
kus
- väljakommenteeritud ridade kasutamisel toimiks tulemüür nn generic nat tulemüürina
Passiivne režiim
___ ftp klient | | 10.0.22.254 |___| | --|-- ... -----|-- | _|_ 10.0.22.190 ftp-proxy | | tulemüür |___| | 10.0.21.190 | --|---- .. .... internet .. --|-- _|_ | | ftp server |___| 192.168.109.132:21
ftp-proxy moodustab ftp-proxy ankru alla sellised reeglid
- nat/rdr
# pfctl -a ftp-proxy/21368.5 -vvvsn @0 nat inet proto tcp from 192.168.111.114 to 192.168.111.162 port = 64138 rtable 0 -> 10.0.22.254 [ Evaluations: 1 Packets: 122100 Bytes: 113323304 States: 1 ] [ Inserted: uid 71 pid 21368 State Creations: 1 ] @0 rdr inet proto tcp from 192.168.111.114 to 192.168.111.162 port = 56923 rtable 0 -> 192.168.111.162 port 64138 [ Evaluations: 1 Packets: 122100 Bytes: 113323304 States: 1 ] [ Inserted: uid 71 pid 21368 State Creations: 1 ]
- pass
# pfctl -a ftp-proxy/21368.5 -vvvsr @0 pass in quick inet proto tcp from 192.168.111.114 to 192.168.111.162 port = 64138 flags S/SA keep state (max 1) rtable 0 [ Evaluations: 2 Packets: 137647 Bytes: 127608332 States: 1 ] [ Inserted: uid 71 pid 21368 State Creations: 1 ] @1 pass out quick inet proto tcp from 10.0.22.254 to 192.168.111.162 port = 64138 flags S/SA keep state (max 1) rtable 0 [ Evaluations: 1 Packets: 137660 Bytes: 127624936 States: 1 ] [ Inserted: uid 71 pid 21368 State Creations: 1 ]
Aktiivne režiim
ftp serveri tulemüür
Avalikust võrgust ftp kliendi vahendamine tulemüüri taga privaatset aadressi kasutavale ftp serverile
Passive režiim
Avalikust võrgust ftp kliendi vahendamist tulemüüri taga privaatset aadresse kasutavale ftp serverile kujutab selline skeem
___ ftp klient | | |___| | --|------------|-- | _|_ | | |___| | | --|---------------|-- _|_ | | ftp server |___|
Aktiive režiim
Aktiivse andmevahetuse režiimi puhul toimuvad ftp protokolli seisukohalt põhimõtteliselt sellised sündmused
- ftp klient loob oma suvaliselt pordilt ühenduse serveri 21/tcp pordile ja ütleb muu seas serverile, millisel pordil ta ootab serveri poolt pöördumist
- serveri pöördub andmevahetuseks kokkulepitud kliendi pordile
Tulemüüri kasutamisel lisandub kliendi ja serveri vahele rakenduskihi vahendaja (ingl. k. proxy)
___ ftp klient | | 192.168.51.222 |___| | --|-- ... -----|-- | _|_ 192.168.109.132:21 | | ftp-proxy, tulemüür |___| | 10.0.6.1 | --|---------------|-- _|_ | | ftp server |___| 10.0.6.9
ftp liikluse vahendamisel toimuvad sellised sündmused
- ftp-proxy on käivitatud kuulama avalikul ip aadressil 192.168.109.132 ja 21/tcp pordil näidates lisaks reaalse ftp serveri ip aadressi 10.0.6.9
/usr/sbin/ftp-proxy -R 10.0.6.9 -p 21 -b 192.168.109.132
- kliendi pöördumisel tekitatase sellise sisuga ankur
# pfctl -a ftp-proxy/4741.110 -vvvsr @0 pass in inet proto tcp from 10.0.6.9 to 192.168.51.222 port = 57908 flags S/SA keep state (max 1) rtable 0 @1 pass out inet proto tcp from 192.168.109.132 to 192.168.51.222 port = 57908 flags S/SA keep state (max 1) rtable 0 # pfctl -a ftp-proxy/4741.110 -vvvsn @0 nat inet proto tcp from 10.0.6.9 to 192.168.51.222 port = 57908 rtable 0 -> 192.168.109.132 [ Evaluations: 4212 Packets: 470896 Bytes: 444415756 States: 1 ] [ Inserted: uid 71 pid 4741 State Creations: 1 ] @0 rdr inet proto tcp from 10.0.6.9 to 10.0.6.1 port = 65269 rtable 0 -> 192.168.51.222 port 57908 [ Evaluations: 7267 Packets: 470896 Bytes: 444415756 States: 1 ] [ Inserted: uid 71 pid 4741 State Creations: 1 ]
Liikluse prioritiseerimine
TODO