Czym jest Serwer Samba? To narzędzie, które umożliwia udostępnianie plików i drukarek pomiędzy systemami, na przykład między systemem Windows a Linux. Serwer Samba ma wiele innych ciekawych funkcji, ale na potrzeby poniższego artykułu skupimy się na tej konkretnej.  

Serwer Samba – działanie  

Samba działa jako serwer plików, który umożliwia udostępnianie zasobów na sieci lokalnej lub zdalnej, jeśli taka będzie intencja. Serwer Samba działający na systemie Linux będzie udostępniał pliki i drukarki w sieci Windows. Serwer Samba korzysta z protokołów komunikacyjnych takich jak SMB/CIFS (Server Message Block/Common Internet File System), które są standardem w sieciach Microsoft. 

Samba umożliwia udostępnianie plików i drukarek na wiele różnych sposobów. Na przykład można udostępnić cały katalog lub tylko wybrane pliki. Można również zdefiniować dostępne dla użytkowników poziomy dostępu, takie jak tylko do odczytu lub do odczytu i zapisu. Serwer Samba umożliwia także udostępnianie drukarek, dzięki czemu użytkownicy mogą drukować dokumenty bezpośrednio z systemu Windows, a pliki zostaną automatycznie przesłane na serwer Samba. 

Ważną funkcjonalnością serwera Samba jest autoryzacja użytkowników, która umożliwia kontrolowanie dostępu do udostępnianych plików i drukarek. Można skonfigurować Sambę tak, aby korzystała z kont użytkowników systemu Linux lub z kont Samba. Serwer Samba jest wykorzystywany między innymi w sieciach biurowych, szkołach czy w domu. Dzięki niemu użytkownicy mogą łatwo i szybko udostępniać pliki i drukarki, bez konieczności posiadania specjalistycznej wiedzy technicznej. Z Samby korzystają także administratorzy systemów informatycznych, którzy potrzebują łatwego sposobu na udostępnienie zasobów sieciowych i zarządzanie nimi z poziomu systemu Linux. 

Serwer Samba – instalacja  

Przed rozpoczęciem konfiguracji serwera Samba, należy upewnić się, że jest on zainstalowany w systemie. Instalujemy Sambę w systemie Debian. 

apt-get install samba 

Serwer Samba – konfiguracja

Po zainstalowaniu Samba, należy skonfigurować plik smb.conf. Jest to plik konfiguracyjny serwera Samba, który znajduje się w katalogu /etc/samba/. Najlepiej przed rozpoczęciem pracy utworzyć sobie kopię pliku oryginalnego. Jest to bowiem główny plik konfiguracyjny dla usługi.

Plik konfiguracyjny Samba to jeden z najważniejszych elementów serwera Samba w systemie Linux. Odpowiada on za konfigurację usługi i kontrolę dostępu do udostępnianych plików i drukarek. Plik ten jest zwykle znajdowany w katalogu /etc/samba/smb.conf. Konfiguracja SMB składa się z kilku sekcji np.: global, homes i printers, a także innych sekcji, które mogą być używane do udostępniania innych zasobów.

Sekcja [global] definiuje globalne ustawienia Samba, takie jak nazwę i opis serwera, domenę, protokół, typ serwera i inne opcje. Przykładowe opcje konfiguracyjne w sekcji global to:

  • workgroup – określa nazwę grupy roboczej, do której należy serwer Samba
  • server string – opis serwera, który będzie wyświetlany w sieci
  • security – określa sposób autoryzacji użytkowników, np. user, share lub domain
  • map to guest – określa zachowanie dla nieautoryzowanych użytkowników, np. bad user, guest, nobody
  • guest account – określa konto użytkownika, które zostanie użyte dla nieautoryzowanych użytkowników
  • hosts allow/deny – określa listę adresów IP lub domen, które mają lub nie mają dostępu do serwera Samba
  • log file – określa plik dziennika zdarzeń dla Samba
  • max log size – określa maksymalny rozmiar pliku dziennika zdarzeń

