piątek, 21 listopada 2008 
Start arrow FreeBSD arrow FTP arrow vsftpd
Menu BSD4u
FreeBSD
OpenBSD
NetBSD
Dla *BSD
FAQ BSD4u
Forum BSDGuru.org
Security Advisory
Licencje
Images BSD
Menu ogólne
Start
Aktualności
Download
Sondy
Szukaj
Linki
Książki
About BSD4u
Info
Team BSD4u
Regulamin
Kanał #BSD4u
Kontakt
Sondy
Co sądzisz o naszym nowym Projekcie, i jak oceniasz zmianę koncepcji Projektu?
 
Popularne
Kompilacja i konfigu...
SQUID - najpopularni...
Neostrada+ i modem ...
NATowanie czyli jak ...
Samba - serwer plikó...
Upgrade systemu
Apache (konfiguracja...
Praktyczne IPFW
MRTG - statystyki ru...
CVSup - pomocny podc...
Neostrada na modemie...
Postfix z autoryzacj...
Postfix - bezpieczny...
System Portów (Kolek...
Dummynet - dzielenie...
Top Download
File icon Postfix - "Krok po kroku" v1.16697
File icon Postfix - "Krok po kroku" v1.06601
File icon PPTPd - "Prosty i szybki VPN" v1.0b6066
File icon sdi.sh3845
File icon uEagle 1.0p12963
File icon named.sh2908
File icon uEagle 0.99b2864
File icon cs.sh2785
File icon uEagle 1.02752
File icon uEagle 1.12555
Ostatnie komentarze
transparent a virus...
Dodał: grzywka18
Dnia: 2008-05-13 11:19:58
hmm
Dodał: dzibi
Dnia: 2007-12-12 10:01:14
Bez tytułu
Dodał: grzywka18
Dnia: 2007-12-11 17:46:06
Bez tytułu
Dodał: termid
Dnia: 2007-05-09 18:01:11
Bez tytułu
Dodał: sarelo33
Dnia: 2006-12-30 23:50:14
Jest ok ale..
Dodał: theviant
Dnia: 2006-11-16 08:10:05
Google

Google


Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..




PureFTPd - ultra bezpieczny serwer ftp Drukuj E-mail
Oceny: / 13
KiepskiBardzo dobry 
sobota, 10 stycznia 2004 - Napisał: Krzysztof Sieg (17831 odsłon)

Nie będę wyjaśniał, czym jest serwer ftp oraz ssl, ponieważ zakładam, że każdy, kto chce mieć pure na swoim serwerze, wie takie rzeczy. Poza tym, co to jest i jak to działa można znaleźć w sieci, (polecam www.google.pl).

W artykule znajdziecie opis instalacji i konfiguracji pure-ftpd.

Wbrew pozorom nie jest to wszystko takie skomplikowane. Warto także przed instalacją dokonać aktualizacji portów.

1. Instalacja

Artykuł ten jest pisany z założeniem, iż waszym systemem operacyjnym jest FreeBSD. 
Cala instalacja + konfiguracja została sprawdzona w systemach FreeBSD 4.x 

# cd /usr/ports/ftp/pure-ftpd
# make build WITH_LANG=polish

***Zmienianie nagłówka*** 
(nie jest to konieczne. Jeżeli nie chcesz tego robić wykonaj teraz make install && make clean i przejdź do punktu drugiego)

# cd work
# ls
.PLIST.mktmp              .configure_done.pure-ftpd-1.0.17a._usr_local
.PLIST.network            .extract_done.pure-ftpd-1.0.17a._usr_local
.PLIST.objdump            .install_done.pure-ftpd-1.0.17a._usr_local
.PLIST.startup            .patch_done.pure-ftpd-1.0.17a._usr_local
.PLIST.stupid             pure-ftpd-1.0.17a
.build_done.pure-ftpd-1.0.17a._usr_local

* pure-ftpd-1.0.17a -> to katalog ze źródłami pure, może np. zamiast 17a być 17b lub inny numer wersji (na dzień pisania artykułu ta wersja była najnowsza)

# cd pure-ftpd-1.0.17a/
# cd src
# vi ftpd.c

Teraz znajdujemy linijki:

addreply_noformat(0, MSG_WELCOME_TO " Pure-FTPd.");

oraz:

addreply_noformat(0, "--------- " MSG_WELCOME_TO
" Pure-FTPd" VERSION_PRIVSEP VERSION_TLS " ----------");

I zamieniamy na:

addreply_noformat(0, MSG_WELCOME_TO " twój_host");

oraz:

addreply_noformat(0, "--------- " MSG_WELCOME_TO
" twój_host" VERSION_PRIVSEP " ----------");

Można tu jeszcze zmienić wartości, które są ową niespodzianka od autorów programu. Mianowicie na święta oraz sylwestra serwer `składa' życzenia. Będziemy mieli wszystko po polsku prócz tego. Więc warto i to też zmienić:

addreply_noformat(220, "Your FTP server wishes you a merry Xmas!");

oraz :

addreply_noformat(220, "We wish you a happy new year 2004!");

Teraz wystarczy zapisać plik i wrócić do głównego katalogu portu czyli:

# cd /usr/ports/ftp/pure-ftpd
# make install && make clean 

2. Konfiguracja

Za konfiguracje odpowiedzialny jest jeden plik, który nazywa się pure-ftpd.conf. Przykładowy plik znajduje się w /usr/local/etc/ i ma nazwę pure-ftpd.conf.sample (warto z niego skorzystać).

# cd /usr/local/etc
# cp pure-ftpd.conf.sample pure-ftpd.conf

Teraz postaram się opisać NAJWAŻNIEJSZE OPCJE pliku konfiguracyjnego:

--- pure-ftpd.conf ---

# Polecam ustawienie tej opcji na, `yes' ponieważ odbiera to użytkownikowi możliwość `chodzenia' 
# po całej strukturze katalogów za pomocą ftp. Może on wtedy poruszać się tylko w swoim katalogu 
# domowym, czyli np. /usr/home/nazwa_uzytkownika.
ChrootEveryone yes

# Dzięki tej opcji możemy ustalić maksymalną liczbę użytkowników w danym czasie. Należy samemu 
# ustalić (uwzględniając liczbę użytkowników, wydajność serwera oraz łącza), jaka liczba będzie odpowiednia.
MaxClientsNumber 50

# Opcja odpowiedzialna za prace serwera w `tle', polecam zostawić, na `yes'.
Daemonize yes

# Ilu użytkowników z tego samego adresu ip może jednocześnie korzystać z naszego serwera.
MaxClientsPerIP 3

# Opcja odpowiedzialna za logowanie KAŻDEGO ruchu naszego użytkownika. Jeżeli chcesz dokładnie 
# wszystko logować, ustaw na `yes' a jeżeli nie to na `no'.
VerboseLog yes

# Ustawienie to powoduje, że wszystkie pliki - nawet te, które przed nazwą maja `.' (czyli pliki ukryte) - są widoczne. 
# Jeżeli chcesz, aby tak pozostało, zostaw `yes', a jeśli nie, to ustaw na `no'.
DisplayDotFiles yes 

# Jeżeli chcesz, aby serwer był tylko serwerem anonimowym, ustaw na `yes', a jeżeli nie, to pozostaw `no'.
AnonymousOnly no 

# Jeżeli chcesz, aby nie było możliwości logowania się anonimowych klientów zmień wartość na `yes' a jeżeli 
# chcesz, aby była taka możliwość pozostaw `no'.
NoAnonymous no 

# Ta opcja loguje adres ip danego użytkownika a nie jego domenę.
DontResolve yes 

# Czas, po którym serwer automatycznie rozłącza klienta. Podawany w minutach. Zmień go według uznania.
MaxIdleTime 10

# Miejsce przechowywania bazy danych z nazwami oraz hasłami WIRTUALNYCH użytkowników 
# (jak będę miał czas napisze, co i jak trzeba zrobić, aby stworzyć tak owych użytkowników). 
#PureDB /usr/local/pureftpd/etc/pureftpd.pdb 

# Opcja ta zabezpiecza przeciwko warezowi. Znaczy się wgrany plik nie może być potem ściągnięty bez uprzedniego 
# zatwierdzenia go przez administratora systemu. Jeżeli nie mamy zaufania do naszym użytkowników warto zostawić 
# tą opcje na `yes' a jeżeli mamy lub nie chce nam się co chwile tego robić... to zmieniamy na `no'. Zatwierdzenie 
# pliku odbywa się poprzez zmianę właściciela. Czyli np.: chown root:root plik.zip
AntiWarez yes

# Jeżeli chcemy, aby nasz serwer nasłuchiwał tylko na jednym adresie ip to odhaszowujemy tą opcje i wpisujemy 
# adres,port, a jeśli chcemy, aby nasłuchiwał na wszystkich zostawiamy tak jak jest.
#Bind 192.168.1.10,21 

# Maxymalny transfer (podawany w KB/s), jaki może osiągnąć anonimowy użytkownik.
AnonymousBandwidth 8 

# Maxymalny transfer (podawany w KB/s), jaki może osiągnąć zwykły użytkownik.
UserBandwidth 8 

# Minimalny UID, który może się zalogować do systemu przez ftp.
MinUID 100 

# Jeżeli ustawimy tą opcje na `yes', zabronimy naszym użytkownikom kasowania oraz modyfikacji plików ukrytych 
# (zaczynających się od kropki) poprzez protokół, ftp.
ProhibitDotFilesWrite no 

# Jeśli ustawimy tą opcje na `yes', zabronimy czytania plików ukrytych poprzez protokół ftp.
ProhibitDotFilesRead no 

# Jeżeli ustawimy tą opcje na `yes' zabronimy dokonywać uploadu anonimowym użytkownikom.
AnonymousCantUpload no 

# ssl:
TLS 2

# Mamy do wyboru liczby 0, 1, 2. Owe liczby oznaczają:
# 0 - wyłączenie obsługi ssl,
# 1 - akceptacje połączeń tradycyjnych (bez ssl'a) oraz z sslem,
# 2 - akceptacje połączeń wykorzystujących tylko i wyłącznie technologię ssl.
# Oczywiście najbezpieczniejszą opcją, jaką można wybrać to opcja nr 2, Jednakże wtedy dany użytkownik, aby móc 
# skorzystać z naszego serwera ftp musi posiadać wersje klienta ftp, który obsługuje szyfrowanie SSL.

--- end of file ---

Teraz zapisujemy nasze zmiany w pliku pure-ftpd.conf. Następnie wykonujemy polecenie, które doda użytkownika ftp do systemu:

# pw useradd ftp -s /sbin/nologin

3. Generowanie certyfikatu SSL

Oczywiście, aby wygenerować owy certyfikat należy mieć zainstalowanego openssl'a (jeżeli nie macie to cd /usr/ports/security/openssl && make build && make install && make clean).
Polecam stworzyć plik pure-ssl.sh, który później edytujemy i dodajemy:

# mkdir -p /etc/ssl/private
# openssl req -x509 -nodes -newkey rsa:1024 \
    -keyout /etc/ssl/private/pure-ftpd.pem \
    -out /etc/ssl/private/pure-ftpd.pem
# chmod 600 /etc/ssl/private/*.pem

Zapisujemy i zmieniamy prawa dla pliku:

# chmod u+x pure.sh

Teraz uruchamiamy nasz plik + wypełniamy dane dot. certyfikatu

# ./pure.sh
Using configuration from /etc/ssl/openssl.cnf
Generating a 1024 bit RSA private key
...................++++++
.++++++
writing new private key to '/etc/ssl/private/pure-ftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:pl
State or Province Name (full name) [Some-State]:Poland
Locality Name (eg, city) []:Bydgoszcz
Organization Name (eg, company) [Internet Widgits Pty Ltd]:organizacja
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:promyk
Email Address []:
#

4. Uruchamianie

Teraz, gdy certyfikat jest wygenerowany, a pure jest już odpowiednio skonfigurowany... możemy go odpalić... Wykonujemy następujące polecenia:

# cd /usr/local/etc/rc.d
# mv pure-ftpd.sh.sample pure-ftpd.sh

W ten sposób `utworzyliśmy' plik startowy serwera...
Teraz upewniamy się, że nic nie siedzi na porcie 21 

# sockstat -4 |grep 21

Jeżeli `coś' siedzi unicestfanimy to... i wykonujemy polecenie:

# /usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf

Aby upewnić się, że nasz serwer ftp działa piszemy:

# telnet localhost 21
Trying ::1...
Connected to localhost.twoja.domena.pl.
Escape character is '^]'.
220---------- Witaj na twoja_domena.pl ----------
220-Jesteś 1 użytkownikiem z 5 możliwych
220-Lokalny czas: 14:07. Port serwera: 21.
220-To jest prywatny system - Bez anonimowych logowań
220-Zostaniesz rozłączony po 60 sekundach nieaktywności.

Jeżeli ustawiliście opcję TLS na 2, możecie bardzo łatwo sprawdzić czy działa ssl wpisując przy połączeniu telnet:

user promyk
421 Sorry, cleartext sessions are not accepted on this server.
Please reconnect using SSL/TLS security mechanisms.
Connection closed by foreign host.

Tak, więc widać ze serwer jest już skonfigurowany poprawnie.

5. Wirtualni użytkownicy ftp

Po co to wszystko? Przedstawię trzy najważniejsze powody:

  • Po 1. Bezpieczeństwa (nie ma użytkownika ftp w systemie)

  • Po 2. Dla wydajności

  • Po 3. W FreeBSD jest pewne 'ograniczenie' liczby możliwych do wykorzystania numerów UID.

Ok. zabieramy się do pracy: Zakładam oczywiście, że robiliście wszystko w.g. tego artykułu, i pure działa wam już poprawnie. Edytujemy plik konfiguracyjny czyli:

# cd /usr/local/etc
# pico pure-ftpd.conf

Szukamy linijki:

PureDB /etc/pureftpd.pdb

I zamieniamy na:

PureDB /usr/local/etc/pureftpd.pdb

Polecam teraz stworzenie 'skryptu' do odpalania pure:

# pico /bin/pure-start

W którym wpisujemy:

/usr/bin/killall pure-ftpd
/usr/local/sbin/pure-config.pl /usr/local/etc/pure-ftpd.conf

Zapisujemy go i dajemy odpowiednie uprawnienia:

# chmod u+x /bin/pure-start
# rehash

wracając do sedna sprawy... na pewno chcielibyśmy aby dotychczasowi użytkownicy serwera (którzy są w /etc/passwd) mogli się też logować tak wiec przed stworzeniem bazy danych, tworzymy plik z starymi użytkownikami i ich hasłami :

# pure-pwconvert > /usr/local/etc/pure-ftpd.passwd

I teraz uwaga. Bardzo ważne. Plik pure-ftpd.passwd zawiera hasła do wszystkich kont (co prawda są one zakodowane). No ale 'dla chcącego nic trudnego' :)

# chmod 600 pure-ftpd.passwd

Tworzymy teraz owa bazę danych :

# pure-pw mkdb pureftpd.pdb -f pure-ftpd.passwd
# chmod 600 pure-ftpd.passwd

Na chwile zatrzymamy się i omówimy narzędzie pure-pw (ponieważ to z niego będziemy korzystać przy tworzeniu nowych kont). Szczerze mówiąc po wpisaniu samego pure-pw widać wszystko do czego to służy są nawet przykłady, ale aby artykuł był pełny przetłumaczę do czego służą podstawowe opcje programu (więcej man pure-pw).

# pure-pw
pure-pw usermod -f -u [-g ]
-D/-d -[c ]
[-t ] [-T ]
[-n ] [-N ]
[-q ] [-Q ]
[-r /] [-R /]
[-i /] [-I /]
[-y ]
[-z -] [-m]
#

login - nazwa użytkownika jaka ma być wykorzystana
passwd file - plik z hasłami
uid - numer identyfikacyjny użytkownika
gid - numer identyfikacyjny grupy
home directory - katalog domowy
download bandwitch -ograniczenie pasma dla downloadu
upload bandwitch -ograniczenie pasma dla ściągania
mask - maska podsieci
allow client ip -dozwolone adresy ip
deny client ip - zabronione adresy ip
allow local ip - dozwolone lokalne adresy ip
deny local ip - zabronione lokalne adresy ip
hhmm - godziny (hh) oraz minuty (mm) w których dany użytkownik może korzystać z serwera

Uwaga. Przed założeniem każdego z użytkowników należy stworzyć mu katalog domowy przykładowo:

# mkdir /home/ftpusers
# mkdir /home/ftpusers/promyk

I wreszcie tworzymy pierwsze wirtualne konto ftp (wszystko musi być w jednej linii):

# pure-pw useradd promykk -f /usr/local/etc/pure-ftpd.passwd \
    -u 600 -g 700 -d /home/ftpusers/promykk -t 32 -T 32

Zapomniałem dodać. UID i GID nie może istnieć w systemie. (to jest tylko przykład uid i gid za każdym razem będzie musiał być inny). System nas poprosi o hasło dla stworzonego użytkownika...

I wpisujemy oczywiście polecenie mające na celu dodanie do bazy użytkowników nowego użytkownika:

# pure-pw mkdb pureftpd.pdb -f /usr/local/etc/pure-ftpd.passwd

I gotowe. Powinno wszystko działać bezproblemowo.

Na dzień dzisiejszy uważam iż artykuł jest już zakończony, ewentualnie dodam jeszcze kiedyś obsługę MySQL oraz LDAP.

W razie jakich kolwiek problemów proszę o kontakt:
promyk(at)kpsw.edu.pl

lub też na forum
www.bsdguru.org/dyskusja

Szczegółowa dokumentacja:
www.pureftpd.org


Autor: Krzysztof (promyk) Sieg
promyk(at)kpsw.edu.pl

Komentarze:
Klienci ftp
Dodane przez promyk w dniu - 2004-02-10 20:57:54
Ostatnio dostalem pare maili (tak z 5) odnosnie klientow ftp obslugujacych ssl. Niektorzy nawet mowili ze tak owe nie istnieja ;) Istnieja. Przyklad? ftp-tls (za pomoca tego programu mozna tez sprawdzic czy dobrze wszystko dziala z szyfrowaniem po ssl) [instaluje sie go : cd /usr/ports/ftp/ftp-tls && make build && make install && make clean && rehash] Obsluga tego programu jak zwyklego ftp. 
Pozdrawiam. 
Ps. Niedlugo bedzie aktualizacja artykuly odnosnie wirtualnych uzytkownikow ftp itp. 
SSL
Dodane przez promyk w dniu - 2004-03-01 20:54:33
Co do pliku ktory tworzy certyfikat SSL na stronie jest maly blad, otoz : 
openssl req -x509 -nodes -newkey rsa:1024 -keyout  
/etc/ssl/private/pure-ftpd.pem  
-out /etc/ssl/private/pure-ftpd.pem 
TO WSZYSTKO MUSI BYC W JEDNEJ LINIJCE ABY CERTYFIKAT ZOSTAL POPRAWNIE WYGENEROWANY! 
Re: PureFTPd - ultra bezpieczny serwer f
Dodane przez KaCzY w dniu - 2004-03-02 15:11:11
jest 
 
