Přechod firmy na Linux:

(gramaticky zkontrolovaná verze je/bude včetně pokračování v RAR archívu)

    Microsoft zahájil svou kapaň, v níž uživatele nelegálních Windows XP upozorňuje na to, aby si zlegalizovali svůj software. Dokonce údajně začal některé z nich i znefunkčňovat. Inu, i já spravuji jednu firmu po stránce sítě a SW a musím přiznat, že i ta má nelegální software. Ale ne na dlouho. Díky radě Microsoftu jsme se rozhodli přejít na Linux. Jistě mu tím uděláme radost. A Vás čtenáře upozorňuji, že tento článek bude dlouhý a pro většinu z Vás i nudný.

    Propočítal jsem náklady, kdy by bylo nutné do firmy zakoupit jedny XP, troje W98, čtvery Office 2000 a to samé platí pro Corel Draw a AVG 6 (ten má firma pouze na 1 lincenci). Celková cena vyšla někde přes 70 tisíc. Po plánovaném přechodu by ve firmě zůstal jen jeden počítač s Windows 98, který by se spolu s CD9 legalizoval za cca. 5 tisíc Kč. Ostatní počítače by přešly na Linux a na tom W98 by se MS Office předělal na Open Office. Počítače jsou to 2 GHz CPU s 256/512 MB RAM, takže jsem si vybral pro jednoduchost Ubuntu 5.XX české verze.

    Uvidíme, zda přechod firmy, který povede někdo, kdo vyrůstal v 95% hlavně ve Windows a DOSu, nemá vysokou školu a se správou sítě má zkušenosti jen po stránce peer-to-peer, vyjde levněji než nám Microsoft neustále deklaruje. Přechod se samozřejmě zde nezastaví. Firma bude zavádět také kamerový systém, a indentifikaci pomocí čipových karet a jejich čteček. Následovat budou také čidla pohybu pro ochranu objektu a kompletní databázový systém pracující na bázi server-klient, který bude zajišťovat tok zakázek a práce ve firmě mezi počítači, kde se zakázka zadává, a počítači na dílně, kde se zakázka vykonává, s možností vzdáleného přístupu přes internet stejně, jako kdyby byl klient v lokální síti. Pro mne to znamená se naučit komplet všechno od začátku.

    Kvůli vzdálenému přístupu je ale potřeba znát pevnou adresu. Protože firma jede přes ASDL a má zapnutý NAT, aby mohly počítače ze sítě na Internet, není možné tento systém realizovat hned. Je nutné proto změnit celou síť. Zatím byl na jeden pomalejší počítač (700 MHz se 128 MB RAM) nainstalován Ubuntu s multimédii, Office a dalšími věcmi, aby si zaměstnanci a vedení mohli zvyknout na nový systém. Podle předběžných ohlasů se zdá, že "to vypadá a ovládá se úplně stejně jako Windows", takže žádný problém. Tento počítač bude k dispozici po celou dobu přechodu, protože si nemůžeme dovolit výpadky. Kvůli vzdálené komunikaci bude potřeba vypnout NAT. Do sítě tedy přibyde další počítač, který bude fungovat jako server (s Linuxem). Jedna síťová karta půjde přímo do modemu a bude mít stejnou IP adresu, jako je naše veřejná (takový je zatím předpoklad). Na druhou síťovou kartu budou připojeny ostatní lokální počítače. Databázový systém, který budu muset napsat (musel jsem se naučit pracovat s TCP/IP, což jsem na bázi socketů zvládl ve Free Pascalu za 1 den), poběží na tomto systému, kde na něj vlastně bude dosah jak z lokální sítě, tak z Internetu. Na systému poběží maškaráda, která bude převádět požadavky lokálních počítačů do internetu a zpět. K tomuto počítači by také měla být připojena čtečka karet (evidence docházky), kamera (webový za cca. 300 Kč) snímající 1x za 1 - 5 minut v pracovní době zaměstnance (databázový systém má přístup k těmto "obrázkům", takže by mělo být možné je prohlížet si je odkudkoliv, pokud na to daný klient má ovšem právo - to se nastavuje odkudkoliv přes správce, který může takto ovládat i server). Protože Linux obsahuje vzdálenou plochu, nemusí mít server připojený monitor ani klávesnici a může být obsluhován ze kterékoliv stanice nebo na dálku. Bude zaheslován jak při startu do Linuxu, tak mít zamknutou obrazovku, aby k němu nebyl fyzický přístup. Díky využití Linuxu bude mít navíc každý počítač omezen přístup jen do svého adresáře, navíc ty, které nebude možné zaheslovat, nebudou mít přístup do sítě vůbec (ale samy budou moci být využívány i na dálku).

    Toto je tedy můj plán, který jsem odhadl na 3 až 6 měsíců. Pravděpodobně při něm budu asi dost "otravovat" fóra na www.freepascal.org a na www.abclinuxu.cz (které jsem už předběžně prohlédl, abych viděl, zda na to mám), ale snažil jsem se také dost využívat vlastní dokumentace, příklady, MAN v Linuxu a tisíci stránkový český manuál pro konfiguraci Linuxu bez grafického systému, takže by se ze mne mohl teoreticky za půl roku stát docela znalý správce sítě. Naplánoval jsem to postupně, že nejprve se zakoupí nějaký server za cca. 5 tisíc Kč s velkým diskem, na něm se nastaví Linux pro přístup a zároveň se to otestuje s tím již "hotovým" klientem (server by měl zároveň stahovat aktualizace, které potom budou přebírat ostatní klienti od něj z HDD, abych ušetřil limity přenosu; a pokud to později zvládnu, rád bych měl i centrální poštu, kdy by všichni uživatelé mohli vidět příchozí poštu a při odeslání by se uložila také do společné složky). Jakmile bude server schopen pracovat na Internetu a přes něj se do něj připojovat i klienti, provedu nahrazení všech OS (kromě jednoho) na Linuxy. Pak začnu dělat na tom databázovém systému a kamery/čidla/karty přijdou až na konec. Zatím mám jen dva problémy: nejde mi tisknout z Linuxu na Windows XP, kde je USB tiskárna (což by ale po přechodu nemusel být problém) a zlobí mi Corel Draw pod starší verzí WINE (takže snad pod novější už poběží OK), nebo snad seženu Corel i pro Linux (pokud existuje). Uvidíme, jak to dopadne. Nejprve jsem si přečetl velkou učebnici Linuxu a vypisoval si poznámky, které jsem poslézl utřídil do nějakého článku. Informace zde mohou být chybné, záleží jen na to, jak moc dobře jsem je pochopil. Teprve poté bude následovat skutečná realizace. Pokud se nechcete probírat tunami obecných informací, skočte rovnou na 2. díl tohoto článku...