Sekcja [homes] służy do udostępniania katalogów domowych użytkowników. Samba automatycznie tworzy ten katalog, jeśli nie istnieje. Przykładowe opcje konfiguracyjne w sekcji homes to:

  • browseable – określa, czy katalog domowy jest widoczny w przeglądarce sieciowej
  • comment – określa opis katalogu domowego użytkownika
  • read only – określa, czy katalog domowy jest tylko do odczytu

Sekcja [printers] służy do udostępniania drukarek w sieci. Przykładowe opcje konfiguracyjne w sekcji printers to:

  • comment – opis drukarki
  • path – określa ścieżkę do pliku drukarki w systemie
  • guest ok – określa, czy goście mogą korzystać z drukarki
  • printable – określa, czy plik jest drukowalny
  • browseable – określa, czy drukarka jest widoczna w przeglądarce sieciowej
  • Ponadto, istnieją inne sekcje konfiguracyjne, takie jak share, która umożliwia udostępnianie zasobów innymi użytkownikom sieci, czy user, która pozwala na określenie uprawnień dla poszczególnych użytkowników. Przykładowe opcje konfiguracyjne dla sekcji share to:
  • comment – opis udostępnianego zasobu
  • path – określa ścieżkę do udostępnianego katalogu lub pliku
  • guest ok – określa, czy goście mogą korzystać z zasobu
  • read only – określa, czy zasób jest tylko do odczytu
  • writeable – określa, czy zasób jest zapisywalny
  • valid users – określa, którzy użytkownicy mają dostęp do zasobu

Sekcja [myshare] w pliku konfiguracyjnym smb.conf odpowiada za definiowanie i konfigurowanie udostępnionych zasobów, które chcemy udostępnić przez serwer Samba.

W sekcji tej możemy zdefiniować wiele parametrów, takich jak:

  • nazwę udostępnionego zasobu (parametr name)
  • ścieżkę do udostępnionego katalogu (parametr path)
  • listę użytkowników, którzy mają dostęp do danego zasobu (parametr valid users)
  • typ zabezpieczeń (parametr security), tryb dostępu (parametr read only)
  • maskę tworzenia plików (parametr create mask)
  • maskę tworzenia katalogów (parametr directory mask).

Sekcja ta umożliwia także administratorowi definiowanie dowolnej liczby udostępnionych zasobów, które można dostosować do potrzeb użytkowników sieci.

Sekcja [netlogon] odpowiada za konfigurację lokalizacji plików skryptów logowania dla użytkowników. W tej sekcji można zdefiniować ścieżkę do katalogu zawierającego te pliki skryptów. Klienci Windows podczas logowania do domeny korzystają z tych plików, co umożliwia administratorom m.in. przypisywanie konkretnych ustawień dla poszczególnych użytkowników lub grup.

Sekcja [profiles] odpowiada za definiowanie lokalizacji profili użytkowników. Profil użytkownika zawiera informacje o preferencjach i ustawieniach systemowych, takich jak tapety, ikony pulpitu, ustawienia aplikacji itp. Dzięki przechowywaniu profili użytkowników na serwerze Samba, administratorzy sieci mogą łatwo zarządzać i udostępniać ustawienia systemowe między różnymi maszynami i użytkownikami.

Przykładowy plik konfiguracyjny:

[global]

workgroup = MOJAGRUPA

security = user

passdb backend = tdbsam

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

map to guest = Bad User

disable netbios = yes

server signing = mandatory

log file = /var/log/samba/%m.log

max log size = 1000

dns proxy = no

socket options = TCP_NODELAY

load printers = no

[homes]

comment = Katalogi Domowe

browseable = no

read only = no

create mask = 0700

directory mask = 0700

[printers]

comment = Drukarki

path = /var/spool/samba

browseable = no

printable = yes

guest ok = no

create mask = 0700

[myshare]

comment = Jakiś Udział

path = /path/to/my/share

valid users = azug