# sockstat -4 |grep 21 
 
a moze by tak zamiast dwoch narzedzi uzyc jednego :-) 
 
# sockstat -4 -p 21 
 
 
Re: PureFTPd - ultra bezpieczny serwer f
Dodane przez tod w dniu - 2004-04-03 01:00:05
UID i GID nie może istnieć w systemie. (to jest tylko przykład uid i gid za każdym razem będzie musiał być inny).
 
Jestes pewien ze piszesz o wirtualnych urzytkownikach? Bo jesli tak, to obydwa zdania NIE sa prawda.
Re: PureFTPd - ultra bezpieczny serwer f
Dodane przez promyk w dniu - 2004-04-03 20:30:32
Tak jestem pewien ze o tym Pisze. 
A czy ty jestes pewien ze czytales ten artykul dokladnie? To zdanie ma swoja podstawe w stosunku do zdania (troche wyzej) :  
"wracając do sedna sprawy... na pewno chcielibyśmy aby dotychczasowi użytkownicy serwera (którzy są w /etc/passwd) mogli się też logować tak wiec przed stworzeniem bazy danych, tworzymy plik z starymi użytkownikami i ich hasłami(...)" 
Tak wiec jezeli wykonasz to polecenie.. To jak chcesz stworzyc nastepnego uzytkownika o tym samym UIDzie i GIDzie?  
 