PŘÍPRAVA

Začal jsem si číst 1000 stránkovou knížku LDP, kterou si můžete stáhnout na adrese

http://knihy.cpress.cz/Pocitac/BookDoc.asp?DocID=0&BookID=675&DownloadSection=2

a během té doby si budu dělat poznámky. Za pracovní dobu stihnu přečíst průměrně 90 stránek, takže to bude docela na dlouho. Čeká mne zároveň nejen instalace Linuxu, školení zaměstnanců, ale i příprava mého databázového systému. Příště si budu muset psát také lepší poznámky, aby je stačilo jen zkopírovat a ne znovu přepisovat :-)

FREE PASCAL

Dva dny mi trvalo, než jsem se naučil využívat jednotky SOCKETS a WinSOCK, kdy jsem kombinoval příklady z internetu a ze stránek FP (ty byly nakonec ty výsledné, které jsem použil a pouze jsem si je opravil pro obousměrnou komunikaci). Také jsem si zjistil, že na 1 počítači může 1 port používat jen 1 aplikace! Tj. dva klienti by museli používat jiný port (vhodné mít ho nastavitelný). Serveru ale stačí 1 port pro všechny klienty (po navázání spojení je port opět volný pro dalšího klienta, i když spojení trvá!). Socket může být využíván i pro čtení i zápis současně! Prošel jsem příklady z Internetu pro jednotku SOCKETS, pak příklady v FPC diskuzních fórech, až jsem nakonec použil univerzální příklad z dokumentace jednotky SOCKETS a trochu je upravil pro obousměrný test (příklad tam jen vysílá (server) nebo přijímá (klient)), jak už jsem psal. Můj systém by měl umět zvládat až 8 klientů současně (zřejmě bude potřeba multithread kvůli připojování, nebo používat přerušení, nebo nejlépe nastavit sockety jako non-blocking; popř. použít knihovny SDL, které mají MultiServer), podporu tisku (pokud možno na vzdálené tiskárně), vypalování (jen volání příkazů systému), prohlížení obrázků z kamery (musí být už na disku), ovládání alarmu a evidence příchodů a odchodů. Systém by měl umět kódování hesla, které je výhodné. Např. tak, že server pošle určitou skupinu bytů, do které klient zakóduje nějakým algoritmem (náhodné číslo, které se musí také uvést, délka každého znaku v hesle (např. znak A se rozloží do XYZ), závislost na pozici, metoda OR/AND/XOR, atd.). Jiná data není nutné kódovat. Přístup k nekódovaným datům na serveru by měl mít jen aktivní uživatel a přístup k terminálu možný jen přes heslo. Soubory na disku by měly být vždy uváděny malými písmeny (v případě Linuxu), hesla mohou podporovat i velká či mezery, názvy ostatních věcí je vhodné posílat buď velké nebo malé (pro zobrazování je lepší velké, pro práci s diskem malé). Max. velikost packetu po Internetu/v síti je 1500 bytů (ideálně tedy posílat 1024 bytů).

POČÍTAČ PRO SERVER

Pro server byl zakoupen vyřazený PC s PIII na 733 MHz, 128 MB RAM (psali ale, že bude mít 256 MB) a 19 GB diskem (psali, že bude mít 10 GB). Dokoupen byl disk 120 GB a další modul 256 MB. Celková cena 5+ tisíc Kč. Dále je nutné koupit další PCI síťovou kartu a DVD-RW mechaniku pro zálohy dat. O dva dny později se dal sehnat za stejné peníze počítač s 933 MHz CPU (ale tak je to vždycky). Plánuji tam mít firewall, NAT s maškarádou, WWW server pro stránky a FTP server pro firemní data. Stejně tak tam poběží ten databázový systém, kamera na USB, čtečka čipových karet a alarm. Počítač je nějaký starší typ, takže jsem do něj sehnal jen 256 MB RAM a navíc jsem si musel ověřit, že pro neDellácké čipy povolí více než 128 MB. Jako 2x128 MB funguje. Pokud nepůjde 256+128 nebo 256, tak alespoň 128+128 a těch 256 se dá počítači, od kterého jsem si půjčil těch 128 MB. Nakonec daný modul fungoval, takže server bude mít 384 MB RAM. Server si buď bude aktualizovat všechen svůj software a soubory bude ponechávat na disku, odkud si budou programy aktualizovat i stanice (úspora linky), nebo bude mít sdílený adresář /USR (což prý jde, ale zatím nevím jak), takže se bude aktualizovat jen na něm (může způsobit pomalejší provoz). Upřednostnil bych variantu A. Doporučuji si zamčení skříně serveru přes "očko" vzadu, aby nešla jednoduše vymazat CMOS paměť a tím i heslo do BIOSu. Po instalaci systému bude nutné zakázat bootování z diskety a CD-ROM. U serveru nebude monitor. Start samotného PC nemůže být zaheslován, aby se server mohl restartovat při výpadku proudu. Taktéž přístup do systému musí být bez hesla, aby se mohl nastartovat. Musí ale ihned po startu zamknout obrazovku (nebo xlock), nebo stačí nastavit spořič (blank) chráněný heslem (je také možné zamknout konzole pomocí vlock, aby se nedaly používat např. po restartu X serveru). LILO nesmí umožňovat start jiného OS než Linux (pokud tam bude např. ještě MS-DOS). ADSL modem je teď připojen do sítě jako normální PC, ISDN modem je použit jen pro telefony. Po změně se ADSL modem připojí k serveru, a teprve ten se připojí do sítě. ISDN se pouze sériovým kabelem připojí k UCTO počítači, jinak zůstane připojen stále kvůli telefonům.

