Wstęp
1.Instalacja
2.Konfiguracja
3.Samba i profile
4.Netlogon
5.Bezpieczeństwo
6.Wydajność samby
Literatura
Post Scriptum
Wstęp
Nie będę się rozpisywał na temat, który jest już po raz n-ty wałkowany (google prawdę Ci powie), więc przedstawię po krótce, czym jest Samba.
Samba jest zbiorem aplikacji korzystających z protokołu SMB (Server
Message Block). Aby zapewnić działanie podstawowa wersja składa się z
dwóch programów smbd oraz nmbd, które należą do rodziny “oprogramowania
o otwartym źródle”, (Open Source Software, OSS).
Smbd jest demonem odpowiadającym za współdzielenie plików i drukarek
oraz zapewniającym uwierzytelnianie. Nmbd to demon, który zapewnia
mechanizmy WINS (Windows Internet Name Service), czyli usługi
nazewnicze, potrzebne do przeglądania zasobów sieci.
Pozostałe aplikacje pakietu samby:
smbclient – klient umożliwiający podłączenie się do udziałów samby lub windows.
smbtar – program archiwizujący
testparm – program testujący plik konfiguracyjny smb.conf
nmblookup – sprawdza nazwy NetBIOSowe
smbpasswd – podstawowy program zarządzający kontami w sambie
smbstatus – wyświetla obecny stan połączeń z sambą
testprns – program sprawdzający czy drukarki są rozpoznawane przed sambe
swat – program umożliwiający zarządzanie sambą poprzez interfejs przeglądarki internetowej
Istnieje jeszcze wiele programów współpracujących z sambą w wielu czynnościach, jednak zawęziłem spis do podstawowych aplikacji. (do góry)
1.Instalacja
Sambę pobierzesz z jej domowej stronki www.samba.org
Źródełka
Zanim zaczniesz instalować z źródeł sambe należałoby sprawdzić czy mamy
właściwe wersje bibliotek wymaganych przez pliki wykonywalne. Dla
bibliotek konsolidowany dynamicznie samba może potrzebować odpowiednich
wersji bibliotek.
ldd – sprawdza, jakie biblioteki potrzebuje samba dla wersji 3.0.14a:
debian:~# ldd /usr/local/samba/sbin/smbd libcrypt.so.1 => /lib/libcrypt.so.1 (0x40022000) libresolv.so.2 => /lib/libresolv.so.2 (0x4004f000) libnsl.so.1 => /lib/libnsl.so.1 (0x40061000) libdl.so.2 => /lib/libdl.so.2 (0x40077000) libc.so.6 => /lib/libc.so.6 (0x4007a000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
archiwum gz,bz
debian:~#tar -zxvf samba-3.0.x.tar debian:~#cd samba-3.0.x debian:~#./configure --prefix=/usr/local debian:~#./make && make install
Rpm
mdk:~#rpm --checksig samba-3.0.x.src.rpm mdk:~#rpm -ihv samba-3.0.x.src.rpm - przebudowanie (mdk:~#rpm --rebuild samba-2.2.x.src.rpm) - aktualizacja (mdk:~#rpm -Uhv samba-2.2.x.iy86.rpm)
Reinstalacja
Przed ponowną instalacją należy zabezpieczyć pliki konfiguracyjne
smb.conf* - #gwiazdka oznacza wszystkie pliki konfiguracji
smbpasswd - #baza danych użytkowników dotychczasowych samby
Pozbywamy się starych wersji:
rm -rf /usr/local/samba rm -rf /etc/samba
dla rpm:
rpm -qa | grep samba rpm -e –nodeps samba rpm -e –nodeps samba-docs rpm -e –nodeps samba-client
Pozostawiamy tylko paczki, których nazwa bądź człon nazwy mają yast2 lub kde.
Uruchomienie:
Są dwa sposoby na uruchomienie samby. Poprzez inetd lub jako deamon:
(np. z /usr/local/etc/rc.d/samba.sh).
Jeśli sieć nie przekracza 40 użytkowników można użyć prostszej metody uruchomienia procesów samby z inetd.
Do pliku /etc/services dopisz następując wiersze:
#vi /etc/services ........ netbios-ns 137/tcp #NETBIOS Name Service netbios-ns 137/udp #NETBIOS Name Service netbios-dgm 138/tcp #NETBIOS Datagram Service netbios-dgm 138/udp #NETBIOS Datagram Service netbios-ssn 139/tcp #NETBIOS Session Service netbios-ssn 139/udp #NETBIOS Session Service netbios-ssn 445/tcp #NETBIOS Session Service ........
Należy dopisać do inetd.conf
netbios-sss stream tcp nowait.30000 root /usr/local/samba/sbin/smbd smbd netbios-ns dgram udp wait.400 root /usr/local/samba/sbin/nmbd nmbd swat stream tcp nowait.400 root /usr/local/samba/sbin/swat swat
(do góry)
2.Konfiguracja
Jeśli instalacja przebiegła bez problemów, można przystąpić do
konfiguracji. Dostrojenie serwera do zamierzonych celów to długa, kręta
droga! Postaram się jak najprościej przedstawić 3 tryby działania
samby:
1. Samba dla gości – bez autoryzacji
2.Samba z autoryzacją użytkowników
3.Samba jako PDC (domena NT)
Samba dla gości – bez autoryzacji (samba share)
Brak autoryzacji to z pozoru tylko wpuszczenie użytkownika bez
całkowitej kontroli. Najpierw musimy przygotować konto użytkownika w
Linuksie, na które będą się logować przybysze z sieci, dla których nie
będzie miało to rządnego znaczenia, jakiego usera przedstawiają.
Standardowo używam konta o nazwie nobody.
dodanie grupy i użytkownika do systemu, bez dostępu do powłoki:
debian:~#addgroup nogroup debian:~#useradd -c "konto bez autoryzacji" -g nogroup -d /dev/null -s /bin/false nobody
konfiguracja smb.conf – głównego pliku konfiguracyjnego samby:
[global] workgroup = siec #nazwa grupy roboczej netbios name = serwer-sieci #nazwa serwera w grupie roboczej server string = Samba server %v #oznaczenie, komentarz serwera guest account = nobody #konto logujacych sie bez autoryzacji security = share #usługa ma jedno hasło dla wszystkich local master = yes #serwer będzie główną lokalna przeglądarką
[udzial] path = /tmp/udzial #ścieżka do katalogu guest ok = yes#dostęp także dla gości guest only = yes #każdy użytkownik traktowany jako gość read only = no#nie tylko do odczytu printable = no#oznaczenie zasobu, przeciwieństwo drukarki valid user = nobody #jedynie uzytkownik nobody może widzieć zasób force user = nobody #zapis w udziale z prawami usera nobody
Katalog, który służy do przedstawiania udziału musi mieć właściciela
“nobody”, który jest naszym publicznym kontem dla gości w sambie, jeśli
nie ustawimy odpowiedniego właściciela nie będziemy mieli prawa do
zapisu – udział będzie blokowany zgodnie z systemem plików unix'ów.
debian:~#chown nobody /tmp/udzial
Samba z autoryzacją użytkownika
Autoryzacja użytkownika w sambie wymaga założenia kont w systemie
passwd oraz w sambie smbpasswd, istnieje synchronizacja tych dwóch baz
danych użytkowników, którą przedstawie poniżej.
dodanie grupy i użytkownika do systemu, bez dostępu do powłoki:
debian:~#addgroup smbgroup
debian:~#useradd -c "konto smb" -g smbgroup -d /dev/null -s /bin/false waldek
dodanie użytkownika do bazy samby:
smbpasswd -a waldek
konfiguracja smb.conf
[global] workgroup = siec #nazwa grupy roboczej netbios name = serwer-sieci #nazwa serwera w grupie roboczej server string = Samba server %v #oznaczenie, komentarz serwera guest account = nobody #konto logujacych sie bez autoryzacji security = user#zabezpieczenie na poziomie użytkownika local master = yes #serwer będzie główną lokalna przeglądarką
[homes] comment = katalog domowy #komentarz browseable = no #udział nie rozgłaszany w listach przeglądania writable = yes#udzial nie jest przeznaczony tylko do odczytu
Udział home nie powinien się mieszać z katalogami domowymi użytkowników systemu.
Samba jako PDC – czyli kontroler domeny NT
Konfiguracja samby, jako PDC wymaga założenia dla każdego stanowiska w
sieci działającego jako klient i podłączonego do naszej domeny
specjalnego konta, (tzw. konta zaufania) dla systemów z rodziny NT.
Konto jest zwykłym kontem użytkownika naszego Linuksa z kilkoma
ograniczeniami – brak dostępu do powłoki – brak dostępu do innych usług
ftp. mail itp.
Ponadto samba musi być główną przeglądarką lokalną, w sieci musi być serwer nazw WINS (także samba lub Windows *NT)
Ostatnia czynność to przygotowanie konta administratora, które będzie nam potrzebne do podłączania “końcówek” do domeny.
zakładamy grupę i konto zaufania dla klienta:
debian:~#addgroup smbmachines debian:~#useradd -c "konto maszyny" -g smbmachines -d /dev/null -s /bin/false maszyna1$
znak “$” jest konieczny przy nazwie komputera, nazwa komputera to nic innego jak nazwa w sieci SMB (otoczeniu sieciowym).
debian:~#smbpasswd -a -m maszyna1 #tutaj już bez symbolu $
Jeśli nie czujesz się na siłach ciągle wpisywać maszyny do bazy użytkowników zautomatyzuj ten proces:
add machine script = /usr/sbin/useradd -d /dev/null -g smbmachines -c 'konto maszyny %I' -s /bin/false %u passwd chat debug = no passwd chat = *New*UNIX*password* %nn *ReType*new*UNIX*password* %nn *passwd:*all*authentication*tokens*updated*successfully* passwd program = /usr/bin/smbpasswd -L -a %u
następnie zakładamy grupę i konto użytkownika:
debian:~#addgroup smbgroup debian:~#useradd -c "konto smb" -g smbgroup -s /bin/false waldek
dodanie użytkownika do bazy samby:
smbpasswd -a waldek
konfiguracja smb.conf :
[global] workgroup = siec #nazwa grupy roboczej netbios name = serwer-sieci #nazwa serwera w grupie roboczej server string = Samba server %v #oznaczenie, komentarz serwera guest account = nobody #konto logujących się bez autoryzacji security = user #także konieczne w kontrolerze domeny local master = yes #serwer będzie główną lokalna przeglądarką domain master = yes #serwer będzie kontrolerem domeny prefered master = yes #samba będzie główna przeglądarką announce as = NT server #samba będzie udawać serwer NT
encrypt passwords = yes #szyfrowanie haseł smb passwd file = /etc/samba/smbpasswd #ścieżka do pliku z kontami
[homes] comment = Katalog domowy browseable = No #udział nie rozgłaszany w listach przegladania writable = Yes #udział nie jest przeznaczony tylko do odczytu
Wersja Home nie jest przygotowana do pracy w sieci z kontrolerem
domeny. Natomiast systemy z rodziny NT (winXP) aby podłączyć do domeny
należy wprowadzić pewną zmianę w rejestrze, można to zrobić za pomocą
programu “regedit”.
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesnetlogonparameters "RequireSignOrSeal"=dword:00000000
Można to także zrobić z poziomu Local Group Policy wyłączając (Disabled) Security Options | Domain Member | Digitally encrypt or sign secure channel data .
(Będziemy musieli przez to zrezygnować z kilku opcji Windowsa) (do góry)
3.Samba i profile
Profile to jedna z zalet budowy sieci SMB. Pomogą nam zautomatyzować
archiwizację, także użytkownicy już nie będą musieli się martwić o
kopie bezpieczeństwa, a i nam w niektórych przypadkach ułatwi to życie.
Profile nazywane profilami mobilnymi mają jeszcze jedną ważną opcję, w
momencie kiedy użytkownik zmieni stanowisko pracy wraz z poprawnym
zalogowaniem na komputer, który obecnie obsługuje – dostanie wszystkie
swoje stare ustawienia z komputera poprzedniego, pulpit, dokumenty,
nawet menu start – mowa oczywiście o systemie Windows.
Aby uruchomić poprawnie opcje profili należy w pliku konfiguracyjnym umieścić:
logon path = %L%UProfile #dynamiczna ścieżka dla profili, dla Windows #NT/XP/2000/2003
logon home = %L%Uprofile #dynamiczna ścieżka dla profili dla Windows #95/98/98SE/Me
Format profili systemu Win9x oraz 2k,XP... jest inny, dlatego
“powinien” być przechowywany w innym katalogu, ścieżka profili posiada
format UNC, więc można skierować profile na całkowicie inny serwer.
Pamiętaj o prawach dostępu do katalogu, oczywiście trzeba być członkiem domeny NT.
[Profile] path = /home/Profile browseable = No writable = Yes
[profile] path = /home/profile browseable = No writable = Yes
(do góry)
4.Netlogon:
Jest udziałem dla skryptów ładowania automatycznego w domenie NT. Jak
wiadomo skrypty zawarte w netlogon ładują się automatycznie w chwili
poprawnego załogowania się do domeny, możemy dzięki temu ustawić
synchronizację czasu, a także automatyczne mapowanie udziałów czy
drukarek, istnieje jeszcze wiele opcji, o których postaram się
przynajmniej wspomnieć.
Konfiguracja udziału netlogon:
[netlogon] comment = Network Logon Service #komentarz path = /var/lib/samba/netlogon guest ok = no writable = no browseable = no
Fizycznie do tego udziału już możemy wrzucić pliki z
rozszerzeniem .bat które będą się uruchamiać po zalogowaniu do domeny,
należy zwrócić uwagę na jedną rzecz – skrypt .bat powinien być
utworzony w systemie windows, ponieważ linux w dokumentach tekstowych
nie używa “powrotu karetki” jedynie początek nowej linii, natomiast
windows obydwie funkcje.
Aby użyć funkcji serwera czasu należy w smb.conf wpisać jeden wiersz:
time server = yes #YES uruchamia serwer czasu
Przykład skryptu logowania:
# Skrypt startowy windows echo Ustawiam aktualny czas net time apollo-serwer /set /yes echo Mapuje stacje sieciowe na udziały serwera Archiwum net use m: apollo-serwerdane
(do góry)
5.Bezpieczeństwo:Jeśli wogóle można uważać, że
siec oparta na protokole SMB może być bezpieczna, to tyle o ile musimy
zabezpieczyć przynajmniej w jakimś stopniu naszą sieć.
Podstawy bezpieczeństwa w smb:
Adresowanie:
Jeśli w sieci mamy 28 userów możemy podzielić ją maską bitową.
Zazwyczaj osoba zakładająca sieć korzysta z klasy C zaznaczając w niej
maskę o wartości 255.255.255.0 – oznacza to że w tej sieci może być
zaadresowanych 253 komputery i każdy będzie widział wszystkich swoich
“sąsiadów”, dlaczego 253? Bo jeden adres to adres sieci, a drugi to
adres broadcast (rozgłoszeniowy).
Maską możemy podzielić te 255 adresów na 4 podsieci, ponieważ to nie
jest dokument o adresowaniu przedstawię tylko gotowy przykład:
adres sieci: 192.168.0.33
pula adresów użytecznych od 192.168.0.34 do 192.168.0.62
broadcast 192.168.0.63
maska podsieci 255.255.255.224
Tak oto uzyskujemy minimalną pule adresów dla 28 komputerów – w tym
momencie zostają nam 2 adresy użyteczne, dla innych komputerów nasza
sieć nie będzie widoczna.
Opcje samby:
allow hosts = lista hostów #wymienia komputery które mogą się łączyć z #sambą, synonim opcji hosts allow. available = warotść logiczna #jeśli jest ustawiona na NO, zabrania dostępu do #udziału.
[global] bind interfaces only = wartość logiczna #jeśli jest ustawiona na YES, listy przeglądania #będą udostępnione tylko poprzez interfejsy z listy #opcji interfaces.
create mask = liczba ósemkowa #określa max. prawa dostępu do nowo tworzonych #plików od 0 do 0777
deny hosts = lista hostów #synonim opcji hosts deny, określa liczbę #komputerów, które nie mogą nawiązywać #połączeń z serwerem.
dont descent = lista przecinkowa katalogów #nie pozwala przeglądać ani przejść do katalogów.
[global]encrypt passwords = wartość logiczna #ustawiona na Yes uruchamia szyfrowanie haseł #metodą LM/NTLM1/2, wymaga smbpasswd.
force user = nazwa użytkownika smb #ustawia nazwę użytkownika korzystającego z #udziału.
hosts allow = lista hostów # synonim opcji allow hosts, określa listę #komputerów które mają dostęp do udziału, adresy #ip dozwolone: 0.0.0.0/24
[global] interfaces = lista interfejsów #ustawia listę interfejsów przez które samba będzie #odpowiedać na żądania.
invalid users = lista użytkowników # lista userów którzy nie mogą korzystać z udziału.
locking = wartość logiczna #Stosuje blokady plików, ustawiona na NO #akceptuje żądania przyznania blokady
machine password timeout = sekundy #ustawia okres między zmianami hasła komputera #w domenie Windows NT. Wartość domyślna to 1 #tydzień, czyli 604 800 sekund.
max connections = liczba #określa max. liczbę połączeń z udziałem
only guest = wartość logiczna #wymusza aby użytkownik udziału znajdował sie #na liście username.
read only = wartość logiczna #mówi o trybie udziału tylko do odczytu
revalidate = wartość logiczna #jeśli jest ustawiona na YES użytkownicy będą za #każdym razem musieli wprowadzać hasło #przeglądając udział.
[global]secutiry = wartość #określa sposób autoryzacji: share, user, domain, #server.
share modes = wartość logiczna #jeśli jest ustawiona na YES samba obsłurzy #Windowsowego sposobu blokowania plików w #trybie odmowy.
[global]socket address = adres IP #określa adres, pod którym należy czekać na #połączenia. Domyślnie Samba czeka na połączenia #pod wszystkimi adresami.
valid user = lista #lista użytkowników którzy mogą korzystać z #udziału.
veto files = lista ukośnikowa #lista plików które nie będą pokazywane klientowi #podczas listowania zawartości katalogu.
wide links = wartość logiczna #jeśli jest ustawiona na YES, samba podąża za #dowiązaniami symbolicznymi i na zewnątrz #bieżącego katalogu.
Oprogramowanie dodatkowe:
Dodatkowym sposobem zabezpieczenia nie tylko samego serwera, czy
komunikacji sieci, ale także plików w całej sieci SMB jest zastosowanie
oprogramowania antywirusowego. Instalacja odbywa się na serwerze gdzie
pracuje Samba.
Ochrona antywirusowa z wykorzystaniem ClamAV:
Clam jest to program ochrony antywirusowej działający na systemach
*nixowych.Pomostem pomiędzy Sambą a ClamAV będzie samba-vscan. Autorem
programu jest Rainer Link a prace nad projektem zapoczątkowane zostały
w połowie maja 2001.
samba-vscan jest rodzajem filtra, który operuje na wirtualnym systemie
plików Samby - VFS (ang. Virtual File System). VFS to nic innego jak
zbiór udogodnień dodanych do już istniejącego systemu plików. Wprowadza
między innymi dodatkowe wywołania; operacje na katalogach (opendir,
readdir, mkdir, itd) i plikach (open, read, close, write, itd).
Więcej info:http://clamav.skc.com.pl/howtos/samba_clamav.html
F-secure:
F-Secure Ant-Virus for Samba Servers jest oprogramowaniem, które
zatrzymuje wirusy systemu Linux, Windows, wirusy plików i makr
infekujące dokumenty Microsoft Office oraz innego typu złośliwe kody.
Oprócz rozpoznawania znanych wirusów rozwiązanie wykrywa również nowe i
nieznane na podstawie pewnych cech zawartości typowych dla wirusów.
Produkt pozwala na szybką reakcję na infekcje, dzięki możliwości
wyspecyfikowania potencjalnie groźnych plików (na bazie nazwy lub
rozszerzenia) i ich blokowaniu lub usuwaniu.
Automatyczna ochrona w czasie rzeczywistym
F-Secure Anti-Virus przejmuje wszystkie żądania użytkownika i skanuje
zawartość plików zanim te zostaną przesłane adresatowi. Skanowanie
zapobiega rozsyłaniu wirusów z serwera. Oprogramowanie F-Secure skanuje
również pliki przechowywane na serwerze w poszukiwaniu wirusów oraz
złośliwych kodów wykonywalnych. Ochrona wszystkich zasobów serwera jest
skuteczna i nie wydłuża czasu pobierania plików z serwera.
Administrator jest powiadamiany o wszystkich istotnych alarmach.
Informacje te pozwalają na szybką reakcję. Program posiada wbudowany
moduł raportujący, który może powiadamiać administratora o zaistniałych
problemach. Administrator może zdefiniować katalogi i pliki (określając
typ oraz rozmiar) podlegające skanowaniu lub nie wymagające analizy
antywirusowej. Program posiada również w szereg opcji pozwalających na
podjęcie działań w przypadku zainfekowanych plików.
Więcej info:http://www.f-secure.pl/
SambaSecure Antivirus:
SambaSecure Antivirus to system ochrony plików działający w czasie
rzeczywistym dla serwerów Samba. Katalogi i pliki (także skompresowane)
współdzielone w sieci są zabezpieczane przed wirusami, robakami i
trojanami. Jeżeli plik jest linkiem symbolicznym mechanizm antywirusowy
gwarantuje również ochronę pliki oryginalnego, bez względu na jego
położenie.
SambaSecure Antivirus zapewnia skanowanie na żądanie o zaplanowanej
porze lub od razu. Działanie tego rozwiązania nie obejmuje jedynie
katalogów dzielonych. SambaSecure Antivirus wykrywa i eliminuje
złośliwy kod, który przedostał się na serwery w dowolny sposób.
Obsługa SambaSecure Antivirus jest prosta dzięki bezpiecznej konsoli
web do zdalnego zarządzania (HTTPS). Po instalacji dostęp do niej może
odbywać się z dowolnego punktu w sieci - wystarczy przeglądarka
internetowa i dane do autoryzacji.
Np. po wykryciu zagrożenia można z konsoli zarządzania przenieść
niebezpieczny plik do kwarantanny. Do czasu jego wyleczenia, nikt w
sieci nie będzie mógł go otworzyć i nie zarazi swojej stacji roboczej
złośliwym kodem.
Więcej info:http://www.pspolska.pl/produkty/samba_secure/
Bezpieczne połączenie w sieci (przesyłanie haseł):
Microsoft zapewnia nam 4 sposoby zabezpieczenia uzyskania tożsamości użytkownika, są to:
Protokołu Kerberos v5
Certyfikatu klucza publicznego
Protokółu SSL/TLS (Secure Sockets Layer/Transport Layer Security)
Protokółu LM/NTLM-1/2
Obecna wersja samby tj. 3.0 obsługuje wszystkie metody przekazywania
haseł przez siec (szyfrowane/nieszyfrowane). Istnieją 3 opcje
szyfrowania haseł w protokole SMB:
1.LM (Lanman)
2.NTLM (NT1)
3.NTLM2 (NT2)
Wykorzystane funkcje mieszające to: MD4, MD5, SHA-1, oraz algorytmy symetryczne: DES, 3DES, RC4.
Windows
Przesyłanie haseł niezaszyfrowanych przez sieć stanowi wielkie
niebezpieczeństwo dla wszystkich klientów i ich systemy operacyjne w
sieci. Obecnie istnieje możliwość przystosowania wszystkich wersji
Windowsa do szyfrowania haseł. Jednak standardowo nie wszystkie są
bezpośrednio przygotowane:
Workgroup 3.11 – niezaszyfrowane
Windows 95 – niezaszyfrowane
Windows 98 – zaszyfrowane (LM)
Windows Milenium – zaszyfrowane(LM)
Windows NT po S.P.3 – zaszyfrowane (LM/NTLM)
Windows 2000 – zaszyfrowane (LM/NTLM)
Windows XP – zaszyfrowane (LM/NTLM/NTLM2)
Windows 2003 – zaszyfrowane (LM/NTLM/NTLM2)
Aby przygotować Windows`y do pracy w trybie szyfrowania należy wprowadzić w plik rejestru pewne zmiany:
dla windows 95/98/Me
[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP] "EnablePlainTextPassword"=dword:00000000
dla windows NT po S.P.3
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesRdrParameters] "EnablePlainTextPassword"=dword:00000000
dla windows 2000/XP
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanWorkStationParameters] "EnablePlainTextPassword"=dword:00000000
Systemy windows zawsze korzystają z jednej bazy danych, gdzie ukrywają
swoje hasła. W Windowsach 9x są to pliki PWL, natomiast 2k/Xp są to
pliki SAM.
Wartość 0 dword w rejestrze oznacza szyfrowanie haseł, natomiast wartość 1 brak szyfrowania.
Dsclient to program który pozawala nam na użycie algorytmu NTLM2 dla systemów operacyjnych w wersji Windows 9x/Me.
Po zainstalowaniu tego programu który należy pobrać ze strony
Microsoftu ewentualnie z nośnika płyty instalacyjnej systemu Windows
2003 z katalogu x:clientswin9xdsclient.exe
Po udanej próbie możemy wybrać jedną z opcji szyfrowania konfigurując rejestr systemowy.
Windows 9x HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLMCompatibilityLevel wartość dword: 0 – dla haseł LM/NTLM wartość dword: 3 – tylko dla haseł NTLM2
Windows 2k/Xp/2003 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaLMCompatibilityLevel warotść dword: 0 – dla haseł LM/NTLM warotść dword: 1 – dla systemu NTLM2 – jeśli sieć obsługuje ten sposób autentyfikacji warotść dword: 2 – dla LM nie jest stosowane, możliwe tylko NTLM warotść dword: 3 – dla NTLM2 (wyłącznie) warotść dword: 4 – LM zostaje odrzucone warotść dword: 5 – serwer tylko przyjmuje NTLM2
Linux
Plik smb.conf pozwala nam na zmianę opcji szyfrowania. Mamy do wyboru
także wiele trybów pracy jak w Windowsach. Jedynym warunkiem jest
wersja min. 3.0, kiedy piszę ten artykuł najnowszą wersją jest 3.0.14a.
Dostępne opcje:
lanman auth = yes (domyślnie) #samba wysyła hasła LM i NTLM
lanman auth = no #serwer korzysta wyłącznie z NTLM
ntlm auth = yes + lanman auth = no #serwer korzysta z NTLM/NTLM2
ntlm auth = no + lanman auth = no #serwer korzysta jedynie z NTLM2
Opcje dla klienta sieci SMB smbclient:
client lanman auth = yes #smbclient korzysta wyłącznie z LM
client lanman auth = no #smbclient korzysta z NTLM/NTLM2
client ntlmv2 auth = no #smbclient nie będzie wysyłał haseł NTLM2
client ntlmv2 auth = yes #smbclient łącząc się będzie wysyłał tylko #hasła NTLMv2.
client plaintext auth = yes #smbclient będzie wysyłał jedynie nie #szyfrowane hasła.
client plaintext auth = no #smbclient nie będzie wysyłał haseł nie #zaszyfrowanych.
Firewall
Wielu ludzi używa firewalli do blokowania portów programów, których
standardowo nie używają albo stanowią zagrożenie dla systemu. Należy
pamiętać że protokół SMB nadaje na wielu portach, dla przypomnienia:
Port 135/TCP - used by smbd
Port 137/UDP - used by nmbd
Port 138/UDP - used by nmbd
Port 139/TCP - used by smbd
Port 445/TCP - used by smbd (obsługa DFS – rozproszonego systemu plików)
Nowe wersje
Być może to najważniejsza dziedzina bezpieczeństwa. Błędy
oprogramowania na nowo są wykrywane, luki które mogą zaszkodzić
poprawnemu działaniu serwera, bąć nawet przejąć nad nim kontrolę, mogą
występować w obecnej wersji twojego serwera plików. Najlepszym
lekarstwem jest systematyczne zaglądanie na stronę domową samby pod
adresem www.samba.org gdzie można dowiedzieć się o wykrytych lukach, błędach i ewentualnie pobrać aktualizację.
5.Drukarki pod sambą:
Samba może pracować oczywiście jako centrum druku z wieloma dodatkowymi
funkcjami statystycznymi. Od wersji 3.0.2 samba jest wyposażona w
bezpośredni interfejs do systemu CUPS
(Common Unix Printing System), który dzisiaj jest głównym standardem
obsługi drukarek w systemach *nix. Aby skonfigurować serwer wydruku dla
naszej sieci najpierw musimy zainstalować drukarkę w systemie, można to
zrobić na kilka sposobów, ja pokaże jedynie sposób instalacji bez
powłok graficznych czyli w bash :]
Programem którym zainstalujemy drukarke na USB będzie lpadmin. Z poziomu root`a wpisujemy następujące polecenia:
debian:~#lpadmin -p dj945c -E -P /usr/share/cups/model/HP/DeskJet_940C-cdj970.ppd.gz
debian:~#lpadmin -p dj940 -v usb://dev/usb/lp0
Można także lpadmin`em skonfigurować port LPT:
debian:~#lpadmin -p x4510 -E -P /usr/share/cups/model/Xerox/Dokuprint_450-hpijs.pd.gz
debian:~#lpadmin -p x450 -v parallel:/dev/lp0
Konfiguracja do drukarki sieciowej:
debian:~#lpadmin -p dj840 -E -P /usr/share/cups/model/HP/DeskJet_840C-cdj840.ppd.gz
debian:~#lpadmin -p dj840C -v socket://192.168.0.2:9100
Składnia polecenia:
-p – zainstaluj drukarkę
-E – aktywuj drukarkę
-P – użyj następującego sterownika
-v – definicja portu
Przygotowanie druku w sieci:
założenie katalogu i ustawienie odpowiednich praw:
debian:~#mkdir /var/spool/samba debian:~#chmod 777 /var/spool/samba
Konfiguracja smb.conf :
[global] printing = cups #ustawienia interfejsu druku printcap name = cups #określa ścieżkę do pliku z parametrami #drukarek, tutaj sprawę załatwia system #CUPS
[printers] path = /var/spool/samba #ścieżka do katalogu gdzie będą trzymane #kolejki druku. browseable = no guest ok = yes
writable = no printable = yes printer admin = root, @ntadmin #administratorzy drukarek
Powyższa konfiguracja nakazuje sambie wyświetlenie wszystkich drukarek
jakie są zdefiniowane w systemie CUPS jako oddzielne drukarki sieciowe.
Istnieje możliwość wyświetlenia w otoczeniu sieciowym drukarek które
mają być udostępniane, uzyskuje się to poprzez wpisanie w nazwie
udziału modelu drukarki.
Automatyczny dobór sterowników dla windows – sposób samby:
Samba, posiada funkcję doboru sterownika dla systemów łączących się z
drukarką, znacznie poprawia dynamiczność dużych sieci. Poniżej sposób
konfiguracji tych opcji:
printer driver = nazwa sterownika drukarki #ustawia łańcuch, który jest przekazywany #klientowi kiedy ten pyta jakiego #sterownika drukarki ma użyć w celu #przygotowania pliku do wydruku.
[global]printer driver file = ścieżka profilu #określa położenie pliku msprint.def #używanego przez Win9x.
printer driver location = ścieżka sieciowa #określa położenie sterownika drukarką, #domyślnie serwerPRINTER$.
Tworzymy udział dla sterowników drukarek:
[global] printer admin = root #konto administratora drukarki w sambie.
[PRINTER$] path = /etc/samba/drivers guest ok = no browseable = yes writable = yes write list = root admin users = root, @ntadmin
Założenie katalogów dla różnych systemów w udziale samby:
/W32X86# sterowniki dla Windows NT/2000/XP x86 /WIN40# sterowniki dla Windows 95/98/Me
Sterowniki postscriptowe:
Cups :
Każda drukarka może mieć zainstalowany standardowy sterownik
postscriptowy, a tłumaczeniem danych na format drukarki zajmie się w
tym przypadku Cups. Standard ten dysponuje szerokim zakresem funkcji,
ale obsługuje tylko Windows NT, XP, 2003.
Zaczniemy od ściągnięcia sterowników postscriptowych dla Windows z
serwera projektu CUPS:
wget ftp://ftp.cups.org/pub/cups/windows/cups-samba-1.1.16.tar.gz
kiedy zakończymy pobieranie i zainstalujemy w katalogu /usr/share/cups/drivers znajdują się potrzebne później sterowniki:
cupsdrvr.dll cupsui.dll cups.hlp
Adobe :
Sterowniki Adobe są o wiele trudniejsze do zainstalowania, nie
występują w postaci archiwa a jedynie jako plik wykonywalny exe. W tym
przypadku musimy zainstalować program na Windows. W zależności od
systemu pobieramy sterowniki:
Win9x/Me
http://download.adobe.com/pub/adobe/printerdrivers/win/4.x/drivers/aps426eng.exe
WinNt,Xp,2000
http://download.adobe.com/pub/adobe/printerdrivers/win/1.x/winsteng.exe
Jedynie w momencie instalacji możemy pozyskać sterowniki adobe, w
chwili instalacji znajdują się w katalogu tymczasowym TEMP, nie zamykaj
programu instalacyjnego, pobierz zawartość katalogu tymczasowego
zgodnie z poniższym spisem:
ADOBEPS4.DRV ADFONTS.MFM ADOBEPS4.HLP DEFPRT2.PPD ICONLIB.DLL PSMON.DLL
Wszystkie te pliki powinny zachować wielki rozmiar znaków w nazwie.
Następnie przenieś je do linuksowego katalogu:
/usr/share/cups/drivers
Następnie poszukaj pliku ADOBEPS5.DLL i z katalogu w którym go znajdziesz skopiuj pliki ADOBEPS5.DLL ADOBEPSU.DLL i ADOBEPSU.HLP do tego samego katalogu ze sterownikami:
/usr/share/cups/drivers
W tym momencie brakuje nam jedynie specjalnego zasobu dla sterowników, powyżej już przedstawiłem właściwą konfiguracje udziału.
Istnieje jeszcze jedno narzędzie do automatycznego przygotowania
udziału drukarek ze sterownikami i drzewa katalogów (dla każdego
rodzaju Windows), aby wyeliminować ręczną konfigurację, zrobimy to
programem:
cupsaddsmb -a
Po tym momencie zostaniesz poproszony o podanie hasła root do serwera
Samby. Jeśli autoryzacja nastąpiła pomyślnie powinieneś ujrzeć w
katalogu /etc/samba.drivers nowe katalogi WIN40 W32X86 ,
pierwszy zawiera sterowniki do windows 9x/Me w drugim 32bitowe
sterowniki Windows. Dodatkowo znajdziesz tam sterowniki wszystkich
drukarek zdefiniowanych w CUPS z rozszerzeniem .ppd .
Jedynie zostało nam uruchomić ponownie demona Samby.
Limity zadań drukarek:
Dodatkową ciekawą opcją po uruchomieniu automatycznego instalowania drukarek jest opcja limitów.
Można ustawić m.in.
liczbę zadań druku klienta o określonym przedziale czasu
całkowitą objętość zadań druku w danym okresie
zapobiec drukowaniu prywatnych dokumentów na drukarce kolorowej
przypisać koszty druku do poszczególnych wydziałów.
Przykłady poleceń:
limit 20 stron tygodniowo na użytkownika
lpadmin -p dj940c -o job-quota-period=604800 -o job-page-limit=20
wolumen druku dla drukarki do 2MB dziennie
lpadmin -p dj940c -o job-quota-period=86400 -o job-k-limit=2048
Wadą tego systemu jest to, że odnosi się ona do wszystkich użytkowników jednocześnie (globalnie).
Dodatkowo CUPS nie uwzględnia błędów podczas drukowania.
Dodanie sterowników producenta sprzętu do udziału:
Logując sie do w Windows na konto administratora drukarek (root),
dodamy sterowniki do udziału dla różnych systemów operacyjnych rodzinki
Windows.
Następnie przechodzimy do katalogu Drukarki i Faksy ,
ważne jest aby rzeczywiście przejść do tego katalogu, a nie jedynie
zaznaczyć drukarkę, którą samba wyświetli w zestawieniu zasobów,
wywołujemy menu kontekstowe zainstalowanej drukarki i wybieramy
properties(właściwości).
W tym momencie pojawi się pytanie: czy chcesz zainstalowąc
nieistniejący sterownik drukarki? Odpowiadamy No (nie). Następnie
uruchamiamy przycisk New Driver (nowy sterownik) na karcie Advanced (dodatkowe opcje). Zaznaczamy odpowiedni sterownik do naszej drukarki na wyświetlonej liście. Kliknięcie finish (gotowe) zakończy instalacje sterownika, ale nie lokalnie, a na serwerze samba. Tak zainstalowaliśmy sterowniki do WinNT,XP,2000 .
Aby uruchomić kreatora instalacji drukarki na Win9x/Me przechodzimy na kartę sharing
(udział). Może się zdążyć że wcześniej będziemy musieli aktywować
funkcję udostępniania. Zaznaczamy opcję Win95/98/Me i zatwierdzamy,
Windows poprosi nas o podanie ścieżki docelowej do plików sterowników.
Miejmy nadzieje że to bezpośrednio rozpakowane archiwum. Po kolejnym
zatwierdzeniu (ścieżki) rozpoczyna się transfer plików do serwera.
W ten sposób zakończyliśmy aktualizacje sterowników Windows na platformę Intela. (do góry)
6.Wydajność samby:
Szybkość kopiowania różnych plików protokołem SMB z serwera samby i do
niego, przewyższa rodowite serwery Microsoftu, Samba bardzo dobrze
spisuje się przy większych ilościach stacji.
Istnieje wiele “trybików” które należy podkręcić, aby cała machina (samba) śmigała jak trzeba.
Znaczący wpływ na szybkość ma sprzęt, mianowicie: dysk twardy, procesor
(magistrala), karta sieciowa, hub, liczba hostów w sieci. Wiemy
dokładnie że przepustowość kart sieciowych o wielkości 10Mb/s to na te
czasy muł,
procesor serii MMX także archaizm minionej epoki, wreszcie dysk 3600RPM
:( stosowanie hub'ów w sieci prowadzi do kolizji, tych wykrywanych i
tych które nie zostały wykryte przez sprzęt. Należy unikać podobnych
konfiguracji (jeśli budżet pozwoli).
Następnym etapem do poprawy wydajności naszej samby to kwestia ustawień programowych samej samby jak i całego systemu. Najważniejsze opcje – plik smb.conf :
log level = wartość #powyżej 3 znacznie spowolni działanie #serwera zasypując go mnóstwem danych o #pracy serwera.
read raw = wartość logiczna #umożliwia wykonywania szybkich #strumieniowych odczytów przez TCP przy #wykorzystaniu buforów 64KB, zalecana.
write raw = wartość logiczna #umożliwia wykonywanie szybkich #strumieniowych odczytów przez TCP przy #wykorzystaniu buforów 64KB, także #zalecana.
Blokady oportunistyczne to taka bestia która pozwala na zapis lokalny
plików przez klienta, co podnosi do 30% wydajność serwera. Użycie:
fake oplocks = wartość logiczna #zwolnienie z blokady plików które mogą #być przetrzymywane przez innych #klientów.
oplocks = wartość logiczna #umożliwia lokalne buforowanie plików.
veto oplocks files = ścieżka #nie zezwala na lokalne buforowanie plików #podanych w ścieżce.
max xmit = wartość (2048 domyślna) #określa maksymalny rozmiar pakietów, #parametr służący do optymalizowania #wolnych łącz.
read size = bajty (65 536 domyślna) #określa opcję buforowania dla serwerów, w #których prędkość dysków nie odpowiada #prędkości sieci, wymaga #eksperymentowania.
Okno zbiorcze TCP/IP
socket options = lista opcji gniazd #ustawia opcje gniazd specyficzne dla
#systemu operacyjnego. Opcja
#“SO_KEEPALIVE” powoduje że protokół
#TCP co cztery godziny sprawdza, czy
#klient jest wciąż dostępny. Opcja
#“TCP_NODELAY” powoduje
#wysyłanie nawet niewielkich pakietów w
#celu zmniejszenia zwłoki. Obie zalecane.
Inne opcje samby:
hide files = wzorzec #podanie wzorca określającego pliki które #powinny zostać ukryte, spowalnia serwer.
lpq chace time = czas #ustawia się w momencie kiedy samba #niepotrzebnie uruchamia kolejne zapytania #w ramach kolejki druku – domyślna i #rozsądna wartość to 10sec.
strict locking = wartość logiczna #opcja mówi sambie aby sprawdzała przy #każdym dostępie do pliku jego blokady, a #nie wtedy kiedy klient tego wymaga – #spowalnia serwer.
strict sync = wartość logiczna #samba zapisuje każdy pakiet na dysku i #czeka na dokończenie zapisu, kiedy klient #ustawi bit synchronizacji w pakiecie. #Windows 98 wysyła ten bit przy każdym #połączeniu – w efekcie użytkownicy #zauważą że serwer samby działa bardzo #wolno.
sync always = wartość logiczna #ustawienie tej opcji na YES każe sambie #zapisywać fizycznie na dysku danych. Ma #to sens w chwilach awarii – pozatym #bardzo spowalnia prace serwera.
wide links = wartość logiczna #uruchamia opcję podążania za #dowiązaniami symbolicznymi w unixach, #zalecana z opcja getwd cache, aby #buforować pewną ilość danych. Istnieje #także opcja follow symlink – którą można #wyłączyć aby całkowicie zapobiec #podążaniu za dowiązaniami.
(do góry)
Literatura:
1.www.samba.org
2.Pc word komputer Nr.1/2004
3.www.banita.pl (do góry)
Ps. Początkowo dokument ten miał służyć wyłącznie jako
pomoc dla mnie. Postanowiłem go poprawić i udostępnić gronu
internetowemu “dla Was”, nie uważam się za specjalistę Samby, więc
jeśli zrobiłem jakieś błędy proszę o kontakt i z góry dziękuję. Jeśli
masz jakieś sugestie lub inne pomysły i chcesz rozbudować ten dokument
kontaktuj się ze mną. |
Autor : Jarosław Bartnicki
|