Sei sulla pagina 1di 38

Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.

it
1 Linux Networking
1.1 Indirizzi MAC
Aegnati !al "ro!uttore !ella #$e!a. Numeri !i %8 bit.
Numero !i lotto - numero !i #$e!a. ATT&N'ION&( "eo ) "oibile #ambiarli *ia o+tware #on gran!e +a#ilit,- "er
#ui non !e*ono eere #oni!erati #ome una .#erti+i#a/ione. !ell0i!entit, !el mittente.
1.2 Indirizzi IP
1ato #$e gli in!iri//i I2 in Internet !e*ono eere uni*o#i- ) meglio uare #ome in!iri//i "er i #ollegamenti in rete lo#a-
le gli in!iri//i "ri*ati Internet(
3n in!iri//o !ella rete !i #lae A privata(
10.0.0.0 4netma5 266.0.0.07
3n in!iri//o in una !elle 18 reti "ri*ate !i #lae 9(
!a 1:2.18.0.0 a 1:2.;1.0.0 4netma5 266.266.0.07
3n in!iri//o in una !elle 268 reti "ri*ate !i #lae <(
!a 1=2.188.0.0 a 1=2.188.266.0 4netma5 266.266.266.07
1.3 Script di "lancio" dei er!izi di rete
Le !itribu/ioni >e!ora e! 3buntu $anno #ri"t !i lan#io !ei !ei er*i/i- +ra i ?uali uno #$e "ermette il lan#io e la o-
"enione !i tutti i er*i/i bailari !ella rete 4networ5ing7. 3tili//an!o ?ueti #ri"t "er ."egnere. i er*i/i e .ria##en-
!erli. i ottiene lo teo e++etto #$e i otterrebbe- "er ?uei er*i/i- "egnen!o e! a##en!en!o il #om"uter. @ueti #ri"t
ono #omo!i "er "ro*are le mo!i+i#$e +atte alle #on+igura/ioni en/a +ar ri"artire e++etti*amente tutto il itema.
Gli #ri"t ono nella #artella(
/etc/init.d/
&! ammettono i eguenti "arametri(
tart
to"
reloa!
retart
+or#e-reloa!
I "iA im"ortanti "arametri ono( .tart. #$e +a "artire il er*i/io e ) "ento- to" lo "egne e ta giran!o- retart lo "e-
gne- "oi ubito lo a##en!e.
Gli #ri"t "iA ti"i#i #$e i tro*ano in Bet#Binit.!B "oono eere(
networ5ing(
amba(
a"a#$e2(
$!(
mC?l(
+t"!(
&em"io(
/etc/init.d/networking restart
>a ri"artire i er*i/i bailari !i rete. 3tile "er "ro*are e la #on+igura/ione !egli in!iri//i I2 e !el routing ri"artir, #orret-
tamente !o"o il boot !el itema.
1." "Inter#acce" di rete
Ogni #$e!a !i rete 4inter+a##ia7 !e*e a*ere almeno un in!iri//o I2. Il nome !ell0inter+a##ia e*o#a la te#nologia e! il
numero !0or!ine !ella #$e!a.
&. lo 4loo"ba#57 12:.0.0.1D et$0- et$1 .. - """0- """1- ..wlan0- ..
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 1 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
L0inter+a##ia lo .non eite.. &0 un arti+i#io "er "oter uare il T<2BI2 ulla tea ma##$ina- en/a u#ire ulla rete. At-
tra*ero ?ueta inter+a##ia #omuni#ano tramite T<2BI2 a""li#a/ioni #$e tanno ullo teo #om"uter.
Le inter+a##e """0- """1- .. ono ao#iate ai mo!em e ono atti*e olo ?uan!o i ) #ollegati alla Rete *ia mo!em a#u-
ti#o.
Le inter+a##e et$0- et$1- .. ono ao#iate allw #$e!e !i rete LAN 4&t$ernet7.
Le inter+a##e wlan #orri"on!ono alle #$e!e Girele LAN- #$e #ollegano en/a +ilo in rete lo#ale #on il "roto#ollo
I&&& 802.11.
He i *uole #on+igurare una #$e!a in mo!o #$e abbia "iA !i un in!iri//o I2 4aliaing I27- i !e+ini#ono inter+a##e .!e-
ri*ate.- !ette an#$e .alia I2..
&. et$0(1- et$0(2- ..
1.$ ping
2rogramma !iagnoti#o "er i li*elli MA< e I2 !elle rete. He il "ing +un/iona- +un/ionano i li*elli MA< e I2.
"ing broa!#at
$ ping -b 192.178.13.255
Oggi moltiimi $ot !i rete- "e#ialmente u Internet- ono #on+igurati "er non ri"on!ere ai "ing broa!#at- "er#$I nel
"aato ?ueto trumento ) tato abuato "er atta##are i itemi in rete e #auare 1enial o Her*i#e 41o7.
1.% i#con#ig &inter#ace con#igure'
i+#on+ig ) il #oman!o #$e "ermette !i #on+igurare le inter+a##e !i rete. He uato en/a al#un "arametro motra l0attuale
#on+igura/ione !i tutte le inter+a##e !i rete attualmente #on+igurate 4u"7. Le inter+a##e #$e eitono- ma non ono #on+i-
gurate 4ono .!own.7- non *engono motrate.
&em"io(
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:14:38:0A:43:CA
inet addr:192.168.13.10 Bcast:192.168.13.63 Mask:255.255.255.192
inet6 addr: fe80::214:38ff:fe0a:43ca/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:176 (176.0 b)
Interrupt:11
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3600 errors:0 dropped:0 overruns:0 frame:0
TX packets:3600 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4692270 (4.4 MiB) TX bytes:4692270 (4.4 MiB)
He eitono inter+a##e !i rete #$e non ono #on+igurate- i "uJ *e!ere ?uali ono #on # ifconfig -a. @ueto #oman!o
4all7 motra ogni inter+a##ia e la ua e*entuale #on+igura/ione.
In ?ueto eem"io i *e!e la #on+igura/ione #orrente !i !ue inter+a##e( .et$0. 4la ./ereima. #$e!a !i rete &t$ernet7- e
.lo. 4.loo"ba#5.7- un0inter+a##ia .*irtuale.- em"re "reente- #$e "ermette !i uare il o+tware T<2BI2 "er #ollegare "ro-
grammi #$e riie!ono ullo teo #om"uter7.
i+#on+ig *iuali//a( l0in!iri//o MA< !ella #$e!a !i rete- l0in!iri//o I2 #$e le ) tato aegnato 4inet a!!r7 l0in!iri//o #$e
la #$e!a uer, "er il broa!#at nella ottorete 49#at7- la ma#$era !i ottorete 47- l0in!iri//o I2 *8 47- e le tatiti#$e !0u-
o !ella inter+a##ia !i rete( "a##$etti 4+rame7 tramei e ri#e*uti- "a##$etti "eri e o*ra#ritti 4o*errun- !o*uto a #olli-
ioni non rile*ate7- #olliioni a**enute- o##u"a/ione maima !el bu++er !i tramiione.
La intai generale !i i+#on+ig ) la eguente(
# ifconfig <interfaccia> <indirizzo> <opzioni>
&em"io(
# ifconfig eth0 192.168.13.10/26
<on+igura "er l0inter+a##ia et$0 l0in!iri//o in!i#ato. La netma5 ) ?uella #$e #orri"on!e alla #lae I2 !ell0in!iri//o-
l0in!iri//o !i broa!#at ) ?uello #on tutti 1 nella "arte !i $ot- #oni!eran!o la ma#$era !i !e+ault.
Hi "uJ an#$e !are una ma#$era !i ottorete "e#i+i#a- in!i#an!o il "re+io <I1R o la ma#$era tea- #on la intai
#$e i e*in#e !ai eguenti eem"i(
# ifconfig eth0 192.168.13.10 netmask 255.255.255.192
". 2 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
e?ui*ale a
# ifconfig eth0 192.168.13.10/26
&0 im"ortante +ar notare #$e i+#on+ig non "ermette !i tabilire il !e+ault gatewaC "er l0inter+a##ia !i rete #$e i #on+igura.
@ueto i "otr, 4e i !o*r,7 +are u##ei*amente- ineren!o nella tabella !i routing !el #om"uter una route !i !e+ault-
#on il #oman!o route 4*e!i oltre7.
i+#on+ig non ) ."eritente. +ra un boot e l0altro- le mo!i+i#$e +atte #on i+#on+ig i "er!ono. 2er ren!erle .!e+initi*e.-
mo!i+i#are il +ile Bet#Bnetwor5Binter+a#e 4*e!i- "iA a*anti- il "aragra+o relati*o7.
Opzioni interessanti di ifconfig
# ifconfig eth0 hw ether AA:BB:CC:DD:EE:FF
im"ota- e il !ri*er !ella inter+a##ia !i rete lo #onente- l0in!iri//o MA< in!i#ato 4nell0eem"io
AA(99(<<(11(&&(>>7- !i*ero !a ?uello aegnato alla #$e!a !al uo "ro!uttore.
alia IP
Il #oman!o i+#on+ig "ermette an#$e !i #on+igurare gli alia I2- #io) in!iri//i I2 alternati*i "er la tea inter+a##ia !i
rete.
2er +ar #iJ bata im"otare l0inter+a##ia *irtuale et$K(L- #$e igni+i#a l0L alia !ell0inter+a##ia K 4e. et$0(0- et$0(1 ..7
&em"io(
# ifconfig eth0 192.168.13.25
# ifconfig eth0:0 10.11.12.13
# ifconfig eth0:1 172.16.13.8
# ifconfig
eth0 Link encap:Ethernet HWaddr 00:14:38:0A:43:CA
inet addr:192.168.13.25 Bcast:192.168.13.255 Mask:255.255.255.0
inet6 addr: fe80::214:38ff:fe0a:43ca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:173 errors:1 dropped:1 overruns:0 frame:0
TX packets:119 errors:0 dropped:0 overruns:0 carrier:0
collisions:9 txqueuelen:1000
RX bytes:39433 (38.5 KiB) TX bytes:11190 (10.9 KiB)
Interrupt:11
eth0:0 Link encap:Ethernet HWaddr 00:14:38:0A:43:CA
inet addr:10.11.12.13 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:11
eth0:1 Link encap:Ethernet HWaddr 00:14:38:0A:43:CA
inet addr:172.16.13.8 Bcast:172.16.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:11
<ome i *e!e- i tre #oman!i i+#on+ig $anno #on+igurato tre inter+a##e I2 *irtuali ulla tea #$e!a !i rete- ull0inter+a#-
#ia ."rin#i"ale. 4et$07 ) im"otato 1=2.188.1;.26- ull0inter+a##ia *irtuale et$0(0 ) 10.11.12.1; mentre ull0inter+a##ia
*irtuale et$0(1 ) im"otato 1:2.18.1;.8.
3are uno ?ualiai !ei tre in!iri//i ulla tea #$e!a ) !el tutto e?ui*alente.
# ifconfig eth0:1 down
.H"egne. l0inter+a##ia *irtuale et$0(1- !iabilitan!o l0alia I2 1:2.18.1;.8D gli altri alia e l0I2 ."rin#i"ale. !ell0inter+a##ia
#ontinuano a +un/ionare.
# ifconfig eth0 down
.H"egne. l0inter+a##ia et$0- trattan!oi !ell0I2 ."rin#i"ale. an#$e gli alia *anno .!own..
ifup, ifdown
@ueti #oman!i atti*ano 4i+u"7 o !iatti*ano 4i+!own7 le inter+a##e !i rete #$e *engono "e#i+i#ate #ome "arametro.
&em"io(
# ifdown eth0
1iatti*a l0inter+a##ia !i rete- #$e ora non +un/iona "iA- in+atti e +a##io i+#on+ig- ottengo(
# ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3690 errors:0 dropped:0 overruns:0 frame:0
TX packets:3690 errors:0 dropped:0 overruns:0 carrier:0
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". ; !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
collisions:0 txqueuelen:0
RX bytes:4786983 (4.5 MiB) TX bytes:4786983 (4.5 MiB)
<ome i *e!e #0) olo l0inter+a##ia !i loo"ba#5- et$0 ora non .eite..
i+#on+ig i "uJ uare #on l0o"/ione !own o u"- "er ."egnere. o a##en!ere an#$e le inter+a##e *irtuali.
&em"i(
# ifconfig eth0:1 down
1.( )ile /etc/network/interfaces
Molte !itribu/ioni uano "er #on+igurare la rete il +ile Bet#Bnetwor5Binter+a#e.
He ?uel +ile eite lo i "uJ mo!i+i#are- a*en!o !iritti !i root 4+are "rima un ba#5u"M7. La ua intai ) molto em"li#e e
i "uJ im"otare ia l0in!iri//o I2 #$e il !e+ault gatewaC. Hi "uJ an#$e aggiungere al +ile Bet#Bnetwor5Binter+a#e un alia
!i un in!iri//o I2.
Il "rogramma i+#on+ig *iene #$iamato al boot !el itema !a uno !egli #ri"t .r# e! im"ota gli in!iri//i #$e ono #ritti
nel +ile Bet#Bnetwor5Binter+a#e. 2er ren!ere "eritente gli in!iri//i I2 !elle #$e!e- i "uJ mo!i+i#are il +ile Bet#Bnet-
wor5Binter+a#eB o! uare un "rogramma gra+i#o o Geb !i #on+igura/ione !ella rete- em"re "reente nelle *arie !itri-
bu/ioni Linux.
Con#igurazione di un alia IP c*e opra!!i!a allo pegni+ento del PC
1. Eeri+i#are e eite Bet#Bnetwor5Binter+a#e
Nel +ile una inter+a##ia !o*rebbe eere "e#i+i#ata in mo!o imile a ?ueto eem"io(
auto eth0
iface eth0 inet static
name Collegamento alla LAN aziendale ed a Internet con la scheda di rete
address 172.16.20.4
netmask 255.255.0.0
gateway 172.16.255.254
La "rima riga 4auto7 !i#e #$e l0inter+a##ia !e*e eere atti*ata automati#amente al boot 4e?ui*alente !i i+#on+ig
et$0 u"7- le altre i #ommentano !a ole.
2. e l0inter+a##ia ) #on+igurata "er a#?uiire un in!iri//o I2 !inami#o attra*ero il "roto#ollo 1N<2- "otrebbe
eere "e#i+i#ata #ome in ?uet0altro eem"io(
auto eth1
iface eth1 inet dhcp
;. Aggiugere al +ile Bet#Bnetwor5Binter+a#e la #on+igura/ione "er l0alia- "er eem"io #oO(
auto eth0:0
iface eth0:0 inet static
name Collegamento da casa con modem ethernet ADSL
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
%. Hal*are le mo!i+i#$e
6. >ar ri"artire il er*i/io !i getione !elle inter+a##e !i rete- #$e rilegger, il +ile Bet#Bnetwor5Binter+a#e
2er eem"io- #on una !itribu/ione 3buntu i "uJ +are #oO(
# sudo /etc/init.d/networking restart
1
2er il +ile inter+a#e eite una !o#umenta/ione man- "er #ui- e er*e- i "uJ +are(
# man interfaces
1., Script /etc/init.d/networking
<ontenuto nella #artella !egli #ri"t !i itema- "ermette !i +ermare- +ar "artire e +ar ri"artire la rete- i "arametri(
HTO2- HTART e R&HTART 4+erma la rete e la +a "artire !i nuo*o7.
1 Il lan#io !el "rogramma ) "re#e!uto !al #oman!o u!o 4su"er uer do7 "er#$) in 3buntu l0utente root "er !e+ault non eite e biogna "aare
tem"oraneamente a root 4u"er uer7 a! ogni #oman!o !i itema #$e +a##iamo eeguire.
". % !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
&em"io(
# /etc/init.d/networking stop
1.- Progra++a ipcalc
@ueto "rogramma #on inter+a##ia a #arattere- non em"re ) intallato "er !e+ault !alle !itribu/ioni- ma lo i "uJ tro-
*are +a#ilmente. &0 un #al#olatore !i in!iri//i I2- *uole em"re un in!iri//o I2- eguito e*entualmente !a una ma#$era
!i ottorete o !a un "re+io <I1R.
&em"i(
# ipcalc -b 37.243.122.1/21
BROADCAST=37.243.127.255
l0o"/ione broa!#at !, l0in!iri//o I2 !i broa!#at "er la rete 4in!iri//o e netma57 "aata
# ipcalc -m 37.243.122.1/21
NETMASK=255.255.248.0
l0o"/ione m 4ma57 !, la netma5 "er la rete "aata
# ipcalc -p 0.0.0.0 255.255.248.0
PREFIX=21
La "re#e!ente er*e "er a"ere il "re+io !i una netma5 #ritta in +orma .a ?uattro "unti.
# ipcalc -pn 37.243.122.1 255.255.248.0
PREFIX=21
NETWORK=37.243.120.0
L0o"/ione " 4"re+ix7 !, il "re+io #$e #orri"on!e alla ma#$era !i ottorete "aata a i"#al#
L0o"/ione n 4networ57 !, la "arte !i rete !ell0in!iri//o P ma#$era "aati
<ome i *e!e !all0ultimo eem"io- le o"/ioni "oono eere "aate inieme.
Il "rogramma i"#al# non ) "reente "er !e+ault in molte !itribu/ioni. In ?uel #ao ) ne#eario intallarlo.
1.1. Porte /CP012P e well known port nu+3er
2er la !e+ini/ione !i "orta T<2- i *e!a il #a"itolo u T<2BI2.
Il +ile Betc/services #ontiene una tabella #$e motra la #orri"on!en/a +ra er*i/i-"roto#olli Internet e numeri !i "orta
T<2-312. I !emoni #$e reali//ano i "roto#olli Internet leggono !a ?ueto +ile "er tabilire i loro "ort T<2-312 !i !e-
+ault.
Le "orte #on numero in+eriore a 102% 4.well 5nown "ort number.7 "oono eere uate olo !a root- in ?ueto mo!o i
#lient "oono eere i#uri #$e i er*i/i #$e utili//ano non iano lan#iati !a un utente ?ualiai !el itema.
Il +ormato !el +ile )(
<nome del servizio> <porta in decimale>/<tcp | udp> <alias> #<commenti>
QaliaR ) una lita !i nomi alternati*i "er il "roto#ollo.
1.11 arp
A!!re Reolution 2roto#ol er*e agli $ot "er tro*are l0in!iri//o MA< !i un $ot !el ?uale #ono#ono l0in!iri//o I2.
2er *e!ere il #ontenuto attuale !ella #a$e AR2 !igitare(
# arp -a
2er e*itare AR2 nelle reti #on #$e!e #$e non #ambiano mai( #ri*ere nel +ile Bet#Bet$er
1.12 Client 24CP
Tramite il "roto#ollo Internet 1<N2 ) "oibile ri#e*ere automati#amente !a un er*er #$e ri"etti ?uel "roto#ollo- i "a-
rametri een/iali "er la #on+igura/ione !elle inter+a##e !i rete. Oltre l0in!iri//o I2 i "oono a#?uiire in automati#o
molti altri "arametri "er il +un/ionamento in rete !i un $ot.
3na Linux box "uJ #ontattare- in broa!#at ulla rete lo#ale- un er*er 1N<2 "er ottenere ?ueti "arametri- #$e uer,
.tem"oraneamente.- "er il tem"o #$e le *err, in!i#ato.
Il "iA .tan!ar!. +ra i o+tware #$e "ermettono !i ottenere un in!iri//o I2 tramite il "roto#ollo 1N<2 ) .!$#lient.- "ro-
!otto !all0.Internet Ho+tware <onortium..
He il itema Linux ) gi, ."re#on+igurato.- "er +are una ri#$ieta 1N<2 "otrebbe batare lan#iare il "rogramma !$#lient
e! atten!ere 4un "o07 "er la ri"ota !el er*er.
# dhclient
!$#lient +a la ri#$ieta 1N<2- "oi i mette a +un/ionare in ba#5groun!- #ome un !emone- #ontrollan!o ?uan!o #i ono
!ei #ambiamenti nell0in!iri//o I2 o negli altri "arametri !ella #onneione.
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 6 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
L0o"/ione -r 4releae7 !i !$#lient .retitui#e. al er*er l0in!iri//o e !iatti*a l0inter+a##ia.
&em"io(
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:14:38:0A:43:CA
inet addr:192.168.1.3 Bcast:192.168.1.31 Mask:255.255.255.224
inet6 addr: fe80::214:38ff:fe0a:43ca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
..
# dhclient -r
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:14:38:0A:43:CA
BROADCAST MULTICAST MTU:1500 Metric:1
..
1o*e i *e!e #$e l0inter+a##ia non $a "iA un in!iri//o I2.
A! un er*er 1N<2 il #lient "uJ #$ie!ere(
in!iri//o I2 e netma5
in!iri//o !i uno o "iA er*er 1NH
in!iri//o !i uno o "iA er*er GINH
$otname 4nome !el #om"uter7
nome !i !ominio 1NH
in!iri//o I2 !el !e+ault gatewaC
in!iri//o !i uno o "iA Time Her*er 4"er la in#roni//a/ione !ell0orologio interno7
in!iri//o !i uno o "iA 2rint Her*er 4"er la tam"a u rete7
3n eem"io "e#i+i#o(
@uan!o il "rogramma !i amminitra/ione !elle #$e!e !i rete lan#ia il #lient 1N<2 u un itema >e!ora- +a ?ual#oa
!el genere(
# /sbin/dhclient -1 -q -lf /var/lib/dhcp/dhclient-eth0.leases -pf /var/run/dhclient-eth0.pid eth0
1o*e(
-1 +a un olo tentati*o- e non tro*a un er*er 1N<2- rinun#ia a #on+igurare l0inter+a##ia
-? non motra in+orma/ioni ulla #onole al momento !ell0a**io
-l+ 4leae file7 ) l0o"/ione #$e in!i#a il .leae +ile.- in ?ueto #ao il nome !el +ile ) ."eronali//ato. "er 0inter+a##ia
et$0- il +ile .tan!ar!. arebbe ./var/lib/dhcp/dhclient.leases"
-"+ 4PI1 file7 ) il +ile #$e #ontiene il numero !i i!enti+i#a/ione 42I17 !el "ro#eo #$e +a eeguire il "rogramma
!$#lient
l0ultimo "arametro !ell0eem"io motrato ) l0inter+a##ia !i rete ulla ?uale *iene +atta la ri#$ieta 1N<2 4et$0 nell0eem-
"io7. He man#a l0in!i#a/ione !ell0inter+a##ia- *engono ."ro*ate. tutte le inter+a##e !i rete #$e ono in gra!o !i +are il
broa!#at.
He +oe "reente un0o"/ione -#+ 4#on+iguration +ile7 i "e#i+i#$erebbe un +ile !i #on+igura/ione alternati*o- !i*ero !a
?uello .tan!ar!. 4#$e ) .!$#lient.#on+.- !i olito in Bet# o! in uno !ei uoi .+igli.7.
Il +ile !$#lient.leae *iene #ritto !al "rogramma !$#lient e tiene tra##ia !egli in!iri//i #$e ono tati aegnati al #om-
"uter. &o *iene uato- "er eem"io- ?uan!o il #om"uter *iene +atto ri"artire. 2uJ #ontenere ?ual#oa !el genere(
lease {
interface "eth0";
fixed-address 172.16.0.16;
option subnet-mask 255.255.0.0;
option dhcp-lease-time 691200;
option routers 172.16.0.254;
option dhcp-message-type 5;
option dhcp-server-identifier 172.16.0.253;
option domain-name-servers 172.16.0.253;
option dhcp-renewal-time 345600;
option dhcp-rebinding-time 604800;
renew 1 2006/3/13 04:51:33;
rebind 4 2006/3/16 13:22:25;
expire 5 2006/3/17 13:22:25;
}
". 8 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
Nel +ile #i aranno una o "iA e/ioni !el genere- una "er ogni .leae. 4."retito.7 #$e il notro #om"uter a*r, ottenuto u
ogni ua inter+a##ia #oin*olta nel 1N<2.
.+ixe!-a!!re. ) l0in!iri//o I2 #$e *iene !ato all0inter+a##ia. Har, .+io. al maimo "er il tem"o .!$#"-leae-time.- in-
!i#ato oltre. Oltre tale tem"o ar, .ritirato. !al er*erD "rima !i ?uel momento "otr, eere .rinno*ato.- a "artire !al
.!$#"-renewal-time..
Nell0eem"io "re#e!ente i *e!ono altri "arametri !ell0inter+a##ia- #$e i #ommentano !a oli in bae al loro nome.
Il .!$#"-leae-time. !ell0eem"io ) !i 8=1200 - #orri"on!enti a! 8 giorni- il .!$#"-renewal-time. ) ;%6800 - #orri-
"on!enti a % giorni- il .!$#"-rebin!ing-time.
1
) !i 80%800 - #orri"on!enti a : giorni. 1alle ultime rig$e !ella /ione
i !e!u#e #$e il leae ) tato ini/iato il giorno = Mar/o 2008.
Configurazione del client DHCP
Il "rogramma "uJ eere #on+igurato in mo!o molto eteo- attra*ero il +ile !$#lient.#on+D al#une #on+igura/ioni inte-
reanti ono(
re?uet 4ri#$iete7( le ri#$iete al er*er !i "arti#olari in+orma/ioni ulla rete
il er*er "uJ +are la ri#$ieta !i uno "e#i+i#o in!iri//o o !i un #erto tem"o !i leae- #$e il er*er "otr, a#-
#or!are o negare.
re?uire 4re?uiiti7( le in+orma/ioni .obbligatorie. #$e il #lient !e*e a#?uiire. He un er*er non !ar, tutte ?uete
in+orma/ioni- nell0or!ine "e#i+i#ato- il #lient non a#?uiir, l0in!iri//o
leae 4.a++itti.7( ri#$iete !i in!iri//i
leae +ii 4+ixe!-a!!re7( i "uJ #on+igurare un leae #on un in!iri//o "e#i+i#o
?uan!o il #lient non tro*a un er*er "ro*a tutti i er*er 1N<2 !a #ui $a a*uto in "aato un in!iri//o
#$e riulti an#ora *ali!o. He non ne tro*a neuno i "uJ #on+igurare "er aumere un in!iri//o +io-
in un leae #$e non +ini#e mai.
renew time( il momento in #ui il #lient #omin#ia a ri#ontattare il er*er "er ottenere il rinno*o !ell0autori//a/io-
ne all0uo !ell0in!iri//o
rebin! time( tabili#e il momento in #ui il #lient !e*e #omin#iare a #er#are un ?ualiai er*er 1N<2- "er#$)
il leae ta "er #a!ere e biogna #er#are un in!iri//o in broa!#at
ex"ire time( ) il momento in #ui l0in!iri//o non *ale "iAD il #lient !e*e #eare l0utili//a/ione !ell0in!iri//o.
1.13 5ioluzione di no+i in indirizzi
.Riol*ere. un nome igni+i#a tro*are un in!iri//o I2 #$e #orri"on!a a! un imbolo 4una tringa7. 2er eem"io al nome
.go5u. "otrebbe #orri"on!ere l0in!iri//o I2 1=2.188.1.22 .
)ile 0etc0*ot.con#
Il #ontenuto !i ?ueto +ile !etermina il #om"ortamento !el itema nella riolu/ione !ei nomi.
Ti"i#amente #0) #ritto(
order hosts, bind
multi on
#$e igni+i#a #$e "er riol*ere i nomi il itema #er#a "rima nel +ile Bet#B$ot- "oi #$ie!e in rete- ai er*er 1NH "e#i+i-
#ati in Bet#Breol*.#on+ 4bin! ) il nome !el !emone #$e +a !a nameer*er7.
multi on igni+i#a #$e *engono #oni!erati tutti gli in!iri//i ri#a*ati "re#e!entemente e non olo il "rimo tro*ato. 2o-
trebbe man#are in $ot.#on+.
)ile 0etc0*ot
@ueto +ile tabili#e !elle #orri"on!en/e +ra in!iri//i I2 e nomi imboli#i 4tring$e7. In ogni riga !el +ile ta un in!iri/-
/o I2 e! uno o "iA nomi #orri"on!enti. Nella riolu/ione !ei nomi Bet#B$ot *iene !i olito #onultato 2&R 2RIMO
4*e!i .order hosts, bind")- "er #ui e un nome ) in ?ueto +ile non *err, ri#$ieto al 1NH.
In Gin!ow eite un +ile #orri"on!ente(
<(SGin!owS$ot.am- nei itemi Gin =K-Me- mentre #0) <(SGINNTSCtem;2S!ri*erSet#S$ot in NT-K2.
)ile 0etc0reol!.con#
Il +ile Bet#Breol*.#on+ "e#i+i#a il #om"ortamento !el itema nella riolu/ione !ei nomi !egli $ot #on il "roto#ollo
1NH. Ti"i#amente ) #om"oto !i almeno tre rig$eD una #ontiene il nome !el !ominio 41NH7 !el #om"uter- un0altra una
lita !i nomi !i !ominio.
nameserver QIn!iri//o I2R
) un ingolo in!iri//o I2- #$e in!i#a il er*er 1NH #ui #$ie!ere gli in!iri//i #orri"on!enti ai nomi #$e non i rie#ono a
riol*ere .all0interno !el #om"uter. 4#on Bet#B$ot7.
Hi "oono mettere "iA linee #ome nameer*er- ee *erranno #an!ite nell0or!ine #on #ui ono #ritte in ?ueto +ile.
1 T il tem"o oltre il ?uale il #om"uter #omin#ia a #er#are un nuo*o in!iri//o !a ?ualiai er*er 1N<2- an#$e !i*ero !a ?uello #$e gli $a !ato l0in-
!iri//o "re#e!entemente.
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". : !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
search QLita !i nomi !i !ominioR
) una lita !i nomi !i !ominio- e"arati !a "a/i.
In!i#a in ?uali !ominii #er#are "er tro*are un $ot il #ui nome non ia #om"letamente "e#i+i#ato.
domain QNome !i !ominioR
) un ingolo nome !i !ominio- #on le #on*en/ioni !el 1NH.
1i#e #ome #om"letare il nome !egli $ot #$e non iano #om"letamente "e#i+i#ati.
2er il +ile reol*.#on+ eite una !o#umenta/ione man- "er #ui- e er*e- i "uJ +are(
# man resolv.conf
1.13.1 Programmi per il lookup DNS
Il "rogramma nloo5u" +a un0interroga/ione al 1NH- la ua intai ) em"li#e(
# nslookup <nome di dominio>
!, l0in!iri//o I2 !el Qnome !i !ominioR
Il "rogramma $ot +a un0interroga/ione in*ertita al 1NH 4re*ere loo5u"7(
# host <indirizzo IP>
!, il nome !i !ominio 1NH #ui a""artiene l0Qin!iri//o I2R.
Il "rogramma $ot "ermette an#$e !i +are un loo5u" .normale.(
# host <nome di dominio>
1.13.2 Programma netstat
Motra le tatiti#$e !i utili//a/ione !ella rete- le tabelle !i routing- le #onneioni internet atti*e- le #onneioni NAT.
&em"i(
# netstat
"er !e+ault nettat motra i o#5et a"erti- T<2 e 312. I o#5et T<2 *engono in!i#ati #ome .HTR&AM.- ?uelli 312
#ome .1GRAM. 4!atagram7. Non *iuali//a i o#5et !ei er*er in a#oltoD e i *ogliono *iuali//are an#$0ei- bio-
gna !are l0o"/ione -a 4all7.
# netstat -i
-i U inter+a#e( motra le tatiti#$e !i tra++i#o relati*e alle inter+a##e !i rete.
# netstat -M
-M U Ma?uera!e( motra le eioni T<2 #$e ono tate .ma#$erate. !a in!iri//o "ri*ato a! in!iri//o "ubbli#o.
Nettat ammette molte altre o"/ioni molto utili. 3are il #oman!o man "er *e!ere ?uali ono.
1.1" 5outing6 co+ando route
1
La tabella !i routing in Linux ) /proc/net/route.
Il #ontenuto !ella tabella i "uJ *e!ere *iuali//an!o il +ile- o""ure uan!o i #oman!i route e nettat #on i giuti "ara-
metri(
$ route -n
$ netstat -r
l0o"/ione -n nel #oman!o route er*e "er in!i#are i !e*e #ri*ere olamente l0in!iri//o I2 !elle rig$e !ella tabella. In-
+atti- e -n non ) "reente- il #oman!o route "ro*a a riol*ere ogni in!iri//o I2 !ella tabella in nomi imboli#i 1NH in
re*ere loo5u"- e #i "uJ "uJ mettere molto tem"o 4"e#ie e non #0) neun er*er 1NH !i"onibileM7.
1ato #$e il .+ile. B"ro#BnetBroute non ) un *ero +ileD non ) aolutamente il #ao !i mo!i+i#arlo !irettamente ) meglio
mani"olarlo- "er tabilire !elle route tati#$e- olo attra*ero il "rogramma .route..
1 i noti #$e il "rogramma route #0) an#$e in Gin!ow- e +un/iona in mo!o imile.
2er *e!ere la tabella !i routing in Gin!ow i !e*e uare l0o"/ione 2RINT !el #oman!o route(
C:> route PRINT
". 8 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
O"/ioni im"ortanti !i route
add | del
Aggiunge 4a!!7 o toglie 4!el7 una route !alla rete.
-net | -host
In!i#a #$e l0in!iri//o #$e egue ) una rete 4-net7 o! un ingolo $ot 4-$ot7.
2er aggiungere !elle .tra!e. a! un tabella !i routing i "uJ uare il #oman!o route- #on l0o"/ione .a!!.. Hi "uJ aggiun-
gere un0intera rete- #on l0o"/ione -net- o una ingola ta/ione- #on l0o"/ione -$ot.
2er togliere una *o#e !a una tabella !i routing i ua route #on l0o"/ione .!el..
&em"i(
# route add -net 192.168.13.0 netmask 255.255.255.128 dev eth0
H"e#i+i#a #$e(
i *uole aggiungere una route alla tabella 4a!!7
i tratta !ella tra!a #$e !o*ranno "ren!ere tutti i !atagrammi !i una rete 4-net7
la rete !i !etina/ione ) la 1=2.188.1;.0
la netma5 non ) ?uella tan!ar!- ma 266.266.266.128 4bit "iA igni+i#ati*o !ell0ultimo 9Cte a 1 nella ma#$era
UR la rete !i #lae < ) !i*ia in !ue ottoretiD !ato #$e l0ultimo 9Cte !el0in!iri//o ) 0- ?ueta riga !ella tabella
!i routing tratta !ella ottorete "iA .baa.- #on in!iri//i I2 !a 1=2.188.1;.1 a 1=2.188.1;.1287. He la netma5
+oe tata ?uella tan!ar! !ella #lae !ell0in!iri//o !ella rete 4nell0eem"io 266.266.266.07- la i arebbe "otuta
omettere nel #oman!o route.
# route del -net 192.56.76.0 netmask 255.255.255.128 dev eth0
&limina la tea route inerita #on il #oman!o a!! "re#e!ente. @ueto #oman!o *uole tutti i "arametri in!i#ati- e e
ne omette ?ual#uno- +i!an!o ul +atto #$e la riga !ella tabella "oa eere ri#ono#iuta #omun?ue- non +un/ioner,.
Al "oto !ella ma#$era !i ottorete i "uJ uare un "re+io <I1R- e"aran!olo !all0in!iri//o #on uno .la$.. Il e-
guente #oman!o +a lo teo e++etto !el "re#e!ente .a!!.(
# route add -net 192.168.13.0/25 dev eth0
@uan!o i *uole intro!urre un router in una tabella !i routing biogna(
1. mettere una route #$e "emetta !i raggiungere in rete lo#ale il router !a uare- #on il uo in!iri//o I2.
2. mettere una route .!i ti"o gatewaC. all0in!iri//o !el router. 2er#$) una route ia .!i ti"o gatewaC. biogna
#rearla #on l0o"/ione .gw.
&em"io(
# route add -net 192.0.0.07/20 dev eth1
# route del default netmask 0.0.0.0 dev eth1
2er intro!urre un router !i !e+ault- mettere l0o"/ione .!e+ault gw. "rima !ell0in!iri//o !el routerD l0inerimento !ella ma-
#$era 0.0.0.0 "uJ eere o"/ionale.
&em"io(
# route add default gw 36.243.112.1 netmask 0.0.0.0 dev eth1
Nella tabella !i routing !o*e*a eere em"re "reente una riga #$e !irige al .lo#al$ot.- intra!an!o il tra++i#o !iretto a
.?ueto. teo #om"uter. 1i olito ?ueta riga *eni*a aggiunta !al "rogramma !0intalla/ione !ella !itribu/ione. In
tem"i re#enti mo!i+i#$e al 5ernel $anno reo o"/ionale la "reen/a !ella riga !i lo#al$ot nella tabella !i routing.
@ualora +oe ne#eario- la route !i lo#al$ot i intro!u#e #oO(
# route add -host 127.0.0.1 dev lo
A3ilitazione dell7"IP #orwarding"
1i olito la +un/ione !i tra+erimento !ei "a##$etti I2 !a un0inter+a##ia a! un0altra 4.I2 +orwar!ing.7- #io) la +un/ione !i
routing- ) !iabilitata "er i#ure//a nell0intalla/ione !i !e+ault !elle !itribu/ioni. 2er ?ueto la +un/ione *a abilitata-
#ri*en!o un 1 nel .+ile. .i"V+orwar!.- #ome in!i#ato nell0eem"io #$e egue(
# echo 1 > /proc/sys/net/ipv4/ip_forward
@ueta #on+igura/ione ) "erJ non "eritente. He il #om"uter *iene ria**iato- i "er!e. 2er ren!erla "eritente mo!i+i-
#are il +ile(
/etc/sysctl.conf
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". = !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
metten!o nel +ile la linea(
net.ipv4.conf.all.forwarding=1
o""ure
net.ipv4.ip_forward=1
la linea "otrebbe eere gi, #ritta- in tal #ao baterebbe togliere il egno !i #ommento.
1.1$ NA/ e #irewall con ipta3le
Le +un/ioni !i router NAT e !i +irewall !i ti"o "a#5et +ilter ono in#lue !irettamente nel 5ernel !i Linux e *engono
#$iamate .Net+ilter.. 1alla *erione 2.% !el 5ernel Linux il "a#5et +ilter *iene getito #on il "rogramma .IPtables.- #$e
"ermette !i emettere #oman!i !i #on+igura/ione al "a#5et +ilter.
I2table non $a +ile !i #on+igura/ione- "er #ui e i !e*ono ren!ere "eritenti le regole !el +irewall- #io) e i *uole #$e
rimangano an#$e !o"o la ri"arten/a !el #om"uter ) ne#eario +are uno #ri"t #$e im"oti le regole e! o##orre +arlo "ar-
tire #on uno !egli #ri"t .r# #$e *engono eeguiti all0a##enione !el #om"uter
1
.
I2table la*ora #on !i*ere .tabelle.- #$e gli +anno +are +un/ioni !i*ere. Le tabelle "iA igni+i#ati*e ono .+ilter.- #$e
er*e "er le +un/ioni !i "a#5et +ilter- e .nat.- "er alterare gli in!iri//i e! i "ort !ei "a##$etti e! ottenere +un/ioni !i
NATB2AT.
i"table "ermette !i a""li#are regole in momenti "re#ii !el "er#oro !el "a##$etto all0interno !el router. Il momento in
#ui i a""li#a una regola *iene !etto .chain. e! $a "oibilit, !i*ere in bae alla tabella utili//ata.
2er ogni "a##$etto #$e il +iltro tratta- eo eamina le regole a! una a! una e *e!e e ee #orri"on!ono al "a##$etto in
tranito.
e il "a##$etto non *eri+i#a le #on!i/ioni !i una regola i "aa alla u##ei*a
e la regola ) *eri+i#ata i eegue l0a/ione in!i#ata !al .target.- o""ure i #ontrolla un0altra regola- "ure "e#i+i-
#ata attra*ero il #oman!o i"+ilter
e le regole +ini#ono i eegue ?uanto !etto !alla regola !i !e+ault 4#$e *iene #$iamata ."oli#C.7.
La intai generale !i un #oman!o i"table ) la eguente(
# iptables [-t <tabella>] <comando> <chain> <regola> <target>
-t QtabellaR in!i#a il ti"o !i tabella- il !e+ault ) la tabella .+ilter.- #$e #ontiene le regole !i +iltraggioD un0altra tabella uti-
li//ata ) .nat.- #$e er*er "er il NATB2AT. &itono altri !ue ti"i !i tabella- #$e ?ui omettiamo.
Q#oman!oR ) un #oman!o in +orma !i o"/ione #$e in!i#a a i"table #oa +are(
-> 4+lu$7 #an#ella tutte le regole- e*entualmente "er la ola #$ain "e#i+i#ata
-1 4!elete7 #an#ella una regola
-A 4a""en!7 aggiunge una regola in +on!o alle altre
-I 4inert7 ineri#e una regola in un "unto tabilito- in!i#ato #on il uo numero 1O2O l0in!i#a/ione
!ella #$ain
-R 4re"la#e7 otitui#e una regola
-L 4lit7 elen#a le regole eitenti
-2 4"oli#C7 #ambia la "oliti#a !i !e+ault !ella #$ain "e#i+i#ata
Q#$ainR 4"unto !i inter*ento !ella regola7- nel eguito *err, !e+inito an#$e .#atena.- nonotante non embri termine
molto a!atto
e la tabella ) !i ti"o .+ilter.- "uJ la .#$ain. "uJ eere IN23T- >ORGAR1 o O3T23T.
e la tabella ) !i ti"o .nat.- "uJ eere 2R&RO3TING- O3T23T o 2OHTRO3TING.
QregolaR ) la regola- "e#i+i#ata #ome *e!remo in eguito
QtargetR 4obietti*o !ella regola7 "e#i+i#a #oa i !e*e +are ?uan!o la regola i a""li#a al "a##$etto #$e i eamina.
Nel #oman!o i"table il target ) "re#e!uto !a -W
e la tabella ) !i ti"o .+ilter.- il target "uJ eere uno !i( A<<&2T- 1RO2 o R&X&<T
2
4*e!i7
e la tabella ) .nat. al#uni !ei target ono MAH@3&RA1&- N&TMA2- 1NAT- HNAT- R&1IR&<T
3n target "otrebbe an#$e riman!are a! un0altra regola 4.Wum".7
<on i"table i "oono !e+inire e! uare !elle *ariabili- #ome le *ariabili !0ambiente !i un normale #ri"t !i $ell.
2er !e+inirle(
EARIA9IL&U.tringa.
2er uarle(
YEARIA9IL&
1 2er eem"io- in >e!ora- in Bet#Br#.!Blo#al.r#- #ri"t #$e *iene em"re eeguito alla +ine !i tutte le ini/iali//a/ioni e++ettuate !agli altri #ri"t .r#..
2 <i ono an#$e altri .target. ?ui tra#urati.
". 10 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
1.15.1 NAT con iptables
Tramite le +un/ioni NAT !i i"table ) "oibile +are in mo!o #$e in!iri//i I2 "ubbli#i #orri"on!ano a! in!iri//i I2 "ri-
*ati.
La tabella .nat. !i i"+ilter $a tre .#$ain.(
2R&RO3TING
#$e er*e a mo!i+i#are i "a##$etti non a""ena arri*ano al router- il routing !e*e eere +atto #on il .nuo*o. in-
!iri//o
>ORGAR1
#$e altera i "a##$etti mentre *engono "otati !a un0inter+a##ia a! un0altra
2OHTRO3TING
#$e mo!i+i#a i "a##$etti un momento "rima !i "e!irli ull0inter+a##ia !i !etina/ione !o"o #$e il routing ) gi,
tato +atto #on il *e##$io in!iri//o
NA/ "tatico" &2NA/ e SNA/'
He i *ogliono otituire .tati#amente. in!iri//i I2 interni a! in!iri//i I2 eterni i "oono uare i target HNAT- e
1NAT. <on ?ueti target i "oono +ar #ambiare an#$e i "ort- ma non ) in!i"enabileD non "e#i+i#an!o al#un "ort
nelle o"/ioni- il router ten!er, a mantenere i "ort originali.
SNAT (Source NAT, NAT "classico")
Eiene alterato l0in!iri//o I2 !el orgente 4mittente7 e otituito #on ?uello #on+igurato. Hi a""li#a olo alla #atena !i
2OHTRO3TING.
HNAT er*e "er #ambiare uno o "iA in!iri//i "ri*ati interni #on uno o "iA in!iri//i "ubbli#i tati#i eterni-
L0o"/ione !i ?ueto target )(
--to <IndirizzoIP o Range di indirizzi IP "sorgente" che sostit!iscono l"originale>
&em"io 4Hour#e NAT7(
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 33.21.4.7
Tutti i "a##$etti #$e e#ono !all0inter+a##ia et$0 "ren!ono l0in!iri//o ;;.21.%.:. @ueto ) il #ao in #ui #i ia tato ae-
gnato l0in!iri//o I2 tati#o ;;.21.%.: e *ogliamo uare u Internet tutti i #om"uter atta##ati al notro router NAT #on l0u-
ni#o in!iri//o #on #ui "oiamo an!are in Internet.
Higni+i#ato !elle o"/ioni(
-A ) un #oman!o( A U aggiunge la regola alle altre
-t nat -t in!i#a la tabella !a uare( ua la tabella nat
POSTROUTING #$ain !a uare( in!i#a #$e la regola *iene a""li#ata ul "a##$etto #$e e#e- !o"o il routing.
Il "a##$etto mo!i+i#ato eguir, la tra!a in!i#ata !all0in!iri//o !i !etina/ione 1O2O la otitu/ione
-o eth0 inter+a##ia !i u#ita( in!i#a #$e la regola i a""li#a ai "a##$etti #$e e#ono attra*ero ?uella #$e!a !i
rete
-j SNAT il target ) HNAT( in!i#a il .our#e NAT.
--to <IP> o"/ione !el target HNAT- in!i#a l0in!iri//o >INAL& 4!o"o la otitu/ione7.
DNAT (Destination NAT)
Il target 1NAT in!i#a #$e *iene alterato l0in!iri//o I2 !i !etina/ione 4!el !etinatario7 e otituito #on ?uello #on+igu-
rato #on il #oman!o i"table. Hi a""li#a normalmente alla #$ain !i 2R&RO3TING
1
- !un?ue inter*iene ul "a##$etto
"rima #$e i !e#i!a !o*e man!arlo.
In ?ueto #ao il router otitui#e ogni in!iri//o interno #on il uo #orri"on!ente eterno. @ueto ti"o !i target ) a!atto
"er ?uan!o i $anno uno o "iA I2 "ubbli#i .eterni. #$e i *ogliono rima""are u I2 "ri*ati .interni.- "er eem"io una
.er*er +arm. #$e *uole uare un olo in!iri//o I2 ma u!!i*i!ere u "iA er*er +ii#amente !i*eri il la*oro ui !i*eri
"roto#olli 4un er*er Geb a*r, un in!iri//o interno !i*ero !a un er*er >T2- ma entrambi a*ranno lo teo in!iri//o
eterno7.
L0o"/ione !i ?ueto target )(
--to <IndirizzoIP o Range di indirizzi IP "destinazione" che sostit!iscono l"originale>
&em"io 4.!etination NAT.7(
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 80 -j DNAT --to 192.168.13.128:8080
1 An#$e a O3T23T e alle #atene !e+inite !all0utente
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 11 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
Tutti i "a##$etti T<2 in ingreo ulla et$0 e #$e ono ri*olti al "ort 80 ono man!ati 4!etinationM7 al "ort 80 !ella ma#-
#$ina 1=2.188.1;.128. &0 la itua/ione in #ui tutto il tra++i#o NTT2 ri*olto in ingreo alla notra rete *iene man!ato a!
uno "e#i+i#o er*er interno.
Le nuo*e o"/ioni uate igni+i#ano(
PREROUTING #$ain( in!i#a #$e la regola *iene a""lO#ata ul "a##$etto .originale.- "rima !el routing.
Il "a##$etto mo!i+i#ato eguir, la tra!a in!i#ata !all0in!iri//o !i !etina/ione 1O2O la otitu/ione
-p tcp "roto#ollo( ono intereati !alla regola i !atagrammi #$e tra"ortano egmenti T<2
--dport <port> "ort !i !etina/ione( in!i#a il "ort !i !etina/ione ORIGINAL& "rima !elle otitu/ioni
-j DNAT il target 1NAT( in!i#a il .!etination NAT.
--to <IP>:<port> o"/ione !el target 1NAT- in!i#a l0in!iri//o e! il "ort >INAL& 4!o"o la otitu/ione7
&em"io( 4.port forwarding.7
iptables -t nat -A PREROUTING -p tcp -d 33.21.4.7 --dport 80 -j DNAT --to 192.168.13.128:8080
Tutti i "a##$etti #$e $anno l0in!iri//o !i !etina/ione 33.21.4.7 e! il "ort remoto 80 *engono mo!i+i#ati intro!u#en-
!o #ome in!iri//o !i !etina/ione 1=2.188.1;.128 e #ome "ort remoto 8080. @ueta regola +a raggiungere un !etermi-
nato er*er 4*eroimilmente NTT2- ul "ort 80807 ulla rete interna ?uan!o gli *engono ri*olte ri#$iete !all0eterno u
un altro in!iri//o 33.21.4.7 e! un altro numero !i "ort.
Le nuo*e o"/ioni uate igni+i#ano(
-d <IP> destinazione: l'indirizzo destinazione ORIGINALE
NA/ "+a8uerading" con ipta3le
Il .ma#$eramento. !i un in!iri//o i utili//a ?uan!o i $a a !i"oi/ione un uni#o in!iri//o I2 "ubbli#o !inami#o e i
*uole "ermettere a "iA ta/ioni !i una rete lo#ale !i #omuni#are #on un0internetwor5 eterna. Gli in!iri//i I2 "ri*ati *en-
gono .na#oti. all0internet eterna e otituiti in ogni !atagramma #on l0uni#o in!iri//o I2 "ubbli#o.
Il .ma#$eramento. a**iene !o"o il routing e! ) a!atto a otituire gli in!iri//i "ri*ati ini/iali #on in!iri//i "ubbli#i !i-
nami#i. In+atti il target MAH@3&RA1& ) !el tutto imile a! un HNAT- #on la ola !i++eren/a #$e ua #ome in!iri//o
eterno non in I2 +io- ma l0I2 #$e ) attualmente aegnato all0inter+a##ia in!i#ata nel #oman!o. <iJ igni+i#a #$e ogni
*olta #$e la regola i a""li#a- il o+tware !e*e an!are a *e!ere ?ual ) l0attuale in!iri//o !ell0inter+a##ia !i u#ita- #oa
#$e #ota un "o0 !i tem"o.
Ee!iamo un eem"io "er #on+igurare il "a#5et +ilter #on i"table in mo!o !a +argli e++ettuare un ma?uera!ing.
Hu""oniamo #$e(
l0in!iri//o "ubbli#o ia ;=.22;.118.111B21 4"re+io #orri"on!ente alla netma5 266.266.2%8.07
e ia raggiungibile tramite l0inter+a##ia et$1 4e*entualmente #ollegata a! un router A1HL7.
L0in!iri//o !i rete #$e #orri"on!e a ?ueto in!iri//o "ubbli#o e netma5 )( ;=.22;.112.0
il !e+ault gatewaC ia ;=.22;.118.1B21
raggiungibile tramite et$1
gli in!iri//i "ri*ati iano ?uelli !ella rete 1=2.188.1;.0B2%
raggiungibili tramite et$0
La tabella !i routing !o*r, eere #on+igurata in mo!o #$e riulti +atta #oO 4uan!o i+#on+ig "er #on+igurare le !ue inter-
+a##e- #on il relati*o "re+io- !o*rebbero eere aggiunte automati#amente le !ue "rime rig$e- mentre i "otrebbe ee-
re #otretti a! aggiungere manualmente la ter/a7(
# route
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.13.0 * 255.255.255.0 U 0 0 0 eth0
39.223.112.0 * 255.255.248.0 U 0 0 0 eth1
default 39.223.116.1 0.0.0.0 UG 0 0 0 eth1
2er aggiungere e*entualmente l0ultima riga(
# route add default gw 39.223.116.1 netmask 0.0.0.0 dev eth1
>a#en!o atten/ione a non #or!ari !i abilitare il routing- #ome *ito in "re#e!en/a- i !e*e ora #on+igurare il "a#5et +il-
ter "er il ma?uera!ingD #iJ *iene +atto #on il eguente #oman!o
1
(
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
1 He in*e#e !i un mo!em #on #ollegamento &t$ernet i a*ee a !i"oi/ione un mo!em 3H9 o eriale- in*e#e !i un0inter+a##ia .et$. i arebbe *e-
roimilmente utili//ata una ."""..
". 12 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
Il #oman!o im"ota la tabella nat 4-t nat NON ) o"/ionaleM7 "er aggiungere una riga nella .#$ain. 2OHTRO3TING 4il
router mo!i+i#a il !atagramma un attimo "rima !i +arlo u#ire7 ull0inter+a##ia !i u#ita 4-o7 et$1 e #on il target MA-
H@3&RA1&- #$e *uol !ire #$e i !e*e utili//are un olo in!iri//o "ubbli#o !i u#ita.
# iptables -t nat -L POSTROUTING
Hi noti #$e a li*ello !i i"table non i "e#i+i#a #on ?ueto #oman!o al#un in!iri//o I2 "er #ui ?ueta #on+igura/ione )
*ali!a an#$e nel #ao in #ui l0in!iri//o I2 "ubbli#o ia !inami#o e #on+igurato tramite 1N<2
1
.
Eiuali//an!o la #on+igura/ione attuale !el NAT !i ?ueto itema- e limitan!o la *iuali//a/ione al olo target 2O-
HTRO3TING(
# iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
1o*e i *e!e la .#atena.
2
#on+igurata ) ?uella !i 2OHTRO3TING e non #i ono limita/ioni nI ai "roto#olli nI agli in!i-
ri//iD !un?ue non #0) !i +atto +iltraggio- ma olo NATB2AT.
Target NETMAP
<on il target N&TMA2 la "arte !i $ot !egli in!iri//i #$e *engono otituiti non *iene #ambiata. <on ?ueto target )
"oibile +are una #orri"on!en/a 1(1 +ra gli in!iri//i interni e! eterni- "ur otituen!o la "arte !i rete !egli in!iri//i. I
bit a uno !ella ma#$era aranno otituiti- i bit a /ero aranno la#iati uguali.
&em"io(
iptables -t nat -A PREROUTING -s !".#$..%/"& -' NET(AP --to )).".&.%/"&
@ueta regola #ambia tutti gli in!iri//i I2 !ella rete interna 1=2.188.1.0B2% nei #orri"on!enti in!iri//i !ella rete
33.21.4.7/24. Se p.es. Avevamo l'indirizzo 192.168.1.7 esso diventa 33.21.4.7.
Le o"/ioni uate igni+i#ano(
-s *IP+ source: l'indirizzo sorgente
-j NETMAP il target DNAT: indica il "destination NAT"
--to <IP> opzione del target DNAT, indica l'indirizzo ed il port FINALE
(dopo la sostituzione)
Target REDRECT
Il target R&1IR&<T #ambia l0in!iri//o !i !etina/ione in mo!o tale !a man!are i "a##$etti alla tea ma##$ina o*e ) il
router 4lo#al$ot7. @ueto "uJ er*ire "er +are un "roxC .tra"arente. o*e tutti il "a##$etti #$e *engono man!ati al "ort
80 !el !e+ault router *engono in realt, "e!iti al "roxC NTT2 #$e riie!e u ?uella tea ma##$ina.
&em"io(
iptables -t nat -A PREROUTING -p tcp --dport $% -' RE,IRE-T --to-ports $%$%
Tutti i "a##$etti #$e "aano !i ?ui e ono !iretti a ?ualiai in!iri//o e! al "ort 80- ono "aati al "ort 8080 !i @3&-
HTA ma##$ina.
1.15.2 Firewal con iptables
Il "a#5et +ilter !i Linux utili//a la tabella .+ilter.- #$e ) ?uella !i !e+ault !el #oman!o i"table. 1un?ue e nel #oman!o
i"table non i "e#i+i#a l0o"/ione .-t.- ) #ome "e#i+i#are .-t +ilter..
Il +irewall baa le ue .!e#iioni !i +iltraggio. u tre .#$ain. u #ia#una !ei ?uali "oono eere "e#i+i#ate !elle rego-
le. Le tre #$ain ono relati*e al .momento !i inter*ento.- #io) alla ."oi/ione. nella ?uale la regola *iene a""li#ata.
I momenti !i inter*ento in #ui i a""li#ano le regole ono(
IN23T( tra++i#o #$e ) !etinato al +irewall
) il tra++i#o !ei !atagrammi #$e ono !etinati al +irewall- "oono "ro*enire ia !all0eterno #$e !all0interno e
!a ?ualiai inter+a##ia. &0 il "unto in #ui ) "iA in!i#ato e++ettuare i +iltraggi
>ORGAR1( tra++i#o #$e ) inoltrato !al +irewall
) il tra++i#o #$e *iene mitato !al +irewall !a una ua inter+a##ia a! un0altra. An#$e ?ui ) o""ortuno +iltrare
1 Hi noti #$e e i ua il 1N<2 la tabella !i routing *iene #on+igurata automati#amente nella riga !ell0inter+a##ia !i a##eo alla internet e nella riga
!el !e+ault gatewaC
2 Ee!i oltre "er !ettagli ulle .#atene.
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 1; !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
O3T23T( tra++i#o #$e "arte !al +irewall
) il tra++i#o #$e e#e !al +irewall- a "artire !alla rete interna
3n "a##$etto ."aa. !a una ola !i ?uete .#$ain.( e "ro*iene !all0eterno "aa !a IN23T- e *iene intra!ato "aa
!a >ORGAR1- e *iene originato all0interno !ella rete "aa !a O3T23T.
Nei momenti !i inter*ento il "a#5et +ilter ua le regole nell0or!ine #on #ui ono memori//ate e ?uan!o tro*a una #orri-
"on!en/a +ra una regola e! il "a##$etto- a""li#a #iJ #$e *iene "e#i+i#ato !all0obietti*o !ella regola 4target7.
Le regole $anno un obietti*o- #$e- ?uan!o la tabella ) !i ti"o .+ilter. "uJ eere( A<<&2T- 1RO2 o R&X&<T. A##e"t
+a "aare il !atagramma- 1ro" lo blo##a e non lo +a "roeguire- ReWe#t blo##a il "a##$etto e ne !, #omuni#a/ione al
mittente.
Il +irewall #ontrolla le regole nell0or!ine #on #ui ono .im"otate.- "er #ui la u##eione !ei #oman!i i"table #$e i ua
"uJ eere im"ortante.
2er ?uetioni !i e++i#ien/a biognerebbe +are in mo!o #$e le regole #$e $anno la maggiore "robabilit, !i eere a""li#a-
te *engano "rima nell0or!ine !i #anione !el +irewall.
&em"i(
# iptables -F
#an#ella tutte le regole !el +irewall- ora il +irewall +a "aare tutto. He i +oe in!i#ato un "unto !i inter*ento- arebbero
tate #an#ellate tutte le regole olo !i ?uel "unto.
1i olito in ingreo ) bene non a##ettare nulla- tranne ?uanto e"li#itamente ri#$ieto !all0interno- "er ?ueto i "oo-
no mettere le eguenti "oli#C !i !e+ault(
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT DROP
?uete "oli#C 4-27 !i !e+ault 4"aranoi#$eM7(
IN23T 1RO2 ri+iuta aolutamente ogni ingreo .autonomo. !alla rete eterna
>ORGAR1 1RO2 non +a il routing
O3T23T 1RO2 ri+iuta l0a##eo all0eterno !a "arte !egli $ot interni
1.15.3 Programma traceroute
1.15.4 Programma inger !port "#$
2ermette !i *e!ere ?uali ono gli utenti #orrentemente #ollegati #ome terminali al #om"uter. 2uJ eere a##eibile an-
#$e !a rete I2- e abilitato 4!i olito non lo )7.
&em"i(
# finger root@BrontoloLinux
Login: root Name:root Directory: /root Shell: /bin/bash
On since Thu Apr 26 22:36 (CEST) on tty1 2 hours 15 minutes
idle
New mail received Thu Apr 26 22:37 2001 (CEST)
Unread since Sat Apr 21 11:30 2001 (CEST)
No Plan.
1.15.5 Ser%er e client telnet !port 23$
Telnet ) un "rogramma !i #ollegamento #on terminale remoto- #$e #omuni#a #on il #om"uter #entrale attra*ero una
?ualiai rete T<2BI2. Hi "uJ lan#iare "e#i+i#an!o l0$ot o! il uo in!iri//i I2- o""ure en/a in!iri//o. In ?uet0ultimo
#ao i "otr, ini/iare un #ollegamento telnet #on un $ot a"ren!o la #omuni#a/ione !al "rom"t telnet(
telnet> open <Nome o IP dell'host cui mi voglio collegare>
2er #$iu!ere un #ollegamento(
telnet> close
1urante la eione !i #ollegamento ) "oibile ri#$ie!ere al er*er telnet l0elen#o !ei #oman!i !i"onibili !igitan!o
$el".
1ato #$e "one "roblemi riguar!o alla i#ure//a- il er*er telnet 4!emone telnet!7 nelle !itribu/ioni o!ierne non *iene
!i olito abilitato "er !e+ault- al#une *olte non *iene nemmeno intallato e biogna "e#i+i#arlo e"li#itamente e i *uo-
le #$e *enga #o"iato !al <1 al #om"uter in +ae !i intalla/ione.
". 1% !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
2er !e+ault telnet non a##etta login !i root !a remoto. In+atti il login !i root ) "oibile olo !a ?uei terminali #$e ono
#om"rei nell0elen#o !el +ile Bet#Be#urettC- #$e "er !e+ault #om"ren!e olo le #onole *irtuali #$e ono +ii#amente ul
#om"uter #entrale u #ui ) intallato il H.O.
2eraltro una *olta #$e #i i ) #onnei al #om"uter uan!o un nome !0utente ?ualun?ue ) "oi "oibile- #ono#en!o la
"awor! !i root- ottenerne ?uai tutti i "ri*ilegi !igitan!o il #oman!o .u. 4u"er uer7 !a telnet.
1.1% Ser!er e client SS4 &port 22'
MMMMM
1.1( iptra#
2rogramma !i monitoraggio !elle "reta/ioni #$e +un/iona #on inter+a##ia a #arattere.
1.1, Ser!er 24CP
Il er*er 1N<2 !e*e uare inter+a##e .reali.( non "uJ eere #on+igurato u un alia I2.
Nelle !itribu/ioni Re!Nat F >e!ora #0) uno #ri"t .r#. #$e lan#ia il er*er 1N<2- ) ./etc/rc.d/init.d/dhcpd. e *iene
lan#iato !ai *ari #ri"t .r#. al boot e! ai #ambi !i runle*el. Lo i "uJ uare an#$e .a mano. o! in #ri"t !ell0amminitra-
tore- nel mo!o .tan!ar!. "er lan#iare i er*i/i(
# /etc/rc.d/init.d/dhcpd start
o""ure
# /etc/rc.d/init.d/dhcpd stop
1.1- )/P
Her*er >T2 "iA utili//ati
+t"! @uello tan!ar!. H#onigliato "er#$) non i#uro.
"ro+t"! Hi#ure//a !ella "awor!. Na un "rogramma !i #on+igura/ione in gnome.
*+t"! EerC He#ure +t"!. Tutto #rittato.
E+t"! ) #onigliato e u""ortato !a 3buntu. @uan!o lo i intalla *iene aggiunto all0elen#o !ei er*i/i getibili !a inter-
+a##ia gra+i#a. 2er a##en!erlo-"egnerlo i "uJ abilitare-!iabilitare !alla +inetra .itema Z amminitra/ione Z er*i/i..
2er #on+igurarlo biogna #ambiare il teto !el +ile Bet#B*+t"!.#on+ 4*e!i il +ile !i teto- #$e #om"ren!e buoni #ommenti-
o la >A@ !i *+t"7. La !o#umenta/ione *iene intallata otto BurB$are!B!o#.
La #artella ini/iale !ei +ile *iti !all0utente anonimo )(
B$omeB+t" 4#io) la #artella $ome !ell0utente .!i #omo!o. +t"7
3n #lient i#uro "uJ eere "+t" 4a linea !i #oman!o7 o""ure #lient gra+i#i #ome g+t" 4in ?ueto #ao #egliere il #olle-
gamento .HHN2.7.
1.2. N)S &port 2."-9 12P'
Networ5 File SCtem ) un "roto#ollo !e+inito !alla Hun "er le ue ta/ioni !i5le e! ora a!ottato in tutto il mon!o
3nix.
>a uo- "er i uoi er*i/i !i rete !i "iA bao li*ello- !el "roto#ollo R2< 4Remote Pro#e!ure all7- an#$0eo *ilu""ato
!a Hun.
Con#igurazione del client N)S
He i !emoni #$e er*ono "er il +un/ionamento !i N>H ono a##eibili !al 5ernel e ono lan#iati al boot !i itema "er
a##e!ere a! un !ire#torC #on!i*io N>H bata montare un +ileCtem !i ti"o N>H(
.o/nt <NFSserver>0</directory/esportata/da/NFSserver/> </directory/ove/si/monta>
QN>Her*erR ) un nome !i !ominio 1NH- un nome "reente nella tabella Bet#B$ot o""ure un in!iri//o I2.
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 16 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
He non #0) un 1NH atti*o- o""ure una tabella Bet#B$ot ul #om"uter #lient- i "oono uare olo in!iri//i I2 4non #0)
.browing. automati#o !ei nomi #ome in Net9IOH7.
Il mount ) !el tutto .normale.- i!enti#o a ?uello #$e i +arebbe #on un +ileCtem lo#ale e i "uJ an#$e mettere in +tab
"er la #onneione !iretta in +ae !i boottra". Naturalmente il +ileCtem n+ i "uJ .montare. #on umount.
Con#igurazione del er!er N)S
) ne#eario #$e il ."ortma""er. ia in +un/ione. @ueto "rogramma *iene uato !a ogni "rogramma R2< "er mantene-
re l0ao#ia/ione !inami#a +ra il "rogramma e! il numero "ort #$e utili//a. Tra+orma le ri#$iete ai numeri !i "rogram-
ma R2< in numeri !i "ort T<2 o 312. Il !emone ."ortma""er. i "uJ #$iamare "ortma" o r"#."ortma". 2er *eri+i#are
#$e tia giran!o i "uJ uare "- "er eem"io #oO(
root$ ps aux | grep portmap
Altri !ue !emoni ne#eari "er N>H ono mount! e n+!.
Le !itribu/ioni #ri*ono automati#amente nei *ari +ile r# !i boot- in mo!o #$e- e i *uole intallare il er*er N>H- i tre
!emoni iano lan#iati automati#amente al boot.
2er +ar #on!i*i!ere #on N>H una !ire#torC biogna .e"ortarla.- #ri*en!ola nel +ile Bet#Bex"ort. In ?ueto +ile i !e+ini-
#ono le !ire#torC #$e "oono eere uate !agli utenti !i rete 4gli .$are. in gergo Gin!ow7.
Ogni riga !i ex"ort !e+ini#e un !ire#torC !a e"ortare e! ) #om"ota !alla "at$ !i ?uel !ire#torC e !a una lita !i $ot
I2 #$e "oono a##e!er*i. Inoltre "oono eere "reenti al#une o"/ioni #$e "e#i+i#ano #ome !e*e eere +atto il
mount.
Il +ormato !i una riga ) il eguente(
Q2at$Ini/ioR [Q$otname o in!iri//oI2Bnetma5R\ [!o"/ioni"\ ..
Q2at$Ini/ioR ) il !ire#torC !i .ex"ort.- #$e i !e*e #on!i*i!ere
Q$otnameR ) il numero I2 o! il nome I2 !ell0$ot. 2uJ eere abbre*iato #on ] e ^- i "uJ uare _ "er i gru""i- Q$ot-
nameR ) un nome !i $ot in rete- non !i utenteM
Il +ormato !el +ile ex"ort ) "iegato in !ettaglio nella ua "agina man.
<on il #oman!o $owmount 4o"/ione -e 4.ex"ort.77 !a lato #lient i "oono #$ie!ere i +ileCtem e"ortati !al er*er-
in!i#an!o il nome o l0in!iri//o !el er*er remoto(
$ showmount -e <hostname o indirizzoIP>
He in*e#e i lan#ia $owmount en/a o"/ioni- +a *e!ere gli utenti #$e nel #oro !el tem"o 4an#$e nel "aato7 $anno
montato il !ire#torC #on!i*io.
$ showmount
Ee!iamo ora un eem"io !i Bet#Bex"ort (
/ boss (rw) vice (ro) # tutto il filesystem dato solo ai computer piu importanti
# vice ha solo diritto di lettura
/usr/monti *.monti (rw) # directory condiviso fra tutti gli utenti del dominio DNS monti
/usr/UffTecNFS @UfficioTecnico (rw) # tutti gli utenti che appartengono al gruppo NIS
"UfficioTecnico"
/home/gamon gamon*.* (rw) # tutti i computer il cui nome contiene gamon come dominio
"primario"
# es. gamon386.monti, gamonPent.monti
/mnt/cdrom 192.168.0.255/255.255.255.0 (ro,insecure) # tutti gli utenti della rete loca-
le, insecure significa che non c' # limitazione sul numero di port TCP su cui provengono
le richieste (2049), che normalmente quello # riservato dagli standard
/mnt/floppy 192.168.0.255/255.255.255.128 (ro,insecure) # una sottorete della rete locale
/mnt/master 192.168.0.4 (ro,insecure) # la macchina vicina (fisicamente)
La tabella Bet#Bex"ort ) molto enibile a "i##oli .errori. !i intai. 9iogna "ro*are #on "a/ien/a- #er#an!o !i in!i*i-
!uare in mo!o .eatto. ?uali ono i #om"uter #$e "oono a*ere a##eo. <iJ o"rattutto "er ?uetioni !i i#ure//a.
1o"o a*er mo!i+i#ato Bet#Bex"ort ) ne#eario +ermare e +ar ri"artire i !emoni r"#.n+! e r"#.mount!- "er eem"io in
?ueto mo!o(
root$ killall -HUP /usr/sbin/rpc.nfsd
root$ killall -HUP /usr/sbin/rpc.mountd
o""ure ri+are il boot !el itema.
1.2&.1 SMB (port 137, 138 e 139)
HM9 4Her*i#e Meage 9lo#57 Z <I>H 4<ommon Internet >ile HCtem 7 ) il "roto#ollo !i #on!i*iione !i riore utili/-
/ato nelle reti Mi#roo+t. &o ) un0etenione !ei er*i/i !i Net9IOH- "roto#ollo utili//ato nella "rima rete lo#ale I9M-
". 18 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
Mi#roo+t 4LanManager7 - e- !o"o la .e"ara/ione. +ra I9M e Mi#roo+t- "ortato a*anti nelle reti lo#ali Mi#roo+t #on il
nome !i Net9&3I 4Net9IOH extention7- e !i*enne il "roto#ollo Mi#roo+t "rin#i"ale !i bao li*ello +ino a Gin!ow
2000 er*er. Nelle reti Mi#roo+t attuali il "roto#ollo !i bao li*ello utili//ato ) em"re I2- "er #ui i er*i/i !i rete
Mi#roo+t 4HM9- <I>H7- #$e "ure eitono an#ora e! an/i ono e"ani e mo!i+i#ati .?uoti!ianamente.- +un/ionano *e-
nen!o in#a"ulati in !atagrammi I2 4.Net9IOH o*er I2.7 e i "uJ +are a meno !i Net9&3I.
Oltre #$e I2 e Net9&3I- HM9 "uJ uare i er*i/i !i bao li*ello an#$e !i I2KBH2K 4No*ell Netware7 . <on HM9 4il
#ui nome oggi *iene +atto #oin#i!ere #on Net9IOH7- ) "oibile #on!i*i!ere !ire#torC e tam"anti. &o *iene utili//ato
nei itemi Gin!ow- ia Gin=K #$e Gin NT-K2.
Linux ) in gra!o !i utili//are il "roto#ollo HM9- emulan!o "er#iJ un #lient o! un er*er Gin!ow. 2er utili//are HM9
in Linux i !e*e uare la uite !i "rogrammi #$iamata .Hamba. 4"rogetto ini/iato !a An!rew Tri!gell- <amberra- Au-
tralia7.
Hamba +un/iona solo #on il T<2BI2 4N&T9IOH o*er I27 non u Net9&3I o I2K.
Con#igurazione del client Sa+3a
Hamba mount "ermette il mount !i $are !i rete Gin!ow in un +ileCtem Linux.
Hintai(
mount -t smbfs Qnome !ella riora #on!i*ia Net9IOHR Qmount"ointR
Qnome !ella riora #on!i*ia Net9IOHR a""are #ome una "at$ #$e ini/ia #on !ue la$ in*e#e !i uno. ) un nome .!i
$are. Gin!ow- #$e i #om"one !i(
//QNome Net9IOH !el er*erR/Q"at$ e Nome !ello .$are.R
Il nome !el er*er lo i e"rime +a#en!olo "re#e!ere !a !ue la$- #$e "oono eere .!ritti.- alla mo!a 3nix- o retro-
*eri 4ba#5 la$7- alla Gin!ow. L0in!iri//o !el #om"uter #$e #orri"on!e al nome Net9IOH "uJ eere tro*ato !al
#om"uter Linux in *ari mo!i- #er#an!o in lm$ot- $ot- 1NH- win- o #on una ri#$ieta in broa!#at a tutti i #om"uter
a##ei attualmente ulla rete lo#ale. L0or!ine in!i#ato #orri"on!e a ?uello uato "er !e+ault !a HambaD e ) ne#eario
eo i "uJ an#$e mo!i+i#are.
Inoltre biogna rimar#are #$e i nomi !i !ominio T<2BI2 e! i nomi Net9IOH non ono ne#eariamente ugualiD #on
Hamba i "uJ uare un nome "er +ari *e!ere !a Gin!ow e! un altro nome "er il 1NH T<2BI2.
L0utente "uJ montare il !ire#torC olo e gli *iene aegnato il !iritto- "er #ui al tentati*o !i mount *iene ri#$ieta una
"awor!. He lo $are #$e i *uole montare non $a "awor!- bata "remere &nter alla ri#$ieta !i "awor!.
In alternati*a a mount #on o"/ione -t mb+ i "uJ uare il #oman!o mbmount(
smbmount Qnome !ella riora #on!i*ia Net9IOHR Qmount"ointR -o Qo"/ioniR
La "iA im"ortante !elle Qo"/ioniR ) uernameUQnome utente HM9 nel #om"uter #ui #i i #ollegaR
@ueta o"/ione ) utile e i ) +atto il login #on un nome !i utente !i*ero !a ?uello #$e er*e "er #ollegari alla riora
HM9 !ei!erata.
&em"io(
# smbmount //goku/gokuC /rete -o username=gamon
&ite an#$e un .Hamba #lient.- #$e "ermette un #ollegamento a! un er*er Gin- #on un #lient imile a ?uello !i >T2-
#on il ?uale i "uJ +are il browing !i +ile e la tam"a.
# smbclient '\\ServerNetBIOS\NomeShare'
#ollega allo $are Net9IOH NomeH$are- ul #om"uter !i nome Her*erNet9IOH. Il #ollegamento a**iene !o"o #$e mb-
#lient $a #$ieto una "awor!.
# smbclient '\\ServerNetBIOS\NomeStampante -P
#ollega alla tam"ante #on!i*ia NomeHtam"ante- #ollegata al #om"uter !i nome Her*erNet9IOH.
Il #ollegamento a**iene !o"o #$e mb#lient $a #$ieto la "awor! "er la riora ri#er#ata.
# smbclient -L <nomeNetBIOS>
*iuali//a l0elen#o !ei er*i/i HM9 #$e QnomeNet9IOHR mette a !i"oi/ione- !o"o a*erne #$ieto la "awor!.
Il +ile !i #on+igura/ione !i amba ) Bet#BambaBmb.#on+
I !aemon !i Hamba ono mb! e nmb!- la "rima #oa !a #ontrollare e Hamba non +un/iona ) e ?ueti !emoni ono
lan#iati 4e. `" aux Z gre" mb!7.
Bet#BambaBlm$ot
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 1: !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
@ueto +ile ) analogo al +ile Bet#B $ot- olo #$e +un/iona "er i er*i/i Net9IOH- non a #ao ta nel otto!ire#torC am-
ba. Il +ile Bet#BambaBlm$ot "otrebbe non eere "reente nella !itribu/ione Linux. Hi "uJ aggiungere.
@ueto +ile ) #om"oto !i linee !i teto- #ia#una !elle ?uali !e+ini#e un in!iri//o. Il +ormato !elle linee )(
QIn!iri//o I2R QNome Net9IOHR
Analogo a lm$ot- in Gin!ow =K #0) <(Swin!owSlm$ot.am- in Gin!ow NT-K2
<(SGINNTSCtem;2S!ri*erSet#Slm$ot.am.
He non i rie#e a +ar montare la #on!i*iione !i rete #on il nome Net9IOH !el #om"uter- i "uJ em"re "ro*are !iretta-
mente #on il uo in!iri//o- #ome nell0eem"io eguente.
&em"io(
# mount -t smbfs //172.16.77.4/Scambio /media/rete -o username=iti
1.21 )ile di con#igurazione di Sa+3a9 per client e er!er
I +ile !i #on+igura/ione !i amba ono in Bet#Bamba 4!itr. >e!ora7. Il ."rimo. +ile !i #on+igura/ione ) mb.#on+.
3n eem"io #ommentato !i mb.#on+
[global]
workgroup = MONTI
server string = Samba Server (Pentium 100 32M)
guest account = nobody
keep alive = 30
os level = 2
security = share
; share = protezione con password della singola risorsa (tipo Win 98)
; user = protezione con autenticazione dell'utente su QUESTO computer
; usa un insieme di utenti specifico di samba, non gli utenti Unix
; ogni utente samba per i suoi diritti Unix deve avere una corrispondenza
; con un utente Unix
; server = protezione con autenticazione dell'utente presso un "password server" esterno
; naturalmente gli utenti da autenticare vanno creati su questo computer!
; domain = protezione con autenticazione dell'utente presso un "controllore di dominio"
; di sicurezza Win NT (pu anche essere un computer Samba)
; Se si vuole autenticare gli utenti presso un sistema Windows NT si deve fare cos:
; Esempio per accesso tramite password server:
; security = server
; password server = 192.168.1.10
; encrypt passwords = yes
; modalita' di utilizzazione delle stampanti "lato Unix":
printing = bsd
printcap name = /etc/printcap
load printers = yes
wins support = no
; definizione dell'accesso da parte degli host (indirizzi IP)
hosts deny = * ; per default nessun computer puo' accedere
; permetto l'accesso ai computer della rete "1" tranne una sua sottorete da 64 stazioni
; (6 bit di indirizzo host) che ha 01XXXXXX nell'ultimo byte di indirizzo.
; inoltre permetto l'accesso all'host di nome Paperino ed a tutti gli utenti del gruppo
; Linux GruppoSicuro, tranne (deny) l'utente NonMiFido:
hosts allow = 192.168.1. except 192.168.1.64/255.255.255.192,Paperino,@GruppoSicuro deny
= NonMiFido@GruppoSicuro
; I seguenti comandi permettono di far agire il nostro computer come
; login server per il client Windows 95/98 clients
; logon script =login%U.bat ; lo script che viene lanciato
; login"nome dell'utente".bat
; logon script =login%m.bat ; cosi' invece login"nome della macchina".bat
; domain logons = yes
; domain master = yes
; QUI SEGUONO LE DEFINIZIONI DEGLI "SHARES"
; [netlogon]
; path = /netlogon
". 18 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
;[homes]
; comment = Home Directories
; browseable = no
; writable = yes
; create mode = 0750 ; maschera ottale "owner group other"
; da assegnare ai file creati "da rete"
# script Unix che viene lanciato quando si accede a questo share
SetupCommand = ScriptPartenza
; Accesso al CD per tutti gli utenti:
[cdrom]
path = /mnt/cdrom
comment = CD-ROM
volume = "Etichetta CD-ROM"
read only = yes
; locking = no
available = yes
share modes = no
browseable = yes
public = yes
; le seguenti per condividere le stampanti:
[printers]
comment = Le stampanti de computer Linux
browseable = no
printable = yes
public = no
read only = yes
create mode = 0700
directory = /tmp
; una "ardita" condivisione di tutto il filesystem
; !! NON FATELA !!
[root]
path = /
comment = Tutti i dischi di BrontoloLinux
read only = no
browseable = yes
public = yes
create mode = 0750
; read only = no
; guest only = no
; writable = yes
; only users = no
; admin users = gamon, root
; dont descend = /proc, /dev
He il er*er Hamba $a "iA !i una inter+a##ia et$ernet- ) meglio "e#i+i#are a ?uale inter+a##ia Hamba i !e*e .atta##are..
Il mo!o "er +arlo ) #ri*ere- nella e/ione global !i mb.ini( [global\ inter+a#e U B &em"io( interfaces =
192.168.1.1/24 Il "re+io 2% ) ?uello giuto "er una normale rete !i #lae <- i !o*r, #ambiare e i +a un ub-
netting ulla rete. 2er *eri+i#are il +un/ionamento !ei +ile !i #on+igura/ione !i amba uare(
$ testparm
e amba inter"reta bene il +ile !i #on+igura/ione- il "rogramma tet"arm ri"on!e #on .Oa..
)ile 0etc0a+3a0+3uer
3n eem"io !i +ile mbuer(
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
2er getire gli utenti e le "awor! #0) an#$e il #oman!o !i #onole mb"aw!.
He uato !a un utente normale mb"aw! er*e olo "er #ambiare la "awor! !i ?uell0utente. He uato !a root "ermette
!i #ambiare le "awor! !i tutti gli utenti e! an#$e !i aggiungere nuo*i utenti.
O"/ioni "iA intereanti !i mb"aw!(
-# QuernameR "ermette !i #ambiare la "awor! !ell0utente "e#i+i#ato.
-r QNome !ella ma##$ina remotaR "ermette !i #ambiare la "awor! ulla ma##$ina remota "e#i+i#ata 4la ma##$ina
NON "uJ eere Gin =K7
-a QuernameR or!ina !i intro!urre un nuo*o utente #on lo uername in!i#ato- ulla ma##$ina lo#ale.
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 1= !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
He non eite un utente 3nix #on lo teo nome !ell0utente Hamba #$e i *uole #reare- biogna "rima #reare l0utente
3nix- ".e. #on a!!uer.
&em"io(
# adduser nuovo
# smbpasswd -a nuovo
-n 4en/a "arametri7 memori//a una "awor! *uota "er l0utente "e#i+i#ato #on altre o"/ioni
2er !e+ault Hamba NON a##etta "awor! *uoteD e i *uole #$e *engano a##ettate- i "uJ mettere la riga
null passwords = yes
nella e/ione [global\ !i mb.#on+
Il #oman!o !i $ell mbtatu motra tutte le #onneioni HM9 #orrenti.
S:A/
amba "uJ an#$e eere getito in remoto *ia $tt". Il er*i/io #$e i !e*e uare ) HGAT. le !itribu/ioni "iA re#enti ne
"oono +are l0intalla/ione. 1e*e eere "reente la linea(
swat 901/tcp
nel +ile Bet#Ber*i#e 4=01 ) il numero !el "ort T<2 #ui #i i #ollega7 e! an#$e
swat stream tcp nowait.400 root /<path di swat> swat
nel +ile Bet#Binet!.#on+- o""ure una #on+igura/ione e?ui*alente nei +ile !i #on+igua/ione !i xinet!.
He "er #ao i !e*ono aggiungere ?uete linee- "oi ) ne#eario +ar interrom"ere e ri"ren!ere il !emone internet 4inet!7
in ?ueto mo!o(
killall -HUP inetd
2er uarlo a"rire un brower ul #om"uter uato- al "ort =01 4e l0intalla/ione l0$a intallato lOM7( 3RI 4o- #on nome .!e-
"re#ato.( 3RL7 !a intro!urre nel brower(
http://<Indirizzo o nome del computer>:901/
1.21.1 'ato client (in)ows
Il #oman!o nbttat 4Net9IOH o*er T<2BI2 tatiti#7 !, tatiti#$e ulle #onneioni #orrenti #$e uano il "roto#ollo
N9T.
". 20 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
1.22 4//P6 Apac*e &port ,.'
A"a#$e ) il Geb er*er !i gran lunga "iA uato nel H.O. Linux- e! an#$e ?uello "iA uato nel mon!o 4"uJ girare an#$e
ugli altri 3nix e u Gin!ow7. &0 un er*er "er il "roto#ollo NTT2- "er #ui il nome !el uo !emone ) $tt"!.
A"a#$e ) un "rogramma mo!ulare- #$e $a una "arte .#entrale. relati*amente "i##ola e "uJ #ari#are a tem"o !0ee#u/io-
ne un gran numero !i mo!uli aggiunti*i- #$e ne "oono e"an!ere gran!emente le +un/ionalit,. 2er tabilire ?uali mo-
!uli !e*ono eere #ari#ati alla "arten/a !el er*er e #on+igurare i mo!uli tei i "oono uare le eguenti !iretti*e-
#ontenute nel +ile !i #on+igura/ione !el er*er 4$tt"!.#on+7(
$oad%odule- &dd%odule !iretti*e "er in!i#are ?uali mo!uli !i etenione #om"ilati e"aratamente !al er*er i !eb-
bano #ari#are. L0or!ine #on #ui ono #ritti nel +ile ) l0or!ine !i #ari#amento e! ) im"ortanteM Agire #on "ru!en/a nel
mo!i+i#are ?ueta "arte !el +ile $tt"!.#on+.
3ltimamente A"a#$e ) tato .!i*io in !ue.D eitono !ue eeguibili uno ) il er*er .normale. 4$tt"!7 e l0altro ) un er-
*er "e#iali//ato "er l0ee#u/ione !egli #ri"t "erl 4$tt"!-"erl7. 1ato #$e a! ogni ri#$ieta !a "arte !i un #lient *iene
#reato un nuo*o "ro#eo- normalmente *iene lan#iato $tt"!- #$e ) "iA .leggero. mentre *iene lan#iato $tt"!-"erl olo
?uan!o ) ri#$ieto l0inter"rete "erl.
'irector( principale
Il !ire#torC "rin#i"ale !i A"a#$e- #onigliato !al team A"a#$e ) BurBlo#alBa"a#$e. ) "eraltro "oibile #$e le !itribu-
/ioni lo intallino in !ire#torC !i*ere 4"er a"ere !o*0) e++etti*amente "ro*are il eguente #oman!o(
# whereis httpd
$tt"!( BurBbinB$tt"!.wor5er BurBbinB$tt"! Bet#B$tt"! BurBlibB$tt"! BurB$areBmanBman8B$tt"!.8.g/
Il riultato *iuali//ato ) ?uello !elle !itribu/ioni .ti"o Re! Nat. 4>e!ora7.
httpd.conf
Il +ile !i #on+igura/ione !i A"a#$e ) $tt"!.#on+- #$e ta in una !ire#torC .B$tt"!B#on+ !el !ire#torC "rin#i"ale A"a#$e
4*e!i Her*erRoot7. Oltre a ?ueto +ile "otrebbero eer#i altri !ue +ile !i #on+igura/ione( a##e.#on+ e! rm.#on+. L0uo
!i ?ueti +ile ) "erJ #onigliato nelle ultime *erioni !i A"a#$e.
3n altro +ile !i #on+igura/ione #$e ) !i interee "er A"a#$e ) /etc/mime.t(pes- #$e !e+ini#e i ti"i e ottoti"i MIM&.
2iretti!e di *ttpd.con#
H#ri*en!o in $tt"!.#on+ i nomi !i ?uete !iretti*e- eguiti !ai relati*i "arametri- i #on+igurano tutte le #aratteriti#$e !i
A"a#$e a tem"o !i ee#u/ione. Hegue la tratta/ione !elle "rin#i"ali !iretti*e !i #on+igura/ione !i A"a#$e.
Server)(pe $a "arametri( tan!alone o inet! 4xinet!7 e i #on+igura #on inet! il !emone $tt" *iene lan#iato !a inet! 4o
!a xinet!7 Altrimenti ) un !emone .tan!alone.- #$e !e*e eere lan#iato in mo!o autonomo e non go!e !ei er*i/i !i
inet!.
&em"io(
ServerType standalone
He il er*er "arte #on inet! ) inet! teo #$e !e*e a#oltare ul "ort 80 4#on+igura/ione in Bet#Ber*i#e7- e ) tan!alone
#i !e*e "enare $tt"!- #$e a#olta ul "ort in!i#ato !alla !iretti*a 2ort 4*e!i oltre7.
He i ua inet! "er lan#iare $tt"! i "uJ uare il +iltro +ornito !al T<2 wra""er 4t#"!7. 2er #on+igurarlo biogner, #ri*e-
re ?ual#oa !el genere in inet!.#on+ ( http stream tcp nowait.400 root /usr/sbin/tcpd httpd
In ?ueto #ao "erJ t#"! a**ierebbe il !emone $tt"! a! ogni ri#$ieta #$e giunge !all0eterno- !al lato #lient- e! il ite-
ma !i*errebbe molto "iA lento. 2er ?ueto ogni er*er #$e !ebba +un/ionare .in "ro!u/ione. i #on+igura in mo!o .tan-
!alone..
ServerRoot Q"at$ !i una !ire#torCR
) la !ire#torC .$ome !i #on+igura/ione.- !alla ?uale "artono tutte le !ire#torC #$e #ontengono i +ile !i #on+igura/ione-
log e! errore !i A"a#$e.
He nel +ile $tt"!.#on+ la "at$ !i una !i ?uete !ire#torC ini/ia #on un #arattere !i*ero !a .B. la !ire#torC ) relati*a a Her-
*erRootD al nome !el +ile *err, em"re aggiunto .a initra. il *alore !i Her*erRoot. He in*e#e il nome !el +ile ini/ia #on
.B. la !ire#torC ) .aoluta. e *err, uata #oO #ome #ritta nel +ile- en/a uare Her*erRoot.
&em"io(
ServerRoot /etc/apache
# SEMPRE SENZA slash alla fine!
1a ?ui in "oi le altre !iretti*e +anno ri+erimento alla "at$ Bet#Ba"a#$e- "er eem"io #ri*ere- nel +ile(
ResourceConfig conf/srm.conf
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 21 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
e?ui*ale a #ri*ere(
ResourceConfig /etc/apache/conf/srm.conf
mentre(
ResourceConfig /etc/srm.conf
in!i#a "ro"rio il +ile Bet#Brm.#on+.
Resourceonfig e &ccessonfig
2er #on+igurare i mo!uli a!!i/ionali #ari#ati #on A"a#$e 4reour#e7 o "er tabilire gli $ot I2 !ai ?uali i a##etteranno
#ollegamenti 4a##e7 i "oono uare !ue +ile e"arati. He i *uole +ar #oO- an#$e e l0uo ) #onigliato- ?uete !iretti-
*e "ermettono !i "e#i+i#are i +ile !a uareD in ?ueto #ao la #onuetu!ine *uole #$e i uino i +ile rm.#on+ e a##e.-
#on+.
Nelle nuo*e !itribu/ioni il +ile $tt"!.#on+ ) im"otato #ome e +oe un uni#o +ile- ma in realt, $a al#uni .in#lu!e +ile.
4".e. in Man!ri*a #0) l0im"ortante .#ommon$tt"!.#on+.7.
2er in!i#are #$e i +ile a##e.#on+ e! rm.#on+ non ono uati- in $tt"!.#on+ "oono #om"arire le rig$e(
ResourceConfig /dev/null
AccessConfig /dev/null
L0im"ota/ione Man!ri*a "re*e!e l0in#luione in $tt"!.#on+ !el +ile #ommon$tt"!.#on+- !o*e #i ono tutte le !e+ini/ioni
#omuni a tutti i *irtual $ot 4#io) a tutti i .iti. in!i"en!enti getiti !al er*er7. 1O2O l0in#luione !i #ommon$tt"!.#on+
in $tt"!.#on+ eguono le !e+ini/ioni !ei *irtual $ot- #$e "oono an#$e .#a*al#are. ?uelle generali- otituen!ole o*e
ne#eario.
L0im"ota/ione Re! Nat- >e!ora non in#lu!e un +ile "er le !e+ini/ioni #omuni- ma le mette in $tt"!.#on+- *ero l0ini/io
in una "arte !etta .Main..

Include Q"at$ e nome !el +ileR
.Aggiunge. un altro +ile !i #on+igura/ione- #$e ) #ome e +oe #ritto "ro"rio nel "unto o*e a""are ?ueta .In#lu!e..
Naturalmente e Q"at$ e nome !el +ileR #om"ren!e uno la$ a initra eo ) .aoluto.- altrimenti ) relati*o a Her*er-
Root.
1.22.1 *tente c+e esegue Apac+e
L0a##eo ti"i#o al er*er Geb ) .anonimo.( ogni a##eo !i ogni #lient eterno *iene regitrato #ome +atto !all0utente
!e+inito !alla !iretti*a .uer. e !al gru""o !e+inito !alla !iretti*a .grou".. 2er !e+ault A"a#$e ua l0utente .nobobC.- ma
"eo le !itribu/ioni mo!i+i#ano la #on+igura/ione .u++i#iale. e! uano un utente e! un gru""o .a"a#$e.. L0utente o il
gru""o i "oono an#$e "e#i+i#are #on l03I1 4#erIdenti+i#ator7 o! il GI1 4*rou" Identi+i#ator7
&em"i(
User apache
Group apache
l0utente "otrebbe an#$e eere "e#i+i#ato #oO(
User #100 # l'utente che ha User Id 100
1.22.2 Start e Stop )i Apac+e a ,basso li%ello,
Le !itribu/ioni mettono a !i"oi/ione trumenti *iuali "er la #on+igura/ione !i A"a#$e @uan!o A"a#$e *iene lan#ia-
to- "arte un "ro#eo #on i !iritti !i root- il ?uale- "er ragioni !i i#ure//a e! e++i#ien/a- +a "artire !i*eri "ro#ei- #$e
girano #on i "ri*ilegi !ell0utente !i A"a#$e 4utente .a"a#$e. nelle !itribu/ioni Re!Nat e Man!ra5e7.
2er +ermare A"a#$e biogna +ermare il "rimo "ro#eo #$e ) tato lan#iato- #$e +ermer, an#$e tutti i uoi .+igli.. @ueto
teo "ro#eo memori//a entro un +ile il uo 2ro#e I1 42I17- "er #ui ) +a#ile a"ere ?uale !e*0eere il "ro#eo !a
+ermare. 2er +ermare il "ro#eo biogna lan#iargli il egnale .T&RM. #on il #oman!o .5ill.- "er +ermarlo e +arlo ubito
ri"artire #i *uole il egnale N32.
Il +ile nel ?uale *iene memori//ato il 2I1 !el "ro#eo !a .u##i!ere. ) ?uello "e#i+i#ato nella !iretti*a 2i!>ile !i
$tt"!.#on+.
Ee!iamo !un?ue un eem"io !i #ome i +a(
Riga di !tt"d#conf (Mandra$e %#&)
PidFile /var/run/httpd.pid
". 22 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
Per sa"ere il PD'
[root#] cat /var/run/httpd.pid
3476
Per fer(are A"ac!e'
kill -TERM 3476
Per fer(are A"ac!e e farlo ri"artire'
kill -HUP 3476
A"a#$e #rea un "ro#eo "er #ia#una ri#$ieta !i #onneione !a "arte !ei #lient. Inoltre tiene a"erti un #erto numero !i
"ro#ei .!i rier*a. #ui aegnare ra"i!amente le nuo*e #onneioni #$e arri*eranno. 2er ottimi//are le "reta/ioni !el
er*er ) "oibile tabilire il numero minimo e maimo !i ?ueti "ro#ei.
%inSpareServers e %a+SpareServers 4"are U .!i rier*a.7 ono il numero minimo e maimo !i "ro#ei #$e riman-
gono a"erti in memoria in attea !i eere uati #ome er*er. StartServers ) il numero ini/iale !i ?ueti "ro#ei.
%a+lients ) il numero maimo !i er*er #$e "oono girare #ontem"oraneamente.
,eep-&liveD aee"VAli*e ) un0etenione al "roto#ollo NTT2- "reente a "artire !a NTT2 1.1- #$e "ermette #onneio-
ni ."eritenti.. He aee"VAli*e ) abilitato il er*er non #$iu!e i #ollegamenti T<2 alla +ine !ella tramiione !egli og-
getti i"ertetuali 4+ile $tml- immagini7- ma li mantiene a"erti e ?ueto "uJ im"li#are- e le "agine $anno molte "i##ole
immagini- un note*ole in#remento !elle "reta/ioni !el er*er. I "arametri !i aee"VAli*e- #$e i "oono #on+igurare
ono( aee"Ali*e- aee"Ali*eTimeout- Maxaee"Ali*eRe?uet
$isten [Qin!iri//o I2R(\Qnumero !i "ortR "ermette !i "e#i+i#are un numero !i "ort o! an#$e una #o""ia in!iri//o("ort
ul ?uale il !emone rimane in attea !i ri#$iete !i #ollegamento T<2. In $tt"!.#on+ i "oono "e#i+i#are "iA !i una
riga .Liten.. Naturalmente ) logi#o "e#i+i#are 80- il "ort !i !e+ault "er $tt" !e+inito !agli tan!ar! Internet. He non )
"reente una !iretti*a Liten il er*er "arte- ma non ri"on!e mai a neuna ri#$ieta !i #ollegamento.
&em"io(
Listen 80 # port standard HTTP (well known port number)
Listen 8080 # port tipico del proxy http
Le due direttive precedenti fanno ascoltare il server su tutte le sue schede di
rete ed indifferentemente sui port 80 ed 8080.
Con Listen si pu fare in modo che lo stesso server Apache ascolti su piu di un
port TCP, "personalizzando" il port in base all'indirizzo IP della scheda di
rete da cui ha raccolto la richiesta.
Esempio:
# per l'indirizzo del server sulla rete 192.168.13.0 uso il port standard
Listen 192.168.13.25:80
# per l'indirizzo del server sulla rete 172.16.0.0 uso il port "da proxy"
Listen 172.16.13.8:8080
Si noti che gli indirizzi di Listen devono essere indirizzi IP validi di una
delle schede di rete presenti nel computer che ospita Apache.
1.22.3 -isorse
3n tem"o la !e+ini/ione !elle riore era +atta all0interno !el +ile rm.#on+- oggi i #oniglia !i metterla in $tt"!.#on+ o!
in un +ile in#lu!e.
<oman!i #$e #on+igurano le riore( 1o#umentRoot- 1ire#torCIn!ex- 1o#ument1ir- 3er1ir- In!exIgnore- Alia-
H#ri"tAlia- A##e Q+ilenameR
'ocumentRoot Q!ire#torCR [Qnome!i +ileR\ ) la !ire#torC !alla ?uale "arte il #ontenuto !el ito 4e. le "agine
NTML7. Ogni *olta #$e A"a#$e i "ro#ura la "at$ !i un !o#umento #$e +a "arte !el ito Geb aggiunge 1o#umentRoot a
initra !ella "at$ !ata nell03RI 43RL7.
2er eem"io e l03RI )(
http://ingmonti.it/libri/indice.html
nel +ile !i #on+igura/ione #om"are una linea #ome ?ueta(
DocumentRoot "/var/www/html"
il er*er +ornir, al brower il +ile B*arBwwwB$tmlBlibriBin!i#e.$tml
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 2; !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
La #artella 1o#umentRoot !i !e+ault ) B*arBwwwB- o""ure B*arBwwwB$tmlB. <iJ "uJ !i"en!ere !alla !itribu/ione o !al-
la *erione !el er*er.
.ind&ddress Qin!iri//o I2 o nome $otR Z ] e il er*er $a "iA !i un in!iri//o I2 4"er eem"io e $a "iA !i una #$e!a
!i rete o! $a !egli alia u una #$e!a7 limita il uo +un/ionamento olo ull0in!iri//o I2 in!i#ato. <on ?ueta !iretti*a i
"uJ +are in mo!o !i a*ere "iA er*er A"a#$e ulla tea ma##$ina- #ia#uno #on un 9in!A!!re !i*ero.
Server&dmin Qin!iri//o !i "ota elettroni#aR l0in!iri//o e-mail !ell0amminitratore !el er*er A"a#$e. L0in!iri//o "e-
#i+i#ato *err, uato nelle "agine !0errore #$e il er*er genera automati#amente- in mo!o #$e gli utenti "oano noti+i#are
e*entuali errori al Gebmater. L0in!iri//o "otrebbe an#$e eere uato "er man!are automati#amente meag!i !i "ota
elettroni#a in o##aione !i errori nel er*er.
ServerName Qnome !i !ominioR Z Qin!iri//o I2R ) il nome .u++i#iale. !el er*er- #on #ui il er*er i i!enti+i#a. &o
*iene "e!ito al #lient ?uan!o il er*er ri"on!e. 1e*e eere un nome 1NH *ali!o. 2uJ eere un nome !i*ero ri"etto
all0$otname !el #om"uter u #ui A"a#$e ta giran!o. He non *iene "e#i+i#ato nulla A"a#$e ua il nome !el #om"uter.
/rrorlog e )ransferlog !iretti*e #$e "e#i+i#ano i !ire#torC in #ui !ebbono eere memori//ati i +ile !i log !egli errori
e !ei #ollegamenti.
'irector(Inde+ Qlita !i +ileR
@ueta !iretti*a "ermette !i #on+igurare ?uali +ile il er*er #er#a automati#amente e *iene in!i#ato nella 3RI 43RL7 un
nome !i !ire#torC .!a olo. en/a neun nome "e#i+i#o !i +ile. 1ire#torCIn!ex +a #er#are i +ile !ella lita in!i#ata
?uan!o *iene "e#i+i#ata olo la !ire#torC e! il nome !el +ile man#a. 3n +ile .1ire#torC In!ex. ) !un?ue un +ile #$e *ie-
ne +ornito all0utente e eo "e#i+i#a olo un "er#oro- en/a in!i#are un +ile "re#io.
&em"io(
DirectoryIndex index.html index.shtml default.htm index.php index.cgi
<on ?ueta !iretti*a all0interno !i un blo##o- A"a#$e #er#a nella !ire#torC i +ile in!i#ati nell0or!ine in!i#ato. Il "rimo #$e
*iene tro*ato *iene "e!ito all0$ot #$e ne $a +atto ri#$ieta. He A"a#$e non tro*a neuno !ei tre +ile in!i#ati- !,(
un +ile NTML generato !inami#amente #$e +a *e!ere tutti i +ile #ontenuti !el !ire#torC "e#i+i#ato !all03RI
o""ure
un +ile NTML #$e !, al ri#$ie!ente un0in!i#a/ione !i errore- ?uale- "er eem"io( .Not >oun!D t$e re?uete! 3RL
wa not +oun! on t$i er*er.. La "agina +ornita i "uJ #ambiare #on+iguran!o A"a#$e.