Re: PureFTPd - ultra bezpieczny serwer f
Dodane przez tod w dniu - 2004-04-04 21:55:48
Zwyczajnie, poprzez pure-pw na przyklad ze skladnia jaka podales, dodal bym tylko -m zeby recznie bazy nie przybudowywac. 
Hmm ale zeczywiscie "za każdym razem będzie musiał być inny" odczytalem jako "przy dodawaniu kazdego nastepnego" co nie bylo by najmadrzejszym pomyslem. 
Reasumujac - sorrki za zmarnowany czas. 
 
Pozdrawiam, M.B.
Re: PureFTPd - ultra bezpieczny serwer f
Dodane przez AnteK w dniu - 2004-06-01 13:00:07
Witam... mam nastepujacy problem... 
 
Mam ustawiona baze na wirtualnych userow... i problem tkwi w tym, ze jak uzytkownik konta shellowego zmieni haslo, to w pure-ftpd to haslo nie jest zaktualizowane... :( 
 
Jesli zrobie znow pure-pwconvert i zupgreaduje baze to trace all wirtualnych userow... 
 
Czy jest jakas opcja... czy mozliowsc by mi np co 10 minut aktualizowalo baze danych z pure-pwconvert i dodalo tylko zmiany a nie tworzylo nowa baze ;?? 
 
Pozdrawiam... 
AnteK
Re: PureFTPd - ultra bezpieczny serwer f
Dodane przez promyk w dniu - 2005-02-23 19:34:07
Tak da sie to zrobic, przed chwila wlasnie borykalem sie z podobnym problemem. 
Pozdrawiam 
Ps. Co i jak ? man. 

Tylko zarejestrowani użytkownicy mogą pisać komentarze.
Prosze zaloguj się i dodaj komentarz.

Powered by AkoComment!

Ostatnio aktualizowany ( piątek, 11 listopada 2005 )

« wstecz   dalej »
Ciekawostki
By zobaczyć listę aktywnych urządzeń sieciowych, wpisz "ifconfig -u".
Pobierz
FreeBSD
OpenBSD
NetBSD
DragonFlyBSD
PC-BSD
FreeSBIE LiveCD
4.4BSD Lite
Reklama M3M.pl
Domeny
Książki

FreeBSD. Księga eksperta

FreeBSD. Księga eksperta

Cena: 125.00 zł
Dodaj do koszyka


FreeBSD. Podstawy administracji systemem

FreebBSD

Cena: 64.90 zł
Dodaj do koszyka


OpenBSD. Podstawy administracji systemem

OpenBSD

Cena: 84.90 zł
Dodaj do koszyka


OpenBSD. Tworzenie firewalla za pomocą PF

Firewall PF

Cena: 44.90 zł
Dodaj do koszyka

Licznik odwiedzin
Odwiedziło już nas
2522089
Internautów od lutego 2003

Korzystamy ze statysyk