poniedziałek, 18 lutego 2013

Samba i FTP moja konfiguracja


Pokaż komentarze


Pisałem jakiś czas temu o automatycznym uruchamianiu maszyny VirtualBoxa pod Windowsem. Było to w tym wpisie: virtualbox inaczej.
Wpis ten był wstępem, do mam nadzieję, kilku artykułów. Życie pokaże czy się uda, a dziś na dowód dobrych chęci pierwszy z nich:)

W wirtualnej maszynie na VirtualBoxie postawiłem Ubuntu server 12.04.2 32bit. Wersja taka z kilku powodów, po pierwsze RAM jaki przydzieliłem, na chwilę obecną to 512MB. Kolejny argument za, to to, że jest to wersja LTS, czyli z długim okresem wsparcia. Kolejna sprawa to to, że 12.10 w wersji serwerowej 32bit nie występuje.

CZEGO OCZEKIWAŁEM OD TEGO SERWERA?

Kilka kwestii mnie interesował. Oto one, kolejność przypadkowa:

  • chciałem mieć dostęp zdalny przez SSH,
  • chciałem mieć dostęp w sieci lokalnej do danych zawartych na dysku - SAMBA
  • chciałem mieć dostęp zdalny - FTP, wybrałem prosty, stabilny, wydajny i bezpieczny VSFTPD
  • no i ostatnia rzecz na początek, Michał uświadomił mi, że chcę mieć ownCloud :)
Wkleję za chwile moje pliki konfiguracyjne  i pokrótce omówię. Dziś tak jak napisałem w tytule będzie o sambie i vsftpd.

ZAŁOŻENIA KONFIGURACYJNE:

Programy te są niesamowicie skalowalne i konfigurowalne. Dlatego opisanie całości to niezła encyklopedia by wyszła. Moje potrzeby były takie:
  • użytkownicy wchodzą na swoje konta i widzą swój katalog domowy
  • powyższa reguła stosowana jest do samby jak i do ftp
  • logując się po ssh również nie mogą wyjść poza swój katalog
  • dodatkowo moje synchronizowane katalogi z notebookiem (zdjęcia i filmy z wakacji) będą udostępniane konkretnemu komputerowi celem "eksponowania" ich za pomocą XBMC na telewizorze.
Mam nadzieję, że założenia są zrozumiałe, zatem przystąpmy do konfiguracji. Zaczniemy nieco od końca, zablokujmy możliwości latania po dysku użytkownikom logującym się po SSH.

