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
Newsletter
Zapisz się na nasz newsletter, jeżeli chcesz być na bieżąco informowany o aktualnościach..
PureFTPd - ultra bezpieczny serwer ftp
sobota, 10 stycznia 2004 -
Napisał: Krzysztof Sieg (17832 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)
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:
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:
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:
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 :
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' :)
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).
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:
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:
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.