Archiwa tagu: proftpd

System z wirtualnymi użytkownikami

W repozytorium testing (stan na 16.09.2008) znajdują się nowe pakiety. Zestaw exim-sql, tpop3d-sql, proftpd-sql oraz mailadmin służy do wdrożenia użytkowników poczty i ftp zawartych w bazie MySQL i nie mających dostępu do systemu. Jest to dobre rozwiązanie na serwerach, które różnym osobom udostępniają usługi pocztowe i ftp, a administartor chciałby wykluczyc negatywne następstwa dla serwera wynikające z niefrasobliwości uzytkowników.

Wymieniony zestaw pakietów można zainstalować w całości lub w części. jeden administrator będzie potrzebował tylko pocztę, a inny wyłącznie ftp. Pakietem łączącym wszystkie element w całość jest mailadmin. Zawiera on łatwy panel www do administrowania wirtualnymi kontami. Można dodawać i kasować użytkowników, aktywować i dezaktywować pocztę lub ftp. Pakiet ten nie jest objęty zależnościami, ale warto go zainstalować, aby ułatwić sobie zadanie.

Instalacja pakietów
Potrzebne pakiety instalujemy poleceniem pacman -S nazwa-pakietu. Jeśli w systemie jest już exim, tpop3d lub proftpd, najpierw lepiej usunąć stare pakiety.

Konfiguracja ProFTPd z bazą użytkowników w MySQL
Po instalacji należy w katalogu /etc plik proftpd.conf.sql zmienić na proftpd.conf. W tym pliku znaleźć linię:
SQLConnectInfo  poczta@localhost poczta twoje-haslo
i wpisać własne hasło, jakie ustaliliśmy dla swojego użytkownika poczta po instalacji exima lub panelu mailadmin.
Panel Mailadmin tworzy użytkowników i nadaje im UID 5001 oraz GID 50, a także ustawia ich katalog domowy na /home/virtual/nazwa.domeny/nazwa.użytkownika.
Zatem przykładowy użytkownik Janek Kowalski mający konto pocztowe o nazwie i loginie j.kowalski@moja.domena.pl, będzie miał swój domowy katalog w /home/virtual/moja.domena.pl/j.kowalski. Tego katalogu jednak na razie nie ma. Pojawi się on dopiero, gdy użytkownikowi odblokujemy usługę FTP w panelu administracyjnym, lecz wcześniej musimy założyć użytkownika virtual, który będzie służył do wszystkich wirtualnych  kont. Wcześniej należy sprawdzić, czy mamy grupę ftp z GID 50, a jeśli nie, to też ją założyć.

[root@serwer ~]# adduser
Login name for new user []: virtual
User ID (‚UID’) [ defaults to next available ]: 5001
Initial group [ users ]: ftp
Additional groups (comma separated) []:
Home directory [ /home/virtual ]
/…/
Creating new account…

Dalej wciskamy tylko enter i nie zakładamy hasła temu użytkownikowi, ponieważ nie będzie on miał żadnych praw poza własnością katalogu /home/virtual. Dla zachowania porządku wyczyścić należy wszystkie wpisy w /home/virtual – założone automatycznie tam pliki nie będą potrzebne.
Teraz kiedy użytkownik, któremu odblokowaliśmy konto FTP, zaloguje się pierwszy raz, jego katalog zostanie utworzony automatycznie.
Jeśli prawo do własnego FTP ma być związane z prezentowaniem własnej strony www przez danego użytkownika, to oczywiście trzeba jeszcze odpowiednio skonfigurować apache. Przykładowo można danemu użytkownikowi założyć wirtualnego hosta, jeśli posiada on jakąś swoją domenę. Można założyć subdomenę dla wszystkich użytkowników wirtualnych n.p users.moja.domena.pl i umiejscowić ją dyrektywa VirtualHost na katalog /home/virtual/moja.domena.pl. Wtedy strony naszego przykładowego użytkownika będą widoczne pod adresem users.moja.domena.pl/j.kowalski. dodatkowo możemy w katalogu nadrzędnym zakładać pliki .htaccess, w których ograniczymy możliwości wykonywania kodu php -np wpiszemy dyrektywę Safe_mode = On. Może mieć to znaczenie w szkole, gdzie w celach ćwiczeniowych rozdajemy konta uczniom, ale jednocześnie nie chcemy psuć bezpieczeństwa serwera.