VÝUKA NA UBUNTU 5.04

Zatím jsem zkoušel, zda bude možné pod Linuxem provozovat Corel Draw. Corel 11 nejde přes WINE instalovat, 9 ano, trvá to ale 25 minut (instalace Linuxu přes 2 hodiny! bez zásahu). Kopie Windows a Corelu na disk a jeho spuštění nestačí (není v registru). Zkusím tedy na serveru nejprve install Windowsu a Corelu, pak Linuxu a pak WINE na C11. Už jsem řešil první chybu Linuxu (Ubuntu 5.04) po výpadku baterie pro CMOS. Nešlo nastartovat X Windows kvůli špatné velikosti VRAM. Přitom stačilo jen přepnout primární VGA kartu v BIOSu z PCI na AGP. Další problém nastává při testu převodu pošty. Evolution neumí import z Outlook 6 (přes 700 MB e-mailů). Thunderbird 1.5 ano, ale pro Linux není v balíčcích, jen 1.0 (balík z WWW na 1.5 mi nejde instalovat, když kliknu na binární INSTALL). Navíc importuje jen z aktivní aplikace, tj. musím instalovat 1.5 pro Windows na XP, převzít poštu a kontakty, a pak to nakopírovat do Linuxu. Tam ale nejde dát čeština, protože ta je pouze pro 1.5. Mozilla Mail to také neumí!

NÁVRH SÍTĚ

ADSL modem má adresu třídy C, tedy maska by měla být 255.255.255.0 (i když standarně se nemusejí používat zvláště v posledním bytu jen 0, může tam být také i jiné číslo než 255, pokud budujeme podsítě, ale to nám tady asi nehrozí), ale ve výpisu modemu je celá 255. Brána je 194.108.122.Y, maska je 255.255.255.255. Loopback adresa 127.0.0.0 má masku 255.0.0.0.

V síti 192.168.1.0 budou tyto počítače:

SERVER        192.168.1.1

UCTO        192.168.1.2

AMT        192.168.1.3

MILANPC    192.168.1.4

DILNA        192.168.1.5

Tyto se pak přidají do souboru /etc/hosts, ale sloupce budou v opačném pořadí. Dále bude zřejmě potřeba udělat směrovací tabulku na serveru, která by pak měla vypadat nějak takto (v pořadí adresa, maska, brána a zařízení, popis - pro účely recenze jsem adresy pozměnil, abych nezveřejňoval ty svoje):

001.002.003.0    0.0.0.0        001.002.003.X    eth0    internet

192.168.1.0    255.255.255.0    192.168.1.1        eth1    lokální síť

Kdybych měl dělat tuto síť pod Windows 98, tak bych asi zadával tyto adresy:

(vnější síťová karta musí mít IP adresu od poskytovatele, vnitřní nějakou z 192.168.x.y rozsahu. Zároveň to bude na ostatních stanicích brána)

* Počítače v interní síti:

IP adresy:    192.168.1.X, kde X>1

Maska:    255.255.255.0

Brána:    192.168.1.1

* Vnitřní síťová karta na serveru (eth1):

IP adresa:    192.168.1.1

Maska:    255.255.255.0

Brána:    001.002.003.X

* Vnější síťová karta na serveru (eth0):

IP adresa:    001.002.003.X

Maska:    255.255.255.255

Brána:    194.108.122.Y    (možná ještě 192.168.1.1)

DNS servery se mají údajně zadat na vnější síťovou kartu (ve Win98 se zadávají IP adresy, ale také společný hostitel a doména, a co zadat sem, to fakt netuším):

primární:    212.65.193.157

sekundární:    212.65.242.210

OBECNÉ INFORMACE K LINUXU

    Což ještě nevím a dozvěděl jsem se potřebného pro tuto realizaci? Aktuální adresář ./ už znám, takže nové jsou jen tyto věci: Pomocí MOUNT lze připojit souborový systém i do adresáře, který už data obsahuje. Ta se nezničí, ale nebudou až do odpojení přístupná, protože adresář bude nyní ukazovat jinam (takto se dá nahradit např. /USR).

Příklad přidání uživatele do souboru passwd:

    martin:*:501:60:Účet Martina Luxe:/tmp:/usr/sbin/diplogin

Heslo se pak nastaví pomocí příkazu PASSWD (vždy malými písmeny) příkazu pro daný účet.

    Příkazy chgrp a chown se nastaví, který uživatel soubor vlastní, resp. která skupina (pokud má mít k souboru přístup více uživatelů, je nutné je dát do dané skupiny). Pomocí chmod se pak jen nastaví práva pro daného uživatele/skupinu s tímto souborem. Je-li špatná skupina/vlastník, je houby platné, že jsou všechna práva povolená, když je nemá kdo využít.

    Při změně jádra pomocí "make menuconfig" (který také zřejmě zkompiluje moduly) je vhodné mít adresář /boot zálohovaný pro případ, že se něco pokazí při instalaci nějakých ovladačů - ideálně je dobré si vytvořit původní jádro jako další položku v LILO/GRUB).

Přihlašování přes SSH (není potřeba) se konfiguruje v /etc/ssh/sshd_config a takto:

    # chown -R root:root /etc/ssh

    # chmod 755 /etc/ssh

    # chmod 600 /etc/ssh/ssh_host_key

    # chmod 644 /etc/ssh/ssh_host_key.pub

    # chmod 644 /etc/ssh/sshd_config

