Spouštění a konfigurace služeb Přednáška pro týdenní praktikum UNIXu 2010
Služby Též zvané servery WWW (Apache) Poštovní server (Postfix, Sendmail) FTP Databázový (MySQL, PostgreSQL) SSH DNS DHCP X server (XDM, KDM, GDM)
Spuštění a vypnutí Spouští se automaticky při startu nebo ručně Vypínají se ručně nebo při vypnutí počítače Pozor při pádu počítače nemusí naběhnout všechny korektně nutná kontrola Umístění spouštěcích souborů je v adresáři /etc/init.d (anebo /etc/rc.d) Automatické spuštění podle runlevelu Který se spouští zjistíme a změníme v souboru /etc/inittab (pozor Ubuntu funguje zcela jinak) Jednotlivé runlevely v /etc/rc2.d (nebo podobně)
Ruční obsluha Př. Apache 2 Spuštění: /etc/init.d/apache2 start Zastavení: /etc/init.d/apache2 stop Restart: /etc/init.d/apache2 restart Poznámky: Další možné příkazy reload, force-reload, status... V SUSE se používá rcapache2 start (apod.) V Gentoo se používají příkazy rc-status a rcupdate V Arch Linuxu je vše v souboru /etc/rc.conf
WWW server Apache, Apache 2 Pro Linux existují i jiné lighttpd nebo nginx Apache byl vyvinut v NCSA (National Center for Supercomputing Aplications) na univerzitě v Illinois. Hlavní autor Rob Mc Cool Později kompletně přepsán nezávislou komunitou, za pomoci záplat zasílaných mailovou konferencí. Hlavní správci vývoje Brian Behlendorf, Roy Fielding a Cliff Skolnick
Autoři Apache (Apache 2) Robert McCool (1973) Brian Behlendorf (1973) Roy T. Fielding (1965)
Konfigurace Apache Vyčerpávající dokumentace na domovských stránkách Apache zde Česky třeba zde Logování je v souboru /var/log/apache2 Je nutné povolit protokoly HTTP popřípadně HTTPS
PHP Skriptovací jazyk Skoro nutnost instalace V některých distribucích je nutné jej povolit (skoro jistě bude po instalaci automaticky povolen) Základní konfigurační soubor /etc/php.ini anebo /etc/php5/apache2/php.ini (je celkem dobře okomentovaný) Dokumentace zde (pozor verze nejsou zpětně kompatibilní nepoužívat starou dokumentaci)
PHP Tvůrce Rasmus Lerdorf narozen v Grónsku, dnes žije v Kanadě PHP vymyslel kolem roku 1994
Databáze SQL MySQL informace zde nebo zde pro nekomerční, domácí a vnitropodnikové použití zdarma pro komerční je v některých případech nutné mít licenci Doporučuji hlavně začátečníkům nainstalovat program PHPMyAdmin PostgreSQL informace zde použití zdarma
LAMP Ustálený název pro server běžící na Linuxu a používající Apache, MySQL a PHP Variace LAMR (namísto PHP Ruby) WAMP
FTP Dnes se již nedoporučuje používat Lepší je ftp přes SSH (scp, sftp) Seznam FTP serverů zde
DHCP DHCP Dynamic Host Control Protocol Systém navržený pro automatické přidělování TCP/IP parametrů klientům. Je možné přidělovat i adresy dle ethernetových adres (MAC) a to případně i napevno. Konfigurace v /etc/dhcpd.conf Musí běžet program dhcpd Konfigurace popsána například zde
DNS DNS Domain Name (Server System Service) DNS server poskytuje internetové adresy počítačů Převádí doménová jména na IP adresy Př. student.prf.jcu.cz -> 160.217.211.211 V Linuxu je to obvykle program bind Nejčastěji používané adresy je možné uvést i v souboru /etc/hosts
Příklad /etc/hosts 127.0.0.1 localhost 127.0.1.1 muj_server 160.217.211.211 student.prf.jcu.cz student 213.29.7.27 www.centrum.cz centrum
Poštovní server Programy pro obsluhu pošty (mailery) Sendmail Postfix Exim Nutno řešit další problémy Spam Spamassassin Viry ClamAV (Classic Mail Antivirus) O vlastní doručení do schránek se starají jiné programy Dovecot Procmail
Sendmail Napsal Eric Allman (1955 USA) kolem roku 1980, původně pro BSD Obtížně konfigurovatelný a starší verze mají problémy s bezpečností Monolitický
Postfix Napsal Wietse Zweitze Venema (1951 NL) kolem roku 1998 Vývoj podporován firmou IBM Modulární a dobře konfigurovatelný
Vytváření mail serveru Problém Skuteční uživatelé Virtuální uživatelé Viry, červy Nastavení spam filtru možno řešit outsourcingem Povolení protokolů SMTP, SMTPS IMAP, IMAPS POP3, POP3S Šifrované spojení TLS (neumí Outlook), SSL Zde je velmi pěkný návod
LDAP Jiný systém pro přebírání hesel a informací o uživatelích LDAP = Lightweight Directory Access Protocol Stromový databázový systém Mezi různými operačními systémy Používán i na naší Univerzitě Je více verzí LDAP, nejvíce se používá volně šiřitelný systém openldap Každý záznam je jednoznačně pojmenován má své DN (Distinguished Name) Nastavení v /etc/ldap Návod třeba zde
LDAP Příklad struktury Univerzita Prirodovedecka_fakulta Ucitele Pech Jmeno Heslo Prokysek Studenti Pedagogicka_fakulta
XDMCP XDMCP = X Display Manager Control Protocol Umožňuje připojit se z klientských počítačů k serveru v grafickém režimu Uživatel má pocit jako by seděl u serveru Klienti mohou být slabší počítače aplikace takto běží na serveru U klientů rozhoduje pouze kvalita síťové karty, grafické karty a velikost paměti Klienti mohou být bezdiskové stanice
XDMCP - server Musí být XDMCP povoleno obvykle se ale zakazuje přihlášení roota přes XDMCP Používáme li na serveru xdm pak povolíme v /etc/x11/xdm/xdm Používáme-li kdm pak pomocí grafického nastavení anebo v /opt/kde/share/config/kdm/kdmrc (pozor může to být i jinde je nutné najít soubor kdmrc) Používáme-li gdm pak opět v grafickém nastavení anebo v /etc/x11/gdm/gdm.conf
XDMCP - klient Z příkazové řádky (nesmí běžet X server) se přihlásíme: X query 192.168.0.1 Anebo nastavíme přihlášení při startu systému přímo v souboru /etc/inittab dopíšeme na konec # Run xdm in runlevel 5 x:5:respawn:/usr/bin/x11/x -query 192.168.0.1
XDMCP nevýhody Zatěžuje to síť Nutné mít opravdu výkonný server Nutná rychlá síť Nelze takto přenášet zvuk je ale možné pouštět hudbu na lokálních počítač v textovém módu Všechna CD, USB disky a diskety je nutné vkládat do serveru
XDMCP výhody Jednoduchost Nízké hardwarové nároky na klienty možnost nákupu levných vyřazených počítačů vhodné pro školy Bezpečnost vše se nastaví pouze na serveru
DHCP DHCP Dynamic Host Control Protocol Systém navržený pro automatické přidělování TCP/IP parametrů klientům. Je možné přidělovat i adresy dle ethernetových adres (MAC) a to případně i napevno. Konfigurace v /etc/dhcpd.conf Musí běžet program dhcpd Je třeba nastavit i klienty (nějaký balík dhclient). Je třeba nastavit, které parametry si bude klient načítat (pozor na DNS u ADSL)
SSH
Co je SSH SSH = Security Shell Vytváří transparentně šifrovaný komunikační kanál mezi dvěma místy v síti. Existují dvě verze SSH má i komerční verzi, není open OpenSSH častější, součástí všech běžných linuxových distribucí
Spuštění SSH SSH je nutné spustit jako daemon /etc/init.d/ssh start (Debian, Ubuntu) /etc/init.d/sshd start (Gentoo) /etc/rc.d/sshd start (Arch) rcsshd start (SUSE) Je třeba nastavit konfiguraci v /etc/ssh/sshd_config Obvykle bývá zakázáno vzdálené přihlášení roota doporučuji ponechat
Co SSH umí vzdálené přihlášení přenos souborů sftp, scp, fish spouštění příkazů na vzdáleném počítači (i v grafickém režimu) směrování portů zabezpečení šifrovaného přenosu
Vzdálené přihlášení ssh uzivatel@pocitac.nekde.cz Pokud se lokální a vzdálený uživatel jmenují stejně není jej třeba uvádět platí i pro všechny následující příkazy Při prvním přihlášení k danému serveru se nás ptá, zda to myslíme vážně a ověří si se vzdáleným počítačem vzájemně identitu
Použití klíčů Pohodlnější přístup heslo zadáváme jen jednou Klíč veřejný (public) a osobní (private) Je dobré je šifrovat (ale není to povinné) šifruje se metodou DSA, RSA1 (nedoporučuje se) a RSA2 Vytvoření v Linuxu: ssh-keygen -t typ (typ = dsa, rsa1 a rsa) Např: ssh-keygen t dsa
Použití klíčů Ve většině literatury se doporučuje použít DSA Pod Windows má generátor klíčů PuTTY Při vytváření jsme dotázáni na heslo není povinné, ale doporučuje se nastavit nějaké velmi bezpečné heslo. Klíče jsou uloženy v adresáři ~/.ssh/ Soubory id_dsa.pub a id_dsa Na vzdáleném počítači jsou v souboru ~/.ssh/authorized_keys
Použití klíčů Zkopírování klíče na vzdálený počítač ssh-copy-id -i ~/.ssh/id_dsa.pub uzivatel@pocitac.nekde.cz Nyní je nutné zajistit, aby na lokálním počítači byl klíč brán v úvahu V Linuxu spuštěním programu ssh-add Ve Windows spuštěním programu PageAnt z Putty (umí naimportovat klíč vytvořený v Linuxu) Budeme dotázáni na heslo klíče Nyní se ale již můžeme přihlašovat ke vzdáleným počítačům bez hesla
Přenosy souborů sftp stejné ovládání jakou u ftp sftp uzivatel@pocitac scp jako u cp scp uzivatel@pocitac:/cesta/soubor. scp dopis.txt uzivatel@pocitac:soubor.txt scp uzivatel@pocitac:*.jpg. V KDE můžeme v programu konqueror použít protokol fish spustíme konqueror a zadáme do adresního řádku cestu jako fish://uzivatel@pocitac
Spouštění příkazů na vzdálených počítačích ssh uzivatel@pocitac prikaz Například ssh pechj@home.pf.jcu.cz uptime Provede se příkaz a spojení se ukončí Příkaz i jeho výstup jsou šifrovány
X Window příkazy přes SSH Vzdálený počítač to musí podporovat Na vzdáleném počítači musí běžet XServer a my musíme být také v grafickém režimu Nutná úprava souboru (na vzdáleném počítači): /etc/ssh/sshd_config Nutné odkomentovat anebo dopsat tyto dva příkazy: X11Forwarding yes X11DisplayOffset 10 Nezapomeňte restartovat ssh
X Window příkazy přes SSH Nyní se přihlásíme s přepínačem -X ssh -X uzivatel@pocitac Nyní již spustíme potřebný příkaz xclock &
SSH problémy Hlásí, že došlo ke změně klíče. Buď se přihlašujeme k nesprávnému (podstrčenému) serveru nebo došlo k přeinstalaci Odebereme klíč: ssh-keygen -R student ssh-keygen -R 160.217.211.211 Could not open a connection to your authentication agent. Pomůže příkaz: exec ssh-agent bash
Firewally a iptables
síťové zařízení, které slouží k řízení a zabezpečování síťového provozu mezi sítěmi s různou úrovní důvěryhodnosti a/nebo zabezpečení. Firewall
Druhy firewallu Podle konstrukce Softwarové Hardwarové Podle činnosti Paketové filtry Aplikační brány Stavové paketové filtry Stavové paketové filtry s kontrolou paketů a IDS (Intrusion Detection Systems systémy pro detekci útoků)
Demilitarizovaná zóna Demilitarizovaná zóna (DMZ) leží mezi hraniční sítí a interní sítí a je oddělena firewally na obou stranách.
Iptables Linuxový nebo UNIXový nástroj pro práci se síťovou komunikací Musí být podporován v jádře Umožňuje stavět firewally Kontrola paketů adresy, protokoly Paket který vyhoví jedné podmínce už není dále kontrolován, ale je propuštěn či zahozen
Ukázka firewallu Napsaného pomocí iptables Tento skript je uložen v /etc/init.d a je nastaveno jeho automatické spuštění při startu Soubor blacklist.txt seznam IP adres ze kterých je zakázán jakýkoliv přístup Soubor whitelist.txt seznam adres ze kterých je povoleno vše
Ukázka firewallu #!/bin/sh # Firewall WHITELIST=/etc/firewall/whitelist.txt BLACKLIST=/etc/firewall/blacklist.txt ALLOWED="22 80" #Odstranění stávajících pravidel iptables -F iptables -t nat -F
Ukázka firewallu #Povoleni vseho z /etc/firewall/whitelist.txt for x in `grep -v ^# $WHITELIST awk '{print $1}'`; do echo "Povoluji $x..." iptables -A INPUT -t filter -s $x -j ACCEPT done #Zakazat /etc/firewall/blacklist.txt for x in `grep -v ^# $BLACKLIST awk '{print $1}'`; do echo "Blokuji $x..." iptables -A INPUT -t filter -s $x -j DROP done
Ukázka firewallu #Ktere porty se povoli tem co nejsou v blacklistu for port in $ALLOWED; do echo "Povoluji port $port..." iptables -A INPUT -t filter -p tcp --dport $port -j ACCEPT done #A vse ostatni zahodit iptables -A INPUT -p tcp --syn -j DROP
Další možnosti iptables # Vytvoreni retezu syn-flood pro detekci utoku s odeprenim sluzeb iptables -t nat -N syn-flood # Omezeni 12 novych spojeni za sekundu (po zjisteni narazu 24 za sek.) iptables -t nat -A syn-flood -m limit --limit 12/s --limit-burst 24 -j RETURN iptables -t nat -A syn-flood -j DROP
Další možnosti iptables # Kontrola utoku DoS s odeprenim sluzeb iptables -t nat -A PREROUTING -i eth0 -d 160.217.96.179 -p tcp --syn -j syn-flood iptables -t nat -A PREROUTING -i eth0 -d 160.217.96.178 -p tcp --syn -j syn-flood #Zahazovani paketu TCP "Vanocni stromecek" iptables -t nat -A PREROUTING -p tcp --tcp-flags ALL ALL -j DROP iptables -t nat -A PREROUTING -p tcp --tcp-flags ALL NONE -j DROP
Windows a Linux
Vztah Windows a Linuxu Převod souborů Konverze Diakritika Připojení disků Aktuální počítač Vzdálený počítač
Konverze souborů MS Office vs. OpenOffice.org problémy Kódování Makra Obrázky Vzorce Celkem bez problémů OpenOffice 2.0 a Office 2000 OpenOffice umí pracovat s formáty souborů MS Office, naopak to není možné Při pochybnostech převést přes formát rtf.
Konverze textových souborů Windows a Linux používají jiné ukončení řádků pro vzájemnou konverzi je možno použít v Linuxu programy dos2unix a unix2dos Př: unix2dos soubor.txt Pro převod kódování je v linuxu program cstocs Př: cstocs stary.txt 1250 il2 >> novy.txt 1250 a il2 jsou kódování (Windows 1250, iso-8859-2) Další možné kódování asci, il1, kam, mac, utf8 Je nutné nainstalovat balíky tofrodos a cstocs
Disk z Windows na Linux v aktuálním počítači Disk ve formátu FAT Lze připojit zcela bez problémů Např: mount /dev/hda1 /mnt/c -t vfat Proto se fat používá pro výměnná zařízení (flash, floppy) není problém s připojením ve Windows i v Linuxu Často se používá jeden oddíl ve formátu FAT FAT má omezení nemožnost nastavení práv, maximální velikost Připojení je pro čtení i zápis
Disk z Windows na Linux v aktuálním počítači Disk ve formátu NTFS Např: mount /dev/hda2 /mnt/c -t ntfs-3g Pozor na rozhozená práva při kopírování z NTFS do Linuxu soubory mají nastavená práva na spuštění a nemají právo na zápis ani pro vlastníka Zápis do /etc/fstab /dev/sda1 /mnt/windows ntfs-3g defaults,umask=022 0 0
Disk z Linuxu na Windows v aktuálním počítači Disk ve formátu ext2, ext3 Lze připojit pomocí programu Total Commander Musí se doinstalovat plugin ext2 Pouze pro čtení Jiné formáty (ReiserFS, XFS, JFS ) Nelze připojit Z toho důvodu doporučuji alespoň jeden oddíl v Linuxu mít jako ext3
CD disky Musí obsahovat rozšíření pro Windows i Linux Pro Windows se jmenuje Joliet Pro Linux RockRidge Je třeba si projít nastavení ve vypalovacím programu
Diskety z Windows Balík mtool Pro práci s disketami a přepisovatelnými výměnnými disky (ZIP) ve formátu FAT pod Linuxem Příkazy mcopy, mdel, mformat Manuál je zde: http://mtools.linux.lu/mtools.html
Připojování disků ze vzdálených počítačů V obou případech je nutné mít nainstalován program samba (balík samba) Jedná se o program pracující s protokolem SMB (Server Message Block) Pro připojení Windows z Linuxu slouží Samba Client (balíky smbclient a smbfs)
Připojování vzdáleného disku z Windows do Linuxu Zjištění možných disků pomocí programu smbclient Např.: smbclient -L ki1.pf.jcu.cz Vlastní připojení pomocí smbmount ten využívá program smbmnt smbmount //ki1/vyuka /home/vyuka -o username=user,password=heslo Odpojení pomocí smbumount Příkazy smbmnt a smbumount (obvykle v /usr/bin) musí mít nastaven suid bit (např. pomocí mc). Pozor smbmount naopak nesmí
Připojení disků z Linuxu do Windows Musí být spuštěny démoni smbd a nmbd /etc/init.d/smbd start /etc/init.d/nmbd start V Gentoo stačí /etc/init.d/samba start Je nutné zajistit jejich spuštění při startu počítače Základní konfigurační soubor /etc/samba/smb.conf Seznam uživatelů pro nastavení práv /etc/samba/smbusers Musí existovat v /etc/passwd
Programy samby smbpasswd pro nastavení hesel uživatelů v /etc/samba/smbusers testparm test syntaktické správnosti /etc/samba/smb.conf. Doporučuje se spustit pro každé změně testprns test připojitelnosti síťových tiskáren pomocí samby
Úprava souboru smb.conf Nejprve si udělejte zálohu Po každé změně proveďte kontrolu syntaxe pomocí programu testparm Pro projevení změn v okolí je třeba restartovat smbd a nmbd. Nejlépe zastavit a znovu spustit. Na pořadí programů nezáleží, doporučuji oba nejprve zastavit a poté oba znovu spustit Pozor může trvat i několik minut než si počítače v síti všimnou změny (nového síťového disku)
Úprava souboru smb.conf Má sekce [global] společné nastavení [homes] název síťového disku [printers] popis sdílení tiskáren Komentáře buď pomoci #, ale mají být pomocí středníků ; read only ok
Ukázka smb.conf [global] workgroup = DM1 netbios name = Pepa server string = Samba na 160.217.211.211 encrypt passwords = yes security = share read only = no guest only = yes [homes] comment = Home Directories path = /home/sdileny guest ok = yes
SWAT Konfigurační nástroj přes web Musí být nainstalovány balíky samba, swat a xinetd Je třeba zkontrolovat, zda je v souboru /etc/services řádek s swat a zkontrolovat /etc/xinetd/swat Poté v libovolném prohlížeči zadat http://localhost:901/ Je vyžadováno heslo roota anebo uživatele s administrátorským oprávněním.
NFS
NFS Slouží pro sdílení souborů a adresářů mezi dvěma počítači s UNIXem NFS = Network File systém Existují i jiné systémy, např. Coda FS NFS není příliš bezpečný systém, ale je běžně používaný a rozšířený. Musí mít podporu v jádře Na serveru musí běžet démon nfsd, portmap (nfslock, nfs-server...)
Nastavení NFS server Všechno nastavení je v souboru /etc/exports Struktura je: /adresar seznam pocitacu(parametry) Příklad: /mnt/disk1 192.168.0.3(ro), 192.168.0.5 /mnt/disk2 160.217.211.0/255.255.255.0
Nastavení NFS klient Připojení disku musíme mít práva na připojení na serveru v /etc/exports mount server:/adresar /kam Příklad (může pouze root) mount 192.168.0.1:/mnt/disk1 /home/sdileny Lze zapsat zápis přímo do /etc/fstab 192.168.0.1:/mnt/disk1 /home/sdileny nfs defaults,users 0 0
NFS rizika Uživatel s UID 100 má na serveru UID 65535 100 = 65435. (Rozsah_UID UID) říká se tomu squashování Stejně i pro GID (skupiny) Lze nastavit konkrétní UID na které se budou všichni přihlašovat vytvoření public adresářů Pro roota je tohle implicitně vypnuté. Povolit přístup roota lze parametrem root_no_squash v /etc/exports. Pak ale má root přístup do všech adresářů což může být bezpečnostní riziko
NFS rizika Není li dostupný server a je-li uveden přípojný bod v /etc/fstab klient při startu může delší dobu čekat na server Pokud za běhu je odpojen server, a klient současně aktivně používá sdílený adresář (např je sdílený /home), klient zamrzne. Po opětovné zprovoznění serveru klient opět běží. Nelze jednoznačně říci co se stane s právě otevřenými soubory. Maximální velikost souboru v NFS je 2 GB! (mělo by to řešit NFS3)
NFS parametry /etc/exports ro pouze pro čtení rw čtení i zápis noacces zákaz přístupu do konkrétního adresáře no_root_squash root bude jako root i na sdíleném svazku squash_uids=seznam (seznam oddělený čárkami seznam UID uživatelů se zakázaným přístupem
Konec Děkuji za pozornost