Počítačové sítě a Linux
Radek Pilař Gymnázium Tanvald Oktáva 2008/2009
Obsah 1 Úvod 2 Linux jako router 2.1 Volba hardware 2.2 Volba software 2.2.1 Výběr distribuce 2.2.1.1 Distribuce založené na RPM 2.2.1.2 Distribuce založené na DEB 2.2.1.3 Ostatní distribuce 2.2.2 Použité aplikace 2.2.3 Konfigurace 2.2.3.1 IPTables – paketový filtr 3 Linux jako server 3.1 Volba hardware 3.2 Volba software 3.2.1 Výběr distribuce 3.2.2 Použité aplikace 3.2.3 Konfigurace 3.2.3.1 Webserver Apache 3.2.3.2 FTP server vsftpd 4 Praktické provedení
-1-
1 Úvod Když jsem na začátku školního roku dostal za úkol sestavit malou síť, skládající se z routeru a klientu, myslel jsem si, že to do Vánočních prázdnin stihnu. Jenže jsem pomalu zjišťoval, že nestíhám tak jak bych si představoval. Nakonec jsem virtuální servery celé vytvářel doma a do školy donesl na DVD. Většinu informací jsem čerpal z vlastních zkušeností, popřípadě manuálových stránek a konfiguračních souborů. Seznam možných architektur jsem ověřoval v internetové encyklopedii Wikipedia. 2 Linux jako router 2.1 Volba hardware Volba hardware je poměrně podceňovaná činnost. Samotný Linux je nenáročný – funguje na velkém množství platforem, např. ARM, Motorola 68k (některé počítače Amiga – A1200, A2500, A3000, A4000), x86, MIPS, PowerPC, SPARC. Nás však bude pravděpodobně zajímat hlavně architektura x86, používaná v dnešních počítačích. Ani zde není Linux nijak vybíravý – funguje na čemkoliv od 386. Sám jsem ještě nedávno provozoval Linux na počítači s procesorem Cyrix 486 DX2 s 16MB RAM. Většinou se na router používá starý, už nevyužívaný hardware. Výhoda je v nulových pořizovacích nákladech, nevýhody potom nízký výkon – což ale mnohdy nevadí - a vyšší spotřeba. Pokud se chcete chovat ekologicky, nejlepší volbou je starý notebook, nebo netbook. Sice je displej zbytečný, ale odmění se vám nízkou spotřebou (typicky do 20W), ale opět za cenu nižšího výkonu. Další možností jsou integrovaná řešení jako VIA Epia nebo Intel Little Falls, s nízkou spotřebou a nižším výkonem oproti plnohodnotným počítačům. Počítač s procesorem Intel 486 je schopný zvládnout základní NAT i při využití linky cca 10Mbit/s, ale samozřejmě záleží na využití – jakákoliv další běžící služba výrazně zpomalí celou linku. Z tohoto pohledu skutečně není výkon problém, pokud nechcete nasazovat filtrování dat podle obsahu, IDS, nebo přesouvat po místní síti data přes SSH. Nezbytná součást routeru jsou minimálně dvě síťová rozhraní – jedno pro komunikaci se zbytkem internetu, druhé pro vnitřní síť. 2.2 Volba software 2.2.1 Výběr distribuce Téma výběru distribuce je už ožehavější. Na na toto téma byly vedeny stovky internetových diskuzí. Nutno dodat, že bez jakéhokoliv výsledku. U výběru distribuce je nejdůležitější to, jak vám vyhovuje, jak se vám s ní pracuje. Některé distribuce se -2-
obecně pokládají za určené na desktop nebo na server. Opravdu nedoporučuji se takovýmto dělením řídit – sám na notebooku používám Debian – distribuci ve své stabilní větvi značně konzervativní a určenou spíše na servery. Nicméně, pokud s Linuxem začínáte, doporučuji si vybrat distribuci, kterou někdo ve vašem okolí používá – ušetří vám to značné množství času v případě problémů. Já osobně jsem nakonec zvolil Debian, protože s ním mám nejvíce zkušeností. Pro srovnání je zde malý přehled nejznámějších Linuxových distribucí. 2.2.1.1 Distribuce založené na RPM RPM je balíčkovací systém původně používaný v distribuci Red Hat Linux. Z nejznámějších distribucí tento systém používá například Fedora, Red Hat Enterprise Linux (a jeho zdarma dostupný derivát CentOS), openSUSE/SUSE Linux, nebo např. Mandriva Linux. 2.2.1.2 Distribuce založené na DEB DEB je formát balíčků původně vytvořený pro Debian Linux, dnes ho stejně jako RPM používá široká škála distribucí, jako Debian, Ubuntu a jeho deriváty, Linspire, Knoppix nebo například Damn Small Linux. 2.2.1.3 Ostatní distribuce Mezi ostatní Linuxové distribuce můžeme zařadit jednu z nejstarších – Slackware s velmi jednoduchým systémem balíčků, Gentoo se systémem Portage odvozeným od BSD portů, Linux From Scratch – systém, který si musíte sami postavit ze zdrojových kódů, nebo poměrně nový Arch Linux. Sem bych zařadil i ostatní systémy UNIXového typu, zejména pak stále více se prosazující (Free/Open/Net)BSD. 2.2.2 Použité aplikace Jak už jsem zmínil, jako distribuci jsem zvolil Debian, protože s touto distribucí mám nejvíce zkušeností. Nejprve je nutné si ujasnit, co od routeru budeme očekávat. V našem případě to bude jednoduchý NAT a port forwarding. Na to nám stačí běžné linuxové jádro a konfigurační nástroj iptables. Pro vzdálený přístup budeme využívat SSH, DHCP a DNS cache server. Potřebné balíčky nainstalujeme příkazem: aptitude install openssh-server dnsmasq 2.2.3 Konfigurace Předpokládejme, že máte čistě nainstalovaný systém – před samotným nasazením je třeba udělat několik zásahů do systému. Nejprve je potřeba v souboru /etc/network/interfaces nastavit síťová rozhraní – -3-
informace a příklady konfigurace naleznete v souboru /usr/share/doc/ifupdown/examples. Po dokončení konfigurace spusťte: /etc/init.d/networking restart Další nutná konfigurace je v souboru /etc/dnsmasq.conf: na konec souboru připojte: interface=eth1 a dhcp_range=192.168.3.20,192.168.3.200,255.255.255.012h Poté restartujte dnsmasq: /etc/init.d/dnsmasq restart Zbytek systému žádné rozšiřující nastavení nevyžaduje 2.2.3.1 IPTables – paketový filtr Poznámka: pro nastavení sítě budeme předpokládat, že eth0 je venkovní a eth1 vnitřní síťová karta. Dále budeme předpokládat, že IP vnějšího rozhraní je 192.168.1.99 a IP vnitřního rozhraní 192.168.3.1. IP stroje interServer 192.168.3.2, IP stroje intraServer 192.168.3.2. IP důvěryhodného stroje (adminClient) pro vzdálenou stranu 192.168.1.23. Od routeru budeme vyžadovat následující činnosti: - ze stroje adminClient je povolen SSH přístup na router - z rozhraní eth1 jsou všechny požadavky na služby: HTTP, FTP a SSH přeposílány na intraServer - z rozhraní eth0 jsou všechny požadavky na služby HTTP a FTP přeposílány na interServer - router provádí NAT mezi eth0 a eth1 - všechny ostatní požadavky jsou zahozeny. A nyní k vlastní realizaci. Nastavení firewallu pro jednoduchost ukládáme do /etc/rc.local – skript, který se spustí po startu počítače. #!/bin/sh # maskarada IP iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # povoleni SSH pristupu jen pro admina iptables -A INPUT -i eth0 --protocol tcp --destination-port 22 --source 192.168.1.23 -j ACCEPT iptables -A INPUT -i eth0 --protocol tcp --destination-port 22 -j DROP # port forwarding z vnejsku na verejny server (HTTP/S, FTP) iptables -t nat -A PREROUTING -i eth0 --protocol tcp --destination 192.168.1.9 \ --destination-port 443 -j DNAT --to 192.168.3.3 iptables -t nat -A PREROUTING -i eth0 --protocol tcp --destination 192.168.1.9 \ --destination-port 80 -j DNAT --to 192.168.3.3 iptables -t nat -A PREROUTING -i eth0 --protocol tcp --destination 192.168.1.9 \ --destination-port 21 -j DNAT --to 192.168.3.3 # port forwarding z vnitrni site na intranetovy server (HTTP/S, FTP) iptables -t nat -A PREROUTING -i eth1 --protocol tcp --destination 192.168.1.9 \ -4-
--destination-port 80 -j DNAT --to 192.168.3.2 iptables -t nat -A PREROUTING -i eth1 --protocol tcp --destination 192.168.1.9 \ --destination-port 443 -j DNAT --to 192.168.3.2 iptables -t nat -A PREROUTING -i eth1 --protocol tcp --destination 192.168.1.9 \ --destination-port 21 -j DNAT --to 192.168.3.2 # ochrana pred podvrzenim IP adres echo "1" > /proc/sys/net/ipv4/conf/eth0/rp_filter echo "1" > /proc/sys/net/ipv4/conf/eth1/rp_filter # a povoleni routovani globalne echo "1" > /proc/sys/net/ipv4/ip_forward Soubor uložíme a načteme: /etc/init.d/rc.local start Tím je jednoduchá konfigurace firewallu (a vlastně i celého routeru) hotová. 3 Linux jako server 3.1 Volba hardware Volba vhodného hardware závisí hlavně na využití samotného serveru, z tohoto důvodu je nemožné doporučit nějakou konkrétní možnost. 3.2 Volba software 3.2.1 Výběr distribuce Výběr distribuce pro server se prakticky neliší od výběru distribuce pro router. 3.2.2 Použité aplikace Pro standardní konfiguraci LAMP (Linux, Apache, MySQL, PHP) serveru, se SSH a FTP přístupem a webovou správou databáze budeme potřebovat následující balíky: apache2, php5, libapache2-mod-php5, mysql-server, mysql-client, php5-mysql, phpmyadmin openssh-server vsftpd. Tyto nainstalujeme: aptitude install apache2 php5 \ libapache2-mod-php5 mysql-server mysql-client \ php5-mysql phpmyadmin openssh-server vsftpd 3.2.3 Konfigurace Síť se konfiguruje stejným způsobem jako pro router (viz. 1.2.3). 3.2.3.1 Webserver Apache Konfigurace HTTP serveru Apache je velmi snadná – všechny konfigurační soubory jsou uloženy v přehledné struktuře v adresáři /etc/apache2. Pokud chceme aby každý uživatel mohl přes server zveřejnit své stránky (na adrese http://server/~uzivatelskeJmeno/stranka), je nutné zajistit nahrání modulu do Apache -5-
mod_userdir. To uděláme vytvořením symbolických odkazů na soubory userdir.conf a userdir.load z adresáře mods-available/ do adresáře mods-enabled/. V souboru userdir.conf je možno změnit adresář, který má uživatel ve své domovském adresáři jako výchozí. 3.2.3.2 FTP server vsftpd Konfigurace vsftpd serveru je také poměrně jednoduchá – jedná se o úpravu souboru /etc/vsftpd.conf. Soubor je dobře okomentován, přesto přikládám fungující konfiguraci: listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 chroot_local_user=YES 4 Praktické provedení K dispozici jsem dostal dva počítače (ten pomalej a Intel Celeron 2.2GHz, 758MB RAM, 80GB HDD), switch, síťové kabely a připojení k školní síti. Slabší stroj jsem použil na router a Linux je tam jediný systém. Druhý počítač slouží jako desktop – s nainstalovaným dualbootem Windows XP Home – Debian Etch. V obou systémech je nainstalován VirtualBox s jedním Linuxovým serverem – Debian Etch. (Ve Windows intraServer a v Linuxu interServer). Jedná se o poměrně nepraktické řešení (pro změnu serveru je nutné restartovat celý stroj), nicméně účelu ukázat možnosti virtualizace na obou platformách slouží dobře.
-6-