Rychlost klávesnice se nastaví: /sbin/kbdrate -s -r 32 -d 250

Bude potřeba zřejmě nainstalovat tyto balíčky:

ThunderBird, NumLockXX, WINE, DosBox, Xine, XMMS, kodeky z C:\Windows, MC, multimediální kodeky (viz. Ubuntu Help), Real Player, MPlayer, RAR, vypalovací software pro DVD.

Vytvoření záchranné spouštěcí diskety (nebo příkazem mkbootdisk):

    dd if=/boot/vmlinuz-2.0.36-0.7 of=/dev/fd0

    rdev /dev/fd0 /dev/hda2

    Co půjde, nastavovat v GUI (X server) pomocí klikání. Na server přijde Ubuntu 5.10, stejně tak na klienty (5.04 byla jen pro testy). Kopii MBR z disku může udělat např. FDISK na disketu.

    Takový je zatím můj rozhled získaný z té příručky až do strany 382 (+/-). Teď to ještě zkonfrontuji z abcLinuxu. Zatím jsem se dostal teprve na místo, kde jsou informace, které budu potřebovat (firewall, účtování, maškaráda, pošta, praktické příklady). Vím určitě, že po přečtení asi nebudu schopen to sám nastavit, ale alespoň, když najdu příklady na internetu, budu vědět, o čem se tam píše, a co ty příklady, které tam jsou na pomoc, vlastně dělají.

Seznam práv (jaká jsou povolena: co znamenají pro soubory / pro adresáře):

čtení        prohlížet obsah / číst adresář (cd?)

zápis        změna obsahu souboru / mazat nebo přesouvat soubory

spouštění    spustit skript nebo soubor (je-li i READ) /

        prohledávat adresář+číst atributy souborů (ls?)

sticky    možnost uložení textu / mazat pouze to, co vlastní

SUID        spuštěný program získá práva vlastníka, ne toho, kdo jej spustil

SGID        totéž jako U, jen pro skupinu /

        nové soubory v tomto adresáři získají tuto skupinu

Nastavení RWX práv pro všechny se provede: chmod ugo+rwx

Démon CRON se umí spouštět v určitou dobu a spouštět ostatní programy/skripty.

Rekompilace jádra se provádí takto:

    make dep

    make clean

    make bzlilo

    make modules

    make modules_install

    init 6

Restart démonů: kill –HUP

Obrazky\PID

    (je potřeba znát jeho číslo)

Masky souborů: všechny soubory jsou *, včetně skrytých .*, všechny soubory s tečkou *.*; n*c = neco, nic, atd.; a[1-2b-c] = a1,a2,ab,ac atd.

Upozornění u MV, CP či RM na přepis zajišťuje parametr -i.

Textová konzole se vyvolá jako ALT+Fx, kde X=

Obrazky\1,6

. ALT+F7 přepne zpět do X serveru.

PŘEDBĚŽNÉ OPATŘENÍ A INFORMACE PRO SÍŤ

    Maska se používá pro test správné adresy. Pokud je celá 255, musí se adresa přesně shodovat. Pokud je např. poslední byte 0, musí se shodovat první 3 byty IP adresy a ten poslední může být libovolně 1-254. Je vhodné zakázat adresy 0.0.0.0 s maskou 0.0.0.0 pro přístup do interní sítě.

    Protokol SLIP a PPP se nás (skoro) vůbec netýká (alespoň ne na serveru). Nouzový přístup na Net přes dial-up je buď WVDIAL (dá se zavěsit také přes CTRL+C) nebo EZNET.

    Moduly pro síť jsou v /lib/modules/KERNEL-VERSION/ipv4 a zapínají se např. takto:

        /sbin/modprobe ip_masq_ftp

Soubor /etc/rc se spouští při startu systému, takže se sem budou zřejmě muset zadat pak všechny potřebné příkazy pro nastavení sítě. Nastavení sítě by mělo být v rc.(i)net, dnes už spíše v adresáři /etc/init.d/ (resp. /etc/rc.d/init.d/), a tam se dávají tedy i síťové příkazy.

    Jméno počítače se nastaví buď ve Správě nebo příkazem "hostname jméno" (musí být zadané spolu s IP adresou v HOSTS; adresa 0 a 255, resp. samé "1" v čísle posledního bytu se nesmí používat pro počítač nebo podsítě (maska v bytu

Obrazky\

255 a

Obrazky\

0)!).

    Zřejmě je vhodné je editovat soubor /etc/host.conf, před první řádek dát # a na poslední připsat "order hosts", nebo ještě lépe "order hosts bind nis" (pro využití resolveru), nebo při použití souboru /etc/nsswitch.conf je nutné zadat do něj toto:

    hosts:    files dns

    networks:    files

Pro BIND se ale musí nastavit jmenný server v resolv.conf (např. adresa poskytovatele internetu). Pokud neexistuje, musíme si ho vytvořit sami:

    nameserver 192.168.1.1

DNS je většinou platné hlavně v dané doméně. V malé síti je ale zbytečné takové informace mít, stačí využívat DNS poskytovatele netu jen pro adresy mimo síť. Jedná se o soubory named.hosts a named.rev. Je tam potřeba program NAMED a soubory /etc/named.boot, resp. /etc/named.conf, /var/run/named.pid, /var/named/named.local a /var/named/named.rev. Přes nslookup se lze zeptat (set type=NS a ".") na NS záznamy v kořenové doméně. Prakticky ale stačí jen do /etc/resolv.conf nastavit IP adresu DNS serveru poskytovatele internetu (nebo si nakonfigurovat DNS caching-only server). Pak je ale vhodné mít HOSTS (files) na prvním místě, aby se požadavky na lokální PC nejprve neposílaly do sítě.

Do souboru /etc/networks se dávají názvy sítí, takže pro tu naši to bude vypadat zřejmě takto:

    internet    001.002.003.0

    skupina    192.168.1.0