Konfiguracja serwera smtp i pop3 (exim i tpop3d)
Konfiguracja jest prosta i nieskomplikowana. Obydwu programów można używać bez wsparcia mysql – czyli tradycyjnie (choć MySQL jest w zależnościach i musi zostać zainstalowany). Do konfiguracji exima w takim przypadku można użyć nndconf. Jeśli jednak chcemy korzystać z wersji z użytkownikami wirtualnymi, trzeba zacząć od konfiguracji pliku exim.conf.sql. Edytujemy go ręcznie przeglądając dokładnie. Nasze wpisy będą zależały od konfiguracji domeny. Jeśli nie mamy skonfigurowanego rekordu MX, to promary_hostname i qualify_domain zawierać muszą to samo. W przypadku posiadania MX w postaci mail, primary_hostname to mail.moja.domena.pl, a qualify_domain to moja.domena.pl. Trzeba też wpisać hasło do bazy w linii zawierającej hide mysql_servers = „localhost/poczta/poczta/twoje-haslo”. W pliku tym znajdziemy jeszcze wpisy MY_IP oraz MY_DOM, służą one do wpisania własnego IP oraz domeny, po to by w sekcji ACL odrzucać spamerów, którzy łącząc się z naszym serwerem przedstawiają się jako on sam (jest to opisane na stronie w osobnym artykule i można taki dodatek umieścić w pliku konfiguracyjnym każdej innej instalacji exima).
Należy jeszcze zmienić swój tzw. baner, zmienić nazwę pliku na exim.conf  i można już uruchomić exima.
W pliku tpop3d.conf.sql znajdujemy linię auth-mysql-password: twoje-haslo i wpisujemy własne, następnie w /etc/conf.d/tpop3d musimy mieć linię (zamiast standardowej):
TPOP3D_ARGS=”-f /etc/mail/tpop3d.conf.sql -p /var/run/tpop3d.pid”
i tpop3d również można uruchomić.

Konfiguracja panelu Mailadmin
Jednak poczta nie będzie działać zgodnie z naszymi oczekiwaniami, jeśli nie założymy użytkowników. Wchodzimy na naszym serwerze www do katalogu mailadmin (oczywiście przez przeglądarkę) – http://moja.domena.pl/mailadmin. Podczas pierwszego uruchomienia zostaniemy poproszeni o podanie hasła, które zostanie zapisane do bazy. Będzie to hasło administracyjne, gdy już je podamy, za chwilę pokaże nam się okno logowania. Wpisujemy login admin i wymyślone przed chwilą hasło. Teraz czeka nas zakładanie domen i kont użytkowników. Najpierw zakładamy domenę podstawową, jeśli mamy jeszcze inne to zakładamy je również (uwaga! muszą one istnieć). Potem zakładamy użytkowników. Każdy użytkownik będzie miał teraz login taki sam jak adres poczty, czyli np. j.kowalski.moja.domena.pl. Dobrze jest zlikwidować całkowicie obsługę poczty dla kont systemowych. W tym celu w /etc/mail/aliases wpisujemy:
nazwa: nowy.user@moja.domena.pl
i w ten sposób, jeśli mieliśmy już istniejące konta, poczta nadal będzie dochodzić, tak też ustalamy użytkownika, który będzie dostawał pocztę roota (np. komunikaty systemowe).

UWAGA! Pakiety są w fazie testów, więc w najbliższym czasie mogą się jeszcze zmieniać i zyskiwać nowa funkcjonalność.
Od 19.09.2008 jest mailadmin z zarządzaniem biała i czarną listą, a w eximie dodano skrypt czyszczący czarną listę.

autor: W.Trąmpczyński (Maciek) przy współpracy Bartka Czerwińskiego i Jakuba Cichockiego

ProFTPd

Proftpd jest uznawany za jeden z najlepszych serwerów ftp, zastosowanie go na serwerze Freesco na pewno wpłynie na bezpieczeństwo, jak i sprawne przesyłanie plików. Instalacja jest bardzo prosta, wystarczy wpisać polecenie: installpkg adres_serwera_z_paczkami/proftpd. Następnie odpowiadamy „n” na pierwsze pytanie i „y” na drugie – i wszytko zostanie zainstalowane.

Ponieważ Freesco zostało pomyślane jako serwer dla niewielkich sieci domowych (szkolnych, biurowych, osiedlowych), więc zaawansowane opcje serwerów wirtualnych nie są tu w zasadzie potrzebne. Zatem sugeruję instalację ze strony Leszka Filipskiego – (przypis: juz nieaktualne, strona nie istnieje) ta wersja jest prosta i nie wymaga szczególnych umiejętności, zaś autor dołączył przykładowe pliki konfiguracyjne i dokładny opis instalacji oraz konfiguracji.
Biorąc pod uwagę, że pracujemy na niezbyt pojemnych połączeniach zakładam, że serwer ftp chcemy udostępnić w celu administrowania stronami www, trzeba się bowiem liczyć z tym, że jeśli udostępnimy jakieś pliki światu, to kilku odwiedzających skutecznie może nam zapchać dostęp do Internetu.
Poniżej jest podstawowy plik konfiguracyjny podany przez Leszka Filipskiego i nieco przeze mnie zmodyfikowany:
———-
# Konfiguracja Proftpd
# Zawarto w nim konfigurację dla pojedynczego serwera i dla jednego
# login’u anonymous. W efekcie, aby miało to szansę zadziałać musisz
# mieć zdefiniowanego użytkownika/grupę „nobody”
ServerName „FTP serwer”
ServerType standalone
DefaultServer on
# Port 21 to standardowy port FTP.
Port 21
Umask 022
# Aby zabezpieczyć się przed atakami DoS (odmowa udostępnienia usługi)
# zaleca się ustawienie maksymalnej liczby procesów potomnych na 30
MaxInstances 30
# Ustaw użytkownika i grupę z poziomu których serwer normalnie startuje.
User nobody
Group nobody
# Normally, we want files to be overwriteable.

