FTP kasutamine OpenBSD paketifiltriga

Allikas: Kuutõrvaja
Redaktsioon seisuga 19. detsember 2009, kell 16:53 kasutajalt Imre (arutelu | kaastöö) (ftp kliendi tulemüür)

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

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

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

Kasulikud lisamaterjalid