Adresy síťových karet (rozhraní) se provede ve Správě v Síti nebo příkazem (místo adresy lze použít jméno ze souboru /etc/hosts):

    ifconfig eth1 192.168.1.1

    ifconfig eth0 001.002.003.X

    ifconfig lo 127.0.0.1

    Na jednom počítači (stanice) bude pro případ nouze (HW havárie serveru, při které nepomůže jeho reset, a zároveň nepřítomnost správce - dovolená) ještě možnost připojit se k internetu přes dial-up (ISDN modem) alespoň kvůli poště. Databáze systému sice nepojede, ale databanka je zároveň v jiném formátu na nezávislém počítači (jiná stanice), takže firma pojede dál, pouze to bude na pár dní jen o trochu "zdlouhavější".

    Pokud poskytovatel používá také svou maškarádu, musí nám přidělit jinou (pevnou) adresu, abychom mohli poskytovat služby serveru. Vypnutí NAT v modemu by totiž zřejmě nestačilo. Pro WWW služby je nutné na bráně (SERVER) nastavit proxy server. Adresu SERVERu z vnějšku je také nutné zapsat do souboru /etc/hosts, ale asi pod jiné jméno.

    Jméno portu můžeme najít v /etc/services (např. www). Účtování nebude zřejmě potřeba (ipfwadm). Pro vyšší bezpečnost je nutné přepínat FTP spojení na pasivní režim. A nainstalovat FTP proxy server. Porty je možné zadat i intervalem 20:21. Porty jsou ve Windows pojmenované v adresáři WINDOWS\services.

    Poskytování WWW služeb zřejmě poskytuje program HTTP (démon httpd). Superserver inetd umí spouštět další servery (nastavuje se v /etc/inetd.conf). Daytime např. vrací čas. U TCP se tam nastavuje "nowait". Nastaví se zde také typ uživatele, který jakoby démona spustil.

    TCP vždy používá stream sockety. Kvůli bezpečnosti je lepší službu FINGER vypnout (a také TFTP, které se používá pro BOOT ze sítě, ale umožní přenést jakýkoliv soubor pro čtení). Nebo se musí provést obalení přes tcpd a hosts.allow a hosts.deny (sem se zadají adresy PC, které mají přístup a ty se ještě filtrují těmi, které nemají přístup). Služby:

    ftp stream tcp nowait root /usr/sbin/ftpd in.ftpd -l

    telnet stream tcp nowait root /usr/sbin/telnetd in.telnetd -b/etc/issue

    daytime stream tcp nowait root internal

    daytime dgram udp nowait root internal

    time stream tcp nowait root internal

    time dgram udp nowait root internal

    echo stream tcp nowait root internal

    echo dgram udp nowait root internal

    discard stream tcp nowait root internal

    discard dgram udp nowait root internal

    chargen stream tcp nowait root internal

    chargen dgram udp nowait root internal

    Poštu na serveru zajišťuje SENDMAIL nebo EXIM (MTA). Poštovní klienti jsou PINE, MUSH, MAILX či ELM. Snad by ale mohl stačit ThunderBird nebo Evolution (MUA). SendMail se lépe konfiguruje přes M4 (/etc/mail/sendmail.cf a .mc). Ideálně by měl být na serveru přijímací program, který bude pak poštu odesílat příjemcům. Ideálnější by bylo, aby se všechna pošta shromažďovala jen tam. Sendmail je nebezpečné spouštět na počítači, kde je firewall, protože běží s právy root, takže je lepší ho nepoužívat! Lepší synchronizaci pošty mezi klienty (a popř. serverem) řeší IMAP.

    Webový server zajistí např. Apache, pokud je dostupný přes Správce. Podporuje jak WWW tak proxy (zpracovává požadavky pro někoho jiného - tj. jako prostředník mezi klientem a vzdáleným serverem), pak STMP, POP3 či FTP, dále Java, Python, PHP, SQL či CGI.

    Příkaz ifconfig vypíše nastavení karet, route -n nastavení směrování (to se dá zapnout/vypnout(0) takto: echo "1" > /proc/sys/net/ipv4/ip_forward). DNS servery se nastavují pomocí IPCHAINS s parametrem -S

FIREWALL A PROXI

    Firewall nepřenáší spojení mezi sítěmi. Pokud je to potřeba, je nutné se k němu přihlásit z jedné či druhé strany, nebo povolit výjimky.

Směrování packetů se provádí příkazy

    route add 127.0.0.1

    route add -net 001.002.003.0    (route add internet)

    route add skupina gw server

    route add default gw server    (default=0.0.0.0)

Dále bude potřeba nastavit bránu (na serveru zřejmě přes IFCONFIG):

    route add internet

    route add skupina

    Firewall bude umístěný na stejném PC jako server. Je nutné vypnout veškerý provoz do interní sítě. Výjimku tvoří WWW server (ale ten nebude ve vnitřní síti, ale také na serveru), který musí běžet přes proxy, a musí mít přístup na vzdálenou správu databáze.

Přístup na Internet:

1a) zdrojová adresa jednoho PC v síti

1b) jakákoliv cílová adresa

1c) port 80 (WWW)

2a) jakákoliv zdrojová adresa

2b) cílová adresa jednoho PC v síti