read only = no

create mask = 0770

directory mask = 0770

force group = mygroup

vfs objects = full_audit

full_audit:prefix = %u|%I|%S

full_audit:success = mkdir rename unlink rmdir pwrite

full_audit:failure = none

Serwer Samba – Ustawienie hasła

Konieczne jest ustawienie hasła nie tylko do samego konta w systemie Linux, ale także do konta SMB.

smbpasswd -a azug

Dopiero po ustawieniu tego hasła będzie możliwość skorzystania z konta do usługi Samba.

Serwer Samba – Podłączenie się do serwera np. z komputera

W tym artykule pokaże jak na przykładzie systemu MacOS podłączyć się do właśnie utworzonego serwera Samba.

Pojawi nam się np. takie okno:

Zatwierdzamy połączenie i pojawi nam się w przypadku systemu MacOS prośba o wybór udziału, który zamontujemy.

Wybieram swój katalog domowy.

Samba została poprawnie zamontowana w systemie i mogę już do niej przejść by tworzyć pliki i foldery.

Od strony systemu operacyjnego wygląda to tak:

Od teraz wszystko co wrzucimy do folderu zamontowanego w systemie, pokaże się na serwerze.

Serwer Samba – Praktyczne wskazówki bezpieczeństwa

Na koniec przejdźmy jeszcze przez praktyczne wskazówki bezpieczeństwa. Jest ono niezwykle ważne w przypadku serwera Samba.

Konfiguracja pliku smb.conf jest kluczowa dla bezpieczeństwa serwera Samba. Oto kilka ważnych zagadnień, które należy wziąć pod uwagę podczas konfiguracji serwera Samba:

  • Firewall – zwłaszcza jeśli wystawimy sambę na świat – zdefiniujmy adresy, z których możliwe jest łączenie się do samby. Te usługi są bowiem celem licznych ataków hakerskich.
  • Autoryzacja – określenie, które użytkownicy mają dostęp do udostępnianych plików i drukarek. W sekcji global należy wybrać odpowiedni tryb autoryzacji, np. user, share lub domain, w zależności od potrzeb. Należy również określić, którzy użytkownicy mają dostęp do poszczególnych udostępnionych zasobów.
  • Hasła – Samba powinna być zawsze chroniona hasłem, aby uniknąć dostępu niepowołanych użytkowników. W sekcji global można określić ustawienia związane z bezpieczeństwem, takie jak password server, encrypt passwords czy security. Należy również ustawić hasła dla wszystkich użytkowników, którzy będą mieli dostęp do serwera samba i jakichkolwiek zasobów udostępnionych za jego pomocą.
  • Ograniczenia dostępu – Samba pozwala na określenie, kto ma dostęp do poszczególnych plików i katalogów. Można to zrobić, określając odpowiednie uprawnienia dla poszczególnych użytkowników lub grup w systemie Linux.
  • Dziennik zdarzeń – Samba generuje dziennik zdarzeń, który zawiera informacje o działaniach użytkowników na serwerze. Dziennik ten może być używany do monitorowania i diagnozowania problemów związanych z serwerem Samba. W sekcji global można określić ustawienia związane z dziennikiem zdarzeń, takie jak log level czy log file.
  • Zaktualizuj system i oprogramowanie – Regularnie aktualizuj system i oprogramowanie, aby uniknąć znanych luk w zabezpieczeniach. W przypadku serwera Samba, upewnij się, że korzystasz z najnowszej wersji oprogramowania.
  • Używaj dostępnych narzędzi do skanowania – Regularnie skanuj serwer Samba z użyciem zewnętrznych narzędzi, takich jak nmap, aby wykryć potencjalne luki w zabezpieczeniach.
  • Zabezpiecz połączenia – Samba domyślnie używa protokołu SMB, który nie jest bezpieczny. Aby zabezpieczyć połączenia, należy skonfigurować Sambę do korzystania z protokołu SMB over SSH lub SMB over SSL/TLS.