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 []:promyk@kpsw.edu.pl
#
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:
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:
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 |
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! |