2c) port 80 (WWW)

    Programy, které se budou pro konfiguraci používat: ipfwadm (starší nastavování pravidel), ipchains nebo nejnovější iptables (balík netfilter). Já jsem si zvolil raději ten poslední. Pokud není balík NETFILTER instalován, musí se pro NAT dodat.

    Firewall by měl mít povolena jen ta pravidla, která opravdu potřebujeme. Ostatní je nutné zakázat. Existují dva typy: filtrovací a proxy, který převádí provoz. Filtry jen nepovolí některé packety, ale proxy se musí nastavovat. Na proxi server je nutné se přihlásit a teprve on funguje jako "poskytovatel" internetu. Proxi server ale může kontrolovat všechna přenášená data (např. viry). Pokud je využíván proxi server, musí být firewall nastaven tak, aby do internetu mohl jen proxi server a ne ostatní počítače!

    Proxy server potřebuje jeden z těchto balíků: Squid, TIS (FWTK) nebo SOCKS. Ten umožní, aby se lokální počítače dostaly přes port 80 např. na WWW, ale už neumožní externím PC přes tento port se připojit. Pokud je jeho nastavení těžké a už ho poskytuje ADSL poskytovatel, je možná zbytečné se s tím v začátku mořit. Ovšem proxy server neumožňuje přístup zvenčí na server, poku běží před ním, takže by se případně musel vypnout a nainstalovat až za sever, tedy by byl vidět systém na serveru, ale už ne stanice. Navíc může způsobovat problémy s FTP: nebude fungovat ani z vnitřku sítě ven (zřejmě se bude nutné přihlašovat).

ZPROVOZNĚNÍ DVOU SÍŤOVÝCH KARET

Druhou síťovou kartu bude zřejmě nutné zapnout, neboť jádro údajně inicializuje pouze jednu. Nastavení karty v LILO (pokud selže autodetekce) v /etc/lilo.conf se provede takto:

    ether=irq,base_addr,name    (0=auto)

např.:

    reserve=0x340,32 ether=0,0x340,eth0

    reserve=0x300,32 ether=0,0x300,eth1

- v souboru lilo.conf se nastaví dvě síťové karty takto:

    append="ether=12,0x300,eth0 ether=15,0x340,eth1"

Instalace sítové karty 3COM:

    modprobe 3c59x

    alias eth1 3c59x

Konfigurace sítě např. ze záchranné diskety na serveru (pomocí skriptu):

    #!/bin/sh

    DEVICE=eth0

    IPADDR=001.002.003.X

    NETMASK=255.255.255.255

    NETWORK=001.002.003.0

    GATEWAY=194.108.122.Y

    BROADCAST=001.002.003.255

    NAMESERVER=212.65.193.157

    ifconfig $DEVICE $IPADDR netmask $NETMASK up

    route add -net $NETWORK netmask $NETMASK $DEVICE

    route add default gw $GATEWAY

Soubor konfigurující 2. síťovou kartu (vnitřní):

    ifcfg-eth1

    DEVICE=eth1

    IPADDR=192.168.1.1

    NETMASK=255.255.255.0

    NETWORK=192.168.1.0

    BROADCAST=192.168.1.255

    GATEWAY=001.002.003.X

    ONBOOT=yes

PŘÍKLADY NASTAVENÍ SERVERU (FIREWALL, SMĚROVÁNÍ, NAT, PROXI, DNS)

#ipfwadm -F -f

#ipfwadm -F -p deny

#ipfwadm -F -a accept -P tcp -S 001.002.003.0/24 -D 0/0 80

#ipfwadm -F -a accept -P tcp -S 0/0 80 -D 001.002.003.0/24

3.položka=odesílání, 4.=příjem; /24=24 bitová maska sítě pro typ C, maska se dá také zadat normálně jako /255.255.255.0, 0/0=adresa 0.0.0.0/0, tj. jakákoliv síť (0=* v DOSu)

Obousměrné pravidlo na 1 řádku:

#ipfwadm -F -a accept -P tcp -S 001.002.003.0/24 -D 0/0 80 -b

Zakázání žádosti o připojení zvenčí na port 80 (použije se první vyhovující pravidlo a to poslední vyhovuje vždy, proto musí být až poslední):

#ipfwadm -F -a deny -P tcp -S 0/0 80 -D 001.002.003.0/24 -y

#ipfwadm -F -a accept -P tcp -S 001.002.003.0/24 -D 0/0 80 -b

Povolení FTP pro nás, ale zákaz pro FTP z netu (port 20=data, 21=ftp):

#ipfwadm -a deny -P tcp -S 0/0 20 -D 001.002.003.0/24 -y

#ipfwadm -a accept -P tcp -S 001.002.003.0/24 -D 0/0 20 -b

#ipfwadm -a deny -P tcp -S 0/0 21 -D 001.002.003.0/24 -y

#ipfwadm -a accept -P tcp -S 001.002.003.0/24 -D 0/0 21 -b

Pomocí IPCHAINS budou pravidla vypadat takto:

#ipchains -F forward

#ipchains -P forward DENY

#ipchains -A forward -s 0/0 80 -d 001.002.003.0/24 -p tcp -y -j DENY

#ipchains -A forward -s 001.002.003.0/24 -d 0/0 80 -p tcp -b -j ACCEPT

#ipchains -A forward -s 0/0 20 -d 001.002.003.0/24 -p tcp -y -j DENY

#ipchains -A forward -s 001.002.003.0/24 -d 0/0 20 -p tcp -b -j ACCEPT

#ipchains -A forward -s 0/0 21 -d 001.002.003.0/24 -p tcp -y -j DENY

#ipchains -A forward -s 001.002.003.0/24 -d 0/0 21 -p tcp -b -j ACCEPT

    Vytvořením tříd se zkrátí počet pravidel, protože daná data se pak testují jen ve třídě, do které spadají, takže se zrychlí provoz.

    Nejlepší je ale stejně používat jen IPTABLES, protože odděluje packety určené pro server a ty, které má jen propouštět (směrovat). Když se neuvede, co s packetem provést, tak se jen zvýší počitadlo (účtování).

Emulace programu IPCHAINS:

    rmmod ip_tables

    modprobe ipchains

Lepší ale použít přímo. Pokud není nahrán modul, tak:

    modprobe ip_tables

Podporuje NAT, rozšíření se dělá pomocí -m na TCP, atd.

#modprobe ip_tables

#iptables -F FORWARD

#iptables -P FORWARD DROP

#iptables -A FORWARD -m tcp -p tcp -s 0/0 --sport 80 -d 001.002.003.0/24 --syn -j DROP

