Linux: Z Intranetu do InternetuSeriál o Linuxu, pátý díl, Softwarové noviny 11/2000
Připojení jednoho počítače k Internetu je až hříšně
jednoduché. Chceme-li připojit k Internetu celou lokální síť, je
to trochu složitější. V tomto díle si ukážeme jednu z možností,
jak připojit lokální síť s Linuxovým serverem k Internetu. Pro
připojení k Internetu není nutné do vlastní sítě nijak složitě
zasahovat. Stačí koupit modem a připojit jej k serveru. Další za
vás obstatá Linux IP Masquerading (IP MASQ), technologie podobná
technologii NAT (Network Address Translation), používané v
některých komerčních firewallech nebo routerech.
Jak IP MASQ funguje? Na serveru vznikne brána do
Internetu. Server se navenek tváří jako počítač s IP adresou
získanou od poskytovatele, ve vnitřní síti ale nadále
představuje intranetový server se svou původní adresou. Všechny
požadavky vedoucí do Internetu jsou automaticky posílány na
server. Server potom správně rozesílá odpovědi jednotlivým
počítačům v síti. Vlastní síť tak zvenku není vůbec vidět. IP
MASQ navíc umožňuje vztyčit mezi vámi a záludným okolním světem
ochrannou hradbu, aby k vám nepronikl žádný nezvaný host.
|
Čeho je vám třeba
Co pro zprovoznění takové technologie potřebujete? Počítač
vybavený Linuxem, jenž bude sloužit jako brána a
modem. Nepokoušejte se o maškarádu s jádrem, jehož číslo začíná
ještě 1.X.X. Potřebujete alespoň jádro verze 2.0 nebo novější. S
každou verzí jádra se postup pro spuštění maškarády trochu
liší. Máte-li jádro 2.0 nebo 2.2, neměl by být s IP MASQ
výraznější problém. V tomto článku se zaměříme především na
verzi 2.2.X. Majitele novějších jader asi trochu
zklamu: počínaje verzí 2.3. se architektura jádra lehce
pozměnila a v dokumentaci zatím není příliš dobře popsáno, jak
IP MASQ s tímto jádrem spustit.
IP MASQ by měl spolehlivě fungovat v těchto
distribucích: Caldera (od verze 2.3), Debian (od verze 2.1),
Linux Mandrake (od verze 5.3), RedHat (od verze 5.1),
Slackware (od verze 7.0), SuSE (od verze 5.2) a Turbo
Linux.
Při přípravě systému na spuštění IP MASQ bude velmi
pravděpodobně nutné nově překládat jádro. Potřebujete proto jeho
zdrojové kódy. Měly by být nedílnou součástí vašeho Linuxu
(najdete je v adresáři
/usr/src/linux). Jestliže je nemáte,
musíte si je opatřit. Prohledejte instalační média, ze kterých
jste si Linux instalovali, nebo se podívejte na server www.kernel.org, kde jsou dostupné zdrojové kódy
všech dosud publikovaných verzí jádra.
Dále potřebujete zdrojové kódy modulů pro jádro. Nemáte-li
doma, získáte je například na
http://www.pi.se/blox/modutils/index.html nebo
ftp://ftp.ocs.com.au/pub/modutils/.
Máte-li jádro 2.0, budete pro správné nastavení potřebovat
ještě IP Chains ve verzi 1.3.9 nebo novější. Měla by být
součástí vaší distribuce, protože je standardně vyžadována od
jádra 2.1.102
(http://www.rustcorp.com/linux/ipchains/). IP
Chains je nezbytná podpora jádra sloužící k filtrování paketů a
vztyčení bezpečných firewallů.
Není možné v jednom článku popsat přesně všechny možné
konfigurace a situace, jež mohou při pokusech s IP MASQ a IP
Chains nastat. Dobrým pomocníkem jsou v takové situaci HOWTO:
návody, jak v Linuxu provést to či ono. HOWTO jsou často
součástí rozsáhlejších distribucí, ale jestliže je nemáte,
můžete si je stáhnout na adrese http://www.linuxdoc.org. Podstatné informace
najdete především v IP Chains HOWTO, IP Masquerade HOWTO a
případně v IP Firewall HOWTO.
A konečně pro připojení k Internetu potřebujete něco, čím
se připojíte: funkční modem nebo pevnou linku. Server by měl mít
dvě nezávislá síťová rozhranní: pro vnitřní a vnější
síť. Nejčastější kombinace je rozhraní eth0 pro vnitřní síť a
ppp0 pro vnější síť. Odpovídá to připojení lokální sítě pomocí
modemu. Server může být do Internetu připojen i pomocí pevné
linky, v takovém případě by měl mít dvě síťové karty (eth0 a
eth1): opět jednu pro přístup do Internetu a jednu pro vnitřní
síť.
|
|
|
Hrabeme si v jádře
Nejprve zkontrolujte, jakou verzi jádra vlastně
máte:
[lmat@duck modules]$ uname -a
Linux duck 2.2.14-5.0 #1 Tue Mar 7 20:53:41 EST 2000 i586 unknown
Jak vidíte, já mám jádro 2.2.14-5.0. Majitelé jádra 2.2.11
a starších verzí by měli být velmi opatrní: tyto verze obsahují
chybu v implementaci spolupráce s IP Chains a díky tomu i
potenciální bezpečnostní díru. Doporučuji pořídit novější
verzi jádra.
Nyní musíte nově sestavit a přeložit jádro systému. Je
pochopitelné, že k tomu musíte být přihlášeni k systému jako
root. Zazálohujte data (jeden nikdy neví) a přejděte do adresáře
/usr/src/linux. K sestavení nového jádra,
jeho překladu a instalaci je nutné nejprve spustit program,
který nastaví parametry nového jádra, jádro přeložit a nově
přeložené jádro umístit na správné místo.
Nové parametry jádra můžete upravovat v grafickém i
textovém režimu. Chcete-li pracovat v textovém režimu, zadejete
v příkazovém řádku (musíte být v adresáři
/usr/src/linux) příkaz make
config. Budete postupně dotazováni, co si přejete do
jádra zahrnout. Po zobrazení dotazu můžete stisknout klávesu
Y, chcete-li nabízenou volbu potvrdit, nebo
N jestliže nesouhlasíte. Některé ovladače mohou
být po překladu zahrnuty buď přímo v jádře, nebo dostupné jako
vnější zaveditelné moduly. Tam, kde je to možné, máte proto k
dispozici ještě klávesu M - modul. Nápovědu
získáte ve všech případech stiskem klávesy
?. Možnosti, které máte k dispozici, jsou
uvedeny vždy za dotazem v hranatých závorkách, velkým písmenem
je uvedeno nastavení použité při posledním překladu
jádra. Chcete-li ponechat původní nastavení, stiskněte klávesu
enter.
Takto zadané nastavení se ukládá do souboru
/usr/src/linux/config. Soubor je
velmi důležitý, protože je přesnou informací o stavu
jádra. Starý soubor proto zazálohujte na bezpečné místo:
kdybyste se s IP MASQ nepohodli, umožní vám uvést systém do
původního stavu.
Jádro můžete sestavit i v grafickém rozhraní. Slouží k
tomu samostatný nástroj, který spustíte z příkazového řádku
příkazem make xconfig. I tento příkaz je
nutné spouštět z adresáře /usr/src/linux
jako root. Otevře se vám okno s mnoha tlačítky. Jednotlivá
tlačítka slouží ke vstupu do menu pro konfiguraci souvisejících
parametrů jádra. Možné volby máte vypsány v dlouhém seznamu, na
levé straně můžete myší povolovat nebo zakazovat jejich
nastavení (u modulů je možné rozhodovat, zda se moduly
stanou). Vpravo vedle názvu položky je tlačítko pro nápovědu k
jednotlivým položkám. Všechny důležité volby, které uvedu v
následujícím odstavci najdete pod tlačítky Loadable
module support a Networking
Options. Po ukončení nastavení stiskněte
Save and Exit. Nové nastavení je uloženo
do souboru /usr/src/linux/config.
Většinu svých původních nastavení jádra ponechejte,
uvádím jen ta, jejichž hodnota je pro chod IP MASQ
rozhodující. Jednotlivé volby za sebou následují v pořadí, v
jakém jste na ně dotazování při sestavování jádra v textovém
režimu. Až na několik případů, kde je na to upozorněno, je
nutné všechny volby povolit (odpovídá stisku Y). U každé volby
je v závorce napsaná velkými písmeny proměnná, kterou najdete v
souboru /usr/src/linux/config. Před
sestavováním nového jádra proto stačí zkontrolovat, zda náhodou
staré jádro nevyhovuje i požadavkům pro IP MASQ. Ušetříte si tak
mnoho času i námahy.
Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) Umožní vám později povolit IP MASQ.
Enable loadable module support (CONFIG_MODULES) Umožní jádru pracovat s moduly, tedy i s modulem pro
IP MASQ.
Networking support (CONFIG_NET) Povoluje práci sítě.
Packet
socket(CONFIG_PACKET) Není úplně
nutné, ale je doporučené. Umožní vám použít nástroj TCPDUMP
pro odhalení zdroje problému při výskytu obtíží.
Kernel/User netlink socket (CONFIG_NETLINK) Volitelné, ale umožní záznam útoků na bezpečnostní
hradbu (firewall).
Routing messages (CONFIG_RTNETLINK) NEPOVOLOVAT.
Network firewalls (CONFIG_FIREWALL) Zapíná zmíněný nástroj IP Chains.
TCP/IP networking (CONFIG_INET) Povoluje síť pracující s protokolem TCP/IP.
IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) NEPOVOLOVAT. Není nutné pro práci IP MASQ.
IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE) Užitečné, umožňuje směrovat a monitorovat podezřelé pakety.
IP: firewalling (CONFIG_IP_FIREWALL) Dovolí vztyčit kolem vaší sítě firewall, bezpečnou hradbu.
IP: firewall packet netlink device (CONFIG_IP_FIREWALL_NETLINK) Je volitelné, ale umožní monitorovat útoky na hradbu.
IP: always defragment (required for masquerading) (CONFIG_IP_ALWAYS_DEFRAG) Vyžadováno pro IP MASQ.
IP: masquerading (CONFIG_IP_MASQUERADE) Povolí vlastní práci IP MASQ
IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) Umožní pracovat s ICMP pakety. Důležité při testování
funkčnosti spojení.
IP: masquerading special modules support (CONFIG_IP_MASQUERADE_MOD) Zajistí později přístup z vnější sítě přímo na
konkrétní počítače vnitřní sítě.
IP: ipautofw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPAUTOFW) NEPOVOLOVAT.
IP: ipportfw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW) Umožňuje počítačům z Internetu pracovat přímo s
jednotlivými počítači ve vnitřní síti. Používá se pro
elektronickou poštu, telent a WWW.
IP: ip fwmark masq-forwarding support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_MFW) NEPOVOLOVAT.
IP: optimize as router not host (CONFIG_IP_ROUTER) Optimalizuje jádro pro práci se sítěmi.
IP: GRE tunnels over IP (CONFIG_NET_IPGRE) NEPOVOLOVAT.
IP: TCP syncookie support (not enabled per default) (CONFIG_SYN_COOKIES) Velmi doporučováno pro základní bezpečnost sítě.
Network device support (CONFIG_NETDEVICES) Povoluje síťovou vrstvu.
Dummy net driver support (CONFIG_DUMMY) Může pomoci při ladění problémů.
/proc filesystem support (CONFIG_PROC_FS) Povolit.
Po nastavení parametrů jádra je vhodné nejprve vyřešit
závislosti příkazem make dep. Následuje
vlastní překlad jádra. Existuje několik možností, jak jádro
sestavit. Standardním postupem jsou příkazy make
zImage nebo make bzImage. V takovém
případě bude nové jádro po překladu uloženo v adresáři
/usr/src/linux/arch/i386/boot. Jestliže
používáte LILO, můžete si nové jádro rovnou i nainstalovat
příkazem make lilo nebo make
zlilo. Nakonec je nutné nově přeložit a nainstalovat i
moduly jádra příkazy make modules a
make modules_install. Po novém startu systému
budete připraveni na spuštění IP MASQ.
Podrobnou nápovědu, jak postupovat při novém překladu
jádra a co s ním potom vám poskytne kernel-howto. Není-li
součástí vašeho Linuxu, určitě jej najdete na serveru www.linuxdoc.org, jenž doslova přetéká
dokumentací a návody pro Linux.
Po sestavení nového jádra musíte ještě nově přeložit a
nainstalovat moduly. Jinak IP MASQ fungovat nebude, neboť je
také jedním z modulů jádra. Musíte proto ještě použít příkazy
make modules a make
modules_install.
|
|
|
Mámo, táto, přesvědč mě, že brouzdáme bezpečně!
Nyní vás čeká další velký krok: musíte zabezpečit svou
vnitřní síť před útoky zvenčí. Nikdy nepropadejte jistotě, že se
vám nemůže nic stát. Svět je v podstatě záludný a hnusný a žádná
bezpečnostní díra nezůstane nepotrestána. Před připojením sítě k
Internetu proto doporučuji podrobně prostudovat Security
HOWTO.
Jak už to v Linuxu bývá, stavba hradby zahrnuje tyto
kroky: příprava konfiguračních souborů a nové spuštění
sítě. Bezpečnostní pravidla pro přístup do vaší sítě se definují
v souboru
/etc/rc.d/rc.firewall/. Následující výpis
ukazuje základní a nejjednodušší soubor pravidel:
#!/bin/sh
#
# rc.firewall - Initial SIMPLE IP Masquerade test for 2.1.x and 2.2.x kernels using IPCHAINS
#
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
#/sbin/modprobe ip_masq_raudio
#/sbin/modprobe ip_masq_irc
echo "1" > /proc/sys/net/ipv4/ip_forward
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr
/sbin/ipchains -M -S 7200 10 160
#/sbin/ipchains -A input -j ACCEPT -i bootp_clients_net_if_name -s 0/0 67 -d 0/0 68 -p udp
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ Na prvním nekomentovaném řádku souboru (to jsou řádky,
které nezačínají znakem #) se natahují
všechny moduly potřebné pro chod IP MASQ. Na druhém řádku se
nastavuje maškaráda i pro přenosy souborů pomocí
FTP. Následující dva komentované řádky dělají totéž pro
RealAudio a IRC. Ten, kdo chce přes Internet poslouchat rádio
nebo klábosit s kamarády v IRC síti, nechť komentáře na začátku
řádku smaže.
Následující řádky, začínající slovem
echo jsou životně důležité: nastavují
směrování adres. (Majitelé RedHatů nechť ještě zkontrolují ve
svých souborech
/etc/sysconfig/network-scripts/ifcfg-*, zda
mají nastavenou proměnnou FORWARD_IPV4 na
hodnotu yes). První řádek je určen pro
uživatele s pevně přidělenou adresou připojené pomocí pevné
linky. Uživatelům připojeným k Internetu modemem nebo využívajícím
dynamické přidělování adres je určen řádek druhý. Vyberte si
tedy ten správný.
Další řádek nastavuje některé časové limity, jejich
podrobný popis najdete v dokumentaci. Všechna tři čísla jsou v
sekundách, první se týká ukončení TCP spojení, druhé ukončení
přenosu paketu a třetí je pro spojení přes protokol UDP.
Další řádek je důležitý opět jen pro uživatele, kterým je
dynamicky přidělována adresa. Výraz
boot_clients_net_if_name by měl být nahrazen
názvem zařízení, kterému bude adresa přidělována:
eth0, eth1 nebo
ppp0.
Poslední dva řádky konečně spouští vlastní
maškarádu. Jestliže jste si pro vnitřní síť zvolili jiný rozsah
adres nebo masku podsítě, upravte je na správné hodnoty.
Po uložení souboru na správné místo mu ještě změňte
přístupová práva tak, aby byl spustitelný (chmod 700
/etc/rc.d/rc.firewall).
Nyní musíte ochrannou hradbu vztyčit a spustit IP
MASQ. Nejjednodušším způsobem je připojit
na konec souboru /etc/rc.d/rc.local
řádek:
echo "Loading the rc.firewall ruleset.." /etc/rc.d/rc.firewall
Tato možnost má jednu nevýhodu: bezpečnostní pravidla se
nastaví až těsně před koncem startu systému, zatímco síť je
spouštěna na začátku. Během startu systému tak vystavujete
nechráněný počítač do sítě. Existuje proto ještě druhá, byť
trochu složitější možnost: vytvořit spouštěcí skript v adresáři
/etc/rc.d/init.d/. Popis tvorby skriptu by
bohužel příliš přesáhl rozsah totoho článku, zájemci je najdou v
IP MASQ HOWTO. Doporučuji též IPCHAINS HOWTO
Je-li síť, kterou pomocí IP MASQ k Internetu připojujete,
rozsáhlá, můžete připojení omezit jen pro některé konkrétní
počítače v síti. V takovém případě upravte konec souboru
/etc/rc.d/rc.firewall: Nejprve zakážeme
všem počítačům přístup ven a potom na samostatných řádcích
povolíme připojení jednotlivým počítačům. Následující ukázka
povoluje připojení k Internetu jen pro počítače s adresou
192.168.0.2 a 192.168.0.3:
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.2/32 -j MASQ
/sbin/ipchains -A forward -s 192.168.0.3/32 -j MASQ |
|
|
Nastavení ostatních počítačů v síti
Nyní zbývá jen pár drobností: upravit nastavení
ostatních počítačů v síti. IP MASQ se dokáže domluvit s těmito
operačními systémy:
-
Linux 1.2.x, 1.3.x, 2.0.x, 2.1.x, 2.2.x
-
Solaris 2.51, 2.6, 7
-
Windows 95, OSR2, 98
-
Windows NT 3.51, 4.0, 2000 (workstation i server)
-
Windows For Workgroup 3.11 (s přidanou podporou pro TCP/IP)
-
Windows 3.1 (s balíčkem Netmanage Chameleon)
-
Novell 4.01 Server s podporou služeb TCP/IP
-
OS/2 (včetně Warp v3)
-
Macintosh OS (s MacTCP nebo Open Transport)
-
DOS (doplněný o NCSA Telnet, případně DOS Trumpet)
-
Amiga (s AmiTCP nebo AS225-stack)
-
VAX Stations 3520 a 3100 s UCX (TCP/IP pro VMS)
-
Alpha/AXP s Linuxem (Redhat)
-
SCO Openserver (v3.2.4.2 a 5)
-
IBM RS/6000 s AIX
Ve všech operačních systémech je společné, co musíte
jednotlivým počítačům nastavit:
-
IP adresa by měla být v rozsahu
privátních používaných v lokálních sítítch.
-
Adresa brány je IP adresa
počítače, na kterém je IP MASQ spuštěn.
-
Jméno domény je jméno, které jste
přidělili svému Intranetu.
-
DNS server: jednak váš DNS server
pro doménu (192.168.0.1), dále případně i DNS servery
poskytovatele připojení nebo DNS server v síti, ke které se
připojujete.
-
Maska podsítě by měla být
nastavena na 255.255.255.0
Ve Windows všechny tyto údaje vyplníte v Ovládacích
panelech v položce Síť. Jestliže se ve vaší vlastní vnitřní síti
nevyskytuje žádný WINS server, ponechejte nastavení WINS
nevyplněná, ostatní údajte vyplňte.
V Linuxu budete muset zkontrolovat, jak máte nastaveny
proměnné: IPADDR (na 192.168.0.x),
NETMASK (maska podsítě, tedy
255.255.255.0), GATEWAY (adresa brány,
pravděpodobně 192.168.0.1), a navíc ještě
BROADCAST na 192.168.0.255.
V Linuxu stačí zastavit a znovu spustit síťové služby, ve
Windows musíte až na Windows 2000 po každé změně nastavení sítě
spustit znovu celý operační systém. Až nainstalujete nové jádro
na server, můžete se po jeho novém spuštění zkusit ponořit do
Internetu.
|
|
Autorkou tohoto webu je LenkaKT, alias Lenka Kosková-Třísková. Bádám a vyučuji na TU Liberec. |
Poslední změna: 3. 3. 2011
|
|