środa, 17 kwietnia 2013

Serwer vsFTPd

Czasami tak zdawała by się prosta rzecz jak FTP psuje cały humorek porannej kawy.

Co zrobić by serwer FTP  zadziałał na naszym LINUX np. Centos  6.0
 (Zalecanym przez korporację RedHat serwerem FTP jest VSFTPD czyli Very Secure Ftp Daemon)

1. Instalujemy VSFTPD na naszym serwerze:

yum update
yum install vsftpd

2. Konfigurujemy nasz serwer

plik konfiguracyjny znajdziemy w /etc/:
najpierw robimy kopie:

cd /etc/vsftpd
cp  vsftpd.conf vsftpd.conf.bac

teraz edytujemy:

vi /etc/vsftpd/vsftpd.conf 

(a) wariant pierwszy (tylko lokalni użytkownicy)


( konfiguracja serwera FTP pozwoli na łączenie się użytkowników do swoich katalogów domowych. Będą mogli oni pobierać i wysyłać na swoje konta dane z prędkością do 20 KB/s w obie strony, czasami się przydaje by nie wysycili nam łącza. Po zalogowaniu się do swoich kont, serwer FTP zastosuje zasadę chroot i zamknie możliwość poruszania się tylko do katalogu domowego, a więc user nie będzie mógł go opuścić, jest to dobra i bezpieczna opcja. Istnieje oczywiście możliwość dodania użytkowników którzy będą mogli poruszać się poza swoim katalogiem domowym. Nie ma możliwości logowania się ANONYMOUS. )



nopriv_user=ftp
listen=YES                               # nasłuchuj w trybie standalone
listen_port=21                           # nasłuchuj na porcie 21
anonymous_enable=NO                      # wyłącz logowania kont ANONYMOUS
local_enable=YES
write_enable=YES
local_umask=022
local_max_rate=20480
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log         # zapisuj logi do
max_clients=100                         # maksylmanie wszystkich połączeń        
max_per_ip=4                             # maksymalnie 4 połączenia na raz
banner_file=/etc/vsftpd/vsftpd.banner    # pokaż tekst powitalny z pliku
chroot_local_user=YES                    # włącz tryb chroot chroot_list_enable=YES                   # włącz liste dla których userow

                                         # stosować regule chroot
chroot_list_file=/etc/vsftpd/chroot.list # lista userów




(b) wariant drugi (tylko anonimowi goście, bez możliwości zapisu)

( przydatne gdy chcemy udostępnić dla ogółu jakieś pliki ,  logujemy się wówczas na login ftp i hasło puste lub można podać swój adres e-mail )

listen=YES
anonymous_enable=YES                    # włączamy możliwość logowania się gości
ftp_username=ftp                        # jako użytkownicy ftp
write_enable=NO                         # zabraniamy zapisu
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
anon_world_readable_only=YES
idle_session_timeout=350
connect_from_port_20=YES

port_enable=YES
hide_ids=NO
log_ftp_protocol=NO
syslog_enable=YES

max_per_ip=4
local_root=/usr/share/empty
nopriv_user=nobody
ftpd_banner=(vsFTPd nazwa_naszego_serwera)


(c) wariant trzeci ( lokalni użytkownicy i goście - uprawnienia pełen zapis)

( zezwalamy na zapis zarówno lokalnym użytkownikom jak i anonimowym , wszyscy zamknięci we własnych katalogach , w przypadku anonimowych jest to katalog /var/chroot/vsftpd , dodatkowo wprowadzamy ograniczenia na możliwość UPLOAD'owanie plików, zabraniamy wysyłać pliki typu mp3 i avi , oraz ukrywamy pliki typu txt i vcs )


najpierw tworzymy niezbędny katalog
mkdir /var/chroot/vsftpd


nopriv_user=ftp
listen=YES
listen_port=21
anonymous_enable=YES
local_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog.log
xferlog_std_format=YES
chroot_local_user=YES
secure_chroot_dir=
/var/chroot/vsftpd 
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=NO
hide_ids=YES
local_umask=022
anon_umask=022
deny_file={*.mp3,*.avi}
hide_file={*.txt,*.vcs}



Powyższe konfiguracje są poglądowe, warto wykorzystać je do pomieszania i stworzenia własnej unikatowej konfiguracji.

2. Uruchamianie serwera FTP

/etc/init.d/vsftpd start 
 Uruchamianie vsftpd dla vsftpd:                            [  OK  ]

lub jeśli już jest proces uruchomiony (sprawdzamy)
ps ax | grep vsftpd
  28018 ?        Ss     0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf    

( widać, że uruchomiony jako process 28018)
lub

 /etc/init.d/vsftpd status
   vsftpd (pid 30688) jest uruchomiony...

to wpisujemy
/etc/init.d/vsftpd restart
Wyłączanie vsftpd:                                         [  OK  ]
Uruchamianie vsftpd dla vsftpd:                            [  OK  ]



3. Firewall - otwieranie usługi FTP na świat

niezapomnijmy o otwarciu jeszcze niezbędnych portów:
(musimy dopisać odpowiednie linijki do naszego firewalla)

#port 21 (TCP) - negocjacyjny 

iptables -A INPUT -s 0/0 -p tcp --dport 21 -j ACCEPT

#port 20 (TCP) - transmisji danych   (w trybie aktywnym)

 iptables -A INPUT -s 0/0 -p tcp --dport 20 -j ACCEPT

#porty od 1024 do 65530 - transmisji danych    (w trybie pasywnym)
iptables -A INPUT -s 0/0 -p tcp --dport 1024:65530 -j ACCEPT


4. Sprawdzamy naszego FTP
(najszybciej starym poczciwym telnet'em)

telnet localhost 21
 Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 Witamy - tarnet.eu.org


aby wyjsć z telnetu naciskamy [CTRL} + ]
i wpisujemy quit

i mamy serwer gotowy :)




 Tarnek oKRUTNIK

http://tarnet.eu.org
http://tarnet.eu.org/linux