#iptables -A FORWARD -m tcp -p tcp -s 001.002.003.0/24 --sport 80 -d 0/0 -j ACCEPT

#iptables -A FORWARD -m tcp -p tcp -d 001.002.003.0/24 --dport 80 -s 0/0 -j ACCEPT

Viz.: Příklad konfigurace FireWallu (strana 412):

#!/bin/bash

#UŽIVATELEM KONFIGUROVATELNÁ ČÁST

IPTABLES=iptables

PATH="/sbin"

OURNET="001.002.003.0/24"

OURBCAST="001.002.003.255"

OURDEV="eth1"

ANYADDR="0/0"

ANYDEV="eth0"

TCPIN="ftp,www"

TCPOUT="smtp,www,ftp,ftp-data,irc"

UDPIN="domain"

UDPOUT="domain"

#Čísla typů viz /usr/include/netinet/ip_icmp.

ICMPIN="0,3,11"

ICMPOUT="8,3,11"

#LOGGING=1

#KONEC UŽIVATELEM KONFIGUROVATELNÉ ČÁSTI

$IPTABLES -F FORWARD

$IPTABLES -P FORWARD deny

$IPTABLES -A INPUT -i $ANYDEV -j DROP

$IPTABLES -A FORWARD -s $OURNET -i $ANYDEV -j DROP

$IPTABLES -A FORWARD -m multiport -p icmp -i $ANYDEV -d $OURNET -j DENY

$IPTABLES -A FORWARD -f -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p tcp -d $OURNET --dports $TCPIN !--tcp-flags SYN,ACK ACK -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p tcp -s $OURNET --sports $TCPIN !--tcp-flags SYN,ACK ACK -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p tcp -i $ANYDEV -d $OURNET $TCPIN --syn -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p tcp -i $OURDEV -d $ANYADDR --dports $TCPOUT --syn -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p udp -i $ANYDEV -d $OURNET --dports $UDPIN -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p udp -i $ANYDEV -s $OURNET --sports $UDPIN -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p udp -i $OURDEV -d $ANYADDR --dports $UDPOUT -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p udp -i $OURDEV -s $ANYADDR --sports $UDPOUT -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p icmp -i $ANYDEV -d $OURNET --dports $ICMPIN -j ACCEPT

$IPTABLES -A FORWARD -m multiport -p icmp -i $OURDEV -d $ANYADDR --dports $ICMPOUT -j ACCEPT

if [ "$LOGGING" ]

then

$IPTABLES -A FORWARD -m tcp -p tcp -j LOG

$IPTABLES -A FORWARD -m udp -p udp -j LOG

$IPTABLES -A FORWARD -m udp -p icmp -j LOG

fi

    IP maškaráda v NAT (Překlad síťových adres) funguje tak, že jediný viditelný PC z Internetu je server. Vzhledem k tomu, že náš modem NAT používá, nemělo by se viditelně pro stanice nic změnit. Možná bude nutné nahrát speciální moduly pro FTP (ip_masq_ftp), IRC (ip_masq_irc), atd. např:

    insmod ip_masq_raudio.o ports=7070,7071,7072

nebo balík netfilter a moduly: ip_conntrack_ftp, ip_nat_ftp.o., atd.

Maškaráda se nastavuje stejně jako firewall (stejné příkazy; iptables –j MASQUERADE)

# iptables -t nat -P POSTROUTING DROP

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

nebo

# ipchains -P forward -j deny

# ipchains -A forward -s 192.168.1.0/24 -d 0/0 -j MASQ

(první pravidlo zakazuje přímé směrování jakýchkoliv datagramů/packetů)

Výpis akt.nastavení např.:

# iptables -t nat -L

nejlepší je tedy používat IPTABLES.

    DNS server je nutné nastavit buď cache-only jako SERVER a odkazát na něj přes DNS všechny stanice. Caching-only se nastavuje (soubor /var/named) takto:

named.boot:

    directory /var/named

    primary    0.0.127.in-addr.arpa    named.local    ; síť localhost

    cache    .            named.ca    ; kořenové servery

named.ca:

    .            3600000    IN    NS    A.ROOT-SERVERS.NET.

    A.ROOT-SERVERS.NET.    3600000        A    198.41.0.4

(zřejmě je potřeba zapsat DNS server poskytovatele)

SNAT=Source, DNAT=destination (podle zdrojové/cílové adresy). Překlad portů je REDIRECT.

Skript pro nastavení firewallu:

- nastavení firewallu:

#!/bin/sh

#

#rc.firewall

#

/sbin/ipchains -F input

/sbin/ipchains -F output

/sbin/ipchains -F forward

#$IPCHAINS -A input -p tcp -s 192.168.1.0/24 -d 0.0.0.0/0 80 -j REDIRECT 8080

/sbin/ipchains -N my-chain

/sbin/ipchains -A my-chain -s 0.0.0.0/0 smtp -d 192.168.1.1 1024:-j ACCEPT

/sbin/ipchains -A my-chain -s 192.168.1.1 -d 0.0.0.0/0 smtp -j ACCEPT

/sbin/ipchains -A my-chain -s 0.0.0.0/0 www -d 192.168.1.1 1024:-j ACCEPT

/sbin/ipchains -A my-chain -s 192.168.1.0/24 1024:-d 0.0.0.0/0 www -j ACCEPT

/sbin/ipchains -A my-chain -p UDP -s 0.0.0.0/0 dns -d 192.168.1.0/24 -j ACCEPT

/sbin/ipchains -A forward -s 192.168.1.0/24 -d 192.168.1.0/24 -j ACCEPT

/sbin/ipchains -A forward -s 001.002.003.0/24 -d 0.0.0.0/0 -j ACCEPT

/sbin/ipchains -A forward -s 192.168.1.0/24 -d 0.0.0.0/0 -j MASQ

/sbin/ipchains -P my-chain input DENY

