Konfiguracja ProFTP.

Konfiguracja serwerów, usług, itp.
piroaa
Beginner
Posty: 324
Rejestracja: 11 kwietnia 2008, 14:46

Konfiguracja ProFTP.

Post autor: piroaa »

Konfiguracja ProFTP.

FTP to dość problematyczny serwer w trybie aktywnym wymaga publicznego IP po stronie klienta lub jakiegoś mechanizmu śledzenia połączeń FTP po stronie routera robiącego NAT. W trybie pasywnym wymaga puszczenia sporej liczby portów lub mechanizmu śledzenia połączeń po stronie serwera, na dodatek w podstawowej konfiguracji całość leci sobie nieszyfrowanym kanałem.
Problem z szyfrowaniem można obejść stosując moduł mod_tls.c szyfrować można zarówno polecenia jak i kanał z danymi, daje to szyfrowanie ale uniemożliwia śledzenie połączeń przez co tryb aktywny nie może być wykorzystany bez publicznego IP, a w pasywnym trzeba otwierać porty co jest takim sobie pomysłem.
Rozwiązaniem tych problemów jest rezygnacja z FTP na rzecz SFTP, tutaj wszystko w standardzie jest szyfrowane i co ważne to klient otwiera połączenie do serwera i cała komunikacja oraz dane lecą jednym portem.
Popularnym rozwiązaniem jest odpalenie SFTP przez demon sshd jest to najprostszy z możliwych scenariuszy, ma za to kilka wad po pierwsze każdy klient musi posiadać normalne konto szellowe, po drugie może w ten sposób łazić po całym systemie co nie jest dobre.
W tym momencie zaczynają się kombinacje jak zapakować takiego delikwenta w jakiś jail i jak zezwolić tylko wybranym klientom na logowanie się do SFTP a innym do systemu.
Najlepszym rozwiązaniem jest rozdzielenie klientów SFTP od kont szellowych i dodatkowo tych drugich zamykać w jailu.
Najprościej zrobić to za pomocą modułu mod_sftp.c oraz zestawu mod_sql.c, mod_sql_mysql.c, mod_sql_passwd.c.
Pierwszy z nich jak łatwo się domyśleć daje możliwość odpalenia SFTP w ramach ProFTPD w miarę prosto i bezboleśnie co ważne każdego użytkownika czy to systemowego czy innego można w łatwy sposób zamknąć w jailu tak jak w przypadku zwykłego FTP wystarczy tylko

Kod: Zaznacz cały

DefaultRoot                     ~ 

Trzy pozostałe moduły jak łatwo się domyśleć pozwalają pobrać listę użytkowników z bazy danych przez co nie trzeba dodawać kont szellowych taki użytkownik choć by nie wiem co nie zaloguje się do systemu.
Po skonfigurowaniu wszystkiego tak jak powyżej mamy bezpieczny serwer do którego dostęp mają tylko wirtualni użytkownicy zamknięci w swoich katalogach domowych i co bardzo ważne nie trzeba się przejmować publicznym IP po stronie klienta czy koniecznością otwierania portów po stronie serwera.
W tym momencie należy się jeszcze jedna mała uwaga do całości, otóż ProFTPD domyślnie korzysta ze wszystkich kanałów uwierzytelniania mało kto o tym wspomina ale nawet mimo poprawnej konfiguracji autoryzacji po SQL dalej będzie możliwe logowanie użytkowników systemowych i nie jest to wcale takie oczywiste.
Żeby nakazać ProFTPD korzystanie tylko z użytkowników w SQL należ wymusić to przez :

Kod: Zaznacz cały

AuthOrder mod_sql.c 

Dobrym pomysłem jest też skorzystanie z modułu mod_clamav.c da to przynajmniej jakąś podstawową ochronę przed wirusami wrzucanymi na serwer. Niestety z tego co sprawdziłem clam nie dekoduje base64 przez co śmieci pisane w PHP, czy javie zakodowane przy jego wykorzystaniu na serwerze lądują bez przeszkód.
ODPOWIEDZ