Logujemy się jako root:
sudo su
i wykonajmy polecenia:
dpkg-reconfigure -plow adduser
Zostaniemy zapytani czy zablokować przeglądanie innych katalogów domowych poza swoim. Następnie to:
chmod o-r /home/*
dodatkowo możemy zabronić przeglądania głównego drzewa katalogów na naszym dysku. Po co mają się "szwendać" :)  :
chmod a-r /
Przy ewentualnej próbie zmiany katalogu spotka ich taka oto niespodzianka:


Następnie wyłączyłem możliwość podglądania kto jest zalogowany i co robi przez polecenia:
chmod o-r /var/log/wtmp
chmod o-r /var/run/utmp
Poniżej efekt ich działania przed i po ich wykonaniu. Użytkownicy nie widzą innych :)


Teraz zajmijmy się instalacją samby i jej konfiguracją, biorąc pod uwagę, że jesteśmy zalogowani jako root pomijam w poniższych poleceniach sudo:
apt-get install samba
Plik konfiguracyjny SAMBY znajduje się w /etc/samba i nosi nazwę smb.conf. Wyedytowałem go podmieniając zawartość na:

[global]
workgroup = workgroup
netbios name = backup
wins support = yes
security = user
encrypt passwords = yes
[homes]
comment=Katalog domowy użytkownika %S
path=/home/%S
valid users = %S administrator
force user=%S
writeable = yes
browseable = no
[zdjecia]
comment = zdjecia dla xbmc
path = /home/marcin/backup/Obrazy/
browseable = yes
writeable = no
guest ok = no
hosts allow = 192.168.0.112
[wideo]
comment = filmy dla xbmc
path = /home/marcin/backup/Wideo/
browseable = yes
writeable = no
guest ok = no
hosts allow = 192.168.0.112
Dzięki powyższej konfiguracji uzyskałem to czego wymagałem czyli:
  • sekcja [zdjecia] i [wideo] są widziane tylko i wyłącznie przez komputer o ip: 192.168.0.112. Nota bene to komputer, który jest "matką" dla tej wirtualnej maszyny. 
  • sekcja [homes] skonfigurowana jest tak, że każdy użytkownik przeglądając siec, widzi swój katalog domowy innych nie. Jeżeli znamy nazwę użytkownika i hasło możemy dostać się "ręcznie" do niej, jednak z automaty jej nie zobaczymy.
  • sekcja [global] to ogólne ustawienia grupy roboczej i sposobu uwierzytelniania.
Po zapisaniu konfiguracji wystarczy zrestartować SAMBĘ. Nie jest to konieczne, gdyż jej zasoby uaktualniają się automatycznie co minutę. Niecierpliwi mogą to zrealizować poleceniem:
service smbd restart
Pamiętajmy aby dodać użytkownika do samby:
sudo  smbpasswd -a nazwa_usera
VSFTPD

Instalacja:
apt-get install vsftpd
mkdir -p  /var/chroot/vsftpd
No i znów konfigurujemy, tak, żeby logując się na ftp wpaść do swojego katalogu.
W moim przypadku do pliku konfiguracyjnego:
nano /etc/vsftpd.conf
wkleiłem poniższą treść zastępując to co tam zastałem:

nopriv_user=ftp
listen=YES
listen_port=21
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
local_max_rate=150000
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
max_clients=5
max_per_ip=2
banner_file=/etc/vsftpd/vsftpd.banner
chroot_local_user=YES
secure_chroot_dir=/var/chroot/vsftpd
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot.list
pasv_enable=yes
pasv_max_port=37500
pasv_min_port=27200
pasv_addr_resolve=YES
pasv_address=adres.dyndns.org
Ostatnie dwie linijki już kiedyś tłumaczyłem: http://netbit73.blogspot.com/2012/04/vsftpd-i-zmienne-ip.html


Do pliku, który musimy stworzyć, wklejamy nazwy użytkowników lokalnych, którzy mają mieć dostęp do FTP:
nano /etc/vsftpd/chroot.list

W plik o nazwie:
nano /etc/vsftpd/vsftpd.banner
wklejamy treść, jaką ma się przedstawiać nasz serwer FTP gościom. NP:
Prywatny serwer ftp, jeżeli jesteś tu przez przypadek,
opuść go. W innym wypadku łamiesz prawo!
Serwer tylko dla zaproszonych osób.
Czy coś równie "naiwnego". Pełna dowolność:) Restartujem serwer:
service vsftpd restart
i powyższe założenia zostały niniejszym spełnione.

AKTUALIZACJA

Jeżeli w pliku:
/etc/vsftpd.conf
Zamiast:
chroot_local_user=YES
damy:
 chroot_local_user=NO
Wszyscy lokalni użytkownicy będą mieli dostęp do FPT, a Ci którzy będą wpisani w plik:
 /etc/vsftpd/chroot.list
będą mieli zablokowany dostęp. 


Etykiety

/etc/network/interface 12.04 precise pangolin 2clickupdate 2clickupdatecore accounts adesk admin adobe air ailurus akonadi aktualizacja ubuntu alias allegro alpha3 alsamixer ankieta apache apparmor apt-fast apt-get aptitude arandr arista ascii audio avast axel backup badblock baner bash bashrc beta bg bing bleachbit blip blkid blog blokada ikon bluetooth błąd bootchart brasero bug c_rehash cache caps_lock cardapio cat cd-rw centrum-oprogramowania certutil certyfikat chattr checkinstall chmod chown chrome chromium ciekawostki clipboard cmd compizconfig-settings-manager conky conky_netbit cookies cp cpuburn crebs cryptkeeper ctrl+alt+backspace cups cups-pdf curl czas pracy na baterii czcionka dansguardian dash dbupdate dconf-editor dconf-tools dd deb debian denyhosts depicus dev devilspie dhc dhcp dhcp3-server digikam diskdump disown dist-upgrade distro timeline dkclient dlna dns dns-320 do-release-upgrade docky dpkg dropbox dtrx dvd-rw dyski dźwięk echo eclip-x eizo ekg2 elementary else emense empathy enca error eth0 eth1 eth2 eth3 ethtool ext4 ext73 Faenza Faience fdisk fg figlet file-browser firefox firmware flash foff fog project foldery font foto free -m freetuxtv fstab ftp gadu-gadu gconf gconf-cleaner gdebi gdiskdump gdm gg git giver gksu glippy gmail-notifer gnac gnash gnome gnome-disk-utility gnome-do gnome-shell gnome-tweak-tool gnomebaker google gparted gpedit.msc gpg gra grafika grep grsync grub grub2 gui gurlchecker gwibber hardstatus hasła hdd hold homerun hostname hosts hotmail hp2100 htop http https humor i-nex iconv ideal.pl if ifconfig ikony indicator applet indicator-multiload instalacja intel ip iperf ipla iptraf iso jabber jail java jNetMap jobs k3b kadu katalog kde keiryng kernel kernel instalator kernel terminator kernel wywalator keylock kill killall klonowanie klucze kodeki kodowanie kontrola rodzicielska konwersja kubuntu kupfer kvm lamp launchpad libpeerconnection.log librecad libreoffice libssh lightdm lighttpd linux livecd load log lsb_release lsb-core lucid macosx make make install maverick meerkat mc medibuntu menu microsoft minidlna mint minus mkfs mkfs.ext3 moc monospace moonlight mount mount-error-cannot-allocate-memory multi-flex multiboot multicd multimedia muzyka mysql namebench nanny nano napisy nas natty nautilus nautilus-gksu nautilus-open-terminal ncdu netactivity news nmap notify-osd nvlc o2 oneiric ocelot opendns openoffice openssh-client openssl outlook owncloud pac pacmanaer paczka paczki panel partial partycje passwd pastie pdf phatch photivo photofilmstrip php phpmyadmin phpsysinfo pidgin pidof ping pisak pkill plank plasma pliki plugin płatne programy pogoda pojemność baterii polecenia polityka prywatności poweroff ppa ppa-purge ppasearch procesor przedlądarka pulpit pulseaudio pxe pxe server python qnap quantal radio ram raw rawtherapee rc.local rdesktop rdp rdpv5 recovery redshift regedit.exe remastersys remove-apt-repository renamer repozytorium rescueboot resize grip rfkill rhythmbox rj45 rkhunter rm root rootkit rtorrent saidar samba sbackup scp screen screenrc sdb seagate sed sentymentalnie server serwer sftp share shell shellinabox shotwell shutdown shutter sieć silicon silicon empire silverlight SimpleHTTPServer skróty klawiszowe skrypt skydrive smestorage sparkleshare specto splash sprzęt squid srt ssd ssh ssh-copy-id ssh-keygen ssl stacja graficzna stały ip styl su subtitleeditor sudo swap swat sycany synaptic sync synchronizacja synchrorep synology sysv-rc-conf szybkość sieci tablet tabulator tahoma tak tapety tar.bz2 tar.gz tasksel tekst telefon telepathy-oxygen telepathy-sunshine telnet temat terminal terminal server client test testdrive tetris tftpd tgz theme thunderbird tinyproxy tło top torrent traceroute transmission transmission-daemon trashindicator treminal trick truecrypt trusty tryb awaryjny ttf tune2fs TV ubuntu ubuntu.kubuntu.terminal udev-notify UID umount unity update update-ca-certificates update-grub upgrade upnpc usb user ushare uuid vbox vboxmanage veromix viewnior virtualbox visudo vlc vncviewer vsftpd w wacom wake on lan webmin wget who whowatch wifi windows windows 8 windows server 2012 windows7 wine wirtualizacja wlan wodim wol wp7 wskaźnik baterii www wygląd x2go x2goclient xbmc xclip XDG_DIR xkill xorg xorg-serwer xorg.conf xterm yes yetris youtube youtube-dl zenity zip zrzut ekranu