 |
Pobierz spakowaną witrynę gorzow-wlkp.pl/linuxJeżeli pragniesz poznać Linuksa Mandrake (obecnie Mandriva), to... dobrze trafiłeś. Witryna została zauważona przez twórców magazynu KOMPUTER ŚWIAT 5/2004(141) str. 46 poprzez umieszczenie linku oraz magazynu CHIP 4/2004 (str.114) poprzez umieszczenie artykułu opisującego ten serwis internetowy. Jak na hobbystyczną stronę o Linuksie to miłe ;) Acha... na stronie mandrakelinux.pl/informacje podano też link z opisem cytuję "duży zbiór praktycznych informacji o Mandrake" (mam ją w swoim archiwum - klub.chip.pl/twarogal).
Zapraszam do zadawania pytań na FORUM oraz mailem. Chętnie udzielę (bezpłatnie) odpowiedzi. Oficjalne ceny za jedną poradę na stronie MandrakeSoftPL (mam ją w moim archiwum z dnia 2.05.2004) wahają się od 20 do 350 zł.
...autentyczna rozmowa na GG: BŁAGAM!
POMÓŻ! ZROBIŁEM WSZYSTKO JAK OPISAŁEŚ I NIE MOGĘ WEJŚĆ NA SERWER
FTP! Moje pytanie: włączyłeś serwer ftp? Odpowiedź: A JAK TO
SIĘ ROBI? (odpowiedź oczywicie była na stronce www, ale mój
rozmówca należał do tej grupy leniwców, co pierw pytają i zawracają
głowę, a potem czytają dostępny materiał). Proszę, nie zadawaj
debilnych pytań i wykaż się odrobiną samodzielności.
W sieci pliki przerzucamy różnymi protokołami:
* ftp - najlepszy na duże pliki
* http - mniej
ekonomiczny, gdyż powiększa nieco wielkość przesyłanych plików
* pocztowy - najgorszy, z powodu rażąco dużego powiększania
wielkości plików (poprzez dodawanie bitów kontrolnych).
Przyjmuję, że pracujesz na Linuksie Mandrake/Mandriva, masz w domu
stałe połączenie z Internetem (np. poprzez modem SDI). O ile ustalenie Twojego nr IP jest banalnie proste (znajdziesz go na instrukcji obsługi oraz na umowie), o tyle adres słowny (domenę)
często musisz odkryć sam.
Podczas prac konfiguracyjnych zamiast tradycyjnych poleceń tekstowych, możesz użyć programu MC (czyli Midnight Commander).
Strona domowa projektu PROFTPD: http://www.proftpd.org/. Nie polecam pobierania instalek oryginalnych ze
wspomnianej strony www. Proponuję wybrać paczkę mdk.rpm z płytki
instalacyjnej lub serwera ftp Mandrake/Mandriva. Zapewnisz sobie w ten sposób możliwość łatwiejszej aktualizacji.
Zainstalowanie serwera proftpd jest bardzo łatwe. W Mandrake/Mandriva
można to zrobić w trakcie instalacji lub po pierwszym uruchomieniu
(w KDE wybierz: MANDRAKE CONTROL CENTER- ZARZĄDZANIE
OPROGRAMOWANIEM- INSTALACJIA OPROGRAMOWANIA- Znajdź w nazwach-
proftpd i kliknij WYSZUKAJ, ZAINSTALUJ.
W Mandriva 2005 (Mandrake 10.2) narzędzie INSTALACJIA OPROGRAMOWANIA nie jest instalowane domyślnie,
więc (jako root) skorzystaj z polecenia urpmi.
Acha... Instalator Mandrake/Mandriva oferuje dwie instalki ProFTPd: wersję podstawową oraz moduł umożliwiający logowanie anonymous.
Istnieje stronka (w języku angielskim) z zestawem pytań i
odpowiedzi (FAQ) www.proftpd.org/docs/faq/proftpdfaq.html
Dla ambitnych polecam angielską stronę www zawierającą wykaz
wszystkich (chyba) dyrektyw serwera ProFTPd http://spox.org/linux/proftp/Configuration.html . Mam ją
w swoim archiwum.
NIE NAMAWIAM DO INSTALOWANIA
serwera ftp!!! Czemu? Gdyż wiąże się to ze zwiększeniem
zagrożenia włamaniami. Byłem świadkiem, jak przy pomocy exploita
kolega włamał się na mój serwer ftp i... przejał prawo roota. Na
szczęście miałem dodatkowe zabezpieczenia, więc szybko go wywaliło.
Poza tym złapałem się za głowę, gdy po zainstalowaniu serwera
proftpd (mając ustawienia domyślne), z klienckiego komputera
zalogowałem się na konto. Podałem nazwę linuksowego konta i linuksowe
hasło. Co zobaczyłem? Pełny dostęp do plików systemowych, przegląd
ułożenia katalogów, które na szczęście miały restrykcyjnie nadane
uprawnienia. Po prostu mogłem bezkarnie grasować po Linuksie z
zewnętrznego komputera!!! Gdy do tego dodamy informację, że hasła i
treść są przesyłane otwartym tekstem - to WITAJCIE WŁAMYWACZE!!! Ze
zgrozą pomyślałem o konsekwencjach zalogowania się poprzez
proftpd na konto... roota.
Nasz serwer ftp
będzie pracować:
- na katalogu /var/ftp/pub i ma za zadanie obsługę
klientów anonimowych, którzy nie mają żadnych praw, poza
możliwością listowania, odczytu i pobierania plików z ściśle
wyznaczonego katalogu
- na katalogu /home/ftptipek/pubtipek użytkownika
"ftptipek" . Tutaj po podaniu loginu (linuksowego) i hasła
(linuksowego) klient będzie miał więcej uprawnień: prawo do zapisu,
listowania, odczytu, bez prawa do kasowania, podmieniania plików
lub katalogów.
- na katalogu /home/ftpwacek/pubwacek użytkownika
"ftpwacek" . Tutaj po podaniu loginu (linuksowego) i hasła
(linuksowego) klient będzie miał (prawie) maksimum uprawnień: prawo
do zapisu, listowania, odczytu, kasowania i podmieniania plików lub
katalogów.
Główny nacisk położyłem na bezpieczeństwo, jednak proszę
zapamiętać:
- Hasła są przesyłane OTWARTYM tekstem.
- Logować można się wyłącznie na konta specjalnie do tego
przygotowane. Pokażę jak to zrobić.
- Wskazane jest wydzielić osobną partycję montowaną jako /var/ftp. Więcej o dzieleniu
dysku na partycje tutaj.
Poniższy opis wykonałem pracując na Mandrake 8.x, 9.x. Oczywiście można go wykorzystać podczas konfigurowania ProFTPd
pod innymi Linuksami,
choć trzeba wówczas wziąć pod uwagę specyfikę danej dystrybucji (np. automatycznie instalowane zabezpieczenia).
Pod Mandrake 10.0 miałem problemy z logowaniem po zainstalowaniu w WYŻSZYM (dla
serwerów) poziomie bezpieczeństwa. Wskazana jest więc przemyślana instalacja
Mdk 10.0.
Należy pamiętać, że od wersji 10.0 Mandrake oraz na Mandriva istnieją dwa pliki instalacyjne: proftpd oraz proftpd-anonymous. Jest z tym związana konieczność konfiguracji dwóch plików /etc/ proftpd.conf oraz /etc/ proftpd-anonymous.conf. Niniejsza strona opisuje serwer ProFTPd instalowany z jednego pliku proftpd (nie było instalki pod nazwą proftpd-anonymous). Nie opisuję więc pliku /etc/ proftpd-anonymous. Nie jest to zresztą jakieś znaczące utrudnienie, gdyż plik /etc/ proftpd-anonymous.conf zawiera wpisy standardowo występujące w pliku /etc/ proftpd.conf (w sekcji <Anonymous /var/ftp/pub>).
Pliki konfiguracyjne z Mandrake 10.2 (Mandriva 2005):
proftpd.conf
proftpd-anonymous.conf
Konfigurowanie serwera proftpd
Pliki w katalogu /var/ftp/pub
- Sprawdź (zleceniem cd /var;ls
-la) jak wyglądają prawa własności do katalogu
/var/ftp i zapisz sobie na kartce te ustawienia. Utwórz
katalog /var/ftp/pub i nadaj mu identyczne prawa jak w
/var/ftp
W Mandrake 8.1 katalog /var/ftp/pub będzie miał
prawa: [ftp.ftp drwxr-xr-x]
W Mandrake 9.x, 10.x katalog /var/ftp powinien
mieć prawa: [root.root drwxr-xr-x] , natomiast katalog
/var/ftp/pub powinien mieć prawa [ftp.ftp
drwxr-xr-x]
- Pliki przeznaczone do udostępniania na publicznym koncie
serwera ftp skopiuj do katalogu /var/ftp/pub . Następnie
nadaj im prawa: [ftp.ftp -r--r--r--] (poleceniem chmod -R 444 * i chown -R ftp.ftp * będąc w
katalogu ~/pub ) . Podkatalogom nadaj prawa [ftp.ftp
drwxr-xr-x] poleceniem chown ftp.ftp
jakiś_podkatalog oraz chmod 755
jakiś_podkatalog . Zapamiętaj tę uwagę, gdyż
pliki konfiguracyjne serwera proftpd tak ustawimy, że nie będzie
innej możliwości wkładania plików do katalogu /var/ftp/pub
jak tylko przez roota! I nie zadziała tutaj automatycznie nadawana
maska na pliki kopiowane, bo po prostu wybierzemy (w pliku
proftpd.conf) opcję całkowitego blokowania zdalnego zapisu
plików.
Pliki w katalogu /home/ftptipek/pubtipek
- Utwórz nowego użytkownika w Linuksie: ftptipek i nadaj
jego grupie nazwę ftptipek. Powłoka domyślna nie jest
istotna, gdyż nie będziesz z niej korzystać. Numer UID = kolejny
ostatni. Pod KDE wykonasz to bez problemów: -K- KONFIGUROWANIE-
MENADŻER UŻYTKOWNIKÓW- DODAJ UŻYTKOWNIKA-.
Sprawdź prawa katalogu /home/ftptipek (ma być 711 czyli
drwx --x --x). Prawa uzyskasz po wydaniu polecenia cd /home;ls -la . Restartuj system i ponownie sprawdź prawa katalogu /home/ftptipek. Jeżeli nastąpiła zmiana na 700, to przeczytaj tę stronę.
- Utwórz podkatalog /home/ftptipek/pubtipek i nadaj mu
uprawnienia ftptipek.ftptipek rwxr-xr-x poleceniem chmod 755 pubtipek oraz chown
ftptipek.ftptipek pubtipek (będąc w katalogu
/home/ftptipek).
Jeżeli chodzi o prawa
przyszłych plików, to te wkładane zdalnie - będą miały
właściwe prawa (serwer sam dopilnuje, aby miały właściwe
ustawienia, gdyż w pliku proftpd.conf umieścimy właściwą
dyrektywę). Jeżeli skopiujesz pliki bezpośrednio (mając jako
root fizyczny dostęp do serwera), to będziesz musiał ręcznie
nadać właściwe prawa!!!.
Pliki w katalogu
/home/ftpwacek/pubwacek
- Utwórz nowego użytkownika w Linuksie: ftpwacek i nadaj
jego grupie nazwę ftpwacek. Resztę wykonaj analogicznie, tak
jak wobec konta ftptipek. Nie zapomnij sprawdzić praw do katalogu
/home/ftpwacek (ma być 711 czyli drwx --x --x).
Konfigurowanie pliku
/etc/proftpd.conf
- Wykonaj jako root polecenie:
- cd /etc
- ls -la proftpd.conf lub ls
-la |more (wówczas przepuszczaj strony spacją) . Zapisz na
kartce prawa pliku proftpd.conf . U mnie było to
root.root -rw-------
- Usuń ten plik lub przesuń do archiwum.
- Mając Mandrake 8.x oraz 9.x skopiuj mój proftpd.conf w
miejsce starego (czyli do katalogu /etc) oraz nadaj prawa
root.root -rw------- za pomocą poleceń: cd
/etc oraz chown root.root proftpd.conf i chmod 600 proftpd.conf.
Moje przykładowe pliki do Mandrake 10.2/Mandriva 2005 są tutaj: proftpd.conf oraz proftpd-anonymous.conf
- Skoryguj w nim kilka wpisów. Przede wszystkim zamień nazwę
swojego użytkownika z ftptipek na inną ładniejszą. Wstaw też
nazwę swojego, rzeczywistego katalogu docelowego, zamiast
/home/ftptipek/pubtipek . Ponadto możesz zmienić sposób
blokowania dostępu zewnętrznych klientów.
- Uwaga: jeżeli skopiujesz mój plik proftpd.conf i nie
zadziała połączenie (przyjmuję, że wpisy w nim są prawidłowe i
dobrze skonfigurowałeś pliki hosts, firewalla) możesz doświadczyć
problemu, którego genezy nie rozumiem. Chodzi o sytuację, gdy do
prawidłowego działania serwera proftpd trzeba będzie... ręcznie
wypełnić oryginalny plik proftpd.conf. Co ciekawe - dokładnie tą
samą treścią! Podobny problem znają webmasterzy w plikach html:
tekst skopiowany z pliku zapisanym w innym kodowaniu, po wklejeniu
do pliku html kodowanego inaczej, potrafi uszkodzić kodowanie
czcionki CAŁEJ strony.
- W poniższym przykładzie pliku /etc/proftpd.conf
umieściłem fragmenty w kolorze brązowym (dla anonima i dla każdego usera
osobno). To nieobowiązkowe opcje regulujące transferem do i z
serwera ftp. Przydatne w sytuacji gdy narwani wielbiciele dużych
plików zajmują cały transfer przydzielony dla usługi SDI (nie ma to
nic wspólnego z CBQ).
Tak wygląda mój plik proftpd.conf. Objaśnienia są w
kolorze czarnym i możesz je pominąć. Właściwa treść jest w kolorze
niebieskim.
#####################################################
#USTAWIENIA GLOBALNE#
#####################################################
#Nazwa serwera (wpisz ladny tytul)
ServerName "Prywatny serwer FTP Filotka Geronimusa"
#ukrycie wersji serwera proftpd - pojawi sie ladny tytul
ServerIdent on "Witam. To Twoj szczesliwy dzien ;)"
#Mail do admina. Jezeli nie masz skonfigurowanego swojego
#programu pocztowego, to oczywiscie wpis nie zadziala
;)
ServerAdmin ftptipek@pd125.wroclaw.sdi.tpnet.pl
#Serwer MUSI mieć wpis standalone . Co to oznacza?
#Standalone, czyli serwer uruchamiany w postaci osobnego procesu -
więcej znajdziesz tutaj
ServerType standalone
#Wyswietla info o serwerze PO udanym zalogowaniu.
#Potrzebny do uaktywnienia wpisu
DisplayLogin welcome.msg
DeferWelcome on
#Wiadomosc pojawiajaca się na powitanie. Patrz DeferWelcome
on
DisplayLogin welcome.msg
#Tak MUSI byc
DefaultServer on
#Ograniczenie pola dzialania do katalogu
/var/ftp/pub
DefaultRoot /var/ftp/pub
#Port na ktorym pracuje ftp - domyslnie 21 na calym swiecie
:)
Port 21
#Ustawienie prawa wlasciciela do modyfikacji pliku.
#022 - pliki moga byc czytane przez wszystkich (prawa 755)
#077 - pliki może odczytac tylko zalogowany uzytkownik (prawa 700)
#Jezeli nic nie rozumiesz, to wybierz 002 (czyli 775) lub 022 (755).
Umask 002
#Uzytkownik na jakim jest uruchomiony serwer
#W Mandrake 8.0, 8.1 wybierz nobody, nobody
#W Mandrake 9.0, 9.1, 9.2, 10.0 wybierz ftp, ftp
# Można ustalić prawidłową nazwę użytkownika edytując oryginalny plik proftpd.conf
User ftp
Group ftp
#Timeout - czyli po jakim czasie przerwac polaczenie z
#serwerem. Ustawienia standardowe sa logiczne
TimeoutIdle 300
TimeoutStalled 300
TimeoutLogin 60
TimeoutNoTransfer 300
#Miejsce przechowywania pliku proftp.log z zapisem aktywnosci
serwera
#Sprawdz, czy istnieje faktycznie (po restarcie i zaladowaniu
serwera ftp)
#U mnie pilk powstal automatycznie po pierwszym odwiedzeniu konta
ftp.
ExtendedLog /var/log/proftp.log
#Konsola, w ktorej sa na biezaco wyswietlane logi.
#Wcisnij CTRL ALT F10 aby ja uruchomic. Aby powrocic
#do konsoli X_WINDOW (np. KDE) wcisnij CTRL ALT F7
#Aby powrocic do konsoli bez okienek wcisnij CTRL ALT
F1
ExtendedLog /dev/tty10
#Aby uchronic się przed atakami DoS ustalono standard
#maksymalnie 20 uruchomionych procesow potomnych
MaxInstances 20
#Ilosc akceptowanych prob logowania - liczba standardowa =
2
#Chroni przed probami silowego odgadniecia hasla
MaxLoginAttempts 2
#Ilosc klientow maksymalnie obslugiwanych przez serwer.
#Chroni przed przeciazeniem i spowolnieniem pracy
serwera.
MaxClients 10 ">>>Za duzo chetnych :( Zapraszam innym
razem.<<<"
#Ilosc polaczen z jednego komputera (zabezpiecza przed
atakami
#i nazbyt nachalnymi klientami)
MaxClientsPerHost 5 "Przystopuj! Za duzo polaczen z jednego
IP."
#Ustalenie (globalne) miejsc, skad klient może się
zalogowac
#Potem w ustawieniach poszczegolnych ANONYMOUS mozna to
jeszcze
#bezbolesnie zmienic (dostosowac precyzyjniej dostep).
#Allow znaczy zgoda, Deny znaczy blokada, from znaczy z...
#IP 192.168.0.2 to przykładowy numer komputera z Twojej
sieci
<Limit LOGIN>
Order allow,deny
Allow from .pl
Allow from 192.168.0.2
DenyAll
</Limit>
#AllowOverwrite on, czyli pozwolenie na zdalne
#nadpisywanie plikow na serwerze - koniecznie ON
#AllowRetrieveRestart on, czyli pozwolenie na wznowienie
pobierania
#(domyslnie on). Jeżeli chcesz ON, to nie musisz wpisywać.
#AllowStoreRestart on, czyli pozwolenie na
wznowienie
#zapisu na serwer (domyslnie off)
<Directory /*>
AllowOverwrite on
#AllowRetrieveRestart on
AllowStoreRestart on
</Directory>
#Potrzebne przy NIS
#O NIS wiecej przeczytasz tutaj.
PersistentPasswd off
#####################################################
#Ustawienia UZYTKOWNIKA ANONIMOWEGO#
#####################################################
#Uzytkownik anonimowy ma dostep do serwera publicznego
#ftp prezentujacego zawartosc katalogu /var/ftp/pub
<Anonymous /var/ftp/pub>
User ftp
Group ftp
#Aliasy dla uzytkownikow - Klienci zostali zrownowazeni:
# "anonymous" ma takie same prawa co "ftp"
UserAlias anonymous ftp
# Czy "anonymous" ma podawac haslo "anonymous"
- proponuje NIE (off)
AnonRequirePassword off
#Wazne. Jezeli zahaszujesz lub usuniesz ten wiersz, to
wymusisz
#logowanie na login i haslo (co w przypadku publicznie
#dostepnego ftp-a nie ma sensu). W wolnym tlumaczeniu
#oznacza: WskazanyPrawidlowyShell - wylaczone
RequireValidShell off
#Parametry indywidualne dla anonimowego uzytkownika
#Patrz na wyjasnienia w linii USTAWIENIA GLOBALNE
DisplayLogin welcome.msg
DisplayFirstChdir .message
GroupOwner ftp
Umask 002
HideUser root
HideGroup root
HideNoAccess on
MaxClients 10 "Za duzo chetnych. Zapraszam innym razem"
MaxClientsPerHost 5 "Przystopuj! Za duzo poloczen z jednego
IP."
#Regulacja transferem - ustawienia dla
serwera
#laczacego sie z Internetem poprzez
SDI.
#Wlaczanie ograniczen zapisu na serwer do
750000 B/s (wpisz w bajtach)
RateWriteBPS 750000
#Bez limitu zapisu dla malych plikow o
pojemnosci 100000 B (wpisz w bajtach)
#RateWriteFreeBytes 100000
#Wlaczenie ograniczenia zapisu przy kilku
userach
RateWriteHardBPS on
#Ograniczenie odczytu na serwer do 750000 B/s
(wpisz w bajtach)
RateReadBPS 750000
#Bez limitu odczytu dla malych plikow o
pojemnosci 100000 B (wpisz w bajtach)
#RateReadFreeBytes 100000
#Wlaczenie ograniczenia odczytu przy kilku
userach
RateReadHardBPS on
#Ustawienie praw uzytkownika anonimowego. DenyAll dla
wszystkiego
#co jest potencjalnie niebezpieczne dla serwera.
#AllowAll czyli pozwolenie na listowanie (LIST DIRS);
#Linia IgnoreHidden zabezpiecza nasz system chowajac
#pliki z atrybutem UKRYTY (hidden-ukryty,
on-aktywne)
#Ustawimy wiec bardzo restrykcyjnie prawa dla anonimowego
#uzytkownika: bedzie mogl tylko listowac i kopiowac
pliki.
<Limit WRITE MKD DELE RMD STOR>
DenyAll
</Limit>
<Limit LIST DIRS READ>
AllowAll
IgnoreHidden on
</Limit>
</Anonymous>
#####################################################
#Ustawienia dla WYBRANEGO UZYTKOWNIKA (tutaj ftptipek)
#####################################################
#Uzytkownik ftptipek musi miec zalozone wczesniej linuksowe konto
(z haslem,
#katalogiem w /home/ftptipek itd). User i grupa pod jedna nazwa:
ftptipek.
#Nastepnie trzeba zalozyc katalog /home/ftptipek/pubtipek
#w ktorym beda trzymane pliki ftpa
#Czemu nie nalezy trzymac plikow w /home/ftptipek?
#Gdyz uzytkownik po zalogowaniu bedzie mogl harcowac po calym
katalogu
#ftptipek i widziec wszystkie pliki (takze systemowe)
#Aby zalogowac się na to konto potrzebny bedzie po stronie
klienta
#program obslugujacy ftp np. Windows Commandera. Z niego
#zalogujesz się przy uzyciu LOGINU (czyli nazwy linuksowego
konta:
#ftptipek) oraz HASLA (czyli systemowego hasla konta
ftptipek).
<Anonymous /home/ftptipek/pubtipek>
User ftptipek
Group ftptipek
AnonRequirePassword on
RequireValidShell off
DisplayLogin welcome.msg
DisplayFirstChdir .message
GroupOwner ftptipek
Umask 002
HideUser root
HideGroup root
HideNoAccess on
MaxClients 10 "Za duzo chetnych. Zapraszam innym razem"
MaxClientsPerHost 5 "Przystopuj! Za duzo poloczen z jednego
IP."
#Regulacja transferem - ustawienia dla
serwera
#laczacego sie z Internetem poprzez
SDI.
#Wlaczanie ograniczen zapisu na serwer do
500000 B/s (wpisz w bajtach)
RateWriteBPS 500000
#Bez limitu zapisu dla malych plikow o
pojemnosci 100000 B (wpisz w bajtach)
#RateWriteFreeBytes 100000
#Wlaczenie ograniczenia zapisu przy kilku
userach
RateWriteHardBPS on
#Ograniczenie odczytu na serwer do 500000 B/s
(wpisz w bajtach)
RateReadBPS 750000
#Bez limitu odczytu dla malych plikow o
pojemnosci 100000 B (wpisz w bajtach)
#RateReadFreeBytes 100000
#Wlaczenie ograniczenia odczytu przy kilku
userach
RateReadHardBPS on
#Logowanie dostepne wylacznie z domen .pl
<Limit LOGIN>
Order allow,deny
Allow from .pl
DenyAll
</Limit>
#Ustawienie praw zalogowanego uzytkownika
#może zapisywac (ale nie kasowac czy nadpisywac)
<Directory /home/ftptipek/pubtipek>
<Limit WRITE STOR MKD READ>
AllowAll
</Limit>
<Limit DELE RMD>
DenyAll
IgnoreHidden on
</Limit>
</Directory>
</Anonymous>
#Ostatni (w drzewie) katalog powyżej którego
#klient nie może zdalnie wejsc.
DefaultRoot /home/ftptipek/pubtipek
#####################################################
#Ustawienia dla WYBRANEGO UZYTKOWNIKA (tutaj ftpwacek)
#####################################################
#Uzytkownik ftpwacek musi miec zalozone wczesniej linuksowe konto
(z haslem,
#katalogiem w /home/ftpwacek itd). User i grupa pod jedna nazwa:
ftpwacek.
#Nastepnie trzeba zalozyc katalog /home/ftpwacek/pubwacek
#w ktorym beda trzymane pliki ftpa
#Czemu nie nalezy trzymac plikow w /home/ftpwacek?
#Gdyz uzytkownik po zalogowaniu bedzie mogl harcowac po calym
katalogu
#ftpwacek i widziec wszystkie pliki (takze systemowe)
#Aby zalogowac się na to konto potrzebny bedzie po stronie
klienta
#program obslugujacy ftp np. Windows Commandera. Z niego
#zalogujesz się przy uzyciu LOGINU (czyli nazwy linuksowego
konta:
#ftpwacek) oraz HASLA (czyli systemowego hasla konta
ftpwacek).
<Anonymous /home/ftpwacek/pubwacek>
User ftpwacek
Group ftpwacek
AnonRequirePassword on
RequireValidShell off
DisplayLogin welcome.msg
DisplayFirstChdir .message
GroupOwner ftpwacek
Umask 002
HideUser root
HideGroup root
HideNoAccess on
MaxClients 10 "Za duzo chetnych. Zapraszam innym razem"
MaxClientsPerHost 5 "Przystopuj! Za duzo poloczen z jednego
IP."
#Regulacja transferem - ustawienia dla
serwera
#laczacego sie z Internetem poprzez
SDI.
#Wlaczanie ograniczen zapisu na serwer do
500000 B/s (wpisz w bajtach)
RateWriteBPS 500000
#Bez limitu zapisu dla malych plikow o
pojemnosci 100000 B (wpisz w bajtach)
#RateWriteFreeBytes 100000
#Wlaczenie ograniczenia zapisu przy kilku
userach
RateWriteHardBPS on
#Ograniczenie odczytu na serwer do 500000 B/s
(wpisz w bajtach)
RateReadBPS 750000
#Bez limitu odczytu dla malych plikow o
pojemnosci 100000 B (wpisz w bajtach)
#RateReadFreeBytes 100000
#Wlaczenie ograniczenia odczytu przy kilku
userach
RateReadHardBPS on
#Logowanie dostepne wylacznie z domen .pl
<Limit LOGIN>
Order allow,deny
Allow from .pl
DenyAll
</Limit>
#Ustawienie praw zalogowanego uzytkownika
#może zapisywac, kasowac i nadpisywac.
<Directory /home/ftpwacek/pubwacek>
<Limit READ WRITE DIRS>
AllowAll
#</Limit>
#<Limit RMD>
# DenyAll
IgnoreHidden on
</Limit>
</Directory>
</Anonymous>
#Ostatni (w drzewie) katalog powyżej którego
#klient nie może zdalnie wejsc.
DefaultRoot /home/ftpwacek/pubwacek
- Restartuj system i obserwuj uważnie komunikaty startowe. Jeżeli
coś namieszałeś w pliku proftpd.conf to zobaczysz krótki
komunikat błędu. Uważnie go przeczytaj. Samego demona (a nie
system) restartuj poleceniem (pod rootem): /etc/rc.d/init.d/proftpd restart (lub stop, start).
Serwer proftpd można oczywiście uruchamiać automatycznie
podczas startu. Problem autostartu opisałem tutaj.
- Będziesz udostępniał trzy konta:
- publiczne, które wywołasz w przeglądarce internetowej
ftp://pd132.wroclaw.sdi.tpnet.pl
- drugie, tajne, które odległy klient wywoła w przeglądarce
internetowej wpisując w pasku adresu linię:
ftp://ftptipek:haslo@pd132.wroclaw.sdi.tpnet.pl lub
programem do transmisji ftp np. Windows Commanderem. Wówczas
wpiszesz adres ftp://pd132.wroclaw.sdi.tpnet.pl i podasz
linuksowy-shellowy login (ftptipek) plus linuksowe hasło dla tego
loginu . To drugie konto jest dla wtajemniczonych - będą oni mogli
kopiować i wgrywać pliki. Ustawiłem swój plik proftpd.conf w takiej
opcji, że goście nie mogą podmieniać i kasować plików - można to
będzie robić jedynie mając bezpośredni dostep do Linuksa.
Zabezpieczy to przed głupotą znajomych, ale grozi przepełnieniem
konta. Cóż, coś za coś. Jak widać, bardziej obawiam się głupoty,
niż braku miejsca na dysku :)
- trzecie dla użytkownika ftpwacek logujacego się poprzez
hasło. Będzie mógł jak na cywilizowany serwer ftp przystało:
kopiować, usuwać pliki. Słowem - administrować :)
- Przypominam o ważnej rzeczy: jeżeli jako root będziesz dodawał
pliki do katalogu /var/ftp/pub to MUSISZ nadać właściwe
prawa: katalogi mają ftp.ftp drwxr-xr-x , a pliki ftp.ftp
-r--r--r-- . Jest to ważne, gdyż w przeciwnym wypadku pliki nie
będą widoczne na zewnątrz (mimo, że faktycznie będą w katalogu
~/pub).
Serwer powinien chodzić. Ale nie musi.
- Większość błędów wyłapiesz, jeżeli w pierwszej kolejności
przetestujesz poprawność konfiguracji poprzez klienta ftp
odpalonego na tym samym komputerze, na którym pracuje demon
proftpd. Przyjazny, okienkowy klient ftp pod KDE to: -K -SIEĆ
-PRZESYŁANIE PLIKÓW- gFTP
- Jeżeli chcesz udostępniać pliki na publicznym koncie ftp
dla userów anonymous, a serwer uparcie odmawia współpracy, to
w pliku /etc/ftpaccess dodaj słowo anonymous.
- Pamiętaj, by wpisać prawidłowego użytkownika (plik /etc/proftpd.conf) w wierszach:
User ftp
Group ftp
Tutaj mamy użytkownika ftp, ale z każdą dystrybucją lub wersją może być inny. Najprościej ustalisz użytkownika edytując oryginalny (domyślny) plik konfiguracyjny.
- Uwaga: jeżeli nie możesz zobaczyć plików użytkownika
ftptipek, sprawdź czy nie zostały zmienione prawa do
katalogu /home/ftptipek (powinno być 711 czyli
drwx --x --x ; na wszelki wypadek przypominam składnię
poleceń jako root: cd /home , ls -la). Sprawdź też, czy nie została wyłączona opcja
autostartu proftpd.
Odrobina wyjaśnień. Wspomniana powyżej "samoczynna" zmiana praw
do katalogów w /home/* nastąpi po wybraniu WYSOKIEGO(4) DLA
SERWERÓW POZIOMU BEZPIECZEŃSTWA (lub zleceniem msec
4). Zerują się wówczas (między innymi) ustawienia praw wobec
newralgicznych katalogów (np. /home/*)
oraz przy okazji wyłączany jest autostart niektórych demonów.
Więcej na ten temat na stronie o MSEC.
- Może się zdażyć, że widzisz zawartość konta ftp, ale tylko z
komputera na którym zainstalowano proftpd, zaś komputery z
Internetu nie mogą załadować danych. Należy wówczas skonfigurować
firewalla poprzez MANDRAKE CONTROL CENTER (możesz też użyć zlecenia
drakfirewall lub pośrednio mcc). Powinno pomóc. Pamiętaj, że konsekwencją
ustawienia na nowo FIREWALLa może być zablokowanie podsieci domowej
(jeżeli serwer służy także jako brama do Internetu). Wówczas trzeba
spokojnie w -MANDRAKE CONTROL CENTER- Sieć i Internet-
Współdzielenie Połączenia- Konfiguruj- ponownie skonfigurować
udostępnianie (można też użyć zlecenia drakgw
lub mcc). Restartuj system.
Uwagi związane z Mandrake 8.1.
Dystrybucja ta posiada duży błąd - pod KDE w MANDRAKE CONTROL
CENTER samo klikniecie w napis BEZPIECZEŃSTWO może zablokować SDI
(nie ma tego problemu w Mandrake 9.x). Co ciekawe, błąd nie
zadziała, jeżeli MANDRAKE CONTROL CENTER uruchomisz w KDE ale... z
powłoki tekstowej poleceniem mcc. Nie zaszkodzi też zajrzeć do pliku
/etc/rc.d/rc.*firewall2.2 (2.4).
- Aby mieć kontrolę kto i kiedy logował się na serwerze ftp -
trzeba (jako root) edytować plik: /var/log/secure. Zawiera
on przy okazji inne dane np. raporty o czynnościach związanych z
administrowaniem użytkownikami (dodawanie i usuwanie). Natomiast w
celu sprawdzenia co i kto robił na koncie ftp należy edytować pli
/var/log/proftp.log (o ile umieściłeś właściwy wpis w
opisanym powyżej pliku /etc/proftpd.conf).
Osobnym problemem jest przydzielanie miejsca na dysku dla
użytkowników mających swoje konta ftp. Można to załatwić na dwa
sposoby:
- Wydzielić dla każdego użytkownika osobną partycję po np. 20MB i
restrykcyjnie montować ją. Wskazane ze względu bezpieczeństwa,
niestety kłopotliwe, bo trzeba mieć niezagospodarowany obszar na
dysku, z którego po dodaniu użytkownika wykroimy partycję i
zamontujemy np. /home/antek . Więcej o podziale na partycji
i montowaniu tutaj.
- Zastosować narzędzie quota. Polecam stronkę www.jtz.org.pl/Html/mini/Quota.pl.html . Mam ją też w
swoim archiwum.
Uwagi dotyczące bezpieczeństwa
Na początku pliku /etc/proftpd.conf
umieściłem opcję ServerIdent on "komunikat" . Jest to bardzo
ważny parametr. Ukrywa on numer wersji serwera proftpd przed
osobami z zewnątrz, utrudniając dobranie exploita potencjalnie
mogącego zaatakować serwer.
*
Jeżeli podczas instalacji systemu byłeś
zapobiegliwy i wydzieliłeś osobną partycję na katalog
/var/ftp/ to możesz polepszyć stopień bezpieczeństwa plików
z katalogu publicznego /var/ftp/ pub , modyfikując plik /etc/ fstab . W linii /dev/hda10 /var/ftp (...) dopisz
ro (tylko do odczytu) , nosuid (bez uprawnień do bitu
SUID), noexec (bez prawa uruchamiania plików wykonywalnych).
U mnie tak to wygląda:
/dev/hda10 /var/ftp ext3 ro,nosuid,noexec,nodev 1
2
Oczywiście za każdym razem, gdy będziesz chciał coś dodać do
katalogu, będziesz musiał zamienić ro na rw (a
najlepiej na defaults) i przemontować partycję. Więcej o
montowaniu tutaj. Po
skopiowaniu plików zmienisz z powrotem ustawienia na restrykcyjne i
przemontujesz partycję. Od teraz nawet jeżeli coś przeoczyłeś w
pliku proftpd.conf - nic nikt Ci nie skasuje, ani podmieni!
Aby coś zrobić włamywacz by musiał jako root zmienić wpis w /etc/fstab i odmontować oraz zamontować na nowo partycję
/var/ftp lub... przekonfigurować położenie katalogu
domowego, edytując plik /etc/proftpd.conf w wierszu
DefaultRoot /var/ftp/pub .
Jako admin bądź czujny. Możesz skupić całą uwagę na
zabezpieczeniu plików z konta ftp i zapomnieć, że włamywacz
bezczelnie zmieni zawartość plików konfiguracyjnych serwera, a
następnie... założy inny (nowy) katalog w dowolnym miejscu np. w
/tmp do którego wszyscy mają dostęp. W ten sposób serwer zacznie udostępniać w
Internecie nowe, podmienione pliki z nowego katalogu, a stare będą
sobie bezużytecznie leżeć w katalogu macierzystym :[ Rozwiązanie
tego problemu opisałem na sąsiedniej stronie o
BHP.
*
Poważną luką w bezpieczeństwie serwera ftp
jest fakt, że odległy użytkownik loguje się na osobiste konto ftp
podając linuksową ( shellową) nazwę konta i hasło do konta
shellowego. Co oznacza w praktyce? Ano, że jakiś cwaniaczek może
łatwo wychwycić (wysnifować) systemową nazwę konta plus hasło do
niego ( w proftpd dane podczas logowania nie są szyfrowane),
a to pierwszy krok do ataku na serwer. Powinieneś w takich
okolicznościach radykalnie ograniczyć możliwość uruchomienia
procesów i powłok systemowych. Jak to zrobić? Poczytaj tutaj. Wskazane
też jest wydzielenie osobnej partycji (montowanej bardzo
restrykcyjnie) jako /var/ftp oraz /home/uzytkownik .
Wspomniałem o tym powyżej.
*
Jeżeli użytkownicy kont ftp nie będą
potrzebowali dostępu do shella (co jest bardzo dobrym pomysłem), to
po utworzeniu usera wykonaj małą korektę ustawień: wpisz im w
plikach /etc/ passwd oraz /etc/ passwd- powłokę
/bin/false (zamiast domyślnej /bin/bash). Oczywiście
nie zapomnij wpisać wiersza /bin/false w pliku
/etc/ shells (jeżeli go tam jeszcze nie ma). Takie
rozwiązanie uniemożliwi zdalne (i bezpośrednie) zalogowanie na
shella, ale jednocześnie udostępni pełnoprawne konto ftp
użytkownikwi indywidualnemu. Można też ustawić jako domyślną
powłokę /bin/ false dla nowych userów - robisz to zmieniając
w plik /etc/default/ useradd wpis /bin/bash na
/bin/false lub/oraz w pliku /etc/ adduser.conf
wpisując DSHELL=/bin/false
Uwaga: jeżeli dany user będzie miał dostęp do shella poprzez
sshd (co jest niebezpiecznym rozwiązaniem), to proponuję
rezygnację z ProFTPd i logowanie się na koncie usera poprzez
sftp (szyfrowany ftp będący składową serwera
OpenSSHd). Oczywiście takie konto będzie tylko dla
wtajemniczonych (znających shellowe hasło i nazwę konta). Polecam
notatkę ze strony opisującej ssh o sftp.
*
Jeżeli nie będziesz udostępniać danych na publicznym koncie ftp
(dla userów anonymous), to z przyczyn bezpieczeństwa w pliku /etc/ftpaccess usuń słowo
anonymous.
*
W pliku konfiguracyjnym /etc/proftpd.conf zaproponowałem
parametr AllowStoreRestart w wersji on (czyli
pozwolenie na wznowienie zapisu na serwer, domyslnie off).
Jakie są związane z tym zagrożenia? Wyobraź sobie, że jako jedno z
wyrafinowanych, ale i brutalnych zabezpieczeń serwera używasz...
restart połączenia z Internetem, gdy ktoś niebezpiecznie penetruje
Twój komputer. Wywalisz zalogowanego intruza, ale i... znajomych,
którzy w tym czasie coś wrzucali na swoje konto ftp. Jeżeli dasz
AllowStoreRestart off, to Twoi znajomi będą klnąć. Ty
masz jednak wrażliwe serce i wpisałeś on. Niestety, kto ma
wrażliwe serce, ten może mieć kłopoty. Jakie? Otóż włamywacze
często po udanym przejęciu praw użytkownika, instalują swoje
oprogramowanie w sobie wiadomym celu. Po restarcie połączenia...
będą mogli dociągnąć brakujący plik (przy opcji off muszą
transferować od nowa).
Otrzymałem pytanie: jak zabezpieczyć serwer przed swobodnym
przeglądaniem zawartości dysku przez użytkowników prywatnego konta
ftp na Mandrake 9.1. Co dziwne - nie zadziałał wpis
DefaultRoot /home/uzytkownik/publiczny w pliku
/etc/proftpd.conf . Otórz jest kilka wpisów mających wpływ
na bezpieczeństwo serwera:
DefaultRoot
/home/uzytkownik/publiczny
IgnoreHidden on (ukrywający przed gośćmi pliki
ukryte).
Ja na razie zrezygnowałem z Mandrake 9.1 (gdyż zawiera
zbyt dużo błędów) i wybrałem 9.0 lub 9.2, więc nie
mogę zweryfikować tych uwag. Mam jednak radę: zastąp mój domyślny
wpis DefaultRoot /home/ftptipek/pubtipek na taki: DefaultRoot ~ lub na jeszcze lepszy: DefaultRoot ~/pubtipek
Słownik przydatnych
terminów:
- NIS - jest jednym z najprostszych sposobów rozpowszechniania w
sieci informacji o użytkowniku , zapisanych w plikach passwd oraz
group. Niestety, nie należy do bezpiecznych, gdyż nie szyfruje
danych.
Wybór opcji serwera ProFTPd:
-
Opcje mogą być samodzielnymi wartościami lub zestawem kilku wartości. Pojedynczą wartość zawiera np.
CWD, a złożoną z kilku np. ALL.
- DIRS - zestaw poleceń dotyczących
listowania katalogów (zawiera LIST, NLST] [All FTP
commands which deal with directory listing. i.e LIST and
NLST.]
- READ - grupa poleceń FTP związanych z
czytaniem plików (bez listowania katalogów). Zawiera RETR,
STAT. [All FTP commands which deal with file reading (directory
listing not included). i.e. RETR, STAT, etc.]
- WRITE - grupa poleceń radząca sobie z
plikiem (zawiera write/creation/deletion) lub katalogiem
(zawiera MKD, RMD) [All FTP commands which deal with file or
directory write/creation/deletion (MKD and RMD included).]
- RNFR (ReName FRom), RNTO (ReName TO) - tzw.
podwójne zlecenia od klienta do serwera zawierające zmianę nazwy i
ścieżkę dostępu. [Sent as a pair by client to rename a directory
entry.]
- STOR (STORe) - z ang. magazyn, czyli prawo do zapisu
(magazynowania) nowych plików na serwer.
- MKD (MaKe Directory) - prawo do tworzenia
katalogów.
- RMD (ReMove Directory) - prawo do usunięcia
katalogów.
- LIST - listowanie zawartości katalogu.
- DELE (DELEte) - kasowanie.
- CWD (Change Working Directory) - zmiana katalogu.
- RETR (RETRieve) - pobieranie plików z serwera do
klienta.
- ALL - wszystkie polecenia FTP (zawiera READ WRITE DIRS).
Aby zobaczyć komunikat powitalny po udanym zalogowaniu na konto
ftp użytkownika np. antek, należy w jego katalogu
/home/antek/pub umieścić plik tekstowy welcome.msg i
nadać mu prawa root.root 644 . Pamiętaj, że aby ProFTPd mógł
go uaktywnić, potrzebny jest wpis DeferWelcome on
Jako ciekawostkę potraktuj dyrektywy: DisplayQuit, DisplayLogin, DisplayFirstChdir. Ih argumentami są pliki textowe, zawierające komunikaty o serwerze, użytkowniku itd.
Przykład takiego pliku:
Informacje o serwerze:
Nazwa serwera: %L
Dostepne miejsce w systemie: %F
E-mail administratora serwera ftp: %E
Informacje u uzytkowniku:
Czas zalogowania: %T
Zalogowany jako: %U
Polaczony z: %R
Informacje na temat polaczen:
Maksymalna ilosc polaczen: %M
Numer Twojego polaczenia: %N
Istnieje ciekawy, linuksowy klient ftp -
wget, który pracuje w konsoli tekstowej i potrafi pobrać
dowolny plik poprzez protokoły HTTP oraz FTP. Może także zassać
całą witrynę www. Umie wznawiać zerwane połączenia. Przykład
wywołania: wget adres.serwer.com.pl/nazwapliku
. Jeżeli połączenie z serwerem zostało zerwane do wywołania
wgeta trzeba dodać parametr -c . Program
wtedy dokończy pobieranie. Aby zapisać na dysku cały serwis
internetowy, należy wydać komendę: wget -r -l2
www.adres.pl (parametr -l ustawia głębokość
zagłębienia w podkatalogi - domyślnie jest to wartość 5).
Inna komenda: wget -r -l3 -A.jpg,.gif
http://www.wp.pl/ & zassa pełną witrynę zagłębioną do
3poziomu, z grafikami JPG, GIF. Znak & na końcu zlecenia
sygnalizuje, że program wget uruchomi się w tle (podczas
pobierania witryny powłoka tekstowa będzie pusta i gotowa do
przyjmowania kolejnych zleceń). Uwaga: program wget
uruchomiony z flagą -b będzie działał do momentu zakończenia
działana, nawet po wylogowaniu usera z powłoki. Inny klient to
gftp, który potrafi pracować w ładnych okienkach np. KDE
oraz zwykłej powłoce tekstowej.
*
Na zakończenie ciekawostka związana z montowaniem odległego katalogu (z serwera ftp) na
linuksowym, klienckim komputerze z wykorzystaniem zlecenia lufsmount.
Niestety, Mandrake/Mandriva nie udostępnia na razie Kernela automatycznie skonfigurowanego pod obsługę systemu plików ftpfs.
Z obecnie znanych (2006) mi Linuksów, tylko SystemRescureCD umie jako klient zamontować odległy katalog. Uruchom więc na klienckim komputerze Linuksa SystemRescureCD.
Utwórz w nim katalog np. /mnt/ ftp . Oczywiście zapewnij mu prawo do odczytu dla
danego usera (czyli odpowiednie prawa dla katalogu /mnt oraz /mnt/ftp) i
wydaj zlecenie:
lufsmount
ftpfs://login:haslo@IPkomputeraftp/katalog /mnt/ftp
i od teraz wystarczy na naszym linuksowym, klienckim komputerze
skopiować coś do katalogu /mnt/ftp, a pliki... znajdą się na
odległym serwerze ftp, we wskazanym katalogu.
Wyjaśnienia:
lufsmount ftpfs: -
uruchomienie zlecenia połączenia klienta ftp z odległym serwerem
ProFTPd.
login:haslo@IPkomputeraftp/katalog - dane z
odległego konta serwera ProFTPd.
/mnt/ftp - ten katalog (na
komputerze-kliencie ftp) jest podmontowany do odległego katalogu serwera ftp. Pliki wkładane do niego będą automatycznie przerzucane na odległe konto
ftp.

Uwaga: z powodu namnożenia się różnych złodziejskich witryn www, które kopiują moje strony i umieszczają je u siebie wraz z komercyjnymi reklamami (na których zarabiają) informuję, że wszelkie prawa są zastrzeżone.
Uwaga.
Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).
|
|
|