OSTATNÍ

Ve verzi Ubuntu 5.10 je nutné podle manuálu doinstalovat terminál: nautilus-open-terminal.

    Linux by měl umět True Type fonty. Pomocí "xset fp+ adresář" se dá přidat další adresář (pak ještě provést xset fp rehash). Příkazy je možné umístit do souboru .xinitrc. Nebo přidat do souboru XF86Config toto:

    Section "Files"

    ...

    FontPath /usr/share/fonts/myfonts

    ...

    EndSection

Pro TT fonty potřebujeme server XFS* (stačí spustit v adresáři s fonty toto: xfstt --sync). Do fontpath se pak musí přidat: unix/:7100. Zjištění fontu: ps ax | grep xfs

Převod TT na Type1:

    for X in *.ttf; do ttf2pt1 -b $X ${X%%.ttf}; done

    nebo

    ttf2type1 *.ttf

Pro OpenOffice by neměl být problém pracovat se všemi fonty.

    mkdir /usr/X11R6/lib/X11/fonts/Truetype

    cp /home/uživatel/fonty/*.ttf /usr/X11R6/lib/X11/fonts/Truetype

    cd /usr/X11R6/lib/X11/fonts/Truetype

    ttmkfdir > fonts.scale

    mkfontdir

Program ttmkfdir spuštěný v adresáři s Windows fonty je převede pro Linux (je asi také nutné upravit /etc/X11/fs/config). Konfigurace obrazu, zvuku a síťové karty se může provést přes:

    /usr/bin/X11/xf86config        (/usr/bin/X11/Xconfigurator --expert)

    /usr/sbin/sndconfig

    /sbin/linuxconf

    V Linuxu se pro tisk používá CUPS, pro HP jsou již přístupné ovladače. Volbu je možné provést v GUI, jsou tam i tiskárny na USB. Aby bylo možné na tiskárně tisknout vzdáleně, je nutné ji buď sdílet nebo přidat dané počítače (pro LPD) do /etc/hosts.equiv či do /etc/hosts.lpd. Pro tisk z Windows je nutné mít v Linuxu Sambu.

    Modem na sériovém portu bude na ttySx, nastavuje se přes SETSERIAL. Rychlost portu by měla být při vytáčení mnohem vyšší než modem zvládne (pokud se používá komprese, aby se data nezdržovala na kabelu modem-PC; ideálně tedy 115.2k kvůli děliči 1). Nastavení pomocí setserial (dnes už není potřeba) nebo setpci. Konfigurační soubor: v souboru /etc/serial.conf.

    Nastavení: setserial /dev/ttyS2 irq 10 port 0xecb8 autoconfig

    Zjištění informací: lspci -vv

    Vhodné je zapnout HW řízení: stty -F /dev/ttyS2 crtscts

Zařízení USB (Mass Storage) se musí namountovat (mount -t vfat /dev/sda1 /mnt/camera) jako SCSI disk (služby jsou přístupné po /etc/rc.d/init.d/usb start). Informace podá dmesg a lsmod. Aby Linux četl Joilet na CD-ROM, musí být toto slovo uvedeno hned za ISO v FSTAB.

    Zápis na CD zajišťuje např. cdrecord a mkisofs, či toto:

        ln -s /dev/scd0 /dev/cdrecorder

        cdrdao wrote cd.toc

Příkaz MOUNT a FISK vypíše všechny disky a oddíly, které máme.

BEZPEČNOST

    Co není potřeba, zakázat. Zakázkat jiným skupinám na serveru než právě běžící uživatel, aby mohli i číst ostatní adresáře (USR, atd.). Soubor /etc/lilo.conf se musí nastavit na práva 600 (čitelný pouze pro roota)

    Zakázat přihlášení roota ze sítě. Vždy musí být buď u PC nebo se přihlásit normálně a pak přes SUDO (to raději také zakázat), resp. přes SU. Svazky pro zápis je vhodné připojovat s parametry nosuid, nodev a popř. i noexec. Soubory s logy /var/log/wtmp a /var/run/utmp by měly mít práva 644. Soubory .rhosts by neměly existovat (alespoň ne u roota).

    Ssoubory s nastavenou skupinou/uživatelem po spuštění pravědpodobně získají práva této skupiny či uživatele! Tedy by je neměl právo spouštět nikdo jiný (ideálně nikdo jiný než root). Nastavení implicitní masky pomocí "umask 077" u roota zajistí, že ostatní uživatelé nebudou moci jeho soubory ani číst, pokud to přímo u nich nepovolí! Takto se dá zakázat v souboru .rhosts /etc/pam.d/rlogin:

    login auth required pam_rhosts_auth.so no_rhosts

Všechny nepotřebné služby v souboru /etc/inetd.conf a /etc/services vypnout (zakomentovat)!

    Nastavením HOSTS.ALLOW na ALL: 127. a HOSTS.DENY na ALL: ALL se eliminuje veškerý přístup z vnější sítě. Vypnuté by měly být tyto služby (inetd.conf):

    echo,discard,daytime,chargen,ftp,gopher,shell,login,exec,talk,ntalk,pop-2,pop-3,netstat,systat,tftp,bootp,finger,cfinger,time,swat a linuxconfig. Popř. i telnet a ftp (nebezpečné, pokud je to stejný PC jako firewall; FTP by ale chtělo zakázat jen pro PC vně sítě)

    Občas je důležité se podívat na logy v adresáři: /var/log. Pokud stínová hesla neexistují, příkaz pwconv je vytvoří. Je vhodné vytvořit soubor /etc/nologin a zapsat do něj třeba "!!!". V souboru /etc/securetty nastavit jen místní terminály pro roota.

    Program Linux Intrusion Detect System zabrání změnění systémových souborů (pokud běží). Ani root nemá právo toto dělat! Pokud je to potřeba, je nutný restart s LILO security=1

    POKRAČOVÁNÍ PŘÍŠTĚ ...