2er !e#i!ere il #om"ortamento !i A"a#$e ?uan!o non eite un +ile 1ire#torC In!ex i ua la !iretti*a In!exIgnore(
Inde+Ignore Q#$ema "er la ele/ione !i +ileR e#lu!e !alla *iuali//a/ione !el #ontenuto !ei !ire#torC i +ile #$e ri"et-
tano lo Q#$ema "er la ele/ione !i +ileR 4"attern7. Il #om"ortamento !el er*er riguar!o alla *iuali//a/ione !ei !ire#-
torC "uJ eere mo!i+i#ato an#$e .!ire#torC "er !ire#torC.- #on l0O"/ione .In!exe!. !ella He/ione Q1ire#torCR !i
$tt"!.#on+ 4*e!i oltre7.
Redirect Q"at$ !ell03RI *e##$ioR Qnuo*o 3RIR
@uan!o *iene ri#$ieto !al #lient un 3RI- all0interno !i .?ueto. er*er- #$e +a "arte !el Q"at$ !ell03RI *e##$ioR il er-
*er ri!irige la ri#$ieta al Qnuo*o 3RIR- #$e "uJ an#$e eere all0eterno !i ?ueto er*er- #$ie!en!o un +ile !ello teo
nome !i ?uello originariamente ri#$ieto !al #lient.
) utile "er #ambiare !i ."oto. a! un ito en/a "er!ere i lin5 a! eo.
Qnuo*o 3RIR !e*e eere #om"letamente "e#i+i#ato 4$tt"(BB..7 tranne naturalmente nel nome !el +ile- #$e man#a- in*e-
#e Q"at$ !ell03RIR ) olo la "arte !i "at$ #$e "arte !a 1o#umentRoot- !ato #$e +a ri+erimento a .?ueto. Geb er*er.
&em"io(
Redirect /dati2003 http://netBackup.com/acme-srl/2003
e il #lient #$ie!e $tt"(BBnome1elMioHer*erB!ati200;B*en!ite.$tml
il er*er +a "untare il brower !el #lient a $tt"(BBnet9a#5u".#omBa#me-rlB200;B*en!ite.$tml
&lias Q!ire#torC !i#$iarata nell03RIR Q!ire#torC uata !a A"a#$eR
"ermette !i uare ull0$ar! !i5 !ire#torC !i*ere !a ?uelle ri#$iete !al brower "er me//o !ell03RI. Nello teo +ile
$tt"!.#on+ ) "oibile uare molte !iretti*e Alia.
&em"i(
Alias /2003 /computerBackup/dati2003
He il #lient #$ie!e $tt"(BBnome1elMioHer*erB200;B*en!ite.$tml il er*er !, il +ile B#om"uter9a#5u"B!ati200;B*en!ite.-
$tml
He #om"uter9a#5u" ) uno $are !i un er*er !i rete montato in ?uel !ire#torC- i !ati #$e *erranno +orniti al #lient *en-
gono "rei attra*ero la rete lo#ale.
". 2% !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
Script&lias Q .. R Q .. R
>a lo teo !i Alia "er ?uelle !ire#torC #$e #ontengono #ri"t.
&em"io(
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory /usr/lib/cgi-bin/>
!!!!TODO copiare
</Directory>
L0eem"io 4"reo !a una !itribu/ione 3buntu7 !e+ini#e uno H#ri"tAlia u BurBlibB#gi-binB.
)(pesonfig Q"at$ e +ileR !i#e in ?uale +ile i tro*ano le !e+ini/ioni !ei ti"i MIM&.
0ostname$oo1ups e ON +a entrare i #lient olo e ) "oibile +are un .re*ere loo5u". nel 1NH !ell0in!iri//o I2 !a
#ui "ro*iene la ri#$ieta.
1.22.4 Accesso
La !e+ini/ione !elle mo!alit, !i a##eo ai !ire#torC- #$e una *olta *eni*a #ritta nel +ile a##e.#on+- "ermette !i reali/-
/are un er*er .non anonimo.- "roteggen!o il er*er e #ontrollan!o #$e l0a##eo ai +ile ia "ermeo a olo #$i ne $a il
!iritto. Le !iretti*e !i a##eo ono !i*ie in .e/ioni.- #ia#una !elle ?uali ini/ia e +ini#e +ra tag in .tile NTML..
Le e/ioni ono( 2'irector(3 e 2File3 4#$e #ontrollano l0a##eo agli interi !ire#torC o! ai ingoli +ile7- 2$ocation3-
#$e #on+igura l0a##eo agli 3RI "aati !al #lient- 2$imit3 #$e "uJ limitare a "arti#olari utenti l0utili//a/ione !i "e#i-
+i#i meto!i NTT2 4G&T- N&A1- 2OHT- 23T- 1&L&T&7.
He/ioni 1ire#torC e >ile- intai generale(
2'irector( Qe"reione regolareR3
Q"e#i+i#$e #$e i a""li#ano alle !ire#torC #$e .mat#$ano. l0e"reione regolareR
2/'irector(3
2File Qe"reione regolareR 3
Q"e#i+i#$e #$e i a""li#ano ai +ile #$e .mat#$ano. l0e"reione regolareR
2/File3
L0e"reione regolare !etermina una o "iA !ire#torC 4o +ile7 #$e *erranno trattate #ome in!i#ato !alle "e#i+i#$e #$e e-
guono nel blo##o 4Q"e#i+i#$eR7.
Le "e#i+i#$e i a""li#ano an#$e ai otto!ire#torC !i ?uelli !e+initi !all0e"reione regolare. Le !iretti*e "iA intereanti
#$e i "oono uare !entro ai blo##$i 1ire#torC o >ile ono( O"tion- Or!er- Allow +rom- 1enC +rom- AllowO*erri!e
1iretti*e Allow e 1enC- intai(
&llow from Qlita !egli $ot #on#eiR
e
'en( from Qlita !egli $ot *ietatiR
la lita !i $ot ) #om"ota !alla "arola .all.- o""ure !a un elen#o !i $ot- in!i#ati #on l0in!iri//o I2- e*entualmente
.em"li+i#ato.- o""ure #ome nome 1NH- ma in ?ueto #ao olo e Notnameloo5u" *iene meo ON. Gli in!iri//i
em"li+i#ati i in!i#ano en/a in#lu!ere la "arte !i in!iri//o #$e in!i#a gli $ot #$e i *ogliono .raggru""are. 4e.
1=:.;=. 7- o""ure #ri*en!o- !o"o l0in!iri//o I2 e !o"o una barra 4la$7 una ma#$era !i ottorete.
) ne#eario #on+igurare l0or!ine #on il ?uale i *uole #$e *engano lette le !iretti*e allow e !enC- #on la !iretti*a 4rder
&em"io(
Order allow, deny
eegue "rima la !iretti*a allow 4"ermetti7- "oi la !enC 4nega7 1iretti*a O"tion- intai(
4ption [5Z-\ Qo"/ioneR [[5Z-\ Qo"/ioneR \ ..
Le o"/ioni ono "e#i+i#ate #on un nome e ono "re#e!ute !a un P 4o"/ionale7 "er abilitarle o !a un - "er !iabilitarle.
Le o"/ioni "e#i+i#ano il #om"ortamento !el er*er riguar!o alla e/ione #ui i a""li#ano.
Al#une !elle o"/ioni ono(
&ll atti*a tutte le o"/ioni- tranne MultiEiew
Inde+es ?uan!o l0o"/ione ) atti*ata 4P7- e il er*er non tro*a nel !ire#torC relati*o alla e/ione neun +ile +ra ?uelli in-
!i#ati in 1ire#torCIn!ex- +orni#e al brower un +ile NTML #$e +a *e!ere il #ontenuto !el !ire#torC. L0utente
FollowS(m$in1s .egue. i lin5 imboli#iD il er*er inter"reta i lin5 a! altri +ile 4Cmlin5- #ollegamenti7 #ome e +oero
*eri +ile. L0uo !i lin5 imboli#i all0interno !elle !ire#torC Geb ) !a #onigliare- "er#$I abbaano il li*ello !i i#ure//a
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 26 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
!el itema ?uan!o *engono .eguiti.. 2er ?ueto la #on+igura/ione !i !e+ault !ei !ire#torC ) meglio #$e "re*e!a #$e i
lin5 imboli#i non *engano eguiti- a meno !i non "re*e!ere an#$e altre retri/ioni #$e limitino l0a##eo a "erone .+i-
!ate..
/+ec*I ?uan!o l0o"/ione ) atti*ata i +ile eeguibili #ontenuti in ?ueto !ire#torC "oono eere eeguiti.
&em"i(
<Directory />
# "/" ^ qui sopra la directory root, essa deve essere fortemente protetta,
# impedendone l'accesso a chiunque.
# Altre sezioni Directory, successive nel file httpd.conf, "apriranno"
# l'accesso agli specifici directory che si vorranno usare per i nostri siti
#
# Questa la configuazione del directory root consigliata dal team Apache,
# che blocca proprio tutto:
Options -All -Multiviews
AllowOverride None
Order deny, allow
Deny from all
</Directory>
<Directory /var/www/cgi-bin>
# questa la directory tipica ove si mettono i programmi lato server,
# per cui Apache dovr consentire l'esecuzione di programmi
# da questa directory
AllowOverride All
Options ExecCGI
</Directory>
<Directory /var/www/scriptDelCapo>
# questa una directory che pu contenere programmi,
# ma che pu essere usata solo da una
# particolare stazione, appartenente alla rete locale
AllowOverride All
Options ExecCGI
Order deny,allow
Deny from all
Allow from 192.168.26.133
</Directory>
<Directory /var/www/scriptDelGruppo>
# questa una directory che pu contenere programmi,
# ed il cui directory pu essere mostrato via Web.
# Essa pu essere usata solo da una particolare rete locale
# (la rete 192.168.26.0)
# dall'indirizzo 172.16.12.48
# e da un indirizzo IP che proviene dal dominio DNS ingmonti.it
# (verr fatto un reverse lookup DNS)
AllowOverride All
Options Indexes ExecCGI
Order deny, allow
Deny from all
Allow from 192.168.26. 172.16.12.48
Allow from .ingmonti.it
</Directory>
<Directory "/var/www/html/prova">
# permette l'accesso a tutti gli host della rete di classe B
# 172.16.0.0 (la maschera usata "da classe B") ed a tutti gli host
# della rete di classe A 10.0.0.0 che hanno i primi tre Byte
# uguali a 10, 11 e 12 (10.11.12.0, la maschera NON quella
# standard di classe A)
Order deny,allow
Deny from all
Allow from 172.16.0.0/255.255.0.0 10.11.12.0/255.255.255.0
". 28 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
</Directory>
<Directory /var/www/soloCertiIP>
# con il mascheramento, questa directory verr riservata
# solo agli host con indirizzo IP fra 192.168.13.128 e 192.168.13.159
Order deny, allow
Deny from all
Allow from 192.168.13.128/255.255.255.224
# Infatti la maschera 255.255.255.224 corrisponde, nell'ultimo byte,
# a 11100000 in binario, e metterebbe nella stessa rete
# (e quindi darebbe accesso al directory) tutti gli host con indirizzo
# YYYXXXXX. L'indirizzo 192.168.13.128 stabilisce che YYY 100
# (infatti 128 10000000), per cui gli indirizzi accettati hanno,
# nell'ultimo Byte, da 10000000 a 10011111 in binario, cio vanno
# da 192.168.13.128 a 192.168.13.159
</Directory>
<Files ~ "^\.ht">
# questa sezione si applica a tutti i file il cui nome
# segue la regular expression indicata,
# cio che iniziano con le lettere .ht
Order allow,deny
Deny from all
# questa serve per non dare a nessuno i file tipo .htaccess,
# che contengono i diritti di accesso degli utenti ai file
# di ogni directory.
</Files>
<Files "*index*">
# questa sezione si applica a tutti i file il cui nome contiene "index"
# e non fornisce questi file solo se la richiesta proviene dal computer
# che ospita il server
Order deny,allow
Deny from 127.0.0.1
# (questa sezione pu servire in sede di diagnostica)
</Files>
1.23 ;irtual 4ot
A"a#$e "ermette !i getire iti #om"letamente in!i"en!enti ullo teo er*er. Gli $ot *irtuali "oono eere baati
ull0in!iri//o I2 o ul nome. Nel "rimo #ao ogni *irtual $ot $a in!iri//o I2 !i*ero e! un olo *irtual $ot "uJ tare u
?uell0in!iri//o.
Gli $ot baati ull0in!iri//o I2 !itinguono +ra gli $ot *irtuali "er me//o !ell0in!iri//o I2D ?uelli baati ul nome uano
in*e#e in+orma/ioni u""lementari "aate !al #lient NTT2. Il brower in+atti "uJ in#lu!ere il nome 1NH !ell0$ot +a la
ri#$ieta nell0$ea!er NTT2
1
. In ?ueto mo!o i "oono a*ere !i*eri $ot *irtuali ullo teo in!iri//o I2. Gli $ot ba-
ati ul nome non "oono eere uati #on il "roto#ollo i#uro HHL.
I Eirtual Not !i A"a#$e "oono eere #on+igurati "er girare u "ro#ei !i*eri o u un ingolo !emone.
"iA !emoni $tt" 4$tt"!7
i er*er $tt" ono #om"letamente e"arati- #on +ile !i #on+igura/ione e !ire#torC !ati #om"letamente !i*ere
ono ri#$iete molte riore al itema
uni#o !emone $tt"
#on+igura/ione "iA .leggera.D ?ui i #oni!erer, olo ?ueto #ao
2er #on+igurare un *irtual $ot i !e+ini#e una e/ione QEirtualNotR. 2er #on+igurare un Eirtual Not baato ul nome
) ne#eario #on+igurare un er*er 1NH lo#ale- #$e +ornir, a! A"a#$e l0in!iri//o I2 !el nome !i !omino ri#$ieto !al
brower.
All0interno !i una e/ione QEirtualNotR i "oono !e+inire le !iretti*e "er e"arare il ito !agli altri. Hi "oono uare
"er eem"io le !iretti*e( Her*erA!min "er tabilire l0in!iri//o e-mail !el webmater- Her*erName "er il nome #on #ui il
1 @ueta #aratteriti#a !ell0$ea!er NTT2 ) obbligatoria nello tan!ar! a "artire !alla *erione NTT2 1.1.
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 2: !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
er*er i i!enti+i#a- 1o#umentRoot "er a*ere una $ome "age in un "oto !i*ero !agli altri iti- &rrorLog "er memori/-
/are gli errori !i a##eo a ?ueto ito in un "oto !i*ero !agli altri. All0interno !ella e/ione QEirtualNotR
i "oono uare ?uai tutte le !iretti*e !i A"a#$eD #iJ ren!e la #on+igura/ione molto +leibile.
&em"io !i *irtual $ot baato ull0in!iri//o I2
<VirtualHost 10.11.12.13>
DocumentRoot /www/serverA
</VirtualHost>
&em"io !i er*er #$e ri"on!e a !ue in!iri//i #on lo teo #ontenuto(
<VirtualHost 192.168.13.8 172.16.12.48>
DocumentRoot /www/comune
</VirtualHost>
&em"io !i er*er #$e !, !ue iti !i*eri in bae al "ort uato
Listen 80
Listen 8080
<VirtualHost 192.168.13.8:80>
DocumentRoot /www/sitoPort80
</VirtualHost>
<VirtualHost 192.168.13.8:8080>
DocumentRoot /www/sitoPort8080
</VirtualHost>
&em"io !i $ot *irtuale baato ul nome(
2er uare un *irtual $ot baato ul nome ) ne#eario "e#i+i#are u ?uali in!iri//i I2 A"a#$e !o*r, atten!eri ri#$iete
baate ul nomeD #iJ *iene +atto "er me//o !ella !iretti*a NameEirtualNot.
He nella e/ione QEirtualNotR ) "reente la !iretti*a Her*erName l0$ot *irtuale ) baato ul nome.
NameVirtualHost 172.16.13.8
# direttiva che stabilisce gli indirizzi IP utilizzati dal server Apache
# per tutti gli host virtuali basati sul nome
# (mettere * al posto dell'indirizzo IP per usare tutti
# gli indirizzi IP del computer su cui gira il server)
# Solo gli indirizzi indicati qui saranno usati dagli host virtuali
# segue la definizione di un singolo host virtuale:
<VirtualHost 172.16.13.8>
# la specificazione dell'indirizzo, data qui sopra, deve essere
# identica a quella data nella direttiva NameVirtualHost
# mettendo una direttiva ServerName in questa sezione,
# il ServerName per questo host virtuale diverso da quello
# generale di Apache. Questa direttiva definisce che questo
# virtual host basato sul nome
ServerName www.ingmonti.it
# si possono definire dei nomi "di alias":
ServerAlias ingmonti.it libri.ingmonti.it
# il server erogher al client le stesse pagine,
# se richieste con uno dei
# seguenti nomi di dominio:
# 1. www.ingmonti.it
# 2. ingmonti.it
# 3. libri.ingmonti.it
# naturalmente il server DNS deve esser configurato
# in modo che indirizzi verso un indirizzo IP del nostro
# server tutte le richieste che riguardano i nomi 1.,2. e 3.
# questo server virtuale pu avere la sua path DocumentRoot,
# diversa da quella "generale":
DocumentRoot /www/sito2
". 28 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
</VirtualHost>
2er *eri+i#are la intai !elle !iretti*e !i !e+ini/ione !ei *irtual $ot i "uJ lan#iare $tt"! #on l0o"/ione -H.
Altri $ot "oono eere #on+igurati analogamente.
<on A"a#$e2 in 3buntu- "er abilitare il +un/ionamento !ei *irtual $ot ) ne#eario(
1. H#ri*ere un +ile !i #on+igura/ione !el *irtual $ot- in mo!o analogo a ?uanto "e#i+i#ato in "re#e!en/a. Il +ile
"uJ a*ere un nome ?ualiai
4e. VHingmonti.it7.
2. Hal*are il +ile !i #on+igura/ione nella #artella Bet#Ba"a#$e2Bite-a*ailable
e. /etc/apache2/sites-available/VHingmonti.it
;. Abilitare A"a#$e a leggere il nuo*o +ile !i #on+igura/ione. @ueto ) "oibile HOLO utili//an!o il "rogramma
!i utilit, ba2enitec- intallato inieme a! A"a#$e. Hi eeguir, il "rogramma a2enite- "aan!ogli il +ile !i #on-
+igura/ione #ome "arametro(
e #$e utili//a il +ile "re#e!ente( sudo a2ensite VHingmonti.it
%. Rilan#iare A"a#$e(
es in Ubuntu: sudo /etc/init.d/apache2 restart
&0 "oibile +are in mo!o #$e il er*er ri"on!a autonomamente #on "agine in lingue !i*ere- in bae alla lingua !i#$ia-
rata !al brower 4*e!i il manuale !i A"a#$e- #$e *iene intallato inieme al "a#5age7.
1.2" Autenticazione9 autorizzazione9 controllo d7acceo
L0autori//a/ione all0a##eo in #erte !ire#torC "uJ eere #on!i/ionata alla !igita/ione !ella "awor! #orretta 4autenti-
#a/ione !ell0utente7.
@uan!o una !ire#torC ) ."rotetta. il er*er #$ie!e al brower #$e tenta !i a##e!er*i l0.autenti#a/ione.- #$e a**iene tra-
mite la ri#$ieta !i una "awor! all0utente !a "arte !el brower. La "awor! !igitata *iene "oi "aata !al brower al
er*er A"a#$e- #$e la #ontrolla e garanti#e l0a##eo e ea ) *ali!a. 1ato #$e NTT2 ) .en/a tato.- #iJ a##a!e "er
OGNI a##eo a! OGNI riora "rotetta- an#$e e nella maggior "arte !ei #ai l0utente non e ne a##orge- "er#$) a "aa-
re la "awor! al er*er ogni *olta #i "ena il brower .!i na#oto. e la #$ie!e all0utente olo la "rima *olta.
2er#$) l0autenti#a/ione +un/ioni ) ne#eario #$e ia #ari#ato il mo!ulo A"a#$e .aut$Vmo!ule.- "er ?ueto !e*ono ee-
re "reenti nel +ile $tt"!.#on+ i #oman!i(
Loa!Mo!ule aut$Vmo!ule mo!uleBmo!Vaut$.o
e
A!!Mo!ule mo!Vaut$.#
A"a#$e $a una H3A getione !egli utenti- #om"letamente !i*era !a ?uella !i 3nix o Hamba.
Gli utenti e le "awor! A"a#$e i #reano uan!o il "rogramma $t"aw!.
Hintai(
htpasswd Qo"/ioniR Q+ile !elle "awor!R QuernameR
L0o"/ione "iA im"ortante )(
-c U #reateD #rea !a /ero o o*ra#ri*e una tabella !elle "awor! 4e eite gi, la !itruggeM7
2er eem"io- "er #reare .!a /ero. il nuo*o +ile !elle "awor! .Bet#Begretiimo. #ontenente l0utente .#a"o. i "uJ +are
#oO(
[root#] htpasswd -c /etc/segretissimo capo
$t"aw! #$ie!e la "awor! all0utente- e la memori//a #ri"tata nel +ile Bet#Begretiimo
2er aggiungere nuo*i utenti i +a lo teo- ma non i !e*e mettere l0o"/ione -#. &em"io(
[root#] htpasswd /etc/segretissimo fantozzi
2er ragioni !i i#ure//a biognerebbe limitare la "ro"riet, e! i !iritti !i lettura !el +ile !elle "awor! oltanto all0utente
#on #ui gira a"a#$e. &em"io(
[root#] chown apache.apache /etc/segretissimo
[root#] chmod 640 /etc/segretissimo
3na *olta #reato il +ile !elle "awor! i !e*e #on+igurare A"a#$e "er uarlo- e #iJ i "uJ +are in !ue mo!i(
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". 2= !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
1. #ri*en!o nel +ile $tt"!.#on+ una e/ione Q1ire#torCR- relati*a al !ire#torC #$e i *uole "roteggere- #$e #ontenga le
!iretti*e !i autenti#a/ione- #$e ono Aut$TC"e- Aut$Name- Aut$3er>ile- Aut$Grou">ile e Re?uire.
2. "ia//an!o un +ile .$ta##e !entro #ia#uno !ei !ire#torC #$e i *uole !i+en!ere #on l0autenti#a/ione. Il +ile .$ta##e
#onterr, le !iretti*e !i autenti#a/ione- in mo!o analogo a! una e/ione 1ire#torC
1.24.1 Diretti%e )i autentica.ione
&uth#serFile i!enti+i#a il nome !el +ile !elle "awor! !egli utenti
Il +ile #on l0elen#o !egli a##ount #reati #on $t"aw! !e*e eere in!i#ato ?ueta !iretti*a !entro ?ueta e/ione 4Aut$3-
er>ile7. Nell0eem"io "re#e!ente(
AuthUserFile /etc/segretissimo
&uthName i!enti+i#a #on un nome l0area !i autenti#a/ione 4.realm. o .reame. !i autenti#a/ione.7. @ueta tringa *err,
#omuni#ata al brower al momento !ella ri#$ieta !i autenti#a/ione- e! eo lo motrer, #ome .titolo. !ella +inetra !i
login.
&uth)(pe.ase i!enti+i#a il ti"o !i autenti#a/ioneD il *alore "iA ti"i#o in ?ueto #ao ) 9ae- altre o"/ioni ono #om"li-
#ate.
&uth*roupFile in!i#a il +ile !i teto #$e #ontiene i gru""i !i utenti 4grou"+ile7 .3n grou"+ile ) un em"li#e +ile !i teto
#$e #ontiene rig$e #$e in!i#ano il nome !ei gru""i e #ia#uno !ei loro #om"onenti.
3na riga $a la +orma(
QNome gru""oR6 Qlita !i nomi utenteR
2er eem"io- un #ontenuto !i +ile !i gru""o "otrebbe eere il eguente(
contratti: bianchi rossi verdi
ufficiotecnico: mari monti collina
Re7uire Qelen#o !egli utenti #$e $anno !iritto a! a##e!ereR
&len#o !i uername !i utenti- "reenti nel +ile .Aut$3er>ile.- #$e "oono a##e!ere. Gli uername !ell0elen#o ono e-
"arati !a "a/i.
He tutti gli utenti *anno bene i "e#i+i#$er,(
Require valid-user
He i *orr, rier*are l0a##eo ai oli membri !i un gru""o(
Re1/ire gro/p <nome del gruppo all'interno del file definito con AuthGroupFile>
&em"io !i una e/ione 1ire#torC #$e ri#$ie!e l0autenti#a/ione(
<Directory /home/httpd/html/dirigenti>
Option none
AllowOverride none
Order deny, allow
Allow from all
AuthName "Accesso riservato all'area contratti"
# viene spedito al client che cos pu sapere automaticamente
# qual il nome d'utente da usare per accedere a questo server
AuthType Basic
AuthUserFile /etc/segretissimo
AuthGroupFile gruppi
Require group contratti
# possono entrare solo gli utenti del gruppo contratti
</Directory>
Naturalmente il +ile .gru""i. ar, #er#ato otto Her*erRoot 4non $a .B. a initra7. Hi !ar, a##eo olo agli utenti #$e
ono nella lita !egli utenti !el gru""o .#ontratti..
Aggiungere i director< degli utenti al :e3 getito da Apac*e
He in $tt"!.#on+ i #ri*e
". ;0 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
#ser'ir Qnome !i !ire#torC !el er*er !a ren!ere ."ubbli#o.R
gli utenti "otranno #reare- nei loro $ome !ire#torC- una !ire#torC #on ?uel nome e riem"irla #on "agine NTML e! altri
#ontenuti Geb. A"a#$e ren!er, *iibile !al Geb ?uella !ire#torC- #$e ar, la .root. !ei Geb .!i utente.. 2er a##e!ere a
?uel !ire#torC biogner, uare l0 3RI(
!i !ominio Internet !el er*erR/8Quername !ell0utenteR
Hi "uJ #on+igurare un mo!o !i*ero !i in!i#are la !ire#torC !0utente.
&em"io(
UserDir public_html
He l0utente gamon #rea la !ire#torC B$omeBgamonB"ubli#V$tml ea ar, a##eibile !a Geb all03RI(
$tt"(BB!ominio!eler*er.itBdgamon
Hi !o*ranno aegnare i !iritti ulle !ire#torC "ubli#V$tml in mo!o #$e ee iano a##eibili all0utente "e#i+i#ato #ome
.3er. in $tt"!.#on+ 4ti"i#amente nobo!C o a"a#$e7.
) "oibile in!i#are una lita !i nomi !0utente #ui ) im"e!ita la #otru/ione !i iti Geb nei loro $ome !ire#torC. <iJ i
ottiene #on la !iretti*a 1IHA9L&1.
&em"io(
user DISABLED gamon gmonti ufantozzi
Pagina di 3en!enuto
He non ) !e+inita neuna $ome "age 4non #0) neun +ile .In!ex. nella 1o#umentRoot7 A"a#$e "ro!u#e la .Gel#ome
"age.- #$e in Re! Nat i "uJ #on+igurare #on il +ile !i in#lu!e Gel#ome.#on+ in Bet#B$tt"!B#on+.!.
Apac*e +anual
A"a#$e #om"ren!e un manuale- in NTML- #$e !i olito *iene #on+igurato "er ri"on!ere alla !ire#torC *irtuale QNome
!el er*erRBmanualB.
C=I
NT22 "ermette- oltre allo #ambio !i !o#umenti i"ertetuali- an#$e lo #ambio !i !ati- attra*ero un me##animo legato
all0ee#u/ione !i "arti#olari programmi- !etti .programmi gatewa(..
@ueti "rogrammi "oono eere #ritti in ?ualiai linguaggio- bata #$e ri"ettino un0inter+a##ia !i "rogramma/ione
tan!ar! !etta .ommon *atewaC Inter+a#e. 4<GI7.
Il mo!o "iA !iretto !i ri"ettare la <GI ) #ri*ere em"li#i $ell #ri"t #$e ri#e*ono in"ut attra*ero lo tan!ar! in"ut o
"arti#olari *ariabili !0ambiente e "e!i#ono al #lient "agine +ormattate in NTML- attra*ero lo tan!ar! out"ut 4".e.
#on #oman!i .e#$o.7.
Il er*er NTT2 ri#e*e un 3RI. He ?uell03RI ."unta. al !ire#torC !e+inito #ome .H#ri"tAlia. in $tt"!.#on+ il er*er a
#$e non ) un +ile ?ualiai- ma un #oman!o !a eeguire- o**eroia un "rogramma eeguibile "er uno #ri"t inter"retato7.
La #artella ti"i#a !i .H#ri"tAlia. )( B
2er#iJ il er*er eegue il #oman!o- "aan!ogli #ome "arametro i !ati #$e ri#a*a !all03RI- #io) ?uelli #$e eguono la e
4e #ommer#iale- am"eran!7. Attra*ero l03RI- o""ure attra*ero il +ile !i tan!ar! in"ut- il "rogramma <GI ) in gra!o
!i ri#e*ere !ei !ati in ingreo- #$e "ro*engono !al #lient 4brower7.
A ?ueto "unto il "rogramma <GI "uJ eeguire le ue elabora/ioni- "er "oi retituire al #lient- attra*ero il uo tan!ar!
out"ut- un +ile NTML.
Il brower inter"reta ?uel +ile #ome e +oe una normale "agina NTML .tati#a.- en/a ne""ure ren!eri #onto #$e in
*erit, ) il riultato !ell0ee#u/ione !i un "rogramma.
Il er*er A"a#$e "uJ ri#ono#ere i +ile !a eeguire non olo "er#$) tanno nel !ire#torC .H#ri"tAlia.- ma an#$e ?uan!o
il loro nome "orta una "arti#olare etenione- !e+inita #on la !iretti*a A!!Nan!ler in $tt"!.#on+. Ea notato #$e ?ueto
a""ro##io "otrebbe ri*elari "o#o i#uro- "er#$) @3ALHIAHI +ile #$e termina #on etenioni !i#$iarate eeguibili *err,
eeguito- an#$e "rogrammi #$e *engono lan#iati .#on mali/ia. !a utenti #$e *ogliono "ren!ere il #ontrollo !el #om"u-
ter.
La ri"ota !ei "rogrammi <GI !e*e ri"ettare in tutto e "er tutto i !ettami im"oti !a NTT2D !e*e "er#iJ ini/iare #on
un $ea!er NTT2- #$e "uJ an#$e olo eere la !e#ri/ione !el #ontenuto MIM&- #on la riga .#ontentVtC"e.- eguita !a
una riga *uota. Alla +ine !ell0$ea!er !e*e eguire il #ontenuto !el +ile- #$e "otrebbe eere un +ile NTML- ma an#$e un
+ile !i ti"o binario #ome- "er eem"io- una immagine o! un uono.
3no #ri"t !i eem"io(
#!/bin/sh # specifica che si usa l'interprete di comandi sh (shell)
echo "content_type: text/html"
echo # linea vuota!
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". ;1 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
echo "<HTML>"
echo "<HEAD>"
echo "<TITLE> Script CGI di prova </TITLE>"
echo "</HEAD>"
echo "<BODY>"
echo "<H1> Script CGI di prova </H1>"
whoami # comando di sistema che scrive nello standard output
echo "</BODY>"
echo "</HTML>"
@ueto teto *a al*ato nel !ire#torC !e+inito #ome .H#ri"tAlia. nel +ile !i #on+igura/ione A"a#$e e reo eeguibile.
Hu""oto #$e il +ile i #$iami ."rimo<GI.$.- eo *err, lan#iato ?uan!o il brower ri#$ie!er, l03RI(
Q$otR/Q1ire#torC H#ri"tAlia lato #lientR/primo*I.sh
&em"io !i 3RI #$e +a "artire lo #ri"t <GI(
http://server.prova.it/cgi-bin/primoCGI.sh
Configurare A"ac!e "er i C)
A"a#$e $a un mo!ulo "er il <GI- #$e !e*e eere abilitato #on(
Loa!Mo!ule #giVmo!ule Bmo!uleBmo!V#gi.o
e
A!!Mo!ule mo!V#gi.#
*aria+ili d,a(+iente del ser-er
Le *ariabili !0ambiente !el er*er i uano #ome tutte le normali *ariabili !egli #ri"t e "e#i+i#ano le #aratteriti#$e !el-
la #onneione #$e i intaura +ra #lient e er*er. Al#une *ariabili !0ambiente "oono #ontenere tring$e #$e il #lient
"aa al er*er #ome "arametri !ell03RI.
SERVER_SOFTWARE
SERVER_NAME
GATEWAY_INTERFACE
SERVER_PROTOCOL
SERVER_PORT
REQUEST_METHOD
HTTP_ACCEPT
PATH_INFO = "$$$$$$"
PATH_TRANSLATED = "$$$$$$"
SCRIPT_NAME = "$$$$$$"
QUERY_STRING = "$$$$$$"
REMOTE_HOST = "$$$$$$"
REMOTE_ADDR = "$$$$$$"
REMOTE_USER = "$$$$$$"
echo AUTH_TYPE = "$$$$$$"
echo CONTENT_TYPE = "$$$$$$"
echo CONTENT_LENGTH = $CONTENT_LENGTH
1.24.2 Passaggio )i parametri ai programmi /01
IsInde+ e Is%ap
Hono !ue te#ni#$e "er #$ie!ere un in"ut all0utente attra*ero il brower. IIn!ex er*e "er gli in"ut !i teto e! oggi non
) "iA uato- !ato #$e i uano i >ORM- IMa" !, la "oi/ione o*e l0utente $a +atto #li#5 #on il moue entro un0area nella
?uale *iene *iuali//ata un0immagine. Lo #ri"t !e*e ri#a*are !alla *ariabile @3&RLVHTRING l0in+orma/ione "e!ita
tramite IIn!ex o IMa".
%oduli F4R%
Il brower genera #o""ie Qnome !el #am"oR U Q*alore !el #am"oR e "e!i#e il mo!ulo !i teto #orri"on!ente al "ro-
gramma <GI.
Il brower genera un mo!ulo >ORM ?uan!o in#ontra il tag NTML Q>ORMR.
Hintai
2F4R% Q"arametri !i >ORMR3
Q!e#ri/ione !el +ormR
". ;2 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
2/F4R% 3
2rin#i"ali Q"arametri !i >ORMR
A<TION "ermette !i in!i*i!uare l03RI #ui il +orm *iene "e!ito 4!e*e #om"ren!ere il nome !ello #ri"t <GI7
M&TNO1 "e#i+i#a il mo!o !ella "e!i/ione- #$e "uJ eere G&T o 2OHT
&em"io !i NTML "er G&T(
<FORM ACTION="/cgi-bin/input_superiori.sh" METHOD="GET">
&em"io !i NTML "er 2OHT(
<FORM ACTION="/cgi-bin/input_inferiori.sh" METHOD="POST">
*/) e P4S)
<on G&T le in+orma/ioni ono aggiunte alla +ine !ell03RI- e"aran!ole #on un "unto interrogati*o. He le in+orma/ioni
"aate #ontengono un .U. "ro*engono !a un >ORM.
&em"io !i 3RI "er G&T- #$e "e!i#e i !ati !i un +orm(
$tt"(BBmega!ittaB#giVbinB!atiVin+eriori.$^nomeU3goe#ognomeU>ANTO''I
!a ?ueto eem"io i "uJ *e!ere #ome le #o""ie Qnome !el #am"oRUQ*alore !el #am"oR iano e"arate !al #arattere
.e..
L0utili//a/ione !el meto!o G&T $a il *antaggio "rin#i"ale #$e i !ati "e!iti ono .memori//abili. attra*ero un egnali-
bro !el brower e "er#iJ gli utenti "otranno ri"etere la tea ?uerC in un e#on!o tem"o in mo!o molto +a#ilitato.
2eraltro e i !ati ono molti- ) "re+eribile uare il meto!o 2OHT- #$e non utili//a la 3RI "er il "aaggio !ei !ati. In+atti
#on ?ueto meto!o i !ati ono "e!iti allo #ri"t <GI attra*ero il normale tream .+ile. !i tan!ar! In"ut !el "rogram-
ma <GI. I !ati ono "e!iti nello tan!ar! in"ut +ormattati #ome e "ro*eniero !all03RI- #ioI in mo!o i!enti#o ai "a-
rametri #$e in*e#e arri*ano attra*ero l03RI.
Naturalmente- a !i++eren/a !i un G&T- un meto!o 2OHT ) ."ri*o !i tato. e non i "uJ al*are in un boo5mar5.
<on il meto!o 2OHT il "rogramma <GI !e*e "ren!ere i !ati #$e "ro*engono !allo tan!ar! in"ut e! a##e!ere alle in-
gole in+orma/ioni inter"retan!o #iJ #$e arri*a. Il linguaggio 2&RL ) molto uato "er ?ueto #o"o- "er#$) ) molto *er-
ato al ."aring. !elle tring$e. 2er i "rogrammi <GI "oono eere uati an#$e molti altri linguaggi o trumenti o+t-
ware- ?uali 2N2- Xa*a#ri"t- aw5- E9#ri"t 4olo in H.O. Mi#roo+t7.
Ese("io di for( con "te.t +o." e (etodo )ET
<HTML>
<HEAD>
<TITLE> File HTML con un FORM contentente text box </TITLE>
</HEAD>
<BODY>
<FORM ACTION="/cgi-bin/input_superiori.sh" METHOD="GET">
Nome <INPUT TYPE="text" NAME="Nome" VALUE="Umberto" > <br>
Cognome <INPUT TYPE="text" NAME="Cognome" VALUE="MAZZANTI VIENDALMARE" > <br>
Titolo <INPUT TYPE="text" NAME="Titolo" VALUE="Conte Duca"> <br>
<INPUT TYPE="submit" value="Spedisci i dati">
</FORM>
<BODY>
</HTML>
IN23T TL2&Uubmit igni+i#a #$e i !ati *engono "e!iti ?uan!o l0utente "reme il tato *iuali//ato !al brower. In
?ueto #ao il tato #ontiene la #ritta ."e!i#i i !ati..
He il +orm "re#e!ente *iene "e!ito en/a mo!i+i#are i !ati !i !e+ault- #on un em"li#e #li#5 ul bottone- #iJ #$e giunge
al "rogramma <GI B#gi-binBin"utVu"eriori.$- attra*ero il "ort NTT2 rier*ato alla #omuni#a/ione !egli 3RI- )(
http://megaditta/cgi_bin/input_superiori.sh?Nome=Vittorio+Emanuele&Cognome=MAZ-
ZANTI+VIENDALMARE&Titolo=Conte+Duca
He nelle tring$e #i ono !ei #aratteri "e#iali ei *engono #o!i+i#ati #on il loro #o!i#e AH<II in ea!e#imale- "re#e!u-
to !a .f..
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". ;; !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
Ese("io di for( con "co(+o +o." e (etodo P/ST
<FORM ACTION="/cgi-bin/input_inferiori.sh" METHOD="POST">
Scegliere il tipo di punizione:
<SELECT NAME="selezione">
<OPTION SELECTED VALUE=1> In ginocchio sui ceci
</OPTION>
<OPTION VALUE=2> Cancellazione ferie </OPTION>
<OPTION VALUE=3> Crocifisso in sala mensa </OPTION>
</SELECT>
<br>
<INPUT TYPE="submit" value="Spedisci i dati">
</FORM>
Heguono !ue eem"i molto em"li#i e !el tutto inutili #$e !o*rebbero "iegare #$iaramente l0In"ut Out"ut !ei "rogram-
ma <GI.
Ese("io di "rogra((a C) "er (etodo )ET
Hu""oniamo #$e il eguente ia il #o!i#e !el "rogramma in"utVu"eriori.$- in*o#ato !al "re#e!ente +orm NTML- #$e
+a#e*a uo !el meto!o G&T.
#!/bin/sh
# script CGI di prova
echo "Content-type: text/html"
echo
# linea vuota!
# fine header HTTP
# visualizza la QUERY_STRING cos come viene ricevuta:
echo "Eccellentissimo $QUERY_STRING
"
echo "Siamo felici di comunicarCi che il suo premio produzione di Euro 1 000
000"
Il riultato !ell0ee#u/ione !i ?ueto "rogramma ) "e!ito al brower #one le e#$o- attra*ero lo tan!ar! out"ut !el "ro-
gramma <GI. <iJ #$e i *e!e ul brower ) il eguente(
Eccellentissimo Nome=Vittorio+Emanuele&Cognome=MAZZANTI+VIENDALMARE&Titolo=Con-
te+Duca
Siamo felici di comunicarCi che il suo premio produzione di Euro 1 000 000
@ueto eem"io motra #ome il "rogramma <GI ottenga i !ati "e!iti #on il meto!o G&T nella ua *ariabile !0ambiente
@3&RLVHTRING. Har, uo #om"ito- e ?ui non lo *e!remo- inter"retare ?uella tringa in mo!o #orretto.
Ese("io di "rogra((a C) "er (etodo P/ST
Il eguente ia il #o!i#e !el "rogramma .in"utVin+eriori.$.- uato +orm NTML #$e +a#e*a uo !el meto!o 2OHT.
#!/bin/sh
# script CGI di prova
echo "Content-type: text/html"
echo # questa una linea vuota!
# fine header HTTP
# lo script piu semplice per il metodo POST.
# visualizza il file di standard in sul file di standard out:
cat
l0uni#a itru/ione #$e inter*iene ullo tan!ar! out"ut ) #at- #$e- uata en/a al#un "arametro- "ren!e il uo ingreo !al-
lo tan!ar! in"ut 4normalmente lo "ren!e !a un +ile- ma e il +ile non #0) ..7.
!o"o a*er "reo lo tan!ar! in"ut #at lo tramette- #ome em"re- nello tan!ar! out"ut- "er #ui il riultato !el "rogram-
ma <GI ) !i riman!are in!ietro al brower #iJ #$e eo $a "e!ito al er*er.
". ;% !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
@ueti !ue em"li#i eem"i illutrano ?uanto la *ita ia !i++i#ile "er i "rogrammi <GI. <on i "rogrammi <GI non i #o-
no#e a "riori n) ?uanti ono i #am"i "reenti in un +orm- n) il loro nome- oltre #$e- naturalmente- il loro #ontenuto.
Inoltre i !ati arri*ano tutti .inieme. e biogna !ari !a +are "er e"ararli. La "rogramma/ione ) !un?ue #om"li#ata.
2er o**iare a ?ueti "roblemi *engono in aiuto trumenti #$e +anno +a#ilmente il "aring !elle tring$e "ro*enienti !al
brower. Htori#amente il "rimo linguaggio utili//ato in ?ueto #am"o- nato "ro"rio "er ?ueto ti"o !i la*oro- ) il 2&RL-
ma ultimamente i "re+eri#e uare trumenti "iA +a#ili- ?uali 2N2 4u tutti i er*er7 o E9#ri"t 4olo ui er*er
Mi#roo+t7.
1.24.3 Pro23 Apac+e
Il er*er A"a#$e "uJ #ari#are il mo!ulo ."roxCVmo!ule. #$e *olge al#une em"li#i +un/ioni !a "roxC. He "erJ i *uole
un .*ero. e #om"leto "rogramma "er un "roxC NTT2- allora i "otr, uare il "rogramma .?ui!..
2 Co+ple+enti
2.1.1 inet) e 2inet)
inet! 4internet !aemon7 ) il !emone #$e +a "artire e geti#e tutti i er*i/i T<2BI2- #io) i .er*er. e! i .#lient. !i tutti i
"roto#olli internet. In "aato era l0uni#o "unto !i "arten/a !i tutti i "roto#olli !i li*ello a""li#a/ione 4er*er7. All0ingre-
o in un nuo*o runle*el- "arti*a inet! 4o la ua *erione "iA re#ente xinet!7 e lan#ia*a tutti i er*er internet. In ?ueto
mo!o era "oibile una getione "iA .#entrali//ata. !el "roto#ollo T<2BI2- #$e +a !a bae ai er*er.
Re#entemente l0a""ro##io ) #ambiato e! i er*er "iA im"ortanti ten!ono a "artire .!a oli.- in mo!o #om"letamente in-
!i"e!ente !a inet!. inet! e xinet! geti#ono an#ora "roto#olli meno uati- +ra i ?uali il "iA im"ortante ) telnet.
inet! ) un "ro#eo !i itema #$e ri"on!e a! ogni ri#$ieta !i #onneione T<2- "er ?ualiai "roto#ollo. He la ri#$ie-
ta !e*e eere a##ettata ?ueto il "ro#eo inet! #rea un altro "ro#eo- "e#i+i#o "er il "roto#ollo ri#$ieto- #$e geti#e
il #ollegamento T<2 relati*o a ?uel .er*i/io..
xinet! ) la *erione .exten!e!. !i inet!- uata attualmente.
Con#igurazione di inetd > tcpd
inet! $a un uni#o +ile !i #on+igura/ione( inet!.#on+- #$e #ontiene la #on+igura/ione !i ogni er*i/io T<2BI2. inet!.!.
/CP "wrapper" &"incartatore"?'6 tcpd
Il T<2 wra""er ) il !emone t#"!. ) un !emone .interme!io. #$e ta +ra l0utente e! i er*i/i T<2 #$e eo ri#$ie!e.
3na !elle ue +un/ioni- non *olte !a inet!- ) "e!ire al !emone .Ctem logger. 4Clog7 tring$e #$e "iegano ogni
tentati*o !i #onneione T<2.
Inoltre- mentre inet! non ) in gra!o !i +are !i++eren/e +ra gli $ot !ai ?uali "ro*iene una ri#$ieta !i er*i/io- t#"! "uJ
+iltrare le ri#$iete "ro*enienti !agli utenti e negarle o +arle "aare in bae all0in!iri//o I2 !a #ui "ro*engono.
2er tabilire gli in!iri//i I2 .abilitati. e ."roibiti. i uano !ue +ile( Bet#B$ot.allow "er gli $ot .a##re!itati.- Bet#B$ot.-
!enC "er ?uelli .ban!iti..
In ?ueti !ue +ile ) "oibile an#$e "e#i+i#are "er ?uali "roto#olli il itema !e*e #on#e!ere o negare il er*i/io a "e#i-
+i#i $ot I2. He l0$ot ) abilitato t#"! +a "artire il relati*o er*er- altrimenti nega l0a##eo.
&em"io( "er la#iar "aare tutte le ri#$iete al !emone +inger e! in*e#e .im"a##$ettare. in t#"! il !emone telnet !ob-
biamo #ri*ere- in inet!.#on+(
# non "impacchetta" il demone finger:
finger stream tcp nowait root
/usr/sbin/in.fingerd in.fingerd
#"impacchetta" il demone telnet:
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
Le rig$e !i inet!.#on+ #ontengono( er*i/io- "roto#ollo !i tra"oto- #om"ortamento !el !emone .!o"o l0uo. 4wait U ri-
mane in memoria- no wait U *iene #ari#ato7- ueri! #on #ui *err, eeguito- !emone #$e *iene lan#iato imme!iatamente
4ti"i#amente il !emone teo o""uere il .wra""er. t#"!7- !emone lan#iato !o"o a*er +atto i #ontrolli.
Nell0eem"io il !emone +inger *iene lan#iato !irettamente- en/a +ar uo !i t#"!- mentre nel e#on!o #ao 4telnet7 i lan-
#ia t#"!- #$e "ro**e!er, a lan#iare in.telnet! olo !o"o a*er *eri+i#ato l0autori//a/ione in $ot.allow. Le ri#$iete !i
er*i/io +inger NON aranno in*iate al Ctem logger.
Autori//a/ioni
t#"! #ontrolla il +ile Bet#B$ot.allow "er "rimo- "oi Bet#B$ot.!enC e! agi#e !i #oneguen/aD inoltre +orni#e i er*i/i
#$e non ono "e#i+i#ati in neuno !ei !ue +ile.
>ormato !i Bet#B$ot.allow e Bet#B$ot.!enC
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". ;6 !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
Qlita !i !emoniR6Qlita !i $otR[6Q#oman!o !i $ellR\
Le lite ono #om"ote !a #$emi #ome ?uelli uati "er la ri#er#a !i nomi !i +ile. Gli #$emi ono e"arati !a uno "a/io
4blan57.
Il #oman!o !i $ell "otrebbe eere uato "er +ar "artire uno #ri"t #$e a**erte l0amminitratore !i e*entuali tentati*i !i
atta##o al itema.
&em"i(
ALL:ALL@ALL # scritto in /etc/hosts.deny nega l'accesso a tutti i servizi TCP/IP
# Perci funzionano solo i servizi esplicitamente autorizzati
# in /etc/hosts.allow
ALL:ALL EXCEPT localhost # scritto in /etc/hosts.deny nega l'accesso a tutti i servizi
# TCP/IP dall'esterno del nostro computer.
ALL:ALL EXCEPT LOCAL # scritto in /etc/hosts.deny nega l'accesso
# a tutti i servizi PCP/IP dall'esterno della rete locale
in.ftpd:192.168.0.0/255.255.255.240
# scritto in /etc/hosts.allow autorizza l'accesso FTP
# a tutti gli host della rete IP che hanno indirizzo
# da 192.168.0.1 a 192.168.0.15
in.smtpd:Brontolo Dotto
# scritto in /etc/hosts.allow autorizza l'accesso SMTP
# (scrittura della posta elettronica) agli host Brontolo e Dotto
in.smtpd:monti.it
# scritto in /etc/hosts.allow autorizza l'accesso SMTP
# agli host che appartengono al dominio DNS monti.it
in.telnetd:.binladen.org:(/bin/echo/"Tentativo di accesso telnet da organizzazione so-
spetta, client TCP %c, server TCP %s")&
@uet0ultimo #oman!o man!a in #onole un a**ertimento #$e riguar!a il tentati*o !i #ollegamento.
t#"! $a un linguaggio !i #oman!i- #$e eite an#$e in una +orma .etea.- e #$e #om"ren!e le ma#ro f 4er*er7 e f#
4#lient7- #$e e"an!ono tring$e !e#ritti*e !el #lient e er*er I2 #oin*olti nella .*iola/ione..
Eolen!o i "otrebbe an#$e man!are in "ota elettroni#a- metten!o il ."i"e. #on .mail. il riultato !el #oman!o e#$o(
in.telnetd:.binladen.org:(/bin/echo/"Stringa come prima" | mail -s "Accesso non autoriz-
zato" root) &
) molto intereante la "oibilit, !i in!i#are utenti !i un #erto #om"uter 3nix in*e#e #$e $ot I2.
He nella Qlita !i $otR #om"are un0in!i#a/ione nel +ormato QH#$ema nome utenteR_QH#$ema nome !ominio NIHR-
t#"! +a un0interroga/ione a tutti gli $ot il #ui nome o in!iri//o I2 #orri"on!ono a QH#$ema nome !ominio NIHR- "er
*eri+i#are e il nome !ell0utente #$e $a lan#iato il "ro#eo #$e ri#$ie!e il er*i/io ) #on+orme a ?uanto in!i#ato !allo
QH#$ema nome utenteR.
Con#igurazione di xinetd
xinet! 4exten!e! inet!7 ) un !emone- "iA .mo!erno.- #$e +a le +un/ioni ia !i inet! #$e !i t#"!. >un/iona in mo!o ana-
logo ma i #on+igura in mo!o !i*ero.
>un/ioni
tutte le +un/ioni !i inet!
#ontrollo !0a##eo baato ull0in!iri//o - nome !i !ominio 4e*entualmente an#$e inieme a t#"!7
#ontrollo !0a##eo baato ul tem"o
log !egli e*enti
"roxC- in #ombina/ione #on un "rogramma NAT 4I2-ma?uera!ing7 "uJ otituire il wra""er t#"!
2er la #on+igura/ione !i xinet!.#on+ biogna uare una intai !i*era ri"etto a ?uella !i inet!.#on+. 2er aiutare nella
#on*erione eitono i "rogrammi itox 4non "iA aggiornato7 e x#on*."l.
Il +ile xinet!.#on+ "uJ #ontenere la #on+igura/ione !i tutti i er*i/i- #ome u##e!e*a "er inet!.#on+- o""ure "uJ a*ere un
!i*ero +ile !i #on+igura/ione "er ogni "roto#ollo #$e il !emone geti#e. @ueti +ile ono #ontenuti in un !ire#torC 4ti"i-
#amente Bet#Bxinet!.!B7. Tutti i +ile !i ?ueto !ire#torC *engono .in#lui. in xinet!.#on+- uno "er ogni er*i/io I2- T<2- o
312 eitente.
2er e++ettuare ?ueta in#luione il +ile xinet!.#on+ !e*e #ontenere il #oman!o(
includedir Qnome !el !ire#torC in #ui ono memori//ati i +ile !i #on+igura/ione !ei er*i/iR
". ;8 !i ;8 2011-0;-08 20 Linux Networ5.o!t
Ing. Gabriele MONTI 2001 - 2008 Reti in Linux www.ingmonti.it
xinet!.#on+ #ontiene !i*ere .e/ioni. una "er ogni er*i/io #$e #ontrolla. La e/ione #$e ta em"re nel +ile xinet!.#on+
) la e/ione .!e+ault.- #$e in!i#a il #om"ortamento !el !emone nelle #on!i/ioni !i !e+ault- le altre !i olito tanno nei
+ile relati*i ai ingoli er*i/i.
La intai !ella !i#$iara/ione !i una e/ione ) la eguente(
QNome !ella e/ioneR
9 Q#on+igura/ione !i attributi !a uare !a "arte !el er*i/ioR :
La e/ione !i nome .!e+ault. tabili#e gli attributi !i !e+ault "er tutti i er*i/i. @ueti attributi "oono eere .o*ra-
#ritti. !a ?uelli !e+initi nelle ingole e/ioni "e#i+i#$e.
Il +ormato uato all0interno !ella e/ione ) il eguente(
QAttributoR QO"eratoreR QEaloreR [QEaloreR ..\
QO"eratoreR "uJ eere(
La tringa .U. "er aegnare la tringa Q*aloreR all0attributo
La tringa .PU. "er aggiungere la tringa *alore alla lita !ei *alori
!ell0atttibuto
La tringa .-U. "er togliere la tringa *alore !alla lita !ei *alori !ell0attributo
&em"i(
no_access = 195.32.14.
only_from -= .binladen.org
I "rin#i"ali attributi !elle e/ioni(
disable( e U Ce UR il er*i/io non *iene atti*ato
no-access( tabili#e la lita !egli $ot #$e non $anno a##eo al er*i/io. 2er "e#i+i#are gli $ot i "oono
!are gli in!iri//i I2 !i ingoli $ot- !i intere reti o nomi !i !ominio 1NH- e*entualmente .em"li+i#ati.. 3are
noVa##e in #ongiun/ione #on onlCV+rom "uJ in ?ual#$e #ao .trano. +ar O #$e xinet! non a""ia #oa +are.
2er ?ueto ) meglio uare olo onlCV+rom- #$e- e uato en/a al#un "arametro- non abilita neuno.
onl(-from( tabili#e la lita !ei #lient autori//ati
log-on-success( tabili#e #oa #ri*ere nel +ile !i log ?uan!o i ini/ia un #ollegamento a##ettato
log-on-failure( tabili#e #oa #ri*ere nel +ile !i log ?uan!o xinet! ri+iuta un #ollegamento
port( tabili#e il numero !i "ort T<2 uato !al er*i/io 4i !e+ault ono in Bet#Ber*i#e7
server( la "at$ !el !emone er*er- #$e *iene lan#iato !a xinet! ?uan!o la ri#$ieta !i #ollegamento T<2 ) a#-
#ettata.
soc1et-t(pe( il ti"o !i "roto#ollo uato !al er*i/io(
stream 4"roto#ollo a++i!abile( T<27
dgram 4"roto#ollo a !atagramma( 3127
raw 4neun "roto#ollo !i li*ello u"eriore- ua olo !atagrammi I27
wait( e UCe il er*er ) .mono"rogrammato.( "rima !i a##ettare la "roima ri#$ieta !i #onneione atten!e
#$e i #on#lu!a la "re#e!ente.
access-times( tabili#e inter*alli !i tem"o in #ui il er*i/io ) abilitato
id( tringa #$e i!enti+i#a il er*i/io nei +ile !i log 4) utile ?uan!o lo teo er*i/io *iene +ornito in !ue .*erio-
ni. !i*ere. 2.e. "otremo a*ere un er*er >T2 interno e! uno eterno7
&em"io !i +ile !i #on+igura/ione Bet#Bxinet!.#on+(
# alcune definizioni di default:
defaults
{ instances = 60 # n.ro max di server dello stesso tipo contemporanei
log_type = SYSLOG authpriv # usa SYSLOG per il log degli eventi
log_on_success = HOST PID # visualizza indirizzo IP e ID per processo
log_on_failure = HOST # visualizza indirizzo IP
# paranoia: se non si specifica altrimenti,
# sbatto tutti fuori sempre e da subito:
only_from =
# se qui ^ sopra non c' nessun indirizzo nessuno pu accedere
}
# inclusione di tutti i file compresi nel directory indicato:
includedir /etc/xinetd.d
# ^ xinetd considerer tutti i file del directory /etc/xinetd.d come se
# fossero scritti qui sotto.
# fine del file /etc/xinetd.conf
20 Linux Networ5.o!t Eer. 0.8.8 2011-0;-08 ". ;: !i ;8
Ing. Gabriele MONTI 2001 F 2011 www.ingmonti.it
&em"io !i +ile !i #on+igura/ione !i un er*i/io 4+ile Bet#Bxinet!.!Btelnet7(
# description: The telnet server serves telnet sessions; it uses
# unencrypted username/password pairs for authentication.
service telnet
{
disable = yes
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
!ato #$e .!iable. ) .Ce. ?ueto er*i/io non *iene lan#iato automati#amente ?uan!o il itema "arte- ma olo !ietro
ri#$ieta e"li#ita.
L0uo !i xinet! ) ."ulito. e "iA i#uro- ma "uJ !ar luogo a! un !e#a!imento !elle "reta/ioni !i rete "er ?uei er*i/i #$e
ri#$ie!ono molte #onneioni- #ome tutti i er*er .im"ortanti. 4NTT2- HMN2 ..7. 2er ?ueto !i olito i er*er "iA .im-
"ortanti. ono #on+igurato in mo!o .tan!alone.- non ono "reenti +ra i !emoni #on+igurati in inet! e "er#iJ non *en-
gono !a inet! lan#iati a! ogni ri#$ieta. Al #ontrario- "artono una ola *olta al boot !el itema e ri"on!ono .in "ro-
"rio. alle ri#$iete !i #ollegamento T<2 ui loro "ort.
". ;8 !i ;8 2011-0;-08 20 Linux Networ5.o!t