AllowOverwrite yes

# Podstawowa konfiguracja użytkownika anonimowego, bez upload’u katalogów.

User nobody
Group nobody
# Potrzebujemy uzytkownika który będzie używany gdy ktos będzie się
# logował jako anonim. Tu po zalogowaniu się do serwera jako anonymous
# faktycznie będziemy korzystać z konta nobody
UserAlias anonymous nobody
# Maksymalnaliczbaużytkowników loguj±cych się jako anonymous
MaxClients 5
# Tu ustawiamy fakt logowania bez hasła
AnonRequirePassword off
# ‚welcome.msg’ będzie wyświetlane w chwili logowania,
# a ‚.message’ w każdym nowo otwartym katalogu.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# Limit WRITE mówi czy można zapisywać cokolwiek w katalogu
# Dyrektywa DenyAll nie pozwala na to nikomu
# Inne możliwe dyrektywy to (nie wszystkie):
# AllowAll, Allow 192.168.1.*, AllowUser filip, DenyUser anonymous
# Oczywiście chodzi tu o środowisko ‚chroot’ stworzone dla
# użytkownika anonymous

AllowUser twoj_user
DenyAll

# koniec definicji użytkownika anonymous
DefaultRoot ~
# ~ – powoduje, że kazdy user zostanie wpuszczony tylko do swojego katalogu i nigdzie dalej
# auth file – jesli chcesz możesz stworzyc dodatkowy plik, lub korzystać z systemowego, bezpieczniej to pierwsze
AuthUserFile /mnt/router/etc/passwd
# pocz±tek definicji katalogu domowego użytkownika webadmin

AllowOverwrite yes

AllowUser webadmin
DenyAll

# koniec definicji katalogu
# początek definicji katalogu

AllowOverwrite yes

AllowUser twoj_user
DenyAll

# koniec definicji katalogu
# W zasadzie przydzielanie katalogów jak powyżej nie jest potrzebne, serwer domyślnie wpuszcza usera
# do jego katalogu domowego
# początek definicji serwera wirtualnego

# Nazwa twojego hosta
ServerName „FTP Server”
TransferLog /mnt/router/packages/proftpd/var/virt_tran.log
# katalog root dla tego serwera (nie można wyjść ponad ten katalog)
DefaultRoot ~
# auth file
AuthUserFile /mnt/router/etc/passwd
# początek definicji katalogu domowego użytkownika webadmin

AllowOverwrite yes

AllowUser webadmin
DenyAll

# koniec definicji katalogu
# pocz±tek definicji katalogu

AllowOverwrite yes
1
AllowUser twoj_user
DenyAll

# koniec definicji katalogu
# pocz±tek szczegółowej definicji katalogu dla użytkownika anonumous

User nobody
Group nobody
UserAlias anonymous nobody
MaxClients 10

# pobieranie plików dozwolone

AllowAll

# nie wolno nic zapisywać

DenyAll

# można się poruszać po drzewie katalogowym

AllowAll

————–
Część druga nie jest potrzebna przy podstawowej konfiguracji i można ją spokojnie wyciąć. Przyda się jeśli mamy wirtualne domeny.
Ważne jest, że proftpd nie wpuści użytkownika powyżej katalogu DefaultRoot. Dlatego aby można było spokojnie administrować plikami i stronami www, a jednocześnie mieć pewność, że jakiś user nie podpatrzy nam pliku passwd, najlepiej umieścić wszystko w katalogu home. W katalogu /home umieszczamy pliki katalogi użytkowników i strony www (patrz konfiguracja apacza).
I admin ma spokojną głowę. Zaletą proftpd jest możliwość ustawienia dostępu tylko niektórym użytkownikom lub tylko adresom w sieci wewnętrznej. Jeśli nie chcemy aby kolega X wchodził na serwer będąc na wczasach, bo gapa na pewno zostawi swoje hasło w kafejce internetowej, ustalamy, że może logować się wyłącznie ze swojego komputera w domu.
W pakiecie znajdują się także dwa dodatkowe programy: ftpcunt – wyświetlający nam ilość zalogowanych userów i ftpwho – pokaże nam, kto jest zalogowany na naszym serwerze.
Tekst ten powstał na bazie opisu wykonanego przez Yachoo, a także inne uwagi uczestników grupy trzepak.freesco. Ponadto wykorzystałem informacje zawarte w artykule Dariusza Sobolewskiego w numerze 8/2000 czasopisma Linux+ i informacje autora instalowanego przeze mnie pakietu Leszka Filipskiego.

autor: W. Trąmpczyński (Maciek), artykuł oryginalny opublikowany w 2004 roku na http://miniwebportal.one.pl