|
CONFIGURACIÓ D'UN SERVIDOR GNU/LINUX |
|
Nom: Daniel Clemente Laboreo Tutor: Joan Canudas Curs: 2n BAT. C Centre: IES Bruguers (Gavà) Data: Gener 2003 http://www.danielclemente.com/servidor/ |
Índex
1 INTRODUCCIÓ 1
1.1 Context 1
1.2 Justificació 2
1.3 Objectius 3
2 CONFIGURACIÓ DEL SERVIDOR 4
2.1 Preparació 4
2.1.1 Estat inicial dels ordinadors 4
2.1.2 Mètode a seguir 5
2.1.3 Elecció de l'ordinador 6
2.2 Instal·lació de Linux 7
2.2.1 Elecció de la distribució 7
2.2.2 Procés d'instal·lació 11
2.2.3 Configuracions bàsiques 14
2.3 Serveis bàsics 17
2.3.1 Integració amb la xarxa de Windows 17
2.3.2 Servidor web per a l'Intranet 23
2.3.3 Servidor d'FTP 26
2.3.4 Configuració del proxy 29
2.4 Serveis secundaris 35
2.4.1 Suport de PHP a la web 35
2.4.2 Suport de CGIs a la web 38
2.4.3 Estadístiques d'accés a la web 40
2.4.4 Connexions per Secure Shell 42
2.4.5 Web per a Internet 44
2.4.6 Servidor DNS 48
2.4.7 Firewall 52
3 CONCLUSIONS 59
3.1 Avaluació general 59
3.2 Altres utilitats 60
4 ANNEXOS 61
4.1 Comandes importants 61
4.2 Seguretat 64
4.3 Manteniment 66
4.4 Glossari de termes 67
4.5 Llicència FDL de la GNU 70
5 BIBLIOGRAFIA 71
Sóc un alumne de l'institut IES Bruguers, de Gavà (Barcelona), usuari habitual de Linux, programador i webmaster. El meu Treball de Recerca consistirà en el reciclatge d'un ordinador vell d'una de les aules d'informàtica per convertir-ho en un ordinador central de l'institut que ofereixi diferents serveis a alumnes i professors; i només utilitzant només Linux i altre software lliure de codi obert.
L'ordinador posarà a l'abast dels alumnes i visitants una pàgina web amb continguts dinàmics, diferents formes de compartir arxius entre els departaments, servei de proxy per accelerar la navegació, i altres característiques avançades com els dominis DNS, les connexions SSH a l'ordinador, el filtrat de paquets, el PHP i els CGIs.
Tot això es farà sense haver de comprar programes professionals, ja que tot el software utilitzat és gratuït i legal. A més, aportarà a l'institut tecnologies molt més professionals en utilitzar un sistema operatiu del nivell de Linux.
El treball està orientat a lectors que ja tinguin una certa experiència en qualsevol distribució de Linux utilitzant la consola de comandes, o, al menys, que tinguin interès per aprendre (això és el més important). No s'explicaran les ordres bàsiques ja que hi ha molts tutorials més apropiats per tot Internet.
També suposarem que el lector entén una mica d'anglès (l'anglès relacionat amb la informàtica), perquè així els conceptes quedaran més clars.
He escollit aquest tema per molts motius:
En primer lloc, m'agrada molt Linux (l'únic sistema operatiu que utilitzo) i penso que tothom hauria de conèixer que hi existeix i que hi ha alternatives a Windows; és clar que cadascú utilitza el sistema operatiu que vol, però molta gent no vol saber res més només perquè pensen que “allò és només per a experts”. Aquest treball no servirà per demostrar que és molt fàcil d'usar, perquè precisament utilitzarem una de les distribucions més complicades, la Debian Mandrake o Knoppix són més adequades per als principiants, però no per a la finalitat d'aquest treball.
També he fet el servidor perquè he vist que hi feia falta un ordinador central en una xarxa cada vegada més gran; feia falta un lloc comú que servís per compartir arxius entre els diferents departaments, i per simplificar les tasques de manteniment (instal·lació d'un nou programa a cada màquina, actualització dels antivirus, etc). I a més, algunes instal·lacions ho requerien (per exemple, per assolir la velocitat màxima de la línia ADSL s'havia de muntar un proxy).
A més, crec que posar un sistema operatiu com Linux, per al qual hi existeixen milers d'aplicacions professionals des de fa molts anys, elevarà el nivell de les instal·lacions informàtiques del centre, ja que obrirà les portes a moltíssimes possibilitats per als alumnes i professors: es podran fer pràctiques de programació en qualsevol llenguatge, comprovar els coneixements de xarxes i telecomunicacions, instal·lar filtres i instruments de protecció com als ordinadors de les grans empreses, monitoritzar l'estat de tota la xarxa, i qualsevol altra cosa que puguem imaginar. L'ordinador serà del mateix nivell que els que es poden trobar a les universitats d'informàtica.
És clar que el treball també servirà per contribuir a la documentació de Linux en català, però aquesta vegada amb un cas pràctic fet per apartats, i amb les opinions, problemes, idees i errors que han aparegut durant la seva realització.
Finalment, aquest treball també l'he fet amb la intenció d'ajudar els futurs informàtics que estan aprenent i que volen conèixer coses noves. Ho faig perquè a mi m'hauria agradat assabentar-me abans de l'existència de Linux.
Què es vol aconseguir amb el treball? No és només muntar un ordinador que faci de tot, sinó que...:
es vol millorar la qualitat de les instal·lacions del centre, utilitzant programes professionals.
es vol promoure l'ús de Linux i el software lliure, seguint l'exemple de Debian (la distribució menys comercial de totes)
es volen aprofitar els ordinadors vells que no funcionen amb altres sistemes operatius
i, és clar, es vol muntar un ordinador amb les següents característiques:
que sigui fàcil d'usar
amb servidor web, un per a Internet i un altre per a la xarxa interna
que el servidor web tingui suport per a scripts CGIs (comptadors, per exemple) i llenguatge PHP
que també mostri gràficament les estadístiques d'accés a la pàgina
amb servidor DNS per no haver de recordar IPs
amb servidor d'FTP per a posar arxius
que estigui integrat a la xarxa de Windows i que pugui compartir carpetes
que accepti connexions remotes per administrar-ho des d'altre lloc
que estigui protegit contra els alumnes entremaliats.
La xarxa de l'institut Bruguers consta de dues aules, una a cada pis, més els ordinadors dels diferents departaments que hi ha a ambdós pisos. El servidor es muntarà a una de les dues aules d'informàtica.
Els ordinadors no són tots iguals; hi ha diferents marques i models. Alguns tenen hardware millor que el d'altres, o no tenen determinat perifèric (per exemple, no tots tenen targeta de so). Tots utilitzen el sistema operatiu Windows 98, però inclús l'idioma és el català en alguns i el castellà en d'altres.
Hi ha un ordinador que no utilitza Windows 98 sinó Windows NT 4, i que gestiona la xarxa i els diferents grups de treball en què es classifiquen els ordinadors. Quan integrem el nostre servidor a aquesta xarxa, ho haurem de tenir en compte i el posarem junt amb aquest servidor NT.
Una nota curiosa és que a la xarxa no només hi ha ordinadors, sinó que també hi ha altres perifèrics connectats; per exemple un JetDirect i una fotocopiadora (amb IP i pàgina de configuració).
Tot això és només per veure que, encara que els ordinadors i dispositius són molt diferents entre ells, tots tenen en comú el mateix: formen part de la mateixa xarxa. Per tant, es comportaran de manera idèntica en accedir al servidor.
Aquesta xarxa és de classe C (255 ordinadors com a màxim), i la seva direcció IP és 192.168.0.0/24 (o sigui, que la màscara de subxarxa és 255.255.255.0).
Tota la xarxa està connectada a Internet mitjançant 2 línies ADSL de 2 Mbits/s cadascuna, però una d'elles està desactivada. La que funciona està controlada per un router Cisco del qual no podem modificar la configuració ja que pertany a la xtec (Xarxa Telemàtica Educativa de Catalunya). Per tant, per fer un servidor web on es pugui entrar des d'Internet s'haurà de demanar permís a aquesta entitat.
El treball pràctic està dividit en tres blocs: instal·lació, serveis bàsics, i serveis secundaris
Instal·lació: escollirem la distribució més apropiada, esborrarem tot el que hi hagi a l'ordinador, i posarem Linux amb el mínim d'opcions. Després començarem a canviar algun paràmetre i preparar el sistema per la part difícil.
Serveis bàsics: farem que l'ordinador faci les coses més importants per a les necessitats de la xarxa. L'integrarem a la xarxa de Windows amb el paquet Samba, farem que sigui un servidor web (per a la xarxa interna) amb Apache, posarem un servidor d'FTP amb pure-ftpd, i farem que faci de proxy per poder controlar les connexions i a més accelerar la navegació.
Serveis secundaris: ampliarem els de la primera part i n'afegirem d'altres. Per exemple, farem que el servidor web accepti connexions tant de la xarxa interna com d'Internet, i les tracti de forma diferent. També el millorarem donant-li suport per a PHP i per CGIs, i pujarem una pàgina on podrem veure estadístiques sobre les visites al servidor (pàgines més demanades, quantitat de visites per dia, etc). Farem que el servidor accepti connexions per SSH (semblant a Telnet però més segur) amb la finalitat de poder administrar el PC des de qualsevol lloc tal com es faria si s'estigués davant. Altres punts molt importants d'aquesta part són la configuració del servei DNS (traductor de noms de domini a les IPs adequades) i el firewall (que protegirà el servidor dels curiosos).
També pensarem en el manteniment de l'ordinador una vegada acabada tota la instal·lació, i en com actuar quan es comenci a quedar antiquat o surtin problemes.
No fa falta un ordinador molt potent per a que faci de servidor d'una xarxa petita.
Encara que podem veure anuncis de servidors amb vàries GigaBytes de memòria RAM, dos o més processadors que funcionen alhora, i molt més disc dur que un ordinador estàndard, també és cert que molts particulars i petites empreses compren especialment un ordinador de segona mà per fer un servidor.
Com es pot explicar aquesta diferència tan important? No és gaire difícil: tot depèn de l'ús que vulguem donar al servidor. Les grans empreses han de rebre cada dia milers de visites a la seva pàgina web, i controlar l'ús que fan de la xarxa els centenars d'ordinadors que utilitzen constantment els serveis d'impressió, proxy, firewall, correu electrònic, etc.
En canvi, el nostre servidor no sempre estarà utilitzant-se; i quan hagi de respondre alguna connexió, servir pàgines web o executar processos dels usuaris connectats difícilment arribarà al 100% d'ús. A més, Linux -a diferència d'altres sistemes operatius molt utilitzats- aprofita perfectament els recursos de l'ordinador, podent executar-se fins i tot en 386 amb 4 Mb de RAM i menys de 100 Mb. de disc dur.

L'ordinador
assignat
Processador Pentium I a 100 MHz
48 Mb de memòria RAM
Disc dur d' 1'2 Gb
CD-ROM i disquetera.
Targeta de xarxa Realtek 8139
Pantalla a color, teclat i ratolí estàndards.
Aquest ordinador té tot el que necessitem i més per a funcionar com a servidor d'un institut. No utilitzarem el CD-ROM ni el ratolí (encara que es pot fet), ja que amb la xarxa, teclat i pantalla ja es pot fer tot.
Com que Linux és software lliure que pot ésser modificat i adaptat per tothom, s'han creat moltes versions diferents del sistema operatiu, tantes que no es poden ni comptar. Hi ha distribucions especialitzades en aspectes molt concrets, i també n'hi ha d'altres per al públic general.
En principi, per a l'ús que li donarem, haurà de complir les següents condicions.
Seguretat: molt important! Cap sistema operatiu és 100% segur (tampoc Linux), i hem d'estar segurs que cap hacker pugui accedir al nostre servidor. Per tal de mantenir la seguretat s'hauran de fer actualitzacions del sistema constantment.
Fàcil d'actualitzar: haurem de tenir sempre les últimes versions dels programes per tal de corregir tots els possibles errors.
Estabilitat: no volem que es 'pengi': com que és el ordinador central, d'ell depèn tota la xarxa interna i alguns serveis externs. Hem de tenir en compte que pot trigar bastant en encendre's.
Simplicitat: no volem res d'altre món; pel que necessitem fer no ens fa falta ni utilitzar el mode gràfic. Ho farem només amb la terminal, i amb ordres. A més, així ens estalviarem els problemes que dóna tota la configuració de la targeta gràfica.
Com que no tenim cap necessitat extremadament especial, compararem només les 10 distribucions més utilitzades. Les versions analitzades quedaran antiquades en pocs mesos, però la filosofia dels programadors i el tipus de distribució de cadascuna continuarà sent el mateix.
|
Distribució |
|
|
|
|
|
|
|
|
|
|
|||
|
Mandrake |
Red Hat |
Debian |
Gentoo |
SuSE |
Slackware |
Lycoris |
Beehive |
Turbolinux |
Caldera |
||||
|
8.2 |
7.3 |
3.0r0 |
1.2 |
8.0 |
8.1 |
Amethyst2 |
0.5.0 |
8.0 |
3.1.1 |
||||
|
Preu (US$) |
25 |
60 |
- |
- |
40 |
40 |
20 |
- |
124 |
99 |
|||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Origen |
Frància |
USA |
- |
USA |
Alemanya |
USA |
USA |
USA |
Japó |
USA |
|||
|
Suport |
Suport web 30 dies per a la instal·lació |
Suport web 30 dies per a la instal·lació |
Llistes de correu |
Llistes de correu, fòrums |
Suport 60 dies per a la instal·lació |
A la instal·lació, i suport tècnic limitat |
Suport per e-mail 60 dies |
Llistes de correu |
Per a TurboTools; il·limitat per a la instal·lació |
Suport 60 dies per a la instal·lació |
|||
|
CDs |
3 |
7 |
7 |
1 |
3 |
4 |
3 |
1 |
7 |
6 |
|||
|
Versió del kernel |
2.4.18 |
2.4.18 |
2.2.20 |
2.4.19 |
2.4.18 |
2.4.18 |
2.4.18 |
2.4.18 |
2.4.18 |
2.4.13 |
|||
|
Instal·lació |
Gràfica |
Gràfica |
Text |
Text |
Gràfica |
Text |
Gràfica |
Text |
Gràfica |
Gràfica |
|||
|
Gestor per defecte |
KDE |
Gnome |
- |
- |
KDE |
KDE |
KDE |
KDE |
KDE |
KDE |
|||
|
Tipus paquets |
rpm |
rpm |
deb |
src |
rpm |
tar.gz |
rpm |
tar.gz |
rpm |
rpm |
|||
És curiós, però, d'aquestes deu, només les cinc primeres són les realment conegudes -especialment Red Hat, Suse i Mandrake- per la seva facilitat d'instal·lació i ús. És bo que utilitzem una distribució coneguda perquè així ens costarà poc trobar manuals, ajuda, o suport tècnic.
No obstant, anem a comparar-les punt per punt:
Preu: els preus que veiem a la taula són només per a les distribucions comprades a botigues. Aquestes versions inclouen un gran nombre de CDs amb tots els programes que puguin fer falta, tota la documentació disponible, i suport tècnic. L'alternativa a comprar aquests paquets és baixar-se els CDs d'Internet. Aquesta via és exactament igual de legal, amb la diferència de que no obtenim documentació impresa ni suport tècnic. Per tant, el preu el podem ignorar.
Suport: el suport tècnic només és disponible per als qui compren el paquet complet a una botiga. Com que podem trobar tota la informació a Internet, no ens farà falta suport.
Número de CDs: fins i tot en les distribucions de 7 CDs i més, només són imprescindibles els dos o tres primers. A més, com que tenim una connexió a Internet ràpida i volem estar actualitzats, sempre que necessitem un programa el baixarem directament. Per tant, un altre criteri que podem eliminar.
Versió del kernel: la versió del nucli del sistema operatiu és important sobretot quan tenim problemes de hardware. Hauríem de tenir una 2.4.18 o superior. Si no és el cas, s'ha de passar pel complicat procés de baixar un kernel nou, compilar-ho, i provar-ho fins que funcioni. Hem de destacar l'excepció de que sistemes com Debian tenen kernels precompilats llestos per a ser baixats i instal·lats sense problemes.
Tipus d'instal·lació: com que utilitzarem tot el Linux en mode text (consola), la instal·lació també serà així.
Gestor de finestres: com que no utilitzarem mode gràfic, no ens en farà falta cap. En cas que més tard volguéssim posar-ne un, amb un senzillet n'hi hauria prou.
Tipus de paquets: per instal·lar els programes que ens baixem, ho podem fer de diferents maneres:
tar.gz: aquests fitxers comprimits -anomenats Tarball- contenen el codi font del programa en llenguatge C o C++ . Per instal·lar-ho l'haurem de compilar per al nostre model d'ordinador, procés que pot trigar vàries hores depenent del tamany del programa, i que també pot donar alguns problemes. Com que funciona en totes les distribucions Linux, tots els programes que busquem estaran com a mínim en aquest format.
RPM: format de fitxers originàriament per Red Hat, però que s'ha adaptat a altres distribucions. És ràpid i fàcil d'utilitzar, però té els inconvenients de que hem de trobar els paquets preparats per al model concret del nostre ordinador. A més, acostumen a donar problemes de dependències.
DEB: format propi de Debian. Similar a l'RPM, però més segur. El gran avantatge que presenta és l'anomenat apt, que serveix per gestionar els paquets instal·lats i afegir de nous o eliminar-ne d'altres sense pràcticament cap esforç.
Filosofia: algunes distribucions (sobretot Suse, Red Hat i Mandrake) són molt comercials: s'anuncien per Internet, treuen a la venda packs i nous productes, edicions especials o ofereixen més suport tècnic. D'altra banda, distribucions com Debian segueixen la filosofia del software lliure: no hi ha cap empresa al darrere, sinó que està formada per voluntaris de tot el món que treballen i s'organitzen conjuntament. Com que no hi ha pressió comercial, no estan obligats a treure noves versions, i es dediquen més a comprovar que les que treuen funcionin perfectament.
Altres característiques: cada distribució està orientada a un tipus d'usuari en concret. Per exemple, Red Hat està orientada a grans empreses, Mandrake a principiants i Gentoo a professionals. Aquesta última no és apropiada per al nostre cas, perquè s'ha de compilar cada un dels programes que s'instal·len, i això ens faria perdre moltes hores.
Després d'haver fet aquesta comparativa, crec que la distribució més apropiada per a l'institut és Debian, perquè, a més de representar el software lliure, és simple i molt estable. És una de les distribucions més aptes per a fer de servidor. Apart d'aquesta, també s'utilitza molt FreeBSD, que és un sistema bastat en UNIX (com Linux).
No utilitzem Mandrake, Red Hat ni Suse per ser massa orientades a usuaris domèstics i principiants. Gentoo és massa complicada i difícil de configurar, i Slackware, Lycoris, Beehive, Turbolinux i Caldera són poc conegudes (si tinguéssim un problema seria difícil trobar-hi medis per solucionar-ho).
Debian desenvolupa a la vegada tres branques del seu sistema operatiu: la versió estable, la inestable i la “en proves”. Les diferències entre versions són:
Estable (“stable”): la més recomanada. Està molt provada i teòricament no hauria de fallar res.
Inestable (“unstable”): la que van millorant els programadors cada dia. No és segur que funcioni perfectament. Quan passa un temps, es dediquen a provar-la a fons (es converteix en “en proves”) fins que arriba a ser “stable”.
En proves (“testing”): la versió inestable bloquejada, a la qual no hi afegeixen res més i només es dediquen a provar-la a fons. Quan, després d'uns mesos, veuen que pot sortir al públic, la converteixen en “stable”.
Cada versió porta un nom clau (Potato, Buzz, Rex, Bo, Slink, etc), que, per cert, són els noms dels personatges de la pel·lícula Toy Story. En el moment d'escriure això (setembre 2002), la versió estable és la Woody (és la versió 3.0), la “en proves” es diu Sarge (serà la versió 3.1) i la inestable es diu Sid,
La que utilitzarem per al servidor serà la versió estable; no ens podem arriscar provant una 'testing', i menys, una inestable, perquè poden tenir bugs i altres problemes amb la seguretat. Igualment, no haurem d'oblidar actualitzar sovint el sistema.
Per tant, ens decidim per una Debian estable.
Podem instal·lar Debian de diverses maneres, de les quals les més comuns són: els CDs amb les imatges i la instal·lació per Internet. També el podem comprar a alguna botiga per un preu molt reduït. Tota la informació la trobarem a http://www.debian.org, també disponible en català (a peu de pàgina hi són els enllaços per canviar d'idioma).
Com que no ens fan falta més que els programes bàsics, és més rendible fer la instal·lació per Internet, ja que si ens haguéssim de baixar un CD sencer (650 Mb) no l'aprofitaríem. A més, no ens farà falta utilitzar una gravadora de CDs, sinó només uns quants disquettes buits.
El procés és senzill:
Baixem les imatges dels disquettes del mateix FTP de Debian. Les imatges de tamany disquet per a la versió estable i per a un processador x86 les trobarem a:
ftp://ftp.debian.org/debian/dists/stable/main/disks-i386/current/images-1.44
En aquest directori hi ha molts fitxers .bin d'
1'4 Mb cadascun. Per començar necessitem baixar els següents:
driver-1.bin,
driver-2.bin,
driver-3.bin,
driver-4.bin,
rescue.bin i
root.bin.
NOTA: Si podem utilitzar un altre ordinador alhora, no fa falta usar un disquet diferent per a cada fitxer BIN: podem fer-ho només amb dos si els anem turnant de manera que mentre un està sent llegit, l'altre estigui gravant-se, i viceversa.
Gravem les imatges en disquets de 1'44
Mb. Això ho podem fer des de Linux amb la comanda dd
if=nom-de-la-imatge.bin of=/dev/fd0 o des de Windows amb
programes com rawrite2 o d'altres que transfereixin l'arxiu byte
per byte cap al disquet.
Insertem el disquet corresponent a
rescue.bin i
encenem l'ordinador. Quan aparegui boot:
polsem Intro. Al cap d'un temps ens demanarà el disquet
corresponent a root.bin
i continuarà la instal·lació.
Anem seguint la instal·lació de forma normal, fixant-nos especialment en els següents punts:
Particions: són necessàries
dues: una swap (tipus 82) no molt gran (més o menys el
mateix número de Mb que la RAM de l'ordinador, encara que un
valor entre 50 i 100 Mb, ja va bé), i la resta del disc
destinada a l'altra partició, de tipus Linux Native (número
83), amb punt de muntatge a l'arrel (“ /
“). Si ens és possible, millor crear primer la Native
i després la swap per tal de poder anomenar-les després
/dev/hda1 i
/dev/hda2
respectivament. També hem de marcar la Native com a
bootable.
Quan pregunti on és el kernel, li
diem que a la disquetera: /dev/fd0
i fiquem els disquets que ens vagi demanant.
Mòduls del kernel: com a mínim
hem d'afegir ara els drivers per a la targeta de xarxa. Si no ho
fem, no podrem instal·lar des d'Internet. En el nostre cas
afegirem el mòdul rtl8139
a la categoria net.
Si volem afegir algun mòdul més (per a usb, sistemes
d'arxius, impressores,
dispositius especials, etc) ho podem fer ara, encara que una
vegada instal·lat també és molt fàcil
afegir-ne i treure'n amb modconf.
Nom de host: el podem canviar en qualsevol
moment, però millor decidir-ne un ara i no canviar-ho. Per
exemple, bruguers.
IP de l'ordinador: normalment es posa la IP de la xarxa, acabada en un número petit. Per exemple, al nostre cas podem posar 192.168.0.2 (192.168.0.1 és per al router).
Lilo: no fa falta perquè només tenim un sistema operatiu, però tampoc passa res per instal·lar-ho. Anirà bé si volem poder arrencar amb diferents kernels.
Disquet d'arrencada: no fa falta, però sempre va bé tenir-ne un.
Després de reiniciar, continuarem amb la personalització del sistema. Seleccionarem les opcions recomanades, assegurant-nos d'activar la opció de contrasenyes shadow.
A l'hora de crear usuaris, haurem d'escriure la contrasenya de root, l'usuari més important del sistema. És extremadament important escollir una bona contrasenya. A més, per seguretat no treballarem sempre amb l'usuari root (és perillós), sinó que ens crearem un altre compte d'usuari normal (amb el nostre nom o nick).
Quan ens pregunti des d'on instal·lar
els paquets, li diem que per ftp i n'escollim un de la llista
(per exemple, ftp.debian.org). Llavors Debian utilitzarà
apt per baixar
les últimes versions de cada programa. Haurem de decidir
quins grups de programes decidim instal·lar. Seguirem
aquestes indicacions:
No ens faran falta les X (per al mode gràfic), doncs tot el necessari es pot fer des de consola.
Jocs i programes d'oci tampoc; amb la configuració del Linux tindrem entreteniment per a una bona estona.
Servidors web, DNS, mail, etc. els instal·larem individualment en els diferents apartats, o sigui que tampoc s'han de marcar.
Eines C i C++: són bàsiques per a compilar els programes. Han d'instal·lar-se.
Entorn en espanyol: opcional. Si el marquem, algunes pàgines d'ajuda sortiran en espanyol, però potser no estaran actualitzades.
Marcant pocs paquets ens assegurem de que no quedi instal·lat res que no ens faci falta. Si no ho fem així, en acabar la instal·lació seran tants els serveis disponibles que alguna persona se'n podria aprofitar i entrar al servidor sense permís.
Quan tot estigui llest, apareixerà la llista de paquets a baixar, i el que ocupen. Diem que continuï i deixem l'ordinador engegat mentre baixa cada paquet amb les seves dependències. Quan acabi, haurem de configurar alguns paquets mentre que d'altres es descomprimiran i s'instal·laran automàticament. Si pregunta com configurar el correu, li direm que no el volem configurat; així evitarem molts bugs innecessaris.
Al final acabarem en la pantalla de login, que apareixerà cada vegada que encenem l'ordinador per demanar-nos el nom d'usuari i la contrasenya.
Ara que tenim el sistema operatiu instal·lat hem de fer unes configuracions senzilles, que s'han de fer abans de començar a posar els programes i dimonis. Primer de tot ens identificarem com a root (amb la contrasenya que vam posar a la instal·lació).
El què farem serà:
Configuració d'apt: apt és el sistema de control de paquets exclusiu de Debian. Cada vegada que ens faci falta instal·lar un programa, només haurem d'escriure el seu nom, i apt es connectarà a l'FTP de Debian, baixarà l'última versió i les seves dependències, i farà la instal·lació sense cap problema.
Per defecte ja tenim una bona configuració
dels servidors al fitxer /etc/apt/sources.list,
però podem executar apt-setup
(com a root) i decidir segons les nostres preferències si
volem tenir software totalment lliure (estil Debian) o acceptem
qualsevol programa, encara que tingui parts de codi tancat.
També hem d'escollir un servidor. Preferiblement usarem
el d'Estats Units ftp.debian.org (el central), doncs els situats
a Espanya acostumen a ser més lents.
Actualització
de paquets: una vegada definits els
servidors d'apt, farem apt-get
update per actualitzar la informació sobre els
nous paquets amb el servidor. No s'instal·larà res
encara; només es sincronitzen.
Per actualitzar els paquets instal·lats
amb les noves versions disponibles hem de fer apt-get
upgrade -u (el -u és per mostrar-ne els noms).
Després de mostrar la llista de paquets a baixar,
responem (Y/n) i només caldrà esperar a que acabi.
Potser mentre els instal·la apareix alguna pregunta, però
normalment dóna suficient informació per saber què
respondre.
Si volem algun paquet addicional només
hem de fer apt-get
install nom. Podem instal·lar programes en
qualsevol moment, a mesura que els necessitem. A l'annex hi ha
una llista de programes recomanats. També és
recomanable instal·lar ara gpm
per poder utilitzar el ratolí a la consola (es configura
amb gpmconfig).
Locals:
podem dir-li a Debian que preferim els programes i l'ajuda en
espanyol fent un dpkg-reconfigure
locales i seleccionant es_ES
i es_ES@euro.
Així podrem usar accents i altres símbols
especials com el de l'euro, a més de veure la majoria de
missatges i programes en espanyol i no en anglès.
Hora
del sistema: no és només per
poder consultar-la i no haver de mirar el rellotge; en Linux
moltes accions depenen del temps. Per exemple, at
i crontab
executen tasques programades puntuals o periòdicament.
Podem veure l'hora i la data amb date.
Recordem que la nostra zona horària és
la CET, i que té un desfàs de +1 h. respecte la
UTC (que podem veure amb date
-u i que deu ser d'una hora menys que l'hora nostra).
Per canviar el dia i hora podem posar
comandes com: date -s
“25/12/2003” o date
-s “13:15:42”
Tasques
programades: hi ha accions que s'executen
cada dia, cada setmana o cada mes; el problema és que
potser l'ordinador no estarà engegat a les hores que hi
ha posades per defecte (6:25, 6:47 i 6:52). Només caldrà
canviar a /etc/crontab
el segon número de cada línia -que representa
l'hora d'una acció programada- per un de més
adient que les 6 hores del matí; per exemple, les 10 del
matí.
Fem
més còmode l'ús de la shell:
al principi de /etc/profile
podem posar les línies que s'executaran cada vegada que
iniciem sessió. Algunes comandes útils que podem
posar són alias
ls=”ls --color” per veure el llistat de
fitxers amb colors només escrivint ls,
o setleds +num
per activar NumLock. Podem definir molts més àlies,
com alias “cd..”=”cd
..”, alias
i=”apt-get install”, alias
u=”apt-get update && apt-get upgrade -u”,
i molts més. Per a ordres més llargues, millor fer
un script i col·locar-ho al PATH (per exemple /usr/bin).
Protecció
d'alguns arxius importants:
hi ha arxius que un usuari normal no ha de tenir la necessitat
de veure. Per això traurem els permisos de
lectura, escriptura o execució
a cadascun d'ells, utilitzant el comand chmod.
chmod
o-rwx /etc/passwd /etc/exports /etc/*netd.conf
( /etc/passwd
té informació sobre els usuaris del sistema i els
seus privilegis, /etc/exports
diu quins directoris es poden accedir remotament, i
/etc/inetd.conf
o xinetd.conf
diu quins serveis es carreguen cada vegada que s'encén el
PC).
Instal·lació
d'un nou kernel, si n'hi ha: no és
necessari si no tenim problemes amb l'actual, però és
recomanable perquè soluciona problemes de seguretat que
afecten a tot el sistema. A més, algunes coses canvien,
com per exemple la forma d'implementar les regles del tallafocs
que muntarem (amb el 2.4). Podem veure la versió de
kernel actual amb uname
-a. Els nous kernels es troben
precompilats, o sigui, que només fa falta
baixar-ho amb apt-get. Per saber el nom i tipus de kernel que
necessitem, podem buscar a la base de dades local de paquets amb
apt-cache search
kernel-image i fixar-nos en tots els disponibles. La
versió ha de ser superior a l'actual i la plataforma ha
de ser la del nostre sistema (ex: 386 per a un 80386, 586 per a
Pentium I, 686 per a Pentium 2, 3, 4 i Celerons, k6/k7 per a
AMD, etc.). No hem de baixar una versió SMP, ja que
aquestes sigles són de “Symmetric Multiprocessor”,
cosa que no tenim.
Però abans hem de fer una petita
modificació a /etc/lilo.conf
(si no la fem ara ens ho recordarà en baixar el kernel).
Es tracta de buscar la línia on
posa image=/vmlinuz
i afegir just a sota (o al mateix paràgraf) l'opció
initrd=/initrd.img
. Llavors ja podem fer apt-get
install kernel-image-versió-arquitectura (ex.
apt-get install
kernel-image-2.4.18-686) i demanar-li que ens creï
l'enllaç simbòlic initrd.img quan ho pregunti.
A partir d'ara el Lilo (gestor d'arrencada)
ens demanarà si volem entrar a Linux o a LinuxOld, la
versió antiga del kernel. Si no ens funciona una podrem
entrar utilitzant l'altra. És recomanable reiniciar ara i
provar el nou kernel, i si no funcionés, fer
predeterminat l'antic modificant /etc/lilo.conf
Com que a l'institut els ordinadors estan connectats mitjançant una xarxa i un servidor Windows NT, seria interessant incloure-hi també el nostre servidor Linux per poder compartir carpetes o accedir a les dels altres ordinadors. També posarem a l'abast del servidor les impressores compartides a la xarxa, tot i que s'han de configurar a Linux.
Tot això ho farem fàcilment i de forma segura amb les eines que ens ofereix Samba. Samba és una implementació per a Linux del protocol SMB (Server Message Block), creat per IBM al 1985, redefinit després per Microsoft, i present a altres sistemes operatius. Amb Samba podrem accedir (per TCP/IP) a servidors SMB com a client, o muntar-ne un servidor SMB propi.
Com sempre, fem un apt-get
install samba i diem que sí que volem que faci unes
preguntes per adaptar el fitxer de configuració smb.conf,
encara que després el revisarem.
Ens preguntarà les següents opcions:
Grup de treball: s'ha de
posar el mateix que el de les altres màquines Windows. Per
evitar problemes, millor posem-ho tal com està als altres
ordinadors (probablement estigui tot en majúscules). Al
nostre cas, és 99PIENT22.DOM
Utilitzar contrasenyes xifrades? Sí! Si no ho fem, apareixeran problemes estranys quan intentem accedir a recursos compartits d'un Windows NT. A més, és obvi que les contrasenyes xifrades donen més seguretat que les estàndard.
Com volem que s'executin
els processos de Samba, com a dimonis o com una part del dimoni
inetd? És
millor que s'executin com a dimonis (com els altres servidors), ja
que així es podran controlar millor.
Crearem el fitxer de contrasenyes xifrades, tal com ens recomana.
Després d'això ja
tenim els dos processos de Samba funcionant: smbd
i nmbd (fan
referència als dimonis de SMB i Netbios, respectivament). Si
volem que Debian ens torni a preguntar tot l'anterior podem fer un
dpkg-reconfigure samba
Amb Samba podem fer bàsicament quatre operacions:
Compartir una unitat Linux a màquines Windows
Compartir una unitat Windows amb màquines Linux
Compartir una impressora Linux amb màquines Windows
Compartir una impressora Windows amb màquines Linux
Hem de tenir molt clar què volem que faci el servidor, i actuar en conseqüència. Si posem configuracions per defecte o canviem coses sense saber què son, no funcionarà exactament com volem, i arreglar-ho pot costar molt.
En el nostre cas, les decisions que hem pres són:
Hem de compartir només una carpeta del servidor (amb els seus directoris) a tots els usuaris de Windows de la xarxa. Una altra alternativa és fer que cada usuari de Windows pogués accedir a la seva carpeta personal del servidor, però com que no n'hi ha molts preferim compartir tot a un lloc comú que permeti interactuar a tots els usuaris, i deixar l'FTP per a necessitats més concretes.
El servidor estarà preparat per accedir als recursos compartits de qualsevol ordinador, i per muntar-los com si es tractés d'un disquet o un CD.
No tenim cap impressora connectada al servidor, per tant, Linux no n'ha de compartir cap.
El que sí que podem fer, si tenim temps, és que una impressora connectada a la xarxa de Windows es pugui utilitzar també a Linux, per si de cas fa falta imprimir alguna cosa important directament des d'un programa no disponible per a altres sistemes operatius, El problema principal pel qual no ho farem és que s'ha de configurar la impressora a Linux.
Ja avisem que és molt probable que surti un problema (molt comú) si utilitzem tant màquines Windows NT/2000 com Windows 9x a la vegada, degut a la seva forma d'enviar les contrasenyes i als requisits de cada implementació. Per entendre aquestes complicacions s'han de veure unes quantes diferències entre el SMB de Win98, WinNT i Samba:
Els Windows 98 envien
contrasenyes encriptades per defecte, mentre que Samba les
acostuma a rebre en format de text normal. Això té
solució fàcil afegint la directiva encrypt
passwords = yes al fitxer de configuració.
Els Windows NT i Samba són moltíssim més configurables que el SMB de Windows 98 (que quasi no té opcions). Entre altres coses, amb WinNT i Samba podem especificar el nom d'usuari i contrasenya amb què volem accedir a un recurs compartit. Això vol dir que amb Windows 98, l'única forma d'accedir amb un nom d'usuari en concret és ser aquell usuari (de totes maneres, crear un nou usuari costa poc).
Samba i Windows NT no
accepten 'invitats' (usuaris no autentificats) per defecte. Els
podem activar, però provoquen molts problemes de seguretat
(per això s'han desactivat). Aquest és un tema molt
delicat a Windows NT, on és molt fàcil trobar-se que
es pot entrar a un sistema posant Invitado
(o guest) com a
nom d'usuari i deixant en blanc la contrasenya...
Bé, doncs anem per feina: el primer de tot serà crear un usuari al servidor que sigui l'únic que pugui tenir accés als recursos compartits. És l'usuari que utilitzaran tots els ordinadors que hi accedeixin, i, tal com hem dit abans, cal que aquest usuari estigui creat a tots els Windows i tingui la mateixa contrasenya. Podem fer una excepció amb els Windows NT ja que, com hem dit abans, permeten escriure un nom i contrasenya en accedir-hi, independentment del nom de l'usuari connectat. Nota: no cal que anem ordinador per ordinador creant aquest usuari, ja que es crearà automàticament quan algú posi el seu nom i contrasenya a la pantalla d'inici de sessió.
Al nostre cas aquest usuari
l'anomenarem bruguers
i li donarem una contrasenya pública i fàcil de
memoritzar (però no d'endevinar!). La contrasenya és
opcional, però el no posar-ne representa un forat de seguretat
molt gran (sobretot quan estem parlant de sistemes Microsoft),
Afegim l'usuari al servidor amb
adduser bruguers (no
és necessari escriure cap dada més), i l'afegim a la
llista d'usuaris de Samba -que es troba a /etc/samba/smbpasswd-
amb el comand smbpasswd -a
bruguers, i posant la mateixa contrasenya.
Ara hem d'editar el fitxer de
configuració /etc/samba/smb.conf.
Al principi trobarem les opcions que vam posar al instal·lar
Samba; millor comprovem que hi hagi un workgroup
= NOM_DEL_GRUP_DE_TREBALL. A més, la següent
opció, server
string, ens permet posar la descripció de l'ordinador
que es veurà en navegar per la xarxa. Per defecte posa server
string = %h server (Samba %v), on %h
és el nom de host de l'equip i %v
la versió de Samba.
Hi haurà una
línia comentada amb el caràcter ;
que posa:
;
guest account = nobody
És bo saber que si la
canviem a guest account =
bruguers farem que deixar el nom d'usuari i contrasenya en
blanc equivalgui a entrar amb l'usuari bruguers
(sense contrasenya). Com que hem decidit que s'havia de posar
contrasenya, deixarem la línia comentada; però si veiem
que és més fàcil sense, només cal
modificar això.
A aquesta secció també hem d'afegir la següent línia per evitar un dels mètodes d'intrusió més utilitzats des de fa molts anys: el dels recursos compartits.
hosts
allow = 192.168.0. localhost
I també farem que només
permeti l'accés a l'usuari bruguers.
Si es creen més s'han de posar aquí també.
valid
users = bruguers
Ara, localitzem la secció
titulada Share Definitions
i, en concret, aquest fragment:
[homes]
comment
= Home Directories
browseable
= no
#
By default, the home directories are exported read-only. Change next
#
parameter to 'yes' if you want to be able to write to them.
writable
= no
#
File creation mask is set to 0700 for security reasons. If you want
to
#
create files with group=rw permissions, set next parameter to 0775.
create
mask = 0700
#
Directory creation mask is set to 0700 for security reasons. If you
want to
#
create dirs. with group=rw permissions, set next parameter to 0775.
directory
mask = 0700
Segons els nostres interessos, el canviarem a (omitim els comentaris):
[homes]
comment
= Home Directories
browseable
= yes
writable
= yes
create
mask = 0777
directory
mask = 0777
Tot el fragment fa que es
comparteixin les carpetes personals dels usuaris ([homes]).
En el nostre cas, només n'hi ha un, d'usuari, que s'anomena
bruguers. Aquest té
permís per a escriure al seu directori (writable=yes)
i tot el que crei podrà ser llegit, modificat o executat per
qualsevol usuari del sistema (per això posem els
permisos a 777, o, el que és el mateix, u=rwx g=rwx
o=rwx). El browseable=yes
fa que el recurs es pugui veure en navegar pels recursos compartits
del servidor.
El següent paràgraf,
que comença amb [printers],
el comentarem sencer amb un caràcter #
a cada línia, perquè no tenim impressores per compartir
connectades al servidor.
Reiniciem el servei amb
/etc/init.d/samba restart
i provem d'accedir-hi des d'un ordinador Windows explorant la xarxa
(a 'Entorno de red'
o 'Mis sitios de red').
Veurem un ordinador anomenat 'Bruguers',
i a dins, la carpeta compartida, on podem entrar i desar-hi coses.
També veurem la icona per gestionar les impressores.
Probablement no funcioni a la primera degut a les diferències entre cada Windows. Els problemes que hi ha entre Samba (Linux) i Windows són els mateixos que els que Windows 98 i Windows NT s'ocasionen mútuament Bàsicament, es resumeixen en: “es pot accedir de NT a 98 però de 98 a NT no”. A continuació en presentem els més típics, junt amb algunes possibles solucions:
A Windows NT/2000, no deixa
entrar al servidor ('Acceso
denegado').
Probablement estigui desactivada
la opció d'utilitzar contrasenyes encriptades. Cal afegir
encrypt passwords = yes
al fitxer de configuració. No hauríem de tenir cap més
problema amb Windows NT/2000, ja que és el sistema operatiu
que millor ha desenvolupat el protocol SMB.
A Windows 98, no es veu cap
ordinador de la xarxa, i entrant a “Toda
la red” dóna un missatge d'error
La causa és que en entrar
a Windows, quan demanava nom d'usuari i contrasenya, hem escollit
'Cancelar', i per
tant no hem iniciat sessió dins la
xarxa Microsoft. Cal entrar com a un usuari amb nom (i contrasenya
opcional). Només entrant ja s'ha creat l'usuari, però
els podem gestionar des de 'Mi
PC' -> 'Panel de
control' -> 'Usuarios'.
A Windows 98, es veu el
servidor, però en intentar entrar demana la contrasenya del
recurs IPC$

El
famós quadre IPC$
Una altra solució és
activar l'usuari invitat, anomenat 'guest'
o 'Invitado' i amb
contrasenya en blanc; però hem d'evitar fer això a tota
costa, ja que posaria en perill les unitats i carpetes compartides.
Sens dubte és més
fàcil crear l'usuari a Windows 98: només cal escriure
bruguers en comptes
de qualsevol cosa al quadre d'inici de sessió, i posar la
contrasenya correcta per crear aquest nou usuari.
Per tant, ho deixem de forma que només els usuaris autentificats puguin accedir als recursos compartits del servidor; si algú no posa nom d'usuari en iniciar sessió o se n'inventa un altre és que no té permís per entrar-hi.
Altres utilitats que ens aniran
bé són testparm
per a comprovar la configuració i smbstatus
per a veure qui hi ha connectat.
Ens queda explicar com accedir a
la xarxa de Windows des de Linux. No és difícil, però
hi ha moltes opcions de tot tipus. Per exemple, n'hi ha de gràfiques,
com komba i xfsamba,
i també ho podem fer des de la consola. Algunes comandes són:
smbclient
-L host mostrarà els recursos compartits de l'equip
host. Podem
especificar l'usuari (la contrasenya la preguntarà) amb
smbclient -L host -U
NomUsuari
smbmount
//host/nomdelrecurs /mnt/samba munta la carpeta o unitat
compartida especificada al directori local que se l'indiqui (que ha
d'existir), com si fos un disquet. Després podrem accedir-hi
de manera normal, i copiar arxius, esborrar, crear-ne, canviar-ne
els permisos, etc. Nota: per especificar
el nom d'usuari s'ha de fer amb smbmount
//host/nomdelrecurs /mnt/samba -o username=NomUsuari
smbumount
/mnt/samba desmunta el recurs. Ho hem de fer abans que
s'apagui l'ordinador Windows perquè sinó apareixeran
missatges d'error.
nmblookup
host ens dóna la IP de l'equip host,
present a la xarxa.
nbtscan
192.168.0.0/24 escaneja tota la xarxa (de tipus C, amb
màscara 255.255.255.0) i mostra els equips que comparteixen
recursos.
Però, com hem dit,
programes com komba
o alguns navegadors d'arxius amb suport SMB fan aquesta tasca molt
més fàcil. Això sí, requereixen utilitzar
el mode gràfic, però no és necessari que
s'executin al servidor amb Debian; com que estem treballant en xarxa,
aquesta es podrà explorar des de qualsevol ordinador.
El servidor web és un dimoni que escolta al port d'HTTP (el 80 TCP) i respon les peticions de documents HTML (o d'altres formats). Al mercat n'hi ha molts, i que en concret funcionin sota Linux també (Jigsaw, GoAhead, Roxen, Stronghold, Zeus, Abyss, Apache, ...). Fins i tot podem programar-ne un de senzill amb Netcat, fent que escolti al port 80 i retorni cada pàgina demanada. Però a Internet els servidors més utilitzats són clarament dos: Apache i Microsoft IIS (Internet Information Server). Òbviament, IIS només és per Windows, així que per al nostre ordinador utilitzarem Apache per Linux.
És una bona elecció? Podem consultar les estadístiques sobre els servidors més utilitzats mundialment a una important pàgina dedicada només a aquest tema: de http://www.netcraft.com/survey obtenim aquest gràfic:


Hem d'afegir que “Microsoft” inclou tots els servidors web d'aquesta marca (no només IIS), i que iPlanet és el conjunt de tots els servidors Netscape i iPlanet. Això deixa bastant clar que Apache és el millor servidor i que no ens hem equivocat en la decisió.
De moment la web la farem accessible només a la xarxa interna; des d'Internet no es podrà accedir perquè el router no té obert el port 80. Més endavant estudiarem com posar dues pàgines diferents, una per a la xarxa interna i altra per a Internet.
Integrar Apache a Debian és
tan senzill com fer un apt-get
install apache (es suposa que la base de dades d'apt-get ja
està actualitzada mitjançant apt-get
update) i automàticament es baixaran tots els paquets
necessaris. Podem fer una petita comprovació escrivint la IP
del servidor en el navegador de qualsevol ordinador de la xarxa. Si
ho hem fet bé, apareixerà una pàgina de prova
d'Apache.
No és bon hàbit
deixar la configuració per defecte, ja que
podria no fer tot el que volem, o, pitjor encara, fer més
coses del que suposem. Per tant, anem a revisar l'arxiu de
configuració del dimoni HTTP a /etc/apache/httpd.conf:
A l'arxiu ja podem veure alguns paràmetres preconfigurats. Per exemple:
La configuració es
troba a /etc/apache
El directori de la web és
/var/www
S'utilitza el port 80
Els logs (registres) són
a /var/log/apache/access.log
L'únic que fa falta canviar és:
A ServerAdmin
podem posar (o esborrar) l'e-mail de l'administrador, que sortirà
quan hi hagi errors. (Per exemple, “Error 404. La pàgina
no existeix. Si continua tenint problemes, contacti amb
l'administrador: email@email.com”).
ServerName:
podem posar el nom del host o la IP. Tots els hosts es graven a
/etc/hosts, però
no fa falta modificar el fitxer perquè la IP del servidor ja
té un nom de host associat (és el que va preguntar a
la instal·lació). En el nostre cas és
bruguers, per tant
haurem d'escriure ServerName
bruguers. Si no ho fem, agafarà la
IP de l'ordinador, però apareixeran missatges d'avís
cada vegada que s'iniciï el servidor.
No s'han de fer més
canvis. Abans, però, de reiniciar el servidor, esborrarem el
contingut del directori on hi ha la web (/var/www)
i posarem una senzilla creada per nosaltres, amb enllaços i
imatges. A la pàgina principal li anomenarem index.htm
per veure si també funciona (l'original era index.html).
Per exemple, podem fer un index.htm
molt senzill així:
<BR><BR>
<CENTER>Has
entrat al <B>nou servidor web</B> de l'institut.<BR><BR>
<IMG
SRC=”obrers_treballant.jpg” ALT=”En construcció”>
</CENTER>
Aquesta pàgina ja ens
serveix per provar si accepta noms llargs de fitxers, si accepta
extensions que no siguin HTM/HTML, si es veuen les imatges, si el
text arriba com a HTML (i no com a text pla) i si un .HTM funciona bé
com a pàgina principal. Seria interessant donar-se compte de
que també és 'Case sensitive', o sigui, que index.HTM
és diferent de index.htm.
Lògicament, la raó és què el sistema
d'arxius de Linux ja és així.
Després de col·locar
a /var/www el fitxer
index.htm i alguna
imatge, reiniciarem el servidor fent apachectl
restart i tornarem a comprovar en el navegador si surt la
pàgina correcta.
I per últim, crearem un
usuari anomenat web,
perquè després posarem un servidor FTP, i ens anirà
molt bé poder administrar els fitxers de la pàgina web
des de l'FTP. Cal fer un adduser
web com a root, posar una bona
contrasenya, i després modificar l' /etc/passwd
per canviar el directori d'inici a /var/www
, que és on es troben tots els arxius de la web. Podem
esborrar el directori HOME creat per defecte, /home/www.
També hem de fer seus tots els arxius de la web, ja que si el
directori pertany a root cap usuari el podrà modificar. Ho fem
amb chown
web.web /var/www -R (el R
fa que canviï els permisos de forma
recursiva: al directori i a tot el que hi hagi dintre).
Aquest Apache en principi serveix webs a qualsevol PC (local o remot), per tant haurem de tancar el port 80 al router si volem que sigui accessible només a la Intranet o obrir-ho si el volem fer públic.
El FTP serveix per transferir arxius de forma ràpida i senzilla entre ordinadors. Permet compartir -amb nom i contrasenya- tots els arxius o només algunes carpetes a cada usuari, podent establir els permisos que tenen sobre cada element. Per exemple, podem fer que només puguin baixar coses, o només pujar-ne i no canviar res.
Servidors de FTP per a Linux
també tenim moltíssims. Alguns molt coneguts són
proftpd
i wu-ftpd,
però com que s'han trobat molts bugs que afecten a
característiques extra normalment no utilitzades, molta gent
prefereix servidors més senzills que facin només el seu
propòsit de compartir arxius.
Per tant, buscarem un servidor amb poques funcions addicionals, senzill, i que ocupi poc (quant més petit sigui, menys errades pot tenir al codi). El que més s'adapta a aquestes condicions és PureFTPd.
Provem a fer apt-get
install pureftpd (i amb pure-ftpd),
però cap funciona. La raó és que PureFTPd no
ve inclòs en aquesta versió de Debian. Ho podem
comprovar amb apt-cache
search pure: veurem que no hi ha cap paquet on surti “pure”.
La forma d'instal·lar el programa és, doncs, anar a la
pàgina web (http://www.pureftpd.org)
a la secció de Downloads i baixar en format .tar.gz
l'última versió. El que hem baixat són les fonts
(en anglès, “sources”) del programa, en llenguatge
C, per tant, les haurem de compilar per tal de crear l'executable que
funcioni a la nostra màquina. Ens farà falta com a
mínim el gcc
(GNU C Compiler) i una mica de temps (depèn de l'ordinador,
però és quasi segur que menys d'una hora).
Com a root, haurem de descomprimir l'arxiu a
algun lloc (per exemple /usr/src)
amb:
tar
zxvf arxiu.tar.gz -C /usr/src
Llavors podem entrar al directori creat i llegir
els fitxers README i
INSTALL, que
normalment són a tots els programes que s'han de compilar. Si
veiem que no s'ha de fer res especial -com és el cas- seguirem
el procediment habitual per compilar:
Executar ./configure
per generar un script de compilació adequat per a la
nostra màquina en concret. Si falta algun programa o
llibreria, s'aturarà i ho mostrarà de forma clara.
Podem desactivar o activar moltes opcions (veure ./configure
--help). En el nostre cas, hem comprovat que en compilar
sense cap opció especial, el binari resultant no
acceptava la opció -n,
que serveix per limitar l'espai de cada usuari. Per tant, és
bona idea activar directament la opció adequada amb
./configure
--with-quotas.
Executar make,
la veritable compilació. Aquest procés
-completament automatitzat- pot trigar segons, minuts, o hores
depenent del programa i de l'ordinador. No ha de fallar; si ho
fa, serà més complicat solucionar el problema ja
que probablement es trobi dins del codi font d'algun fitxer del
projecte (o sigui, que no tenim la culpa nosaltres). Això
sí, és probable que apareguin missatges de
“warning” (advertències), que podem ignorar a
menys que puguin provocar cap problema greu.
Aquest pas és opcional. make
check farà unes comprovacions per veure si s'ha
compilat bé. Si alguna prova falla, no hem de continuar.
make
install copiarà els executables (el resultat de la
compilació) als directoris on es troben tots els altres
programes de Linux. Fan falta privilegis de root.
Fet això ja hem aconseguit crear el fitxer
executable i intregar-ho al sistema; per tant podem esborrar el
directori que hem creat a /usr/src
(a menys que vulguem fer algun canvi al
codi i tornar-ho a compilar).
Ara, cada vegada que encenguem l'ordinador haurem
d'executar pure-ftpd
(el podem deixar en segon pla) i el servei estarà actiu, amb
els usuaris actuals del sistema. Per evitar repetir aquesta acció
cada vegada, podem crear un script que arrenqui el servei amb les
opcions més apropiades (que hem consultat a l'ajuda, a
pure-ftpd --help):
/usr/local/sbin/pure-ftpd
-B -A -u 100 -C 5 -n 1000:800
echo
“Arrencant el servidor pure-ftpd...”
Descripció de les opcions:
El -B
és per fer-lo córrer en segon pla
El -A
fa que tots els usuaris estiguin en un entorn chroot(), o sigui,
que veuen el seu directori personal com a /
i no poden sortir-ne més. Per tant, estan 'tancats' dins del
seu directori personal. És teòricament impossible
sortir-ne d'aquesta gàbia, tot i que a la pràctica es
pot fer (encara que al de l'FTP costaria molt més). No
obstant, encara que un usuari aconseguís accedir-hi a
l'exterior, no podria danyar-hi moltes coses ja que no en seria el
propietari. Estaria en la mateixa situació que un usuari del
sistema sense privilegis.
El -u
100 és el mínim UID que cal per connectar-se.
Per tant, els usuaris que tinguin un UID menor (que són
l'administrador i els usuaris especials i de sistema) no podran
connectar-se. Això és bo per a la seguretat general
de l'ordinador (cal recordar que la contrasenya de FTP viatja sense
encriptar).
-C
5 fa que només es puguin fer 5 connexions per host.
És poc probable que un usuari amb bones intencions necessiti
fer més d'una a la vegada, però tampoc hem de
limitar-ho a una, així que podem deixar cinc.
El -n
1000:100 limita cada usuari a 1000 arxius o 800 Mb, més
que suficient per a traspassar fitxers grans. A algunes versions
aquesta opció requereix compilar amb la opció de
quotes activada. Si només hem posat ./configure
i veiem que després no accepta la opció -n,
farem ./configure
--with-quotas i després el make
i el make install.
Gravarem aquest script a /etc/init.d/pure-ftpd,
el donarem permís d'execució a tothom amb chmod
a+x /etc/init.d/pure-ftpd, i crearem enllaços a dins
dels nivells d'execució en què ens interessi que corri
aquest procés. Recordem els nivells d'execució
(“runlevels”):
0 --> Halt (aturar el sistema i apagar-ho)
1 --> Mode monousuari
2 --> Mode multiusuari sense suport per a xarxa
3 --> Mode multiusuari complet
4 --> (Sense ús)
5 --> Mode multiusuari complet amb login gràfic
6 --> Reboot (reiniciar el sistema)
Per tant, els nivells als quals ens interessa que actuï el nostre script són l'1, 2, 3 i 5. Crearem els enllaços simbòlics amb:
ln -s
/etc/init.d/pure-ftpd /etc/rc1.d/S80pure-ftpd
ln -s
/etc/init.d/pure-ftpd /etc/rc2.d/S80pure-ftpd
ln -s
/etc/init.d/pure-ftpd /etc/rc3.d/S80pure-ftpd
ln -s
/etc/init.d/pure-ftpd /etc/rc5.d/S80pure-ftpd
El prefix S80 té la seva explicació: S significa que és un script 'Startup', que serveix per iniciar alguna cosa. En cas contrari, aniria amb K ('Kill'). El nombre indica l'ordre en què s'executaran els scripts d'un mateix directori rc. Hem d'assegurar-nos que s'iniciï en un bon moment, quan la xarxa ja està preparada i les operacions importants ja han acabat; per tant, 80 ja és un bon nombre.
Seria correcte afegir al runlevel 0 i 6 un script que matés el servidor, però no fa falta perquè el propi procés d'apagat ja s'encarrega de matar tots els processos.
Ja només queda reiniciar (o fer un init
3) i provar de fer un FTP des de fora. Hem de recordar que al
router s'han d'obrir els ports 20 i 21 TCP (el 20 és per la
transmissió de dades).
També és el moment de provar
d'entrar com a usuari web
des de qualsevol client d'FTP (o amb un navegador, amb
ftp://web@IP_DEL_SERVIDOR
), posar la contrasenya, i comprovar que podem pujar i baixar arxius
al servidor web.
NOTA: hem d'evitar utilitzar comptes d'usuari
importants a l'FTP, perquè les dades viatgen sense encriptar,
i un usuari que tingués privilegis de root podria interceptar
els paquets i veure les contrasenyes. Per evitar-ho podem crear
comptes addicionals només per a FTP, o utilitzar el programa
sftp que hi ha
inclòs a SSH.
En qualsevol xarxa, els usuaris accedeixen a pàgines web prohibides, ja sigui perquè no estan relacionades amb la feina que s'ha de fer amb l'ordinador, o perquè són pornogràfiques o de continguts il·legals.
Una forma de denegar l'accés a certes pàgines és configurar cada navegador web de forma que demani contrasenya quan s'entra a unes direccions web o IPs preestablertes. També podem utilitzar software de filtrat de continguts que analitzin les paraules o fins i tot les imatges.
El problema que presenten aquests mètodes (apart de l'elevat preu) és que requereixen manipular cada un dels ordinadors de la xarxa individualment, quan l'ideal seria haver de crear la 'llista negra' només a un ordinador. És aquí on intervenen els proxy: un proxy és un ordinador que recull totes les peticions web de la xarxa, busca les pàgines corresponents a Internet, i retorna cada pàgina a l'ordinador que l'havia demanat. D'aquesta manera, és només aquest ordinador el que es connecta a Internet, i per tant és fàcil prohibir o admetre IPs.
Pot semblar que el proxy fa més lenta la navegació ja que un sol ordinador ha de fer la feina de molts, però de fet el proxy també està dissenyat per agilitzar-la actuant com a caché. 'Caché' fa referència a una zona de la memòria o del disc, que emmagatzema informació durant un temps i que va buidant-se a mesura que arriben noves dades per omplir-la.
Llavors, un proxy-caché funciona així:
Rep una petició HTTP d'un ordinador.
Consulta en la seva caché buscant la pàgina demanada.
Si no té la pàgina a la seva caché, la baixa d'Internet i queda gravada a la caché. En canvi, si ja tenia la pàgina no és necessari que es torni a connectar a Internet.
Retorna la pàgina de la caché a l'ordinador que l'havia demanada.
Periòdicament fa comprovacions per evitar que la caché s'ompli, esborrant les dades més antigues o menys sol·licitades. A més, enregistra els accessos als fitxers de log, com fan gairebé tots els altres servidors que hem vist.
En conclusió, un proxy-caché ajuda a reduir molt l'ample de banda utilitzat a una xarxa (degut principalment a les consultes web). No és cap problema la velocitat de transmissió; serà l'adequada perquè disposem de targetes de xarxa 10/100 Mbits/s per a enviar dades d'un ordinador a un altre (per la Intranet), mentre que la connexió cap a Internet arriba com a molt a 2 Mbits/s si és una línia ADSL. A més, cal recordar que gairebé tots els navegadors actuals tenen la seva pròpia caché web local, i per tant s'evitaran peticions web a Internet o, en aquest cas, a l'ordinador proxy.
El proxy-caché per Linux més conegut i més utilitzat és Squid. Té suport per a HTTP, FTP, SSL, SNMP, DNS, control d'accés (ACL), jerarquies de proxies (protocol ICP), i moltes opcions més. La seva web és http://www.squid-cache.org
Una de les característiques més interessants del Squid és que pot actuar com a proxy transparent: funciona de manera semblant a l'explicada anteriorment, però el client (l'ordinador que demana pàgines web) no se n'adona que està passant per un proxy ja que aquest últim actua com si realment fos el servidor web d'Internet. L'inconvenient d'aquest mètode és que el proxy ha d'actuar com a servidor web al port 80, i nosaltres ja tenim un servidor Apache a aquest port; per tant el proxy que posarem serà estàndard.
Farem un apt-get
install squid per baixar-lo i instal·lar-lo, però
hem de modificar la configuració per defecte. S'ha de canviar,
per exemple, el port utilitzat (ara és el 3128, però a
Europa s'utilitza més el 8080). Abans de modificar el fitxer
de configuració (/etc/squid.conf),
comprovem que squid
no estigui funcionant amb privilegis de root (això seria un
problema de seguretat):
bruguers:~#
ps axu | grep squid
root
336 0.0 1.1 3824 1124 ? S 12:38 0:00
/usr/sbin/squid -D -sYC
proxy
338 0.9 5.5 8556 5308 ? S 12:38 0:19 (squid) -D
-sYC
root
374 0.0 0.7 1748 716 pts/0 S 13:11 0:00 grep squid
bruguers:~#
Podem veure que, encara que el
cridi root, el procés està amb el conegut com a “setuid
proxy”, o sigui, que s'executa amb privilegis de l'usuari
“proxy”.
És millor que estigui així que no com hi era en
versions anteriors, quan s'executava com a root. Això
comportava molt més perill davant de qualsevol bug que es
trobés, ja que un usuari que utilitzés un exploit
aconseguiria una shell de root. Amb la configuració actual, si
un usuari aprofita un bug (per exemple un buffer overflow, els més
comuns) podria accedir al sistema com si fos un usuari normal.
Ara anem per la configuració
específica del proxy Squid, que es troba a /etc/squid.conf.
Haurem de canviar els següents paràmetres:
http_port
3128
http_port
8080
Aquest és el port utilitzat pel proxy (per defecte 3128). Hem afegit el 8080, però tampoc és necessari treure el 3128; Squid pot rebre les peticions per ambdós ports. El deixem per compatibilitat amb altres programes.
A més, si fem un escanejat de ports quan tot funcioni, veurem que utilitza també el 3130 d'UDP.
cache_peer
proxy.xtec.es parent 8080 0 no-query no-digest default
Això fa que el nostre proxy tingui un 'pare' i treballi en jerarquia amb ell: tot allò que els usuaris de la xarxa demanin al servidor es buscarà a la seva caché, i, si no es troba, la petició passarà al proxy pare. Si aquest pare tampoc ho troba a la seva caché, ho buscarà a Internet; per tant evitem en tot el possible les peticions innecessàries.
L'institut utilitza el proxy
proxy.xtec.es pel
port 8080
(l'habitual dels proxy-cachés). Hem desactivat les opcions ICP
(protocol utilitzat pels proxys) posant els paràmetres 0
com a port ICP i no-query.
El no-digest el
posem perquè el fitxer de digests és
innecessari quan hi ha un sol pare; i el default
fa que el servidor utilitzi per defecte aquest parent per trobar tot
el que no tingui a la caché.
Òbviament, si no disposem de proxy pare (o sigui, si volem tenir Internet com a pare), no hem de posar aquesta línia.
#
cache_mem 8 MB
Deixem la opció per defecte de 8 Mb. per a la memòria RAM utilitzada com a caché. Es recomana deixar una quarta part de la RAM total de l'ordinador, però com que el nostre servidor en té poca (48 Mb) i a més ha de encarregar-se de moltes més coses, deixarem aquest valor, que de totes maneres és bastant gran com per a gravar els objectes més demanats (entenent objecte com a una imatge, una pàgina, un vídeo, o qualsevol altre element web). S'ha de tenir en compte que apart de la RAM utilitzada com a caché, el procés de Squid necessita més RAM per poder executar-se (com qualsevol altre procés), per tant cal no posar valors molt elevats.
cache_dir
ufs /var/spool/squid 150 16 256
És aquí quan diem
a Squid que utilitzi el directori /var/spool/squid
com a caché. ufs
és el sistema d'emmagatzematge de Squid. Als paràmetres
li diem que pot utilitzar 150 Mb. i que organitzi els objectes creant
16 directoris, cadascun amb 256 subdirectoris i amb els fitxers
dintre.
Hem assignat 150 Mb. perquè el disc dur de l'ordinador pot arribar a ser més lent que Internet si s'ha de buscar un arxiu entre milers d'ells, tenint en compte també que 150 Mb. són suficients per guardar gairebé totes les pàgines que s'utilitzaran sovint a l'institut.
Un detall: hem d'assegurar-nos que el propietari del directori utilitzat com