Copyright © 2008 Red Hat, Inc.
Copyright © 2008 Red Hat, Inc. This material may only be distributed subject to the terms and conditions set forth in the Open Publication License, V1.0 or later with the restrictions noted below (the latest version of the OPL is presently available at http://www.opencontent.org/openpub/).
Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder.
Distribution of the work or derivative of the work in any standard (paper) book form for commercial purposes is prohibited unless prior permission is obtained from the copyright holder.
Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of Red Hat, Inc. in the United States and other countries.
All other trademarks referenced herein are the property of their respective owners.
The GPG fingerprint of the security@redhat.com key is:
CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
1801 Varsity Drive Raleigh, NC 27606-2072 USA Phone: +1 919 754 3700 Phone: 888 733 4281 Fax: +1 919 754 3701 PO Box 13588 Research Triangle Park, NC 27709 USA
January 2008
Diario delle Revisioni | ||||
---|---|---|---|---|
Revisione 5.2-11 | Wed May 21 2008 |
Michael Hideo Smith <mhideo@redhat.com>
|
||
|
This Deployment Guide documents relevant information regarding the deployment, configuration and administration of Red Hat Enterprise Linux 5.2.
Benvenuti alla Red Hat Enterprise Linux Deployment Guide.
La Red Hat Enterprise Linux Deployment Guide contiene le informazioni su come personalizzare il vostro sistema Red Hat Enterprise Linux in modo da far fronte alla vostre necessità. Se state cercando una guida completa per la configurazione e la personalizzazione del vostro sistema, questo è il manuale che fà per voi.
Questa guida presuppone una conoscenza di base del vostro sistema Red Hat Enterprise Linux. Se avete bisogno di assistenza durante l'installazione di Red Hat Enterprise Linux, consultate la Red Hat Enterprise Linux Installation Guide.
Se individuate degli errori nella Red Hat Enterprise Linux Deployment Guide, o se pensate di poter contribuire al miglioramento di questo manuale, inviate i vostri suggerimenti a Bugzilla (http://bugzilla.redhat.com/bugzilla/
) in relazione al componente Deployment_Guide
.
Se avete un suggerimento per migliorare il documento, cercate di essere il più specifici possibile. Indicate il paragrafo e alcune righe di testo, in modo da agevolare la ricerca dell'errore.
Dopo aver configurato la rete, questa sezione affronta gli argomenti relativi al networking, ad esempio come abilitare i login remoti, come condividere i file e le directory attraverso la rete, e come impostare un Web server.
Sommario
Con Red Hat Enterprise Linux, tutte le comunicazioni di rete avvengono fra interfacce software configurate e dispositivi di networking fisici collegati al sistema.
I file di configurazione delle interfacce di rete sono contenuti nella directory /etc/sysconfig/network-scripts
. Gli script utilizzati per attivare e disattivare le suddette interfacce di rete sono anch'essi presenti all'interno della stessa directory. Anche se il numero ed il tipo dei file dell'interfaccia può variare da sistema a sistema, sono presenti tre categorie di file in questa directory:
file di configurazione dell'interfaccia
script di controllo dell'interfaccia
file di funzione della rete
I file, in ognuno di questa categoria, lavorano insieme per abilitare vari dispositivi di rete.
Questo capitolo spiega il rapporto esistente tra questi file e come essi vengono usati.
Prima di trattare i file di configurazione delle interfacce, parleremo dei file di configurazione primari usati nella configurazione di rete. Comprendere l'importanza del ruolo di questi file nell'impostazione dello stack di rete, può essere utile per imparare a personalizzare al meglio un sistema Red Hat Enterprise Linux.
I file primary di configurazione di rete sono i seguenti:
/etc/hosts
Lo scopo principale di questo file è quello di risolvere gli hostname che non si possono risolvere in altro modo. Può anche essere utilizzato per risolvere gli hostname su piccole reti prive di server DNS. Indipendentemente dal tipo di rete su cui si trova il computer, questo file dovrebbe contenere una linea in cui è specificato l'indirizzo IP del dispositivo di loopback (127.0.0.1
) come localhost.localdomain
. Per maggiori informazioni, consultate la pagina man hosts
.
/etc/resolv.conf
Questo file specifica l'indirizzo IP dei server DNS e il dominio di ricerca. Se non configurato diversamente, questo file viene popolato dagli script di inizializzazione della rete. Per ulteriori informazioni su questo file, consultate la pagina man resolv.conf
.
/etc/sysconfig/network-scripts/ifcfg-<interface-name>
Per ogni interfaccia di rete, vi è uno script di configurazione dell'interfaccia corrispondente. Ognuno di questi file fornisce informazioni specifiche in merito a una determinata interfaccia di rete. Per ulteriori dettagli su questo tipo di file e sulle direttive che accetta, consultate Sezione 1.2, «File di configurazione delle interfacce».
La directory /etc/sysconfig/networking/
viene usata da Tool di gestione della rete (system-config-network
) e il suo contenuto non dovrebbe essere modificato manualmente. È fortemente consigliato l'utilizzo di un solo metodo per la configurazione di rete per evitare così di cancellare la configurazione.
I file di configurazione delle interfacce controllano il funzionamento di un determinato dispositivo di interfaccia di rete. All'avvio del sistema, Red Hat Linux utilizza i file per determinare quali interfacce attivare automaticamente e come configurarle in modo corretto. Solitamente, i file sono chiamati ifcfg-
, dove <nome>
<nome>
si riferisce al nome del dispositivo controllato dal file di configurazione.
Uno dei file più comuni è ifcfg-eth0
, il quale controlla la prima scheda di interfaccia di rete o NIC nel sistema. Un sistema con più schede NIC contiene diversi file ifcfg-eth
numerati. Poiché ogni dispositivo ha il proprio file di configurazione, l'utente può controllare da vicino il funzionamento di ogni singola interfaccia.
Di seguito viene riportato un esempio di un file ifcfg-eth0
per un sistema che utilizza un indirizzo IP fisso:
DEVICE=eth0 BOOTPROTO=none ONBOOT=yes NETWORK=10.0.1.0 NETMASK=255.255.255.0 IPADDR=10.0.1.27 USERCTL=no
I valori richiesti in un file di configurazione dell'interfaccia, possono variare in funzione di altri valori. Per esempio, il file ifcfg-eth0
di un'interfaccia che utilizza DHCP è piuttosto diverso, a causa del fatto che le informazioni IP sono ora fornite dal server DHCP:
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
Potete anche modificare manualmente il file di configurazione per una determinata interfaccia di rete.
In ogni file di configurazione delle interfacce sono presenti i valori seguenti:
BONDING_OPTS=<parameters>
sets the configuration parameters for the bonding device, and is used in /etc/sysconfig/network-scripts/ifcfg-bond
(see Sezione 1.2.3, «Interfacce Channel Bonding»). These parameters are identical to those used for bonding devices in <N>
/sys/class/net/
, and the module parameters for the bonding driver as described in <bonding device>
/bondingbonding
Module Directives.
Questo metodo di configurazione viene utilizzato in modo tale che dispositivi bonding multipli possono presentare diverse configurazioni. Se utilizzate BONDING_OPTS
in ifcfg-
, non usate <name>
/etc/modprobe.conf
per specificare le opzioni per il dispositivo bonding.
BOOTPROTO=<protocol>
dove
è uno di questi:
<protocol>
none
— non utilizzare alcun protocollo di avvio.
bootp
— utilizzare il protocollo BOOTP.
dhcp
— utilizzare il protocollo DHCP. utilizzare il protocollo DHCP.
BROADCAST=<address>
dove
è l'indirizzo broadcast. Questa direttiva è stata disapprovata, in quanto il valore viene calcolato automaticamente con <indirizzo>
ifcalc
.
DEVICE=<name>
dove
è il nome del dispositivo fisico (tranne per i dispositivi PPP allocati dinamicamente, dove invece corrisponde al nome logico).
<name>
DHCP_HOSTNAME
Usare questa opzione solo se il server DHCP richiede al client di specificare un hostname prima di ricevere un indirizzo IP.
DNS{1,2}
=<address>
dove
è l'indirizzo di un server dei nomi da inserire in <address>
/etc/resolv.conf
qualora la direttiva PEERDNS
sia impostata su yes
.
ETHTOOL_OPTS=<options>
dove
rappresenta qualsiasi delle opzioni specifiche al dispositivo supportato da <options>
ethtool
. Per esempio, se desiderate forzare 100Mb, duplex completo:
ETHTOOL_OPTS="autoneg off speed 100 duplex full"
Instead of a custom initscript, use ETHTOOL_OPTS
to set the interface speed and duplex settings. Custom initscripts run outside of the network init script lead to unpredictable results during a post-boot network service restart.
Per modificare le impostazioni duplex o la velocità, è quasi sempre necessario disabilitare autonegotiation con l'opzione autoneg off
. Tale operazione deve essere eseguita per prima, poichè le entry dell'opzione seguono l'ordine prestabilito.
GATEWAY=<address>
dove
corrisponde all'indirizzo IP del router della rete o del dispositivo gateway (se presente).
<address>
HWADDR=<MAC-address>
dove <MAC-address>
è l'indirizzo hardware del dispositivo Ethernet nella forma di AA:BB:CC:DD:EE:FF
. Questa direttiva è utile per le macchine con NIC multipli, per assicurare l'assegnazione corretta dei nomi del dispositivo alle interfacce, senza dare importanza all'ordine di caricamento configurato per ogni modulo NIC. Questa direttiva non deve essere usata insieme con MACADDR
.
IPADDR=<address>
dove
corrisponde all'indirizzo IP.
<address>
MACADDR=<MAC-address>
dove <MAC-address>
è l'indirizzo hardware del dispositivo Ethernet nella forma di AA:BB:CC:DD:EE:FF
. Questa direttiva viene usata per sovrascrivere l'altra assegnata al NIC fisico. Questa direttiva non dovrebbe essere assegnata insieme con HWADDR
.
MASTER=<bond-interface>
dove
è l'interfaccia del channel bonding alla quale è collegata l'interfaccia Ethernet.
<bond-interface>
Questa direttiva è usata insieme con la direttiva SLAVE
.
Consultate Sezione 1.2.3, «Interfacce Channel Bonding» per maggiori informazioni sulle interfacce channel bonding.
NETMASK=<mask>
dove
è il valore della maschera di rete.
<mask>
NETWORK=<address>
dove
è l'indirizzo della rete. Questa direttiva è stata deprecata, in quanto il valore viene calcolato automaticamente con <address>
ifcalc
.
ONBOOT=<answer>
dove
è una delle seguenti:
<answer>
yes
— il dispositivo dovrebbe essere attivato all'avvio.
no
— il dispositivo non dovrebbe essere attivato all'avvio.
PEERDNS=<answer>
dove
è una delle seguenti:
<answer>
yes
— Modifica /etc/resolv.conf
se la direttiva DNS è stata impostata. Se state utilizzando DHCP, allora l'opzione yes
è quella di default.
no
— Non modificare /etc/resolv.conf
.
SLAVE=<bond-interface>
dove
è una dei seguenti:
<bond-interface>
yes
— Questo dispositivo è controllato dall'interfaccia channel bonding specificata nella direttiva MASTER
.
no
— Questo dispositivo non è controllato dall'interfaccia channel bonding specificata nella direttiva MASTER
.
Questa direttiva è usata insieme con la direttiva MASTER
.
Consultate Sezione 1.2.3, «Interfacce Channel Bonding» per maggiori informazioni sulle interfacce channel bonding.
SRCADDR=<address>
dove
è l'indirizzo IP sorgente specificato per i pacchetti in uscita.
<address>
USERCTL=<answer>
dove
è una delle seguenti:
<answer>
yes
— gli utenti non root sono autorizzati a controllare il dispositivo.
no
— gli utenti non root non sono autorizzati a controllare il dispositivo.
Il seguente rappresenta il file ifcfg
per un collegamento IPsec network-to-network per il LAN A. Il nome unico per identificare il collegamento in questo esempio è ipsec1
, in questo modo il file risultante viene chiamato /etc/sysconfig/network-scripts/ifcfg-ipsec1
.
TYPE=IPsec ONBOOT=yes IKE_METHOD=PSK SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X
Nell'esempio sopra riportato, X.X.X.X
rappresenta l'indirizzo IP publicly routable del router IPsec di destinazione.
Di seguito viene riportato un elenco in ogni file di configurazione delle interfacce sono presenti i valori seguenti:
DST=<address>
dove <address>
è l'indirizzo IP del router o dell'host di destinazione di IPsec. Esso viene usato per entrambe le configurazioni IPsec host-to-host e network-to-network.
DSTNET=<network>
dove <network>
è l'indirizzo di rete della rete di destinazione di IPsec, e viene usato solo per i collegamenti IPsec network-to-network.
SRC=<address>
dove <address>
è l'indirizzo IP del router o dell'host sorgente di IPsec. Questa impostazione è facoltativa e viene usata solo per i collegamenti IPsec host-to-host.
SRCNET=<network>
dove <tnetwork>
è l'indirizzo di rete della rete sorgente IPsec. Viene usato solo per collegamenti IPsec network-to-network.
TYPE=<interface-type>
dove <interface-type>
è IPSEC
. Entrambe le applicazioni fanno parte del pacchetto ipsec-tools
.
Se avete utilizzato la cifratura manuale della chiave con IPsec, consultate /usr/share/doc/initscripts-
(sostituite <version-number>
/sysconfig.txt<version-number>
con la versione del pacchetto initscripts
installato) per i parametri di configurazione.
Il demone di gestione della chiave IKEv1 di racoon
tratta e configura un insieme di parametri per IPSec. È in grado di utilizzare delle chiavi pre-condivise, delle firme RSA, o GSS-API. Se viene usato racoon
per gestire automaticamente la chiave di codifica, sono necessarie le seguenti opzioni:
IKE_METHOD=<encryption-method>
dove <encryption-method>
può essere PSK
, X509
, o GSSAPI
. Se viene specificato PSK
, anche il parametro IKE_PSK
deve essere impostato. Se si specifica X509
, bisogna impostare il parametro IKE_CERTFILE
.
IKE_PSK=<shared-key>
dove <shared-key>
è un valore segreto condiviso per il metodo PSK (chiavi precondivise).
IKE_CERTFILE=<cert-file>
dove <cert-file>
è un file valido del certificato X.509
per l'host.
IKE_PEER_CERTFILE=<cert-file>
dove <cert-file>
è un file valido del certificato X.509
per l'host remoto.
IKE_DNSSEC=<answer>
dove <answer>
è yes
. Il demone racoon
riprende il certificato X.509
dell'host remoto tramite DNS. Se viene specificato un IKE_PEER_CERTFILE
, non includere questo parametro.
Per maggiori informazioni sugli algoritmi disponibili per IPsec, consultare la pagina man setkey
. Per maggiori informazioni su racoon
, consultare le pagine man racoon
e racoon.conf
.
Red Hat Enterprise Linux permette agli amministratori di unire le interfacce di rete multiple insieme in un singolo canale usando il modulo del kernel bonding
e una interfaccia di rete speciale chiamata interfaccia channel bonding. Il channel bonding permette a due o più interfacce di agire come se fossero una unica interfaccia, aumentando simultaneamente la larghezza della banda fornendo così una ridondanza.
Per creare una interfaccia channel bonding, creare un file nella directory /etc/sysconfig/network-scripts/
chiamato ifcfg-bond
, sostituendo <N>
<N>
con il numero per l'interfaccia, come ad esempio 0
.
Il contenuto del file può essere identico a qualsiasi tipo di interfaccia alla quale ci si sta legando, come ad esempio una interfaccia Ethernet. La sola differenza è che la direttiva DEVICE=
deve essere bond
, sostituendo <N>
<N>
con il numero per l'interfaccia.
Il seguente è un esempio del file di configurazione channel bonding:
DEVICE=bond0 BONDING_OPTS="mode=1 miimon=500" BOOTPROTO=none ONBOOT=yes NETWORK=10.0.1.0 NETMASK=255.255.255.0 IPADDR=10.0.1.27 USERCTL=no
Dopo aver creato l'interfaccia channel bonding, le interfacce di rete da unire devono essere configurate aggiungendo le direttive MASTER=
e SLAVE=
ai loro file di configurazione. I file di configurazione per ogni interfaccia channel bonded, possono essere quasi identici.
Per esempio, se il channel bonding unisce due interfacce Ethernet, sia eth0
che eth1
potrebbero somigliare al seguente esempio:
DEVICE=eth<N>
BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes USERCTL=no
In questo esempio, sostituire <N>
con il valore numerico per l'interfaccia.
Due tipi di file di configurazione delle interfacce meno usati sono alias e clone.
I file di configurazione dell'interfaccia Alias, i quali vengono usati principalmente per unire gli indirizzi multipli ad una singola interfaccia, usano, per il naming, il seguente schema:ifcfg-
.
<if-name>
:<alias-value>
Per esempio, un file ifcfg-eth0:0
può essere configurato in modo da specificare DEVICE=eth0:0
, ed un indirizzo IP statico 10.0.0.2., servendo come alias di una interfaccia Ethernet già configurata per ricevere le proprie informazioni IP tramite DHCP in ifcfg-eth0
. Con questa configurazione, il dispositivo eth0
è legato ad un indirizzo IP dinamico, ma la stessa scheda di rete fisica può ricevere alcune richieste tramite l'indirizzo IP fisso 10.0.0.2.
Le interfacce alias non supportano DHCP.
Un file clone di configurazione dell'interfaccia, dovrebbe usare il seguente formato, ifcfg-
. Mentre un file alias abilita indirizzi multipli per una interfaccia già esistente, un file clone viene usato per specificare le opzioni aggiuntive per una interfaccia. Per esempio, una interfaccia Ethernet DHCP standard chiamata <if-name>
-<clone-name>
eth0
, potrebbe somigliare a quanto di seguito riportato:
DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp
Poichè il valore di default per la direttiva USERCTL
è no
, se non specificata, gli utenti non possono attivare e disattivare l'interfaccia. Per dare agli utenti la possibilità di controllare l'interfaccia,create un clone copiando ifcfg-eth0
in ifcfg-eth0-user
e aggiungendo la riga seguente a ifcfg-eth0- user
:
USERCTL=yes
In questo modo l'utente attiva l'interfaccia eth0
con il comando ifup eth0-user
, perchè le opzioni di configurazione di ifcfg-eth0
e ifcfg-eth0-user
vengono combinate. L'esempio riportato è molto semplice, questo metodo può essere usato con varie opzioni e interfacce.
Se vi collegate ad Internet tramite una connessione dialup, l'interfaccia avrà bisogno di un file di configurazione.
I file dell'interfaccia PPP vengono nominati utilizzando il seguente formato:
ifcfg-ppp<X>
dove <X>
è un numero unico corrispondente ad una interfaccia specifica.
Il file di configurazione dell'interfaccia PPP viene creato automaticamente quando si utilizzano wvdial
, il Tool di gestione della rete o Kppp per creare un account dialup. È possibile creare e modificare questo file manualmente.
I file ifcfg-ppp0
hanno all'incirca questo aspetto:
DEVICE=ppp0 NAME=test WVDIALSECT=test MODEMPORT=/dev/modem LINESPEED=115200 PAPNAME=test USERCTL=true ONBOOT=no PERSIST=no DEFROUTE=yes PEERDNS=yes DEMAND=no IDLETIMEOUT=600
SLIP (Serial Line Internet Protocol) è un'altra interfaccia di dialup, sebbene il suo utilizzo sia meno frequente. I file SLIP hanno nomi di file di configurazione delle interfacce quali ifcfg-sl0
.
Oltre opzioni che possono essere utilizzate in questi file includono:
DEFROUTE=<answer>
dove
è una delle seguenti:
<answer>
yes
— imposta l'interfaccia come quella di default.
no
— non imposta l'interfaccia come quella di default.
DEMAND=<answer>
dove
è una delle seguenti:
<answer>
yes
— Questa interfaccia consente a pppd
di avviare una connessione quando qualcuno tenta di usarlo.
no
— per quest'interfaccia deve essere stabilita una connessione in modo manuale.
IDLETIMEOUT=<value>
dove
corrisponde al numero di secondi di inattività che precede lo scollegamento dell'interfaccia.
<value>
INITSTRING=<string>
dove
rappresenta la stringa di inizializzazione trasmessa al dispositivo del modem. L'opzione èessenzialmente usata con interfacce SLIP.
<string>
LINESPEED=<value>
dove
è la frequenza di baud (baud rate) del dispositivo. I valori standard possibili sono <value>
57600
, 38400
, 19200
, e 9600
.
MODEMPORT=<device>
dove
corrisponde al nome del dispositivo seriale utilizzato per stabilire la connessione per l'interfaccia.
<device>
MTU=<value>
dove
è il parametro Maximum Transfer Unit (MTU) dell'interfaccia. Il parametro MTU si riferisce al numero massimo di byte di dati che una struttura può trasportare, senza contare le sue informazioni di testo. In alcune situazioni di dialup, impostando il parametro su di un valore di <value>
576
ne risulta una perdita di pochi pacchetti con un leggero miglioramento sul rendimento per un collegamento.
NAME=<name>
dove
è il riferimento al titolo attribuito a un insieme di configurazioni di connessione dialup.
<name>
PAPNAME=<name>
dove
è il nome utente assegnato durante lo scambio di Password Authentication Protocol(PAP), che avviene per abilitare i collegamenti ad un sistema remoto.
<name>
PERSIST=<answer>
dove
è una delle seguenti:
<answer>
yes
—l'interfaccia deve rimanere sempre attiva, anche dopo lo scollegamento del modem.
no
— l'interfaccia non deve rimanere sempre attiva.
REMIP=<address>
dove
è l'indirizzo IP del sistema remoto. Solitamente non è specificato.
<address>
WVDIALSECT=<name>
dove
associa l'interfaccia alla configurazione del dialer in <name>
/etc/wvdial.conf
, che contiene il numero telefonico da comporre e altre informazioni importanti per l'interfaccia.
Ecco riportati i file di configurazione più utilizzati per le interfacce:
ifcfg-lo
Una interfaccia di loopback locale utilizzata per operazioni di controllo, e in molteplici applicazioni che richiedono un indirizzo IP in grado di indicare lo stesso sistema. Qualunque dato trasferito al dispositivo loopback, viene immediatamente ritornato al livello di rete dell'host.
Non modificate mai lo script dell'interfaccia loopback /etc/sysconfig/network-scripts/ifcfg-lo
manualmente. Facendo questo, il sistema operativo potrebbe non funzionare correttamente.
ifcfg-irlan0
Una interfaccia ad infrarossi consente il passaggio di informazioni tra dispositivi, come un laptop e una stampante, attraverso una connessione a infrarossi che funziona in modo simile ad un dispositivo Ethernet, ad eccezione del fatto che normalmente si verifica mediante una connessione peer-to-peer.
ifcfg-plip0
Una connessione Parallel Line Interface Protocol (PLIP) funziona praticamente allo stesso modo di un dispositivo Ethernet, ad eccezione di un utilizzo di una porta parallela.
ifcfg-tr0
A causa di una grande diffusione di Ethernet, le topologie Token Ring non sono così diffuse sulle Local Area Networks (LAN) come erano una volta.
Gli script di controllo delle interfacce attivano e disattivano le interfacce di sistema. Esistono due script primari di controllo delle interfacce, /sbin/ifdown
e /sbin/ifup
, che usano altri script di controllo contenuti nella directory /etc/sysconfig/network-scripts
.
Gli script delle interfacce ifdown
e ifup
sono link simbolici per gli script contenuti nella directory /sbin
. Quando viene chiamato uno di questi script, è necessario specificare un valore dell'interfaccia come ad esempio:
ifup eth0
Gli script delle interfacce ifdown
e ifup
sono i soli script che l'utente dovrebbe usare per attivare e disattivare le interfacce di rete.
I seguenti script sono usati solo come riferimento.
Due file usati per effettuare diversi compiti di inizializzazione della rete durante il processo di attivazione di una interfaccia di rete sono /etc/rc.d/init.d/functions
e /etc/sysconfig/network-scripts/network-functions
. Consultate Sezione 1.5, «File di funzione di rete» per maggiori informazioni.
Dopo aver verificato se è stata specificata una interfaccia e se l'utente che esegue la richiesta ha il permesso di controllare l'interfaccia, viene chiamato lo script idoneo che, in pratica, si occupa di attivare e disattivare l'interfaccia. Di seguito sono elencati gli script di controllo delle interfacce trovati all'interno della directory /etc/sysconfig/network-scripts/
:
ifup-aliases
Configura gli alias IP dai file di configurazione delle interfacce quando più indirizzi IP sono associati con una interfaccia.
ifup-ippp
e ifdown-ippp
Attiva e disattiva le interfacce ISDN.
ifup-ipsec
e ifdown-ipsec
Attiva e disattiva le interfacce IPsec.
ifup-ipv6
e ifdown-ipv6
Attiva e disattiva le interfacce IPv6.
ifup-ipx
Attiva l'interfaccia IPX.
ifup-plip
Attiva l'interfaccia PLIP.
ifup-plusb
Attiva un'interfaccia USB per le connessioni di rete.
ifup-post
e ifdown-post
Contiene comandi da eseguire dopo aver abilitato o disabilitato una interfaccia.
ifup-ppp
e ifdown-ppp
Attiva e disattiva un'interfaccia PPP.
ifup-routes
Aggiunge instradamenti statici per un particolare dispositivo quando la sua interfaccia viene attivata.
ifdown-sit
e ifup-sit
Contiene le chiamate della funzione relative all'attivazione e alla disattivazione del tunnel IPv6 all'interno di una connessione IPv4.
ifup-sl
e ifdown-sl
Attiva e disattiva un'interfaccia SLIP.
ifup-wireless
Attiva un'interfaccia wireless.
Ricordate che in seguito alla rimozione o alla modifica degli script nella directory /etc/sysconfig/network-scripts/
varie connessioni dell'interfaccia, possono agire in modo inaspettato. Pertanto solo utenti esperti possono modificare gli script relativi all'interfaccia della rete.
Il modo più facile per manipolare tutti gli script di rete contemporaneamente è di usare il comando /sbin/service
sul servizio di rete (/etc/rc.d/init.d/network
), come illustrato nel seguente comando:
/sbin/service network <action>
In questo esempio, <azione>
può essere start
, stop
, o restart
.
Per visualizzare un'elenco dei dispositivi configurati e che sono attualmente attivi sulle interfacce di rete, utilizzate il comando:
/sbin/service network status
Routing will be configured on routing devices, therefore it should not be necessary to configure static routes on Red Hat Enterprise Linux servers or clients. However, if static routes are required they can be configured for each interface. This can be useful if you have multiple interfaces in different subnets. Use the route
command to display the IP routing table.
Static route configuration is stored in a /etc/sysconfig/network-scripts/route-
file. For example, static routes for the eth0 interface would be stored in the interface
/etc/sysconfig/network-scripts/route-eth0
file. The route-
file has two formats: IP command arguments and network/netmask directives.
interface
Define a default gateway on the first line. This is only required if the default gateway is not set via DHCP:
defaultX.X.X.X
devinterface
X.X.X.X
is the IP address of the default gateway. The interface
is the interface that is connected to, or can reach, the default gateway.
Define a static route. Each line is parsed as an individual route:
X.X.X.X/X
viaX.X.X.X
devinterface
X.X.X.X/X
is the network number and netmask for the static route. X.X.X.X
and interface
are the IP address and interface for the default gateway respectively. The X.X.X.X
address does not have to be the default gateway IP address. In most cases, X.X.X.X
will be an IP address in a different subnet, and interface
will be the interface that is connected to, or can reach, that subnet. Add as many static routes as required.
The following is a sample route-eth0
file using the IP command arguments format. The default gateway is 192.168.0.1, interface eth0. The two static routes are for the 10.10.10.0/24 and 172.16.1.0/24 networks:
default 192.168.0.1 dev eth0 10.10.10.0/24 via 192.168.0.1 dev eth0 172.16.1.0/24 via 192.168.0.1 dev eth0
Static routes should only be configured for other subnets. The above example is not necessary, since packets going to the 10.10.10.0/24 and 172.16.1.0/24 networks will use the default gateway anyway. Below is an example of setting static routes to a different subnet, on a machine in a 192.168.0.0/24 subnet. The example machine has an eth0 interface in the 192.168.0.0/24 subnet, and an eth1 interface (10.10.10.1) in the 10.10.10.0/24 subnet:
10.10.10.0/24 via 10.10.10.1 dev eth1
If the default gateway is already assigned from DHCP, the IP command arguments format can cause one of two errors during start-up, or when bringing up an interface from the down state using the ifup
command: "RTNETLINK answers: File exists" or 'Error: either "to" is a duplicate, or "X.X.X.X
" is a garbage.', where X.X.X.X
is the gateway, or a different IP address. These errors can also occur if you have another route to another network using the default gateway. Both of these errors are safe to ignore.
You can also use the network/netmask directives format for route-
files. The following is a template for the network/netmask format, with instructions following afterwards:
interface
ADDRESS0=X.X.X.X
NETMASK0=X.X.X.X
GATEWAY0=X.X.X.X
ADDRESS0=
is the network number for the static route.
X.X.X.X
NETMASK0=
is the netmask for the network number defined with X.X.X.X
ADDRESS0=
.
X.X.X.X
GATEWAY0=
is the default gateway, or an IP address that can be used to reach X.X.X.X
ADDRESS0=
X.X.X.X
The following is a sample route-eth0
file using the network/netmask directives format. The default gateway is 192.168.0.1, interface eth0. The two static routes are for the 10.10.10.0/24 and 172.16.1.0/24 networks. However, as mentioned before, this example is not necessary as the 10.10.10.0/24 and 172.16.1.0/24 networks would use the default gateway anyway:
ADDRESS0=10.10.10.0 NETMASK0=255.255.255.0 GATEWAY0=192.168.0.1 ADDRESS1=172.16.1.0 NETMASK1=255.255.255.0 GATEWAY1=192.168.0.1
Subsequent static routes must be numbered sequentially, and must not skip any values. For example, ADDRESS0
, ADDRESS1
, ADDRESS2
, and so on.
Below is an example of setting static routes to a different subnet, on a machine in the 192.168.0.0/24 subnet. The example machine has an eth0 interface in the 192.168.0.0/24 subnet, and an eth1 interface (10.10.10.1) in the 10.10.10.0/24 subnet:
ADDRESS0=10.10.10.0 NETMASK0=255.255.255.0 GATEWAY0=10.10.10.1
DHCP should assign these settings automatically, therefore it should not be necessary to configure static routes on Red Hat Enterprise Linux servers or clients.
Red Hat Enterprise Linux utilizza diversi file che contengono funzioni comuni importanti, usati per attivare e disattivare le interfacce. Invece di forzare ogni file di controllo delle interfacce a contenere queste funzioni, esse sono riunite in alcuni file che possono essere utilizzati quando necessario.
Il file /etc/sysconfig/network-scripts/network-functions
contiene le funzioni IPv4 più utilizzate, utili per molti script di controllo delle interfacce. Queste funzioni consentono di contattare i programmi in esecuzione che hanno richiesto informazioni sui cambiamenti dello stato in una interfaccia, impostare gli hostname, trovare un dispositivo gateway, controllare se un dispositivo è attivo o inattivo e aggiungere un instradamento di default.
Poichè le funzioni richieste per le interfacce IPv6 sono diverse da quelle delle interfacce IPv4, è disponibile un file /etc/sysconfig/network-scripts/network-functions-ipv6
in grado di contenere tutte queste informazioni. Le funzioni in questi file possono configurare e cancellare gli instradamenti IPv6 statici, aggiungono e rimuovono i tunnel, aggiungono e rimuovono indirizzi IPv6 da una interfaccia e verificano l'esistenza di un indirizzo IPv6 in una interfaccia.
Le seguenti risorse spiegano in modo più dettagliato le interfacce di rete.
/usr/share/doc/initscripts-<version>
/sysconfig.txt
Una guida alle opzioni disponibili per i file di configurazione della rete, comprese le opzioni IPv6, non trattate in questo capitolo.
/usr/share/doc/iproute-<version>
/ip-cref.ps
Questo file contiene una ricca fonte di informazione sul comando ip
, che può essere utilizzato anche per manipolare le tabelle di instradamento. Per consultare questo file, utilizzate ggvo kghostview.
Per poter comunicare tra loro, i computer avranno bisogno di un collegamento di rete. Ciò è reso possibile utilizzando un sistema operativo in grado di riconoscere una scheda di interfaccia (come ad esempio Ethernet, modem ISDN, o token ring) e di configurarla in modo da connettersi alla rete.
Tool di gestione della rete permette di configurare le seguentiinterfacce di rete:
Ethernet
ISDN
modem
xDSL
token ring
CIPE
dispositivi wireless
Può anche essere usato per configurare i collegamenti IPsec, gestire le impostazioni DNS, e gestire il file /etc/hosts
usato per conservare gli hostname aggiuntivi e le combinazioni dell'indirizzo IP.
Per utilizzare Tool di gestione della rete, dovete avere i privilegi root. Per avviare l'applicazione selezionata andate su Applications (the main menu on the panel) => Impostazioni di sistema => Rete oppure digitate il comando redhat-config-network
al prompt della shell (per esempio, in un XTerm o in un terminale GNOME). Se digitate il comando, viene mostrata la versione grafica se X é in esecuzione, altrimenti verrá visualizzata la versione di testo.
Per usare la versione a linea di comando, eseguire il comando system-config-network-cmd --help
come utente root per visualizzare tutte le opzioni.
Consultate l'Hardware Compatibility List di Red Hat sul sito (http://hardware.redhat.com/hcl/) per verificare se Red Hat Enterprise Linux è in grado di supportare il vostro dispositivo hardware.
Per configurare un collegamento di rete con Tool di gestione della rete, seguite le fasi di seguito riportate:
Aggiungete un dispositivo di rete associato all'hardware fisico.
Se non è già presente, aggiungete il dispositivo hardware fisico all'elenco hardware.
Configurate gli hostname e le impostazioni DNS.
Configurate gli hostname e le impostazioni DNS.
Questo capitolo illustra le procedure per ciascun tipo di connessione di rete.
Per stabilire una connessione Ethernet, sono necessari una scheda di interfaccia (NIC), un cavo di rete (in genere un cavo CAT5) e una rete cui connettersi. Poiché esistono diverse velocità di connessione, assicuratevi la vostra NIC sia compatibile con la rete cui desiderate connettervi.
Per aggiungere una connessione Ethernet, eseguite le seguenti procedure:
Fate clic sulla scheda Dispositivi.
Fate clic sul pulsante Nuovosulla barra degli strumenti.
Selezionate la voce Ethernet connection dall'elenco Tipo di dispositivo, e fate clic su Forward.
Se avete già aggiunto la scheda di interfaccia di rete all'elenco hardware, selezionate la voce corrispondente dall'elenco Ethernet card. In caso contrario, selezionate Other Ethernet Card per aggiungere il dispositivo hardware.
Normalmente, il programma di installazione individua automaticamente i dispositivi Ethernet supportati e vi chiede di configurarli. Se durante l'installazione avete configurato dei dispositivi Ethernet, questi verranno visualizzati nell'elenco hardware all'interno della scheda Hardware.
Se avete selezionato Altra scheda Ethernet, visualizzerete la finestra Seleziona adattatore Ethernet. Selezionate il produttore e il modello della scheda Ethernet, quindi il nome del dispositivo. Se si tratta della prima scheda Ethernet del sistema, selezionate eth0 come nome, se invece risulta essere la seconda selezionate eth1, e così via. Il Tool di gestione della rete vi consente anche di configurare le risorse per la NIC. Fate clic su Avanti per continuare.
Nella finestra Configura impostazioni di rete come riportato in Figura 2.2, «Impostazioni Ethernet», scegliete tra DHCP ed un indirizzo IP statico. Non specificate l'hostname se il dispositivo riceve un indirizzo IP diverso ogni qualvolta viene stabilita la connessione di rete. Fate clic su Avanti per continuare.
Fate clic su Applica nella pagina Create Ethernet Device.
Dopo aver configurato il dispositivo Ethernet, esso verrà visualizzato nell'elenco del dispositivo come mostrato dalla Figura 2.3, «Dispositivo Ethernet».
Assicurarsi di selezionare File => Salva per cambiare i cambiamenti.
Dopo aver aggiunto il dispositivo Ethernet, è possibile modificarne le impostazioni selezionando la voce relativa dall'elenco dispositivi e cliccando su Modifica. Per esempio, quando aggiungete il dispositivo, questo verrà lanciato di default all'avvio del sistema. Per cambiare questa impostazione, scegliere di modificare il dispositivo, modificare il valore Attivare il dispositivo quando si avvia il computer, e salvare i cambiamenti.
Quando viene aggiunto un dispositivo, esso non viene attivato immediatamente, come mostrato dal proprio stato Inattivo. Per attivarlo, selezionarlo dall'elenco e fate clic sul pulsante Attivare. Se il sistema é configurato per attivare il dispositivo al momento dell'avvio del computer (di default), questa fase non deve essere eseguita.
Associando più di un dispositivo con una scheda Ethernet, i dispositivi seguenti sono alias del dispositivo. Un alias del dispositivo vi permette di impostare dispositivi virtuali multipli per un singolo dispositivo fisico, conferendo così al dispositivo fisico stesso piú di un indirizzo IP. Per esempio è possible configurare un dispositivo eth1 ed un dispositivo eth1:1. Per maggiori informazioni consultate Sezione 2.11, «Alias per dispositivi».
La connessione ISDN è una connessione Internet stabilita mediante una scheda modem ISDN attraverso una speciale linea telefonica installata dalla società dei telefoni. Questo tipo di connessione è diffuso in Europa.
Per aggiungere una connessione ISDN eseguite le seguenti procedure:
Fate clic sulla scheda Dispositivi.
Fate clic sul pulsante Nuovosulla barra degli strumenti.
Nell'elenco Tipo di dispositivo, selezionate ISDN connection e fate clic su Forward.
Selezionate l'adattatore ISDN dal menu a tendina. Configurate poi le risorse di sistema e il Protocollo Canale D. Fate clic su Forward per continuare.
Selezionate l'ISP, se presente nell'elenco preconfigurato. In caso contrario, inserite le informazioni richieste relative al vostro account con il provider. Se non conoscete i valori richiesti, contattate direttamente l'ISP. Fate clic su Forward.
Nella finestra Impostazioni IP, selezionate Modalitá Encapsulation, e se ottenere un indirizzo IP tramite DHCP o impostarne uno in modo statico. Fate clic su Avanti quando avete terminato.
Nella pagina Create Dialup Connection, fate clic su Applica.
Dopo aver terminato la configurazione del dispositivo ISDN, esso comparirà nell'elenco del dispositivo come un dispositivo di tipo ISDN come mostra la Figura 2.5, «Dispositivo ISDN».
Assicurarsi di selezionare File => Salva per cambiare i cambiamenti.
Una volta aggiunto il dispositivo ISDN, è possibile modificarne le impostazioni selezionando la voce relativa dall'elenco dispositivi e facendo clic su Modifica. Per esempio, quando aggiungete il dispositivo, questo verrà lanciato di default all'avvio del sistema, ma cambiando la sua configurazione potete modificarne l'impostazione. Potete intervenire anche in merito a compressione, opzioni PPP, nome di login, password e altro ancora.
Quando viene aggiunto un dispositivo, esso non viene attivato immediatamente, come mostrato dal proprio stato Inattivo. Per attivarlo, selezionarlo dall'elenco e fate clic sul pulsante Attivare. Se il sistema é configurato per attivare il dispositivo al momento dell'avvio del computer (di default), questa fase non deve essere eseguita.
Il modem consente di configurare la connessione Internet attraverso una linea telefonica attiva. È necessario disporre di un account con un provider di servizi Internet (ISP) (definito anche account dial-up).
Per aggiungere una connessione via modem, eseguite la seguente procedura:
Fate clic sulla scheda Dispositivi.
Fate clic sul pulsante Nuovosulla barra degli strumenti.
Nell'elenco Tipo di dispositivo, selezionate Modem connection e fate clic su Forward.
Se nell'elenco modem (alla voce Hardware) è presente un modem già configurato, il Tool di gestione della rete presume vogliate utilizzarlo per stabilire una connessione via modem. In caso contrario, andrà alla ricerca di qualsiasi modem installato sul sistema. Questa operazione potrebbe richiedere del tempo. Se il modem non viene trovato, viene visualizzato un messaggio avvisandovi che le impostazioni mostrate non sono valori trovati dalla ricerca.
Dopo aver eseguito una prova comparirà la finestra in Figura 2.6, «Impostazioni modem».
Configurate la frequenza baud, il controllo di flusso e il volume del modem. Se non conoscete questi valori, accettate quelli predefiniti. Se non usate la composizione a toni, deselezionate la casella di spunta corrispondente. Fate clic su Forward.
Selezionate l'ISP, se presente nell'elenco preconfigurato. In caso contrario, inserite le informazioni richieste relative al vostro account con il provider. Se non conoscete i valori richiesti, contattate direttamente l'ISP. Fate clic su Forward.
Sulla pagina Impostazioni IP, scegliete se ottenere un indirizzo IP automaticamente oppure impostarne uno in modo statico. Fate clic su Avanti quando avete terminato.
Nella pagina Create Dialup Connection, fate clic su Applica.
Terminata la configurazione del dispositivo modem, esso comparirà nell'elenco dispositivi con la tipologia Modem
come mostrato nella Figura 2.7, «Dispositivo modem».
Assicurarsi di selezionare File => Salva per cambiare i cambiamenti.
Una volta aggiunto il dispositivo modem, è possibile modificarne le impostazioni selezionando la voce relativa dall'elenco dispositivi e facendo clic su Modifica. Per esempio, quando aggiungete il dispositivo, questo verrà lanciato di default all'avvio del sistema, ma cambiando la sua configurazione potete modificarne l'impostazione. Potete intervenire anche in merito a compressione, opzioni PPP, nome di login, password e altro ancora.
Quando viene aggiunto un dispositivo, esso non viene attivato immediatamente, come mostrato dal proprio stato Inattivo. Per attivarlo, selezionarlo dall'elenco e fate clic sul pulsante Attivare. Se il sistema é configurato per attivare il dispositivo al momento dell'avvio del computer (di default), questa fase non deve essere eseguita.
DSL è l'acronimo di Digital Subscriber Lines. Esistono diversi tipi di DSL come ADSL, IDSL e SDSL. Il Tool di gestione della rete utilizza il termine xDSL con riferimento a tutti i tipi di collegamento DSL.
Alcuni provider DSL richiedono di configurare il sistema per ottenere un indirizzo IP mediante DHCP con una scheda Ethernet, mentre altri necessitano una connessione PPPoE (Point-to-Point Protocol su Ethernet) con una scheda Ethernet. Chiedete al vostro provider DSL quale metodo usare.
Se è richiesto l'uso del DHCP, consultate Sezione 2.2, «Stabilire una connessione Ethernet» per configurare la scheda Ethernet.
Se è richiesto l'uso del PPPoE, seguite le istruzioni riportate:
Fate clic sulla scheda Dispositivi.
Fate clic sul pulsante Aggiungi.
Nell'elenco Tipo di dispositivo, selezionate collegamento xDSL e fate clic su Avanti come riportato in Figura 2.8, «Selezione tipo di dispositivo».
Se la vostra scheda Ethernet è presente nell'elenco hardware, selezionate la voce Dispositivo Ethernet dal menu a tendina della pagina mostrata nella Figura 2.9, «Impostazioni xDSL» Altrimenti, apparirà la finestra Seleziona adattatore Ethernet.
Normalmente, il programma di installazione individua automaticamente i dispositivi Ethernet supportati e vi chiede di configurarli. Se durante l'installazione avete configurato dei dispositivi Ethernet, questi verranno visualizzati nell'elenco hardware all'interno della scheda Hardware.
Inserite il Nome del provider, Nome di accesso, e Password. Se avete un account T-Online, selezionate Normale dal menu a tendina Tipo di account.
Se desiderate impostare un account T-Online, selezionate T-Online dal menu a tendina Tipo di account, ed inserite qualsiasi valore nei campi Nome di accesso e Password. Potrete configurare ulteriormente le impostazioni del vostro account T-Online una volta completata la configurazione del collegamento DSL (consultate Impostazione di un account T-Online).
Fate clic su Avanti per andare sul menu Crea collegamento DSL. Controllate le vostre impostazioni e fate clic su Applica per terminare.
Dopo aver configurato il collegamento DSL, esso comparirà nell'elenco dispositivi, come mostrato nella Figura 2.10, «Dispositivo xDSL».
Una volta aggiunto il collegamento xDSL, sarà possibile modificarne le impostazioni selezionando il dispositivo dall'elenco corrispondente, e successivamente facendo clic su Modifica.
Per esempio, una volta aggiunto il dispositivo esso viene configurato per default in modo da non avviarsi al momento dell'avvio. Modificate il proprio file di configurazione per cambiare tale impostazione. Fate clic su OK una volta terminato.
Se siete soddisfatti con le impostazioni del vostro collegamento xDSL, selezionate File => Salva per salvare le modifiche.
Se state impostando un account T-Online seguite le seguenti fasi:
Selezionate il dispositivo dall'elenco e fate clic su Modifica.
Selezionate la scheda Provider dal menu Configurazione xDSL come mostrato in Figura 2.12, «Configurazione xDSL - Scheda provider».
Fate clic su Impostazione account T-Online. Così facendo aprirete la finestra Impostazione account per il vostro account T-Online come riportato in Figura 2.13, «Impostazioni account».
Inserite il vostro Identificatore adattatore, Numero T-Online associato, Numero utente concorrente/suffisso, e Password personale.. Fate clic su OK una volta terminato per chiudere la finestra Impostazione account.
Sulla finestra Configurazione xDSL fate clic su OK. Assicuratevi di selezionare File => Salva dal Tool di gestione della rete per salvare le modifiche.
Quando viene aggiunto un dispositivo, esso non viene attivato immediatamente, come mostrato dal proprio stato Inattivo. Per attivarlo, selezionarlo dall'elenco e fate clic sul pulsante Attivare. Se il sistema é configurato per attivare il dispositivo al momento dell'avvio del computer (di default), questa fase non deve essere eseguita.
Un token ring network è una rete dove tutti i computer sono connessi in modo circolare. I computer possono scambiare le informazioni tramite il token, un pacchetto di rete speciale, che circola sulla token ring e consente ai computer stessi di inviarsi informazioni.
Per ulteriori informazioni sull'impiego di token ring con Linux, consultate il sito Web Linux Token Ring Project all'indirizzo http://www.linuxtr.net/.
Per aggiungere una connessione token ring, eseguite le seguenti procedure:
Fate clic sulla scheda Dispositivi.
Fate clic sul pulsante Nuovosulla barra degli strumenti.
Nell'elenco Tipo di dispositivo, selezionate Token Ring connection e fate clic su Forward.
Se avete già aggiunto la scheda token ring all'elenco hardware, selezionate la voce relativa dall'elenco Ethernet card. Altrimenti, selezionate la voce Other Tokenring Card per aggiungere il dispositivo hardware.
Se avete selezionato Altra scheda Tokenring, apparirà la finestra Seleziona adattatore Token Ring, come mostrato nella Figura 2.14, «Impostazioni token ring». Selezionate il produttore e il modello dell'adattatore, quindi il nome del dispositivo. Se si tratta della prima scheda token ring del sistema, selezionate tr0, se invece è la seconda selezionate tr1, (e così via). Il Tool di gestione della rete vi consente anche di configurare le risorse di sistema per l'adattatore. Fate clic su Avanti per continuare.
Nella pagina Configure Network Settings, specificate il DHCP, l'indirizzo IP statico, ed eventualmente l'hostname. Se il dispositivo riceve un indirizzo IP dinamico ogni volta che viene attivata la connessione di rete, non specificate l'hostname. Fate clic su Forward per continuare.
Fate clic su Applica nella pagina Create Ethernet Device.
Dopo aver configurato il dispositivo token ring, esso comparirà nell'elenco dei dispositivi, come mostra la Figura 2.15, «Dispositivo token ring».
Assicurarsi di selezionare File => Salva per cambiare i cambiamenti.
Una volta aggiunto il dispositivo, è possibile modificarne le impostazioni selezionando la voce relativa dall'elenco dispositivi e facendo clic su Modifica. Per esempio, potete stabilire se lanciarlo all'avvio del sistema.
Quando viene aggiunto un dispositivo, esso non viene attivato immediatamente, come mostrato dal proprio stato Inattivo. Per attivarlo, selezionarlo dall'elenco e fate clic sul pulsante Attivare. Se il sistema é configurato per attivare il dispositivo al momento dell'avvio del computer (di default), questa fase non deve essere eseguita.
I dispositivi wireless sono sempre più utilizzati. La loro configurazione è simile a quella di un dispositivo Ethernet, ma offre anche la possibilità di impostare l'SSID, e il tasto per il dispositivo wireless.
Per aggiungere una connessione Ethernet wireless, eseguite la seguente procedura:
Fate clic sulla scheda Dispositivi.
Fate clic sul pulsante Nuovosulla barra degli strumenti.
Nell'elenco Tipo di dispositivo, selezionate Wireless connection e fate clic su Avanti.
Se avete già aggiunto la scheda di interfaccia di rete wireless all'elenco hardware, selezionate la voce relativa dall'elenco Ethernet card. Altrimenti, selezionate Other Ethernet Card per aggiungere il dispositivo hardware.
Generalmente, il programma di installazione individua i dispositivi Ethernet wireless supportati e ne richiede la configurazione. Eventuali dispositivi configurati durante l'installazione saranno visualizzati nell'elenco hardware alla voce Hardware.
Se avete selezionato Altra scheda Wireless, apparirà la finestra Seleziona adattatore Ethernet. Selezionate il produttore e il modello della scheda Ethernet, quindi il dispositivo. Se si tratta della prima scheda Ethernet del sistema, selezionate eth0, se invece risulta essere la seconda selezionate eth1, e così via. Il Tool di gestione della rete vi consente anche di configurare le risorse di sistema per la scheda di interfaccia di rete wireless. Fate clic su Avanti per continuare.
Sulla pagina Configura collegamento Wireless come mostrato in Figura 2.16, «Impostazioni wireless», configurate le impostazioni per il dispositivo wireless.
Nella pagina Configure Network Settings, specificate il DHCP, l'indirizzo IP statico, ed eventualmente l'hostname. Se il dispositivo riceve un indirizzo IP dinamico ogni volta che viene attivata la connessione di rete, non specificate l'hostname. Fate clic su Forward per continuare.
Fate clic su Applica nella pagina Create Wireless Device.
Dopo aver configurato il dispositivo wireless, esso apparirà nell'elenco dei dispositivi come mostrato nella Figura 2.17, «Dispositivo wireless».
Assicurarsi di selezionare File => Salva per cambiare i cambiamenti.
Una volta aggiunto il dispositivo wireless, è possibile modificarne le impostazioni selezionando la voce relativa dall'elenco dispositivi e facendo clic su Modifica. Per esempio, potete configurarlo affinché si attivi all'avvio del sistema.
Quando viene aggiunto un dispositivo, esso non viene attivato immediatamente, come mostrato dal proprio stato Inattivo. Per attivarlo, selezionarlo dall'elenco e fate clic sul pulsante Attivare. Se il sistema é configurato per attivare il dispositivo al momento dell'avvio del computer (di default), questa fase non deve essere eseguita.
La scheda DNS consente di configurare l'hostname di sistema, il dominio, i name server e il dominio di ricerca. I name server sono utilizzati per consultare altri host sulla rete.
Se i nomi del server DNS vengono ripresi da DHCP o PPPoE (oppure da ISP), non aggiungere server DNS primari, secondari e terziari.
Se l'hostname viene ripreso in modo dinamico da DHCP o PPPoE (oppure ISP), non cambiatelo.
La sezione dei server del nome non configura il sistema per essere un server dei nomi. Invece, essa configura i suddetti server ad un loro utilizzo per risolvere l'indirizzo IP in hostname e viceversa.
Se l'hostname risulta essere diverso e system-config-network
è stato avviato sull'host locale, molto probabilmente non sarete in grado di avviare un'altra applicazione X11. Per questo motivo sarà necessario eseguire nuovamente il login in una sessione desktop nuova.
La scheda Host consente di aggiungere, modificare o rimuovere gli host dal file /etc/hosts
. Questo contiene gli indirizzi IP e gli hostname relativi.
Quando il vostro sistema cerca di risolvere un hostname per un indirizzo IP oppure di determinarne uno, esso farà riferimento al file /etc/hosts
, utilizzando dapprima i name server (se usate la configurazione di default di Red Hat Enterprise Linux). Se l'indirizzo IP si trova nell'elenco del file /etc/hosts
, i name server non vengono utilizzati. Se gli indirizzi IP dei computer della vostra rete non si trovano nell'elenco DNS, è consigliabile aggiungerli nel file /etc/hosts
.
Per aggiungere una voce al file /etc/hosts
, andate su Host, selezionate Nuovo, fornite le informazioni richieste, quindi fate clic su OK. Selezionate File => Salva o premete Ctrl-S per salvare i cambiamenti sul file /etc/hosts
. La rete o i servizi di rete non necessitano di essere riavviati poichè la versione attuale viene riferita ogni qualvolta viene risolto un indirizzo.
Non rimuovere la voce localhost
. Anche se il sistema non possiede una connessione di rete o una connessione eseguita costantemente, alcuni programmi necessitano di collegarsi al sistema tramite l'interfaccia loopback del localhost.
Per modificare l'ordine di consultazione, modificate il file /etc/host.conf
. La riga order hosts, bind
specificare che /etc/hosts
ha precedenza sui name server nomi. Modificando la riga in order bind, hosts
, il sistema sarà configurato per risolvere gli hostname e gli indirizzi IP usando dapprima i name server. Se l'indirizzo IP non può essere risolto mediante i name server, il sistema cerca gli indirizzi IP nel file /etc/hosts
.
È possibile creare molteplici dispositivi logici di rete per ciascun dispositivo hardware fisico. Per esempio, se avete una scheda Ethernet sul vostro sistema (eth0), potete creare vari dispositivi logici di rete associati a eth0 con nickname diversi e opzioni di configurazione diverse.
I dispositivi logici di rete sono diversi dagli alias. I dispositivi logici di rete associati allo stesso dispositivo fisico devono esistere all'interno di profili diversi e non possono essere attivati simultaneamente. Gli alias sono anch'essi associati allo stesso dispositivo hardware fisico, ma possono essere attivati in simultanea. Per conoscere i dettagli relativi alla creazione di alias per i dispositivi, consultate Sezione 2.11, «Alias per dispositivi».
I profili possono servire a creare diversi set di configurazione per diverse reti. Un set di configurazione può comprendere dispositivi logici, host e impostazioni DNS. Dopo aver configurato i profili, potrete usare il Tool di gestione della rete per passare da un profilo all'altro.
Per default, esiste un profilo chiamato Common. Per creare un nuovo profilo, fate clic sul pulsante Profilo => Nuovo dal menù a tendina, ed inserite un nome unico per il profilo.
State modificando ora il nuovo profilo come indicato dalla barra dello stato nella parte inferiore della finestra principale.
Fate clic su di un dispositivo giá esistente nell'elenco, e premete il pulsante Copia per copiare il dispositivo esistente su di un dispositovo logico esistente. Se utilizzate il pulsante Nuovo, viene creato un alias di rete e questa procedura non è corretta. Per cambiare le proprietá del dispositivo logico, selezionatelo dall'elenco e fate clic su Modifica. Per esempio, il nickname puó essere cambiato in un nome piú descrittivo, come ad esempio eth0_office
, in modo tale da poter essere riconosciuto piú facilmente.
Nell'elenco dei dispositivi, vi è una colonna di caselline etichettata come Profile. Per ciascun profilo, potete togliere o mettere una spunta accanto ai vari dispositivi. Solo i dispositivi spuntati vengono inclusi nel profilo attualmente selezionato. Per esempio, se create un dispositivo logico chiamato eth0_office
in un profilo chiamato Office
e volete attivare il dispositivo logico se il profilo é selezionato, non selezionate il dispositivo eth0
e selezionate il dispositivo eth0_office
.
Per esempio, la Figura 2.20, «Profilo Office» mostra un profilo chiamato Office con il dispositivo logico eth0_office. La configurazione prevede che sia attivata la prima scheda Ethernet tramite DHCP.
Da notare che il profilo Home mostrato nella Figura 2.21, «Profilo Home» attiva il dispositivo logico eth0_home, il quale è associato con eth0
.
Potete anche configurare eth0
in modo che si attivi solo nel profilo Office e che attivi solo un dispositivo PPP (modem) nel profilo Home. Oppure è possibile fare in modo che il profilo Common attivi eth0
e che un profilo Away attivi un dispositivo PPP da usare in viaggio.
Per attivare un dispositivo al momento dell'avvio, modificare il file di configurazione del boot loader, in modo da includere l'opzione netprofile=
. Per esempio, se il sistema usa GRUB come boot loader e <profilename>
/boot/grub/grub.conf
contiene:
title Red Hat Enterprise Linux (2.6.9-5.EL) root (hd0,0) kernel /vmlinuz-2.6.9-5.EL ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.9-5.EL.img
Modificatelo in modo seguente (dove <profilename>
è il nome del profilo da attivare al momento dell'avvio):
title Red Hat Enterprise Linux (2.6.9-5.EL) root (hd0,0) kernel /vmlinuz-2.6.9-5.EL ro root=/dev/VolGroup00/LogVol00 \ netprofile=<profilename>
\ rhgb quiet initrd /initrd-2.6.9-5.EL.img
Per cambiare i profili dopo aver avviato il sistema, andate su Applications (the main menu on the panel) => Tool del sistema => Controllo dispositivo di rete (oppure digitare il comando redhat-control-network
) per selezionare e attivare un profilo. La sezione attiva profilo appare solo nell'interfaccia Controllo dispositivo di rete se esistono altre interfacce Common.
Alternativamente, eseguire il seguente comando per abilitare un profilo (sostituire <profilename>
con il nome del profilo):
system-config-network-cmd --profile <profilename>
--activate
Gli Alias per dispositivi sono dispositivi virtuali associati allo stesso hardware fisico, ma possono essere attivati simultaneamente in modo da possedere diversi indirizzi IP. Vengono spesso rappresentati con il nome del dispositivo seguito dai due punti e da un numero (per esempio, eth0:1). Sono utili se desiderate avere più di un indirizzo IP per un singolo sistema che abbia una sola scheda di rete.
Dopo aver configurato il dispositivo Ethernet—per esempio eth0
—per poter usare un indirizzo IP statico (DHCP non funziona con gli alias), andate sulla scheda Dispositivi e selezionate Nuovo. Selezionate la scheda Ethernet da configurare con un alias, impostare l'indirizzo IP per l'alias, e fate clic su Applica per crearlo. Poichè è già esistente un dispositivo per la scheda Ethernet, quello appena creato è l'alias, esempio eth0:1
.
Se state configurando l'alias di un dispositivo Ethernet, sappiate che non potete impostare né il dispositivo né l'alias in modo che utilizzino DHCP. Dovete configurare l'indirizzo IP manualmente.
Figura 2.22, «Esempio di alias per dispositivi di rete» mostra un esempio di un alias per il dispositivo eth0
. Osservate il dispositivo eth0:1
— il primo alias per eth0
. Il secondo alias per eth0
avrá il nome del dispositivo eth0:2
, e cosí via. Per modificare le impostazioni relative all'alias del dispositivo, per esempio, il numero di alias o l'eventuale attivazione all'avvio, selezionatelo dall'elenco e fate clic sul pulsante Modifica.
Selezionate l'alias e fate clic sul pulsante Activate per attivarlo. Se avete configurato molteplici profili, scegliete in quali profili includere l'alias.
Per verificare che l'attivazione dell'alias sia avvenuta correttamente, servitevi del comando /sbin/ifconfig
. L'output fornito dal comando dovrebbe mostrare il dispositivo e il relativo alias con indirizzo IP diverso:
eth0 Link encap:Ethernet HWaddr 00:A0:CC:60:B7:G4 inet addr:192.168.100.5 Bcast:192.168.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:161930 errors:1 dropped:0 overruns:0 frame:0 TX packets:244570 errors:0 dropped:0 overruns:0 carrier:0 collisions:475 txqueuelen:100 RX bytes:55075551 (52.5 Mb) TX bytes:178108895 (169.8 Mb) Interrupt:10 Base address:0x9000 eth0:1 Link encap:Ethernet HWaddr 00:A0:CC:60:B7:G4 inet addr:192.168.100.42 Bcast:192.168.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:10 Base address:0x9000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:5998 errors:0 dropped:0 overruns:0 frame:0 TX packets:5998 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1627579 (1.5 Mb) TX bytes:1627579 (1.5 Mb)
La versione della linea di comando di Tool di gestione della rete, può essere usata per salvare su di un file la configurazione di rete del sistema. A sua volta questo file può essere usato per ripristinare l'impostazione della rete su di un sistema Red Hat Enterprise Linux.
Questa caratteristica può essere usata come parte di uno script di back up automatizzato, per salvare la configurazione prima di eseguire un miglioramento o una reinstallazione, o per copiare la configurazione su di un sistema Red Hat Enterprise Linux diverso.
Per salvare o esportare la configurazione di rete di un sistema sul file /tmp/network-config
, eseguire il seguente comando come utente root:
system-config-network-cmd -e > /tmp/network-config
Per ripristinare o importare la configurazione della rete dal file creato dal comando precedente, eseguire il seguente comando come un utente root:
system-config-network-cmd -i -c -f /tmp/network-config
L'opzione -i
implica l'importazione dei dati, l'opzione -c
implica la cancellazione della configurazione esistente prima di eseguire l'importazione, e l'opzione -f
specifica il file da importare.
Nella maggior parte di reti moderne, incluso Internet, gli utenti identificano gli altri computer dal nome. Ció consente all'utente di non ricordare l'indirizzo di rete numerico delle risorse della rete. Il modo migliore per configurare una rete in modo da abilitare i collegamenti basati sul nome, è quello di impostare un Domain Name Service (DNS) o un nameserver, che converte gli hostname sulla rete in indirizzi numerici e viceversa.
In questo capitolo verrà trattato il nameserver presente in Red Hat Enterprise Linux, il server DNS Berkeley Internet Name Domain (BIND), con risalto alla struttura dei suoi file di configurazione e il modo in cui può essere amministrato in modo locale o remoto.
BIND è anche conosciuto come il servizio inamed
in Red Hat Enterprise Linux. Potrete gestirlo tramite il Tool di configurazione dei servizi (system-config-service
).
DNS associa gli hostname con i rispettivi indirizzi IP, in modo tale che quando gli utenti desiderano collegarsi alle altre macchine presenti sulla rete, essi possono far riferimento ai rispettivi nomi senza dover ricordare gli indirizzi IP.
L'uso di FQDN e DNS, è vantaggioso per gli amministratori di sistema, perchè consente una certa flessibilità nella modifica degli indirizzi IP per un host, senza influire sulle interrogazioni basate sui nomi dei computer stessi. Gli amministratori inoltre possono stabilire quale computer gestisce una interrogazione basata sui nomi.
Il DNS, viene normalmente implementato utilizzando server centrali che risultano "autorevoli" per alcuni domini e si rivolgono ad altri server DNS per ottenere le informazioni di cui non dispongono.
Quando un host client richiede informazioni al server dei nomi, di solito esso si collega tramite la porta 53 del server. Il server dei nomi cerca di risolvere l'FQDN in base alla sua libreria di conversione, che può contenere informazioni autorevoli sull'host richiesto oppure dati memorizzati in seguito a una precedente query. Se la libreria di conversione del server dei nomi non contiene già la risposta, esso si rivolgerà ad altri server di nomi, chiamati server dei nomi root per determinare quali sono i server di nomi autorevoli per l'FQDN in questione. Successivamente con queste informazioni, interrogherà i server dei nomi autorevoli per determinare l'indirizzo IP dell'host richiesto. Se invece si esegue una ricerca inversa, viene utilizzata la stessa procedura, ma la richiesta viene inoltrata con un indirizzo IP sconosciuto anzichè un nome.
Su internet, l'FQDN di un host può essere suddiviso in sezioni diverse, organizzate in una gerarchia (ad albero) con un tronco, dei rami principali, dei rami secondari e così via. Considerate il seguente FQDN:
bob.sales.example.com
Per capire come l'FQDN venga convertito per trovare l'indirizzo IP che si riferisce a un determinato sistema, è necessario leggere il nome da destra a sinistra, con ogni livello della gerarchia separato da punti (.
). In questo esempio, com
indica il dominio del livello superiore per questo FQDN. Il nome example
indica un sottodominio di com
e a sua volta, sales
è un sottodominio di example
. L'ultimo nome a sinistra in un FQDN, bob
, è l'hostname della macchina specifica.
A eccezione dell'hostname, ogni sezione è definita zona, e contraddistingue un particolare spazio dei nomi. Tale spazio controlla la denominazione dei sottodomini alla propria sinistra. Mentre in questo esempio sono contenuti solo due sottodomini, un FQDN deve contenerne almeno uno, ma può comprenderne molti di più, a seconda di come sono organizzati gli spazi dei nomi.
Le zone sono definite nei server dei nomi autorevoli mediante l'uso di file di zona, (che descrivono lo spazio dei nomi di quella zona), ed i server di posta da usare per un dominio o sottodominio particolare. I file di zona sono memorizzati in server dei nomi primari (chiamati anche server dei nomi master) che sono autorevoli e consentono la modifica dei file, e nei server dei nomi secondari (chiamati anche server dei nomi slave), che ricevono i propri file di zona dai server dei nomi primari. Ogni server dei nomi può essere allo stesso tempo primario o secondario per zone diverse e può essere riconosciuto autorevole per più zone. Dipende tutto dalla configurazione del server dei nomi.
Esistono quattro tipi principali di configurazione per i server dei nomi:
Memorizza informazioni sulla zona originale e autorevole per uno spazio dei nomi, e risponde alle richieste inerenti al suddetto spazio provenienti da altri server dei nomi.
Risponde a richieste di altri server dei nomi relative agli spazi dei nomi sui quali ha autorità. Tuttavia i server dei nomi slave ottengono le informazioni sugli spazi dei nomi dai server dei nomi master.
Offre i servizi di risoluzione name-to-IP ma non è autorevole per tutte le zone. Di norma, le risposte a tutte le risoluzioni vengono memorizzate nella cache per un determinato periodo di tempo, solitamente specificato dal record di zona recuperato.
Inoltra richieste ad un elenco specifico di server dei nomi per la risoluzione dei nomi. Se nessuno dei server specificati può eseguire la risoluzione, il processo si interrompe e la risoluzione non viene completata.
Un server dei nomi può essere di uno o più tipi tra quelli descritti. Per esempio può essere un master per alcune zone e uno slave per altre e può offrire solo una risoluzione forwarding.
BIND effettua dei servizi di risoluzione del nome, attraverso il demone /usr/sbin/named
. BIND include anche una utility di gestione chiamata /usr/sbin/rndc
. Maggiori informazioni su rndc
sono disponibili nelSezione 3.4, «Uso di rndc
».
BIND conserva i propri file di configurazione nelle seguenti posizioni:
/etc/named.conf
Il file di configurazione per il demone named
/var/named/
La directory named
dove si trovano i file di zona, statistici, e della cache
Se avete installato il pacchetto bind-chroot
, il servizio BIND verrà eseguito nell'ambiente /var/named/chroot
. Tutti i file di configurazione verranno spostati nel suo interno. Per questo named.conf
si troverà in /var/named/chroot/etc/named.conf
e così via.
Se avete installato il pacchetto caching-nameserver
, il file di configurazione di default è /etc/named.caching-nameserver.conf
. Per annullare questa configurazione di default, sarà possibile creare il proprio file di configurazione personalizzato in /etc/named.conf
. BIND userà il file personalizzato /etc/named.conf
invece del file di configurazione di default dopo il riavvio.
Le sezioni successive descrivono in dettaglio i file di configurazione BIND.
Il file named.conf
è un insieme di istruzioni che utilizza opzioni nidificate tra parentesi graffe { }
. Gli amministratori devono prestare attenzione nel modificare named.conf
, in quanto piccoli errori di sintassi impediscono la partenza del servizio named
.
Un file tipico named.conf
é organizzato in modo del tutto simile al seguente esempio:
<statement-1>
["<statement-1-name>
"] [<statement-1-class>
] { <option-1>
; <option-2>
; <option-N>
; }; <statement-2>
["<statement-2-name>
"] [<statement-2-class>
] { <option-1>
; <option-2>
; <option-N>
; }; <statement-N>
["<statement-N-name>
"] [<statement-N-class>
] { <option-1>
; <option-2>
; <option-N>
; };
Le seguenti istruzioni vengono utilizzate comunemente in /etc/named.conf
:
L'istruzione acl
(o commento di controllo di accesso) definisce il gruppo o gli host permessi o meno all'accesso al server dei nomi.
Una istruzione acl
ha la seguente forma:
acl <acl-name>
{ <match-element>
; [<match-element>
; ...] };
In questa istruzione, sostituire <acl-nome>
con il nome della lista di controllo accesso e sostituire <elemento-corrispondente>
con una serie di indirizzi IP separati da un punto e virgola. La maggior parte delle volte vengono utilizzati gli indirizzi IP individuali o le notazioni di rete IP (come 10.0.1.0/24
) per identificare gli indirizzi IP all'interno del commento acl
.
Le seguenti liste di controllo per gli accessi sono giá definite come parole chiavi per semplificare la configurazione:
any
— Corrisponde ad ogni indirizzo IP
localhost
— Corrisponde a qualsiasi indirizzo IP in uso nel sistema locale.
localnets
— Corrisponde a qualsiasi indirizzo IP in qualsiasi rete a cui il sistema locale è connesso.
none
— Non corrisponde ad alcun indirizzo IP.
Se utilizzato con altre istruzioni (come ad esempio options
), i commenti acl
possono essere molto utili nel prevenire l'uso improprio di un server dei nomi BIND.
Il seguente esempio definisce due liste di controllo di accesso e usa una istruzione options
per definire come vengono trattate dal server:
acl black-hats { 10.0.2.0/24; 192.168.0.0/24; }; acl red-hats { 10.0.1.0/24; }; options { blackhole { black-hats; }; allow-query { red-hats; }; allow-recursion { red-hats; }; }
Questo esempio contiene due elenchi di controllo per l'accesso, black-hats
e red-hats
. Gli host nell'elenco black-hats
non vengono accettati nel server dei nomi, mentre vengono accettati nell'elenco red-hats
.
L'istruzione include
permette ai file di essere inclusi in un file named.conf
. In questo modo i dati importanti di configurazione (come ad esempio keys
), possono essere posizionati in un file separato con permessi restrittivi.
Una istruzione include
assume la seguente forma:
include "<file-name>
"
In questa istruzione, <nome-file>
viene sostituito con un path assoluto per un file.
L'istruzione options
definisce le opzioni di configurazione globale del server e imposta i default per altri commenti. Puó essere usato per specificare la posizione della directory di lavoro named
i tipi di interrogazione permessi e molto altro.
L'istruzione options
assume la seguente forma:
options { <option>
; [<option>
; ...] };
In questa istruzione, le direttive <option>
sono sostituite con una opzione valida.
Le seguenti sono opzioni usate comunemente:
allow-query
Specifica gli host autorizzati ad interrogare questo server dei nomi. Per default, tutti gli host sono autorizzati all'interrogazione. Un access control list o un insieme di indirizzi o reti IP, può essere utilizzato solo per autorizzare host particolari a interrogare il server dei nomi.
allow-recursion
Simile a allow-query
, questa opzione viene applicata alle interrogazioni ricorsive. Per default, tutti gli host sono autorizzati ad effettuare richieste ricorsive ai server dei nomi.
blackhole
Specifica quali host non possono interrogare il server.
directory
Specifica la directory di lavoro named
se diversa dal valore di default /var/named/
.
forwarders
Specifica un elenco di indirizzi IP validi per i server dei nomi a cui inoltrare le richieste di risoluzione.
forward
Specifica il modo in cui avviene l'inoltro da parte di una direttiva forwarders
.
Sono accettate le seguenti opzioni:
first
— Specifica che i nameserver elencati nella direttiva forwarders
vengano interrogati prima che named
tenti di risolvere il nome da solo.
only
— Specifica che named
non tenta di eseguire la risoluzione del nome da solo, nel caso in cui le interrogazioni ai nameserver specificati nella direttiva forwarders
falliscano.
listen-on
Specifica l'interfaccia di rete che named
utilizza per ricevere le interrogazioni. Per default, vengono utilizzate tutte le interfacce.
Usando questa direttiva su di un server DNS, il quale funge da gateway, BIND puó essere configurato in modo da rispondere solo alle domande originate da una delle reti.
Il seguente è un esempio di direttiva listen-on
:
options { listen-on { 10.0.1.1; }; };
In questo esempio, vengono accettate solo le richieste che provengono dall'interfaccia di rete che serve la rete privata (10.0.1.1
).
notify
Controlla se named
notifica ai server slave quando si aggiorna una zona. Accetta le seguenti opzioni:
yes
— Notifica i server slave.
no
— Non notifica i server slave.
explicit
— Notifica solo i server slave specificati in un elenco also-notify
all'interno di una istruzione di zona.
pid-file
Specifica la posizione del file ID di processo creato da named
.
root-delegation-only
Abilita la forzatura delle proprietà di delega nei top-level domains (TLD), e nelle zone root con un elenco di esclusione opzionale. Delega è quel processo di separazione di una singola zona in sottozone multiple. Per poter creare una zona delegata, vengono usati gli oggetti conosciuti come record NS. I record NameServer (record di delega) annunciano i nameserver principali per una zona particolare.
L'esempio root-delegation-only
seguente, specifica un elenco di esclusione di TLD, dai quali si prevedono delle risposte non delegate fidate:
options { root-delegation-only exclude { "ad"; "ar"; "biz"; "cr"; "cu"; "de"; "dm"; "id"; "lu"; "lv"; "md"; "ms"; "museum"; "name"; "no"; "pa"; "pf"; "se"; "sr"; "to"; "tw"; "us"; "uy"; }; };
statistics-file
Specifica una posizione alternativa per i file delle statistiche. Per default, le statistiche di named
vengono salvate nel file /var/named/named.stats
.
Sono inoltre disponibili decine di altre opzioni, molte delle quali dipendono l'una dall'altra per poter funzionare correttamente. Per maggiori informazioni, consultate il Manuale BIND 9 di riferimento per l'amministratore nelSezione 3.7.1, «Documentazione installata» e la pagina man per bind.conf
per maggiori informazioni.
Una istruzione zone
definisce le caratteristiche di una zona come ad esempio la posizione dei propri file di configurazione e le opzioni specifiche di zona. Questa istruzione puó essere usata per sovrascrivere le istruzioni globali options
.
Una istruzione zone
assume la seguente forma:
zone <zone-name>
<zone-class>
{ <zone-options>
; [<zone-options>
; ...] };
In questa istruzione, <nome-zona>
é il nome della zona, <classe-zona>
é la zona facoltativa della zona, e <opzioni-zona>
é un elenco di opzioni che caratterizzano la zona.
L'attributo <nome-zona>
per l'istruzione della zona, é particolarmente importante. Esso è il valore di default assegnato per la direttiva $ORIGIN
, usata all'interno delfile zone corrispondente posizionato nella directory /var/named/
. Il demone named
conferisce il nome della zona a qualsiasi nome del dominio non qualificato elencato nel file zone.
Se avete installato il pacchetto caching-nameserver
, il file di configurazione di default risulterà essere all'interno di /etc/named.rfc1912.zones
.
Per esempio, se una istruzione zone
definisce lo spazio del nome per example.com
, usare example.com
come <zone-name>
cosí da posizionarlo alla fine dell'hostname all'interno del file zone example.com
.
Per maggiori informazioni sui file di zona, consultate Sezione 3.3, «File zone».
Le opzioni piú comuni della zone
include quanto segue:
allow-query
Specifica i client abilitati a richiedere informazioni inerenti questa zona. Per default tutte le richieste vengono permesse.
allow-transfer
Specifica i server slave abilitati a richiedere un trasferimento delle informazioni della zona. Il default é di permettere tutte le richieste di trasferimento.
allow-update
Specifica gli host che sono abilitati ad aggiornare dinamicamente le informazioni nella loro zona. Il default é di negare tutte le richieste di aggiornamento dinamico.
Fare attenzione a permettere agli host di aggiornare le informazioni inerenti le loro zone. Non abilitate questa funzione se l'utente non é fidato. In generale, é meglio avere un amministratore che aggiorni manualmente le informazioni e ricaricare il servizio named
.
file
Specifica il nome del file nella directory di lavoro named
che contiene i dati di configurazione della zona.
masters
Specifica gli indirizzi IP dai quali si effettua la richiesta di informazioni della zona autoritaria, usato solo se la zona é definita come type
eslave
.
notify
Specifica se named
effettua la notifica ai server slave quando si aggiorna una zona. Questa direttiva accetta le seguenti opzioni:
yes
— Notifica i server slave.
no
— Non notifica i server slave.
explicit
— Notifica solo i server slave specificati in un elenco also-notify
all'interno di una istruzione di zona.
type
Definisce il tipo di zona.
Di seguito viene riportata una lista di opzioni valide:
delegation-only
— Forza lo stato di delega delle zone dell'infrastruttura, come ad esempio COM, NET oppure ORG. Qualsiasi risposta ricevuta senza una delega implicita o esplicita, viene trattata come NXDOMAIN
. Questa opzione viene applicata solo in TLD, o nelle zone root utilizzate con implementazioni caching o ricorsive.
forward
— Inoltra tutte le richieste di informazioni di una zona in particolare ad altri server dei nomi.
hint
— tipo speciale di zona usato per fare riferimento ai server dei nomi root, utilizzati per risolvere richieste quando una zona è sconosciuta. In genere non è necessario configurare una zona del tipo hint
.
master
— Definisce il server dei nomi autorevole per questa zona. Occorre impostare una zona del tipo master
se nel vostro sistema vi sono i file di configurazione della zona.
slave
— Definisce il server come slave per questa zona. Specifica anche l'indirizzo IP del server dei nomi per la zona.
zone-statistics
Configura named
in modo da conservare le statistiche relative a questa zona, scrivendole nella posizione di default (/var/named/named.stats
), o nel file elencato nell'opzione statistics-file
nell'istruzione server
. Consultate Sezione 3.2.2, «Altri tipi di istruzione» per maggiori informazioni riguardanti l'istruzione server
.
La maggior parte delle modifiche al file /etc/named.conf
di un server dei nomi master o slave riguarda l'aggiunta, la modifica o la cancellazione di istruzioni zone
. Sebbene queste istruzioni zone
possano contenere molte opzioni, quasi tutti i server dei nomi ne usano solo alcune. I commenti zone
che seguono sono alcuni esempi di base da utilizzare in una relazione master/slave.
Quello riportato di seguito è un esempio di istruzione zone
per il server dei nomi primario con dominio example.com
(192.168.0.1
):
zone "example.com" IN { type master; file "example.com.zone"; allow-update { none; }; };
All'interno dell'istruzione la zona è identificata come example.com
, il tipo è impostato su master
e il servizio named
legge il file /var/named/example.com.zone
. Indica inoltre a named
di non consentire l'aggiornamento da parte di nessun altro host.
Una istruzione zone
di un server slave per example.com
è leggermente diverso dall'esempio precedente. Per un server slave il tipo è impostato su slave
e invece della riga allow-update
è presente una direttiva che indica a named
l'indirizzo IP del server master.
Quello riportato di seguito è un esempio di istruzione zone
del server slave, per la zona example.com
:
zone "example.com" { type slave; file "example.com.zone"; masters { 192.168.0.1; }; };
Questa istruzione zone
configuranamed
sul server slave, in modo da interrogare il server master all'indirizzo IP 192.168.0.1
, per informazioni riguardanti la zona example.com
. Le informazioni che il server slave riceve dal server master vengono salvate in /var/named/example.com.zone
.
Ecco riportata una lista di istruzioni meno usate, disponibili in named.conf
controls
Configura vari requisiti di sicurezza necessari all'uso del comando rndc
per amministrare il servizio named
.
Consultate Sezione 3.4.1, «Configurazione di /etc/named.conf
» per saperne di più su come è strutturata l'istruzione controls
, incluso le opzioni disponibili.
key "<key-name>
"
Definisce una chiave particolare a seconda del nome. Le chiavi sono usate per autenticare azioni varie, come ad esempio aggiornamenti sicuri o l'uso del comando rndc
. Con key
vengono utilizzate due opzioni:
algorithm
— Il tipo di algoritmo usato, come ad esempio <algorithm-name>
dsa
o hmac-md5
.
secret "
— La chive cifrata.
<key-value>
"
Consultate Sezione 3.4.2, «Configurazione di /etc/rndc.conf
» per informazioni su come scrivere una istruzione key
.
logging
Permette l'uso di tipi multipli di log chiamati canali. Usando l'opzione channel
all'interno dell'istruzione logging
, un tipo di log personalizzato può essere creato — con il proprio nome del file (file
), misura limite (size
), versione (version
), e livello d'importanza (severity
). Una volta definito un canale personalizzato, una opzione category
viene usata per categorizzare il canale e iniziare il logging quando si avvia named
.
Per default, named
effettua una registrazione di messaggi standard per il demone syslog
, inviandoli in /var/log/messages
. Ció accade perché diversi canali standard sono stati creati in BIND con diversi livelli di severitá, come ad esempio default_syslog
(il quale gestisce i messaggi di logging), e default_debug
(il quale gestisce solo i messaggi di debug). Una categoria di default, chiamatadefault
, usa i canali interni per effettuare un logging normale senza alcuna configurazione speciale.
Personalizzare un processo di log in puó rappresentare un una fase molto articolata, e và oltre lo scopo di questo capitolo. Per maggiori informazioni sulla creazione dei log BIND personalizzati, consultare BIND 9 Administrator Reference Manual nelSezione 3.7.1, «Documentazione installata».
server
Specifica le opzioni che influenzano il comportamento di named
rispetto ai server dei nomi remoti, in particolar modo nei confronti delle notifiche e dei trasferimenti di zona.
L'opzione transfer-format
controlla se una risorsa record viene inviata con ogni messaggio (one-answer
) oppure se vengono inviate risorse record multiple sono inviate con ogni messaggio (many-answers
). Mentre many-answers
é piú efficiete, solo i server dei nomi BIND piú recenti lo possono comprendere.
trusted-keys
Contiene diverse chiavi pubbliche usate per rendere sicuro DNS (DNSSEC). Consultare Sezione 3.5.3, «Sicurezza» per maggiori informazioni sulla sicurezza di BIND.
view "<view-name>
"
Crea una visuale speciale a seconda della rete sulla quale viene effettuata l'interrogazione da parte dell'host al server dei nomi.Questo permette ad alcuni host di ricevere una risposta riguardante una zona particolare, mentre altri host riceveranno delle informazioni totalmente diverse. Alternativamente, alcune zone vengono rese disponibili ad alcuni host sicuri mentre quelli non sicuri possono solo effettuare delle richieste ad altre zone.
Visuali multiple possono essere usate fino a quando i nomi sono unici. L'opzione match-clients
specifica gli indirizzi IP idonei ad una visuale particolare. Qualsiasi istruzione options
puó essere usata all'interno di una visuale, sovrascrivendo le opzioni globali giá configurate per named
. Molti commenti view
contengono istruzioni multiple zone
idonee all'elenco match-clients
. L'ordine con il quale le istruzioni view
vengono elencate é molto importante, poichè verrà utilizzata la prima istruzione view
idonea ad un particolare indirizzo IP del client.
Consultate Sezione 3.5.2, «Visualizzazioni multiple» per maggiori informazioni sull'istruzione view
.
Il seguente é un elenco di tag di commento validi usati all'interno di named.conf
:
//
— Quando posizionato all'inizio di una riga, la stessa viene ignorata da named
.
#
— Quando posizionato all'inizio di una riga, la stessa viene ignorata da named
.
/*
e */
— Quando il testo viene contenuto in queste etichette, lo stesso viene ignorato da named
.
I file di zona, contenenti le informazioni relative a un determinato spazio dei nomi, sono memorizzati nella directory operativa di named
, (/var/named
) per default. Ogni file di zona viene nominato a seconda dei dati indicati nell'opzione file
contenuta nell'istruzione zone
. In genere si riferisce al dominio in questione e identifica il file in quanto contiene dati sulla zona, come per esempio example.com.zone
.
Se avete installato il pacchetto bind-chroot
, il servizio BIND verrà eseguito nell'ambiente /var/named/chroot
. Tutti i file di configurazione verranno spostati nel suo interno. Per questo è possibile trovare i file di zona all'interno di /var/named/chroot/var/named
.
Ogni file zone può contenere direttive e dei record della risorsa. Le direttive indicano al server dei nomi di eseguire una certa azione o di eseguire delle impostazioni speciali per la zona. I record della risorsa definiscono i parametri della zona attribuendo una identità a host individuali. Le direttive sono facoltative, mentre i record della risorsa sono necessari per fornire il servizio dei nomi a quella zona.
Tutte le direttive ed i record dovrebbero essere inseriti su righe diverse.
Nei file zone è possibile aggiungere dei commenti dopo il carattere punto e virgola (;
).
Le direttive sono contraddistinte dal carattere ($
) che precede il nome della direttiva e che di solito si trova all'inizio del file zone.
Le direttive più usate sono le seguenti:
$INCLUDE
Indica a named
di includere un file di zona in un altro file nel punto in cui viene usata la direttiva. Ciò consente di memorizzare impostazioni di zona aggiuntive separatamente dal file di zona principale.
$ORIGIN
Imposta il nome del dominio da accodare a qualsiasi record non qualificato, come quelli che specificano solo l'host e nient'altro.
Per esempio, un file zone potrebbe contenere una riga seguente:
$ORIGIN example.com.
Qualsiasi nome utilizzato nei record della risorsa, che non terminacon un punto (.
), presenterá example.com
.
Non è necessario usare la direttiva $ORIGIN
se alla zona si assegna un nome nel file /etc/named.conf
, poichè il nome della zona viene utilizzato, per default, come valore della direttiva $ORIGIN
.
$TTL
Imposta il valore predefinito Time to Live (TTL) per la zona. Si tratta di un valore, in secondi, assegnato ai server dei nomi che indica il periodo di validità dei record di risorsa della zona. Un record di risorsa può avere un valore TTL proprio, che annulla quindi quello impostato da questa direttiva.
Impostando un valore più alto si indica ai server dei nomi di conservare in memoria queste informazioni di zona per un periodo di tempo maggiore. Ciò riduce il numero di richieste relative a questa zona, ma allunga anche il tempo necessario per modificare il record di risorse.
Il componente primario di un file zone risulta essere il proprio record di risorsa.
Sono disponibili diversi record della risorsa del file zone. I seguenti tipi sono tra i più usati:
A
Informazioni sull'indirizzo che specifica un indirizzo IP da assegnare al nome, come in questo esempio:
<host>
IN A <IP-address>
Se non viene indicato il valore <host>
, il record A
fa riferimento a un indirizzo IP predefinito per l'inizio dello spazio dei nomi. Questo sistema è utilizzato per tutte le richieste non FQDN.
Prendete in considerazione i seguenti esempi di record A
per il file zone example.com
:
server1 IN A 10.0.1.3 IN A 10.0.1.5
Le richieste per example.com
vengono indirizzate a 10.0.1.3 o 10.0.1.5.
CNAME
Ciò si riferisce al record del Canonical Nameil quale mappa un nome all'altro. Questo tipo di record è conosciuto anche come un alias record.
L'esempio successivo indica a named
che le richieste inviate a <nome-alias>
dovrebbero indicare l'host <nome-reale>
. I record CNAME
sono utilizzati più comunemente per indicare i servizi che utilizzano uno schema di assegnazione dei nomi comune,come ad esempio www
per i Web server.
<alias-name>
IN CNAME <real-name>
Considerate l'esempio riportato di seguito, in cui il record A
lega un indirizzo IP con un hostname, mentre il record CNAME
indica l'hostname www
più usato.
server1 IN A 10.0.1.5 www IN CNAME server1
MX
Ciò si riferisce al record Mail eXchange il quale indica dove inviare la posta riferita ad uno spazio del nome controllato da questa zona.
IN MX <preference-value>
<email-server-name>
Di seguito <valore-preferenza>
vi consente di classificare numericamente i server e-mail per uno spazio dei nomi, dando la precedenza ad alcuni sistemi e-mail rispetto ad altri. Il record di risorsa MX
con il <valore-preferenza>
più basso, ha la precedenza sugli altri. Tuttavia server email multipli possono presentare lo stesso valore e distribuire quindi il traffico di posta.
Il <nome-server-email>
può essere un nome host o un FQDN.
IN MX 10 mail.example.com. IN MX 20 mail2.example.com.
In questo esempio il primo server di posta mail.example.com
ha la precedenza sul server mail2.example.com
al momento della ricezione di posta per il dominio example.com
.
NS
Ciò si riferisce al record NameServer che annuncia i server dei nomi autorevoli per una determinata zona.
Quanto segue illustra la struttura di un record NS
:
IN NS <nameserver-name>
Qui il <nome-nameserver>
dovrebbe essere un FQDN.
Di seguito sono elencati due nomi di server come autorevoli per un dominio. Non importa se questi server dei nomi sono slave o master, poiché entrambi sono considerati autorevoli.
IN NS dns1.example.com. IN NS dns2.example.com.
PTR
Ciò si riferisce al record PoinTeR che serve per fare riferimento ad un'altra porzione dello spazio dei nomi.
I record PTR
vengono usati principalmente per invertire la risoluzione del nome, in quanto essi si riferiscono agli indirizzi IP ad un particolare nome. Per maggiori esempi sui record PTR
in uso, consultate Sezione 3.3.4, «File zone per la risoluzione inversa dei nomi».
SOA
Si riferisce al record della risorsa Start Of Authority, il quale indica al server dei nomi le informazioni autorevoli importanti inerenti lo spazio dei nomi per il nameserver.
Posizionato dopo le direttive, SOA
è il primo record di risorsa in un file zone.
Quanto segue mostra la struttura di base di un record di risorsaSOA
:
@ IN SOA <primary-name-server>
<hostmaster-email>
( <serial-number>
<time-to-refresh>
<time-to-retry>
<time-to-expire>
<minimum-TTL> )
Il simbolo @
serve a posizionare la direttiva $ORIGIN
(o il nome della zona, se la direttiva non è impostata) come il namespace definito da questo record di risorsa SOA
. L'hostname del server dei nomi primario il quale è autoritario per questo dominio, è la direttiva <primary-name-server>
e l'email della persona da contattare per questo namespace, è la direttiva <hostmaster-email>
.
La direttiva <numero-seriale>
è un valore numerico incrementato ogni volta il file zone viene modificato, affinche named
riceva l'informazione di ricaricare la zona. La direttiva <tempo-di-aggiornamento>
è un server slave del valore numerico usato per determinare il tempo necessario prima di chiedere al server dei nomi master se sono state effettuate delle modifiche alla zona. La direttiva <numero-seriale>
è un valore numerico utilizzato dai server slave per determinare se sta usando dati di zona obsoleti e deve dunque aggiornarli.
La direttiva <time-to-retry>
è un valore numerico usato dai server slave per determinare il periodo di tempo di attesa, prima di formulare una richiesta di aggiornamento se il server dei nomi non risponde. Se il master non ha risposto alla richiesta di aggiornamento entro il periodo di tempo specificato in <time-to- expire>
, i server slave cessano di fungere come autorità per quanto riguarda quel determinato spazio dei nomi.
La direttiva <TTL-minimo>
rappresenta l'ammontare di tempo utilizzato dagli altri server dei nomi per memorizzare le informazioni della zona.
Quando si configura BIND, il tempo viene riportato in secondi. Tuttavia potete utilizzare anche delle abbreviazioni per altre unità di tempo, come minuti (M
), ore (H
), giorni (D
) e settimane (W
). La Tabella 3.1, «Secondi paragonati ad altre unità di tempo» mostra la quantità di tempo in secondi e l'equivalente in un altro formato.
Secondi | Altre unità di tempo |
---|---|
60
|
1M
|
1800
|
30M
|
3600
|
1H
|
10800
|
3H
|
21600
|
6H
|
43200
|
12H
|
86400
|
1D
|
259200
|
3D
|
604800
|
1W
|
31536000
|
365D
|
L'esempio seguente mostra la struttura che un record di risorsa SOA
potrebbe avere quando popolato con valori reali.
@ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day
Le direttive e i record di risorsa, visti individualmente, possono essere difficili da comprendere. Comunque, tutto ha molto più senso se riunito in un unico file.
Il seguente esempio mostra un file zone di base.
$ORIGIN example.com. $TTL 86400 @ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day IN NS dns1.example.com. IN NS dns2.example.com. IN MX 10 mail.example.com. IN MX 20 mail2.example.com. dns1 IN A 10.0.1.1 dns2 IN A 10.0.1.2 server1 IN A 10.0.1.5 server2 IN A 10.0.1.6 ftp IN A 10.0.1.3 IN A 10.0.1.4 mail IN CNAME server1 mail2 IN CNAME server2 www IN CNAME server1
In questo esempio vengono utilizzate le direttive standard e i valori SOA
. I server dei nomi autorevoli sono impostati come dns1.example.com
e dns2.example.com
, con il record A
che li lega rispettivamente a 10.0.1.1
e 10.0.1.2
.
Il server di posta configurato con i record MX
fa riferimento a server1
e server2
tramite CNAME
. Poiché i nomi del server1
e del server2
non terminano con un punto (.
), il dominio $ORIGIN
viene collocato dopo tali nomi, diventando server1.example.com
e server2.example.com
. È possibile determinarne gli indirizzi IP tramite i relativi record di risorsa A
.
I servizi FTP e Web, disponibili con i nomi standard ftp.example.com
e www.example.com
vengono indirizzati a macchine che forniscono i servizi adeguati per questi nomi usando i record CNAME
.
Questo file di zona viene utilizzato con l'istruzione zone
nel file named.conf
simile a quello riportato qui di seguito:
zone "example.com" IN { type master; file "example.com.zone"; allow-update { none; }; };
Un file di zona per la risoluzione inversa dei nomi viene utilizzato per tradurre un indirizzo IP in uno spazio dei nomi particolare in un FQDN. Somiglia molto ad un file di zona standard, ad eccezione per il fatto che i record di risorsa PTR
, vengono utilizzati per collegare gli indirizzi IP ad un nome del dominio qualificato.
L'esempio riportato mostra la struttura di un record PTR
:
<last-IP-digit>
IN PTR <FQDN-of-system>
<ultima-cifra-IP>
si riferisce all'ultimo numero in un indirizzo IP che dovrebbe far riferimento all'FQDN di un determinato sistema.
Nell'esempio riportato qui di seguito gli indirizzi IP da 10.0.1.1
a 10.0.1.6
fanno riferimento agli FQDN corrispondenti. Esso è posizionato all'interno di /var/named/example.com.rr.zone
.
$ORIGIN 1.0.10.in-addr.arpa. $TTL 86400 @ IN SOA dns1.example.com. hostmaster.example.com. ( 2001062501 ; serial 21600 ; refresh after 6 hours 3600 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of 1 day 1 IN PTR dns1.example.com. 2 IN PTR dns2.example.com. 5 IN PTR server1.example.com. 6 IN PTR server2.example.com. 3 IN PTR ftp.example.com. 4 IN PTR ftp.example.com.
Questo file di zona viene utilizzato con l'istruzione zone
nel file named.conf
simile a quello riportato qui di seguito:
zone "1.0.10.in-addr.arpa" IN { type master; file "example.com.rr.zone"; allow-update { none; }; };
Esiste una differenza davvero minima tra questo esempio e un'istruzione standard zone
, salvo per il nome della zona. Una zona per la risoluzione inversa dei nomi richiede che siano invertiti i primi tre blocchi dell'indirizzo IP e che dopo di questi venga aggiunto ".in-addr.arpa
". Ciò permette che il blocco singolo di numeri IP utilizzato nel file della zona per la risoluzione inversa dei nomi venga collegato correttamente in questa zona.
BIND dispone di una utility chiamata rndc
che vi consente di amministrare la linea di comando del demone named
da un localhost oppure da un host remoto.
Per impedire l'accesso non autorizzato del demone named
, BIND usa un metodo di autenticazione a chiave segreta condivisa per garantire i privilegi a determinati host. Ció significa che una chiave identica deve essere presente in entrambi i file di configurazione /etc/named.conf
e rndc
, /etc/rndc.conf
.
Se avete installato il pacchetto bind-chroot
, il servizio BIND verrà eseguito all'interno dell'ambiente /var/named/chroot
. Tutti i file di configurazione verrano spostati al suo interno. Per questo, il file rndc.conf
si trova all'interno di /var/named/chroot/etc/rndc.conf
.
Poichè la utility rndc
non può essere eseguita in un ambiente chroot
, /etc/rndc.conf
risulta essere un link simbolico per /var/named/chroot/etc/rndc.conf
.
Per consentire a rndc
di connettersi al servizio named
, è necessario disporre dell'istruzionecontrols
nel file /etc/named.conf
del server BIND.
L'istruzione controls
, riportata nel seguente esempio, permette a rndc
di collegarsi dal localhost.
controls { inet 127.0.0.1 allow { localhost; } keys { <key-name>
; }; };
Questa istruzione indica a named
di ascoltare sulla porta TCP 953 di default dell'indirizzo di loopback e abilita i comandi rndc
provenienti dall'host locale, su corretta indicazione della chiave. Il <nome-chiave>
specifica un nome nell'istruzione key
all'interno del file /etc/named.conf
. L'esempio successivo mostra l'istruzione key
.
key "<key-name>
" { algorithm hmac-md5; secret "<key-value>
"; };
In questo caso, il <valore-chiave>
usa l'algoritmo MD5. Usate il seguente comando per generare le vostre chiavi usando l'algoritmo HMAC-MD5:
dnssec-keygen -a hmac-md5 -b <bit-length>
-n HOST <key-file-name>
È consigliabile una chiave con una lunghezza minima di 256 bit. La chiave effettiva da inserire nell'area <valore-chiave>
si trova nel file
generato da questo comando.
<nome-file-chiave>
Poichè /etc/named.conf
viene letto da tutti, è consigliabile posizionare l'istruzione key
in un file separato e leggibile solo da un utente root, per poi usare una istruzione include
come riferimento. Per esempio:
include "/etc/rndc.key";
key
é l'istruzione piú importante contenuta nel file /etc/rndc.conf
.
key "<key-name>
" { algorithm hmac-md5; secret "<key-value>
"; };
Il <nome-chiave>
e il <valore-chiave>
devono avere le stesse impostazioni indicate nel file /etc/named.conf
.
Per mettere insieme le chiavi specificate nel file /etc/named.conf
del server, aggiungere le seguenti righe a /etc/rndc.conf
.
options { default-server localhost; default-key "<key-name>
"; };
Questa direttiva imposta la chiave di default globale. Tuttavia il file di configurazione rndc
puó specificare chiavi diverse per server diversi, come nell'esempio riportato:
server localhost { key "<key-name>
"; };
Assicurarsi che solo un utente root possa leggere o scrivere sul file /etc/rndc.conf
.
Per maggiori informazioni sul file /etc/rndc.conf
, controllare la pagina man di rndc.conf
.
Un comando rndc
ha la seguente forma:
rndc <options>
<command>
<command-options>
Quando si esegue rndc
in un host locale configurato in modo corretto, è possibile utilizzare i seguenti comandi:
halt
— interrompe immediatamente il servizio named
.
querylog
— Attiva la registrazione delle richieste effettuate dai client a questo server dei nomi.
refresh
— aggiorna il database del server dei nomi.
reload
— Indica al server dei nomi di ricaricare i file zone, ma di non cancellare tutti i risultati memorizzati in precedenza. Ciò vi consente di effettuare delle modifiche ai file zone senza perdere tutte le risoluzioni di nomi archiviate.
Se le modifiche riguardano solo una zona specifica, potete ricaricare solo quella zona aggiungendo il nome della zona dopo il comando reload
.
stats
— Trasferisce le attuali statistiche di named
nel file /var/named/named.stats
.
stop
— Interrompe il server in modo tale da salvare tutti gli aggiornamenti dinamici e i dati Incremental Zone Transfers (IXFR) prima di uscire.
Se desiderate annullare le impostazioni predefinite nel file /etc/rndc.conf
, sono disponibili le seguenti opzioni:
-c
— Specifica la posizione alternata di un file di configurazione.
<file-configurazione>
-p
— Specifica il numero di una porta da usare per la connessione <port-number>
rndc
, diversa dalla porta 953 predefinita.
-s
— Specifica un server diverso da <server>
default-server
elencato in /etc/rndc.conf
.
-y
— Vi consente di specificare una chiave diversa da quella indicata dall'opzione <key-name>
default-key
nel file /etc/rndc.conf
.
Per ulteriori informazioni su queste opzioni, consultate la pagina man di rndc
.
La maggior parte delle versioni di BIND utilizza named
per fornire servizi di risoluzione dei nomi o per fungere da autorità per un particolare dominio o sottodominio. Tuttavia la versione 9 di BIND comprende una serie di caratteristiche avanzate che, se opportunamente configurate e utilizzate, garantiscono un servizio DNS più sicuro ed efficiente.
Alcuni di questi contenuti, come DNSSEC, TSIG e IXFR (i quali vengono definiti nella seguente sezione), andrebbero usati solo in ambienti di rete con server dei nomi capaci di supportarli. Se l'ambiente di rete comprende i server dei nomi non BIND o versioni BIND precedenti, verificate che ogni contenuto sia supportato prima di usarlo.
Tutte le caratteristiche fin qui trattate vengono approfondite nel BIND 9 Administrator Reference Manual nelSezione 3.7.1, «Documentazione installata».
BIND supporta i trasferimenti di zona incrementali (IXFR), grazie ai quali un server dei nomi slave effettua solo il download delle parti aggiornate di una zona modificata su di un server dei nomi master. Il processo di trasferimento standard richiede che l'intera zona venga trasferita a ogni server dei nomi slave, anche per la più piccola modifica. Per domini molto diffusi con file di zona lunghi e numerosi server dei nomi slave, IXFR semplifica i processi di notifica e aggiornamento.
IXFR è disponibile solo se utilizzate un aggiornamento dinamico per modificare i record della zona master. Se invece modificate manualmente i file di zona per effettuare delle modifiche, viene utilizzato l'Automatic Zone Transfer (AXFR). Per maggiori informazioni sull'aggiornamento dinamico, consultate il BIND 9 Administrator Reference Manual presente in Sezione 3.7.1, «Documentazione installata».
Mediante l'uso dell'istruzione view
del file named.conf
BIND presenta informazioni diverse a seconda di quale rete effettua la richiesta.
Questa opzione è utile soprattutto se desiderate che i client esterni alla vostra rete non possano eseguire un determinato servizio DNS, ma non volete invece escludere i client interni.
L'istruzione view
utilizza l'opzione match-clients
per far corrispondere indirizzi IP o reti intere conferendo loro opzioni speciali e dati di zona.
BIND supporta vari metodi di protezione per l'aggiornamento e il trasferimento di zone, in entrambi i server master e slave:
Abbreviazione di DNS SECurity, questa caratteristica consente di firmare crittograficamente le zone con una chiave di zona.
In tal modo le informazioni relative a zone specifiche possono essere verificate come provenienti da un server che le ha firmate con una determinata chiave privata, se il destinatario possiede la chiave pubblica del server dei nomi.
La versione 9 di BIND supporta inoltre il metodo SIG(0) chiave pubblica/privata per l'autenticazione del messaggio.
Abbreviazione di Transaction SIGnatures, questa caratteristica permette un trasferimento da master a slave solo dopo aver verificato l'esistenza della chiave segreta condivisa su entrambi i server dei nomi.
Questa caratteristica rafforza il metodo IP standard basato sull'indirizzo per l'autorizzazione al trasferimento. Infatti un eventuale intruso per poter trasferire la zona non solo dovrebbe conoscere l'indirizzo IP ma anche la chiave segreta.
La versione 9 di BIND supporta inoltre TKEY, ovvero un altro metodo a chiave segreta condivisa per l'autorizzazione a trasferimenti di zona.
La versione 9 di BIND supporta il servizio del nome in ambienti IP versione 6 (IPv6) utilizzando i record di zona A6
.
Se il vostro ambiente di rete comprende host con IPv4 e IPv6, è necessario usare il demone lwresd
, lightweight resolver daemon, nei vostri client. Questo demone è un server dei nomi 'caching-only' davvero efficiente, che riconosce i nuovi record A6
e DNAME
utilizzati con IPv6. Per maggiori informazioni, consultate la pagina man di lwresd
.
Spesso i principianti commettono alcuni errori quando modificano i file di configurazione di BIND. Assicuratevi quindi di evitare i seguenti problemi:
Quando modificate un file zone, assicuratevi di incrementare il numero seriale.
Se non incrementate il numero seriale, il server dei nomi master potrà disporre delle nuove informazioni, ma il server dei nomi slave non riceverà notifiche di cambiamenti, e non aggiornerà quindi i propri dati relativi a quella zona.
Ricordatevi di usare in modo corretto le parentesi graffe e i punti e virgola nel file /etc/named.conf
Se omettete un punto e virgola oppure una parentesi, ne consegue il rifiuto di named
all'avvio.
Non dimenticate di mettere i punti (.
) nei file zone dopo tutti gli FQDN e di ometterli negli hostname.
Il punto indica che il nome assegnato è completo. Se manca il punto, named
completerà questo nome con quello della zona o con il valore di $ORIGIN
.
Se un firewall blocca le connessioni tra il demone named
e altri server dei nomi, potrebbe essere necessario modificare il file di configurazione.
Per default, la versione 9 di BIND utilizza infatti porte randomiche superiori alla 1024 per interrogare altri nameserver. Alcuni firewall, tuttavia, presuppongono che i nameserver comunichino tra loro utilizzando la porta 53. Quindi per forzare named
all'uso della porta 53, inserite la seguente riga nell'istruzione options
di /etc/named.conf
:
query-source address * port 53;
Le seguenti fonti potranno fornirvi ulteriori informazioni relative all'uso di BIND.
BIND presenta una documentazione completa su numerosi argomenti, ognuno dei quali contenuto all'interno si una directory. Per ogni simbolo, sostituite <numero-versione>
con la versione di bind
installata sul sistema:
/usr/share/doc/bind-<version-number>
/
Questa directory elenca le caratteristiche più recenti.
/usr/share/doc/bind-<version-number>
/arm/
Questa directory contiene i formati HTML e SGML del BIND 9 Administrator Reference Manual, il quale elenca i requisiti delle risorse di BIND, illustra come configurare diversi tipi di server dei nomi, come eseguire il bilanciamento del carico e spiega altre caratteristiche avanzate. Questo manuale è il punto di partenza, soprattutto per i nuovi utenti di BIND.
/usr/share/doc/bind-<version-number>
/draft/
Questa directory contiene diversi documenti tecnici che affrontano problematiche relative al servizio DNS, e relativi metodi per una loro soluzione.
/usr/share/doc/bind-<version-number>
/misc/
Questa directory contiene i documenti ideati per trattare tematiche complesse. Gli utenti della versione 8 di BIND dovrebbero consultare il documento migration
, per le modifiche da eseguire prima di migrare alla versione 9 di BIND. Il file options
elenca tutte le opzioni implementate in BIND 9 e utilizzate in /etc/named.conf
.
/usr/share/doc/bind-<version-number>
/rfc/
Questa directory fornisce qualsiasi documento RFC relativo a BIND.
Con BIND sono presenti numerose pagine man per varie applicazioni e per i file di configurazione. Il seguente elenco riporta alcune delle pagine man più importanti.
man rndc
— Esplicita opzioni diverse disponibili usando il comando rndc
per controllare un server dei nomi BIND.
man named
— Esplicitano diversi argomenti che possono essere usati per controllare il demone del server dei nomi BIND.
man lwresd
— Descrive lo scopo e le opzioni disponibili per il demone lightweight resolver.
man named.conf
— Un elenco completo delle opzioni disponibili all'interno del file di configurazione named
.
man rndc.conf
— Un elenco completo delle opzioni disponibili all'interno del file di configurazione rndc
.
http://www.isc.org/index.pl?/sw/bind/ — La home page del progetto BIND contenente le informazioni relative alle release attuali e della versione PDF del BIND 9 Administrator Reference Manual.
http://www.redhat.com/mirrors/LDP/HOWTO/DNS-HOWTO.html — Illustra l'uso di BIND come nameserver di risoluzione, 'caching', e la configurazione dei vari file zone che fungono da nameserver primari per un dominio.
DNS e BIND di Paul Albitz e Cricket Liu; O'Reilly & Associates — Un libro di riferimento molto diffuso che illustra le opzioni di configurazione di BIND, incluso le strategie per rendere sicuro un server DNS.
The Concise Guide to DNS and BIND di Nicolai Langfeldt; edito da Que — approfondisce la connessione tra servizi di rete multipli e BIND, concentrandosi in modo particolare sugli argomenti tecnici "task-oriented".
SSH™ (o Secure SHell) è un protocollo in grado di facilitare le comunicazioni sicure tra due sistemi utilizzando un'architettura client/server, e permette altresì agli utenti di eseguire un login su sistemi host server in modo remoto. Diversamente da altri protocolli di comunicazione remoti, come ad esempio FTP o Telnet, SSH ǐcripta la sesione di login rendendo così difficile per gli utenti maliziosi ottenere password non cifrate.
SSH è stato ideato per sostituire le applicazioni meno sicure e più obsolete utilizzate per eseguire un login su host remoti, come ad esempio telnet
o rsh
. Un programma chiamato scp
sostituisce programmi più vecchi creati per copiare i file tra host, come rcp
. Poichè le applicazioni più obsolete non cifrano le password trasmesse tra client e server, se possibile cercate di non utilizzarle. Utilizzando metodi più sicuri per eseguire un login su sistemi remoti, diminuirete i rischi sia per il sistema client che per l'host remoto.
Il protocollo SSH fornisce le seguenti funzioni:
Dopo un collegamento iniziale, il client è in grado di verificare se il suo collegamento è stato effettuato sullo stesso server sul quale si è precedentemente collegato.
Il client trasmette le proprie informazioni di autenticazione al server, utilizzando una cifratura molto sicura a 128-bit.
Tutti i dati inviati e ricevuti durante una sessione vengono trasferiti utilizzando una cifratura a 128-bit, rendendo le trasmissioni intercettate estremamente difficili da decifrare e leggere.
Il client è in grado di inoltrare applicazioni [1]X11 dal server. Questa tecnica chiamata X11 forwarding, fornisce un metodo sicuro per utilizzare applicazioni grafiche attraverso la rete.
Poichè il protocollo SSH cifra qualsiasi cosa inviata o ricevuta, esso può essere utilizzato per rendere sicuri protocolli non sicuri. Usando una tecnica chiamata port forwarding, un server SSH può diventare un condotto per rendere sicuri protocolli non sicuri, come POP, aumentando la sicurezza generale dei dati e del sistema.
Il client ed il server OpenSSH possono essere configurati in modo da creare un tunnel simile ad una rete privata virtuale, per il traffico presente tra le macchine client ed il server.
Red Hat Enterprise Linux include il pacchetto generale OpenSSH (openssh
) insieme al server OpenSSH (openssh-server
) ed ai pacchetti (openssh-clients
) del client. Nota bene, i pacchetti OpenSSH necessitano del pacchetto OpenSSL (openssl
), il quale è in grado d'installare alcune librerie di cifratura molto importanti, permettendo a OpenSSH di fornire comunicazioni cifrate.
Utenti maliziosi hanno a disposizione una varietà di tool che permette loro di arrestare, intercettare, e ridirezionare il traffico di rete in modo da ottenere accesso su di un determinato sistema. In termini generali questi pericoli vengono classificati nel modo seguente:
Intercettazione delle comunicazioni tra due sistemi — In questo esempio l'aggressore si può trovare in qualsiasi posizione della rete utilizzata dai soggetti in comunicazione tra loro. Egli è in grado di intercettare e mantenere informazioni, o alterarle ed inviarle all'utente desiderato.
Questo attacco può essere portato a termine attraverso l'utilizzo di un packet sniffer — una utility di rete molto comune.
Fingersi un host particolare — Utilizzando questa strategia, il sistema di un aggressore viene configurato in modo da comportarsi come il destinatario inteso della trasmissione. Se questa strategia funziona, il sistema dell'utente non sarà a conoscenza che la comunicazione in corso è con un host malizioso.
Questo attacco viene portato a termine attraverso la tecnica conosciuta come DNS poisoning[2] o IP spoofing[3].
Entrambi le tecniche sono in grado di intercettare informazioni molto sensibili e, se l'intercettazione viene fatta con intenti ostili, i risultati possono essere critici.
È possibile diminuire i suddetti rischi riguardanti la sicurezza, se utilizzate SSH per un login remoto sulla shell e per un processo di copiatura dei file. Questo processo è reso possibile poichè il server ed il client SSH utilizzano firme digitali per verificare l'identità. In aggiunta, tutte le comunicazioni tra i sistemi server e client sono cifrate. I tentativi di ottenere l'identità di una delle parti in comunicazione non verrà portato a termine poichè, ogni pacchetto verrà cifrato utilizzando una chiave conosciuta solo dal sistema locale e remoto.
Il protocollo SSH permette a qualsiasi programma server e client, creato per le specifiche del protocollo, di comunicare in modo sicuro e di poter essere usato in modo intercambiabile.
Sono presenti attualmente due tipi di SSH (versione 1 e versione 2). La suite OpenSSH con Red Hat Enterprise Linux utilizza la versione 2 di SSH la quale presenta una versione migliorata dell'algoritmo di scambio della chiave, la quale non risulta essere vulnerabile tanto quanto sulla versione 1. Tuttavia la suite OpenSSH supporta i collegamenti della versione 1.
Quando possibile è consigliato utilizzare solo client e server compatibili con la versione 2 di SSH.
I seguenti eventi contribuiscono alla protezione dell'integrità delle comunicazioni SSH tra due host.
Viene creato un cryptographic handshake in modo tale che il client è in grado di verificare se è in comunicazione con il server corretto.
Il livello di trasporto del collegamento tra i client e l'host remoto viene cifrato utilizzando un codice simmetrico.
Il client autentica se stesso nei confronti del server.
Il client remoto interagisce con l'host remoto attraverso un collegamento cifrato.
Il ruolo primario del livello di trasporto è quello di facilitare una comunicazione affidabile e sicura tra due host, al momento dell'autenticazione e durante le successive comunicazioni. Il livello di trasporto gestisce questo processo tramite la codifica e decodifica dei dati, e fornendo una protezione dell'integrità dei pacchetti dati durante l'invio e la ricezione. Il livello di trasporto fornisce un processo di compressione, velocizzando il trasferimento delle informazioni.
Una volta che il client SSH contatta un server, vengono scambiate le informazioni sulla chiave in modo tale che i due sistemi possano creare correttamente un livello di trasporto. Di seguito vengono riportate le seguenti informazioni durante il processo sopra indicato:
Vengono scambiate le chiavi
Viene determinato l'algoritmo di cifratura della chiave pubblica
Viene determinato l'algoritmo di cifratura simmetrico
Viene determinato l'algoritmo di autenticazione del messaggio
Determinazione dell'algoritmo hash
Durante lo scambio della chiave, il server si identifica nei confronti del client con una chave host unica. Se il client non ha mai comunicato prima con il server in questione, la chiave host del server risulta essere sconosciuta al client ed il collegamento viene così rifiutato. OpenSSH aggira questo ostacolo accettando la chiave host del server. Tale accettazione viene eseguita dopo la notifica all'utente, il quale a sua volta ha accettato e verificato la nuova chiave host. Durante i collegamenti successivi, la chiave host del server viene controllata con la versione precedentemente salvata presente sul client, assicurando così che il client è in comunicazione con il server desiderato. Se in futuro la chiave host non corrisponde più a quella precedentemente conservata, l'utente dovrà rimuovere la versione salvata del client prima di potersi collegare.
È possibile per un aggressore comportarsi come un server SSH durante il contatto iniziale, poichè il sistema locale non riesce a riconoscere il server desiderato da quello impostato dall'aggressore. Per prevenire ciò verificate l'integrità di un nuovo server SSH, contattando semplicemente l'amministratore del server prima di collegarvi per la prima volta, oppure in presenza di una discordanza tra le chiavi host.
SSH è stato ideato per funzionare con quasi tutti gli algoritmi della chiave pubblica o del formato di cifratura. Dopo che una scambio di chiavi iniziale crea un valore hash utilizzato per gli scambi e per il valore segreto condiviso, i due sistemi iniziano subito il calcolo delle nuove chiavi e degli algoritmi, per proteggere il processo di autenticazione insieme ai dati futuri inviati attraverso il collegamento.
Dopo aver trasmesso una certa quantità di dati utilizzando una determinata chiave ed un algoritmo (la quantità esatta dipende dall'implementazione SSH), si verificherà un'altro scambio di chiavi, generando così un altro set di chiavi di valore hash insieme ad un valore segreto condiviso. Anche se un aggressore è in grado di determinare il valore segreto condiviso e quello hash, essi possono essere utilizzati solo per un periodo di tempo limitato.
Una volta stabilito un tunnel sicuro da parte del livello di trasporto, attraverso il quale è possibile passare informazioni tra due sistemi, il server informa il client sui diversi metodi di autenticazione supportati, come ad esempio la firma chiave-codificata privata oppure l'inserimento di una password. Successivamente il client tenta di autenticare se stesso nei confronti del server utilizzando uno dei suddetti metodi.
I client ed i server SSH possono essere configurati in modo da permettere diversi tipi di autenticazione, conferendo così ad entrambe le parti un controllo molto efficace. Il server è in grado di decidere i metodi di cifratura supportati in base al proprio modello di sicurezza, ed il client è in grado di scegliere l'ordine dei metodi di autenticazione dalle opzioni disponibili.
Dopo un processo di autenticazione corretto attraverso il livello di trasporto SSH, verranno aperti canali multipli tramite una tecnica chiamata multiplexing[4]. Ogni canale gestisce le comunicazioni per sessioni diverse del terminale e per sessioni X11 inoltrate.
Sia i client che i server sono in grado di creare un nuovo canale. Ad ogni canale verrà assegnato un numero diverso ad ogni estremità del collegamento. Quando il client cerca di aprire un nuovo canale, i client inviano il numero del canale insieme alla richiesta. Queste informazioni verranno conservate dal server ed utilizzate per inviare la comunicazione al canale in questione. Il tutto viene portato a termine in modo tale che le diverse sessioni non entrano in conflitto tra loro, così al termine della sessione stessa, il canale relativo può essere chiuso senza disturbare il collegamento SSH primario.
I canali supportano anche il flow-control, il quale permette loro di inviare e ricevere dati seguendo un certo ordine. In questo modo, i dati non verranno inviati attraverso il canale fino a quando il client riceve un messaggio indicando l'apertura del canale.
Il client ed il server negozieranno automaticamente tra loro le caratteristiche di ogni canale, tale processo verrà eseguito considerando il tipo di servizio richiesto dal client, ed il modo in cui l'utete risulta collegato alla rete. Il tutto garantisce una certa flessibilità nella gestione di diversi tipi di collegamenti remoti, senza modificare l'infrastruttura di base del protocollo.
Prima di eseguire un server OpenSSH è necessario verificare che siano installati i pacchetti RPM appropriati. Il pacchetto openssh-server
risulta essere necessario e dipende dal pacchetto openssh
.
Il demone OpenSSH utilizza il file di configurazione /etc/ssh/sshd_config
. Il file di configurazione di default dovrebbe essere sufficiente per gran parte degli usi. Se volete configurare il demone in modo diverso dalla configurazione di default di fornita dasshd_config
, consultate la pagina man del comando sshd
per ottenere un elenco delle parole chiave che possono essere incluse nel file di configurazione.
Se eseguite una nuova installazione, il sistema reinstallato crea un nuovo set di chiavi per l'identificazione. Qualsiasi client collegato al sistema con qualsiasi tool OpenSSH, prima della reinstallazione visualizzeranno i seguenti messaggi:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed.
Se desiderate conservare le chiavi host generate per il sistema, eseguite un backup dei file /etc/ssh/ssh_host*key*
e ripristinateli dopo il processo di reinstallazione. Questo processo conserva l'identità del sistema e quando i client tenteranno di collegarsi a; sistema dopo la reinstallazione, non riceveranno il messaggio di avviso.
Per sfruttare al massimo le potenzialità di SSH, è sconsigliato l'utilizzo di protocolli non sicuri come Telnet e FTP. In caso contrario, la password di un utente può essere protetta per una sessione utilizzando SSH, ma essere catturata più in avanti eseguendo un login durante l'utilizzo di Telnet.
Alcuni servizi da disabilitare includono:
telnet
rsh
rlogin
vsftpd
Per disabilitare i metodi di collegamento non sicuri al sistema, utilizzate il programma della linea di comando chkconfig
, il programma basato su ncurses /usr/sbin/ntsysv, o l'applicazione grafica Tool di configurazione dei servizi (system-config-services
). Tutti questi tool richiedono un livello d'acceso root.
OpenSSH possiede due set diversi di file di configurazione: uno per i programmi client (ssh
, scp
, e sftp
), ed uno per il demone del server (sshd
).
Le informazioni sulla configurazione di SSH dell'intero sistema vengono conservate all'interno della directory /etc/ssh/
:
moduli
— Contiene i gruppi Diffie-Hellman utilizzati per lo scambio della chiave Diffie-Hellman, critica per la creazione di un livello di trasporto sicuro. Al momento di uno scambio di chiavi all'inizio di una sessione SSH, verrà creato un valore segreto condiviso il quale non potrà essere determinato da una sola entità. Il suddetto valore viene utilizzato per fornire un'autenticazione host.
ssh_config
— Il file di configurazione del client SSH di default del sistema. Verrà sovrascritto se è presente un altro file di configurazione all'interno della home directory dell'utente (~/.ssh/config
).
sshd_config
— Il file di configurazione per il demone sshd
.
ssh_host_dsa_key
— La chiave privata DSA utilizzata dal demone sshd
.
ssh_host_dsa_key.pub
— La chiave pubblica DSA utilizzata dal demone sshd
.
ssh_host_key
— La chiave privata RSA utilizzata dal demone sshd
per la versione 1 del protocollo SSH.
ssh_host_key.pub
— La chiave pubblica RSA utilizzata dal demone sshd
per la versione 1 del protocollo SSH.
ssh_host_rsa_key
— La chiave privata RSA utilizzata dal demone sshd
per la versione 2 del protocollo SSH.
ssh_host_rsa_key.pub
— La chiave pubblica RSA utilizzata da sshd
per la versione 2 del protocollo SSH.
Le informazioni sulla configurazione SSH specifiche per l'utente, vengono conservate nella directory home dell'utente stesso all'interno della directory ~/.ssh/
:
authorized_keys
— Questo file contiene un elenco delle chiavi pubbliche autorizzate per i server. Quando il client si collega ad un server, il server stesso autentica il client eseguendo un controllo della sua chiave pubblica conservata all'interno di questo file.
id_dsa
— Contiene la chiave privata DSA dell'utente.
id_dsa.pub
— La chiave pubblica DSA dell'utente.
id_rsa
— La chiave privata RSA utilizzata da ssh
per la versione 2 del protocollo SSH.
id_rsa.pub
— La chaive pubblica RSA utilizzata da ssh
per la versione 2 del protocollo SSH.
identity
— La chiave privata RSA utilizzata da ssh
per la versione 1 del protocollo SSH.
identity.pub
— La chiave pubblica RSA utilizzata da ssh
per la versione 1 del protocollo SSH.
known_hosts
— Questo file contiene le chiavi host DSA dei server SSH accessi dall'utente. Esso risulta essere molto importante per assicurare il collegamento del client SSH al corretto server SSH.
Se è stata modificata la chiave host del server SSH, il client notificherà all'utente l'impossibilità di effettuare alcun collegamento, fino a quando la chiave host del server non verrà cancellata dal file known_hosts
utilizzando un editor di testo. Prima di fare ciò, tuttavia, contattate l'amministratore del sistema del server SSH, in modo da verificare che il server non sia compromesso.
Consultate le pagine man ssh_config
e sshd_config
per informazioni sulle diverse direttive disponibili all'interno dei file di configurazione SSH.
Per collegarvi a un server OpenSSH tramite un computer client, è necessario che siano installati i pacchetti openssh-clients
e openssh
.
Il comando ssh
può essere considerato una valida alternativa ai comandi rlogin
, rsh
e telnet
. Questo comando permette di collegarsi e di eseguire comandi su una macchina remota.
L'uso del comando ssh
per collegarsi a un computer remoto è simile al comando telnet
. Per collegarvi a un computer remoto penguin.example.net, digitate il comando seguente al prompt della shell:
ssh penguin.example.net
La prima volta che vi collegate a una macchina remota tramite il comando ssh
, compare un messaggio simile al seguente:
L'autenticità dell'host penguin.example.net' non può essere stabilita. L'impronta digitale della chiave DSA è 94:68:3a:3a:bc:f3:9a:9b:01:5d:b3:07:38:e2:11:0c. Siete sicuri di voler continuare il collegamento (si/no)?
Digitate si
per continuare. In questo modo aggiungete il server all'elenco degli host conosciuti (~/.ssh/known_hosts/
) come visualizzato nel seguente messaggio:
Avvertimento: Aggiunto in modo permanente 'penguin.example.net' (RSA) all'elenco di host conosciuti.
Successivamente compare il prompt per l'inserimento della password di accesso al server remoto. Una volta inserita la password, compare il prompt della shell. Se non specificate un nome utente, viene passato alla macchina remota il nome utente usato per l'accesso alla macchina client locale. Per specificare un nome utente differente, usate il seguente comando:
ssh username
@penguin.example.net
Potete anche usare la sintassi ssh -1
.
nomeutente
penguin.example.net
Il comando ssh
può essere utilizzato per eseguire direttamente un comando su una macchina remota senza collegarsi al prompt della shell. La sintassi è ssh
. Per esempio, se volete eseguire il comando nomehost
comando
ls /usr/share/doc
sulla macchina remota penguin.example.net, digitate il seguente comando al prompt della shell:
ssh penguin.example.net ls /usr/share/doc
Dopo aver inserito la password corretta, viene visualizzato il contenuto della directory /usr/share/doc
. Quindi ritornerete al prompt della shell.
Il comando scp
viene usato per trasferire file tra computer tramite una connessione sicura e criptata. E` simile al comando rcp
.
La sintassi generale per trasferire file locali su un sistema remoto è la seguente:
scp<localfile>
username@tohostname:<remotefile>
<localfile>
specifica la fonte insieme con il percorso del file, come ad esempio /var/log/maillog
. <remotefile>
specifica la destinazione, la quale può essere un nuovo filename come ad esempio /tmp/hostname-maillog
. Per un sistema remoto, se /
non precede il resto del percorso, il suddetto percorso sarà relativo alla home directory di username
, generalmente /home/username/
.
Per trasferire il file locale shadowman
su di una home directory del vostro account su penguin.example.net, digitate il comando seguente al prompt della shell (sostituendo username
con il vostro nome utente):
scp shadowman username
@penguin.example.net:shadowman
Questo comando trasferisce il file locale shadowman
su /home/
su penguin.example.net. Alternativamente, potete estromettere l'ultimo username
/shadowmanshadowman
nel comando scp
.
La sintassi per trasferire un file da una macchina remota al sistema locale è la seguente:
scpusername@tohostname:<remotefile>
<newlocalfile>
<remotefile>
specifica la sorgente incluso il percorso, e <newlocalfile>
specifica la destinazione incluso il percorso.
File multipli possono essere specificati come file sorgente. Per esempio per trasferire il contenuto della directory /downloads
su di una directory esistente chiamata uploads
presente sulla macchina remota penguin.example.net, digitate al prompt della shell il comando seguente:
scp downloads/* username
@penguin.example.net:uploads/
L'utility sftp
è utilizzata per sessioni FTP interattive e sicure. È simile al comando ftp
tranne per il fatto che utilizza una connessione sicura e criptata. La sintassi è
. Completata la fase di autenticazione, potete utilizzare il set di comandi simile all'FTP. Consultate la pagina man del comando sftp nomeutente@nomehost.com
sftp
per ottenere un elenco di questi comandi. Per leggere la pagina man, eseguite il comando man sftp
al prompt della shell. L'utility sftp
è disponibile a partire dalla versione 2.5.0p1 e successiva di OpenSSH.
Una interfaccia della linea di comando sicura rappresenta solo l'inizio dei diversi modi di utilizzo di SSH. Data una corretta ampiezza di banda, le sessioni X11 possono essere dirottate attraverso un canale SSH. Oppure utilizzando TCP/IP forwarding, i collegamenti precedentemente considerati non sicuri tra sistemi possono essere mappati su canali SSH specifici.
Aprire una sessione X11 attraverso un collegamento SSH, è semplice tanto quanto collegarsi al server SSH utilizzando l'opzione -Y
ed eseguire un programma X su di una macchina locale.
ssh -Y <user>@example.com
Quando un programma X viene eseguito da un prompt della secure shell, il client SSH ed il server creano un nuovo canale sicuro, ed i dati del programma X vengono inviati, attraverso quel canale, alla macchina del client in modo trasparente.
X11 forwarding può essere molto utile, esso infatti può essere usato per creare una sessione interattiva e sicura di Tool di configurazione della stampante. Per fare ciò collegatevi al server utilizzando ssh e successivamente digitate:
system-config-printer &
Dopo aver fornito la password root per il server, verrà visualizzato Tool di configurazione della stampante, il quale permetterà all'utente remoto di configurare in modo sicuro il processo di stampa su di un sistema remoto.
SSH è in grado di rendere sicuro protocolli TCP/IP insicuri tramite il port forwarding. Quando viene utilizzata questa tecnica il server SSH diviene un condotto cifrato per il client SSH.
Port forwarding mappa una porta locale presente sul client su di una porta remota del server. SSH può mappare qualsiasi porta del server su qualsiasi porta presente sul client; questa tecnica funziona anche se i numeri della porta non corrispondono.
Per creare un canale per il TCP/IP Port forwarding in ascolto per collegamenti sull'host locale, utilizzate il seguente comando:
ssh -Llocal-port
:remote-hostname
:remote-port
username
@hostname
Per impostare il port forwarding in ascolto su porte minori di 1024, avrete bisogno di un livello di accesso root.
Per controllare le email sul server chiamato mail.example.com
utilizzando POP3 attraverso un collegamento cifrato, utilizzate il seguente comando:
ssh -L 1100:mail.example.com:110 mail.example.com
Una volta presente un canale per il port forwarding tra la macchina client ed il mail server, direzionate un POP3 mail server in modo da utilizzare la porta 1100 sull'host locale, in modo da controllare la presenza di nuova posta. Qualsiasi richiesta inviata alla porta 1100 sul sistema client, verrà direzionata in modo sicuro al server mail.example.com
.
Se mail.example.com
non esegue il server SSH, ma un'altra macchina presente sulla stessa rete stà eseguendo questo processo, SSH può essere ancora utilizzato per rendere sicuro parte del collegamento. Tuttavia sarà necessario emettere un comando leggermente diverso:
ssh -L 1100:mail.example.com:110 other.example.com
In questo esempio le richieste POP3 provenienti dalla porta 1100 sulla macchina client, vengono inoltrate attraverso il collegamento SSH sulla porta 22 sul server SSH, other.example.com
. Successivamente, other.example.com
si collega alla porta 110 su mail.example.com
per controllare la presenza di nuova posta. Quando utilizzate questa tecnica, ricordate che solo il collegamento tra il sistema client ed il server SSH other.example.com
risulta essere sicuro.
Il Port forwarding può essere utilizzato per ottenere le informazioni in modo sicuro attraverso i firewall di rete. Se il firewall è stato configurato per permettere la presenza di traffico SSH attraverso la propria porta standard (22), bloccando qualsiasi accesso ad altre porte, un sarà ancora possibile eseguire un collegamento tra due host utilizzando le porte bloccate, ridirezionando semplicemente la propria comunicazione attraverso un collegamento SSH già esistente.
Utilizzando il port forwarding per inoltrare i collegamenti in questo modo, permetterà qualsiasi utente presente sul sistema client di collegarsi al servizio in questione. Se il sistema client risulta essere compromesso, l'aggressore avrà accesso ai servizi inoltrati.
Gli amministratori che non desiderano implementare il port forwarding possono disabilitare questa funzione sul server, specificando un parametro No
per la riga AllowTcpForwarding
in /etc/ssh/sshd_config
, e successivamente riavviare il servizio sshd
.
Se non volete inserire la vostra password ogni volta che usate i comandi ssh
, scp
o sftp
per collegarvi a una macchina remota, potete generare una coppia di chiavi di autorizzazione.
Le chiavi devono essere generate per ogni utente. Per generare le chiavi per un utente, eseguite la procedura seguente collegandovi con il vostro nome utente. Se vi collegate come root, solo l'utente root potrà utilizzare le chiavi.
Se eseguite l'avvio con la versione 3.0 di OpenSSH, ~/.ssh/authorized_keys2
, ~/.ssh/known_hosts2
e /etc/ssh_known_hosts2
risultano obsoleti. I protocolli 1 e 2 di SSH condividono i file ~/.ssh/authorized_keys
, ~/.ssh/known_hosts
e /etc/ssh/ssh_known_hosts
.
Red Hat Enterprise Linux 5.2 uses SSH Protocol 2 and RSA keys by default.
Se effettuate una reinstallazione ma desiderate salvare la coppia di chiavi generata, eseguite il backup della directory .ssh
nella vostra directory home. Dopo la reinstallazione copiate questa directory nella vostradirectory home. Questo processo può essere eseguito per tutti gli utenti del sistema, inclusi gli utenti root.
Per generare una coppia di chiavi RSA per la versione 2 del protocollo SSH, utilizzate la seguente procedura, che rappresenta il punto di partenza di default relativo a OpenSSH 2.9.
Per generare una coppia di chiavi RSA da utilizzare con la versione 2 del protocollo, digitate il seguente comando al prompt della shell:
ssh-keygen -t rsa
Accettate il percorso predefinito del file ~/.ssh/id_rsa
. Immettete una frase di accesso diversa dalla password del vostro account e confermatela digitandola una seconda volta.
La chiave pubblica verrà scritta in ~/.ssh/id_rsa.pub
, mentre la chiave privata verrà scritta in ~/.ssh/id_rsa
. Non comunicate mai la vostra chiave privata a nessuno.
Modificate i permessi per la directory .ssh
usando il seguente comando:
chmod 755 ~/.ssh
Copiate i contenuti di ~/.ssh/id_rsa.pub
in ~/.ssh/authorized_keys
sulla macchina alla quale desiderate collegarvi. Se il file ~/.ssh/authorized_keys
esiste, potete copiare i contenuti del file ~/.ssh/id_rsa.pub
nel file ~/.ssh/authorized_keys
sull'altra macchina.
Modificate i permessi del file authorized_keys
usando il seguente comando:
chmod 644 ~/.ssh/authorized_keys
Se state eseguendo GNOME o un desktop grafico con librerie GTK2+, andate su Sezione 4.7.3.4, «Configurazione di ssh-agent
con una GUI». Se non state eseguendo il sistema X Window, andate su Sezione 4.7.3.5, «Configurazione di ssh-agent».
Per generare una coppia di chiavi DSA per la versione 2 del protocollo SSH, eseguite la procedura qui descritta.
Per generare una coppia di chiavi DSA per la versione 2 del protocollo, digitate il seguente comando al prompt della shell:
ssh-keygen -t dsa
Accettate il percorso predefinito del file ~/.ssh/id_dsa
. Immettete una frase di accesso diversa dalla password del vostro account e confermatela inserendola una seconda volta.
Una frase di accesso è una sequenza di parole e caratteri utilizzata per autenticare l'utente. Al contrario delle password, le frasi di accesso possono contenere anche spazi e tabulazioni. Inoltre le frasi di accesso sono generalmente più lunghe delle password poiché possono contenere più parole.
La chiave pubblica verrà scritta in ~/.ssh/id_dsa.pub
, mentre la chiave privata verrà scritta in ~/.ssh/id_dsa
. Non comunicate mai la vostra chiave privata a nessuno.
Modificate i permessi della directory .ssh
mediante il seguentecomando:
chmod 755 ~/.ssh
Copiate i contenuti di ~/.ssh/id_dsa.pub
in ~/.ssh/authorized_keys
sulla macchina alla quale volete collegarvi. Se il file ~/.ssh/authorized_keys
esiste, potete copiare i contenuti del file ~/.ssh/id_dsa.pub
nel file ~/.ssh/authorized_keys
sull'altra macchina.
Modificate i permessi del file authorized_keys
usando il seguente comando:
chmod 644 ~/.ssh/authorized_keys
Se state eseguendo GNOME o un desktop grafico con librerie GTK2+, andate su Sezione 4.7.3.4, «Configurazione di ssh-agent
con una GUI». Se non state eseguendo il sistema X Window, andate su Sezione 4.7.3.5, «Configurazione di ssh-agent».
Eseguite la procedura seguente per generare una coppia di chiavi RSA per la versione 1 del protocollo SSH. Se effettuate solo connessioni tra sistemi, non dovete generare una coppia di chiavi RSA versione 1.3 o RSA versione 1.5.
Per generare une coppia di chiavi RSA (per le versioni 1.3 e 1.5), digitate il comando seguente al prompt della shell:
ssh-keygen -t rsa1
Accettate il percorso predefinito del file (~/.ssh/identity
). Immettete una frase di accesso diversa dalla vostra password di account e confermatela digitandola una seconda volta.
La chiave pubblica verrà scritta in ~/.ssh/identity.pub
, mentre la chiave privata verrà scritta in ~/.ssh/identity
. Non comunicate mai la vostra chiave privata a nessuno.
Modificate i permessi della directory .ssh
e le vostre chiavi tramite i comandi chmod 755 ~/.ssh
e chmod 644 ~/.ssh/identity.pub
.
Copiate il contenuto di ~/.ssh/identity.pub
nel file ~/.ssh/authorized_keys
della macchina remota alla quale volete collegarvi. Se il file ~/.ssh/authorized_keys
non esiste, potete copiare il file ~/.ssh/identity.pub
nel file ~/.ssh/authorized_keys
sulla macchina remota.
Se state eseguendo GNOME, andate su Sezione 4.7.3.4, «Configurazione di ssh-agent
con una GUI». Se non state eseguendo GNOME, andate su Sezione 4.7.3.5, «Configurazione di ssh-agent».
L'utility ssh-agent
può essere usata per salvare la frase di accesso ed evitare di ridigitarla ogni volta che attivate una connessione ssh
o scp
. Se utilizzate GNOME il pacchetto gnome-ssh-askpass
contiene l'applicazione usata per richiedere la frase di accesso al momento della connessione a GNOME e per conservarla fino alla disconnessione. Non sarà necessario inserire la vostra password o frase di accesso per le connessioni ssh
o scp
effettuate durante la sessione di GNOME. Se non state usando GNOME, consultate Sezione 4.7.3.5, «Configurazione di ssh-agent».
Per salvare la frase di accesso durante la sessione GNOME, eseguite questa procedura:
Avrete bisogno di avere il pacchetto gnome-ssh-askpass
; per sapere se tale pacchetto è installato, digitate il comando rpm -q openssh-askpass
. Il pacchetto può essere installato dal vostro CD-ROM Red Hat Enterprise Linux, da un sito mirror Red Hat FTP o usando Red Hat Network.
Selezionate il Pulsante del menu principale = > (sul Pannello) =>Preferenze => Piú preferenze => Sessioni = > e fate clic sulla scheda Programmi d'avvio. Fate clic su Aggiungi e digitate /usr/bin/ssh-add
nell'area Comando d'avvio. Attribuitegli un livello di priorità superiore a qualsiasi altro comando in modo che venga eseguito per ultimo. Vi consigliamo di attribuire a ssh-add
un numero uguale o superiore a 70. Più alto è il numero, più bassa è la priorità. Se avete altri programmi in elenco, questo deve avere la priorità più bassa. Selezionate Chiudi per uscire dal programma.
Scollegatevi e ricollegatevi a GNOME; in altre parole, riavviate X. Una volta avviato GNOME, si apre una finestra di dialogo che richiede l'inserimento della frase di accesso. Inserite la frase di accesso richiesta. Se sono state configurate sia le chiavi DSA che RSA, il sistema richiede entrambe le coppie. D'ora in poi, i comandi ssh
, scp
o sftp
non richiedono alcuna password.
Il comando ssh-agent
permette di registrare la frase di accesso per non doverla digitare ogni qualvolta si stabilisce una connessione ssh
o scp
. Se non usate il sistema X Window, eseguite la procedura di seguito riportata dal prompt della shell. Se siete in GNOME, ma non volete configurarlo in modo che vi chieda la vostra frase di accesso al momento del login (consultate Sezione 4.7.3.4, «Configurazione di ssh-agent
con una GUI»), la procedura funziona in un terminal window, come XTerm. Se state eseguendo X, ma non GNOME, la procedura funziona in un terminal window. Tuttavia, la vostra frase di accesso viene memorizzata solo per quel terminal window, non si tratta di un'impostazione valida a livello globale.
Al prompt della shell digitate il comando:
exec /usr/bin/ssh-agent $SHELL
Quindi digitate il comando:
ssh-add
e inserite la vostra frase di accesso. Se sono configurate più coppie di chiavi, vi vengono richieste tutte le coppie.
Quando vi scollegate, la vostra frase di accesso viene cancellata. Ogni volta che vi collegate a una console virtuale o aprite una finestra di terminale, dovete eseguire questi due comandi.
I progetti OpenSSH e OpenSSL sono in continuo sviluppo. Per informazioni più aggiornate, vi consigliamo di collegarvi direttamente al sito Web relativo. Anche le pagine man dei tool OpenSSH e OpenSSL contengono informazioni dettagliate.
Pagine man dei comandi ssh
, scp
, sftp
, sshd
e ssh-keygen
— riportano informazioni sull'utilizzo di tali comandi e tutti i parametri a essi associati.
http://www.openssh.com — Il sito contiene la pagina delle FAQ di OpenSSH, i bug report, le mailing list, gli obiettivi del progetto e una spiegazione piùtecnica dei contenuti sulla sicurezza.
http://www.openssl.org — Il sito contiene la pagina delle FAQ di OpenSSL, le mailing list e una descrizione degli obiettivi del progetto.
http://www.freessh.org — Il software client SSH per altre piattaforme.
[1] X11 si riferisce a X11R7 windowing display system, comunemente chiamato Sistema X Window o X. Red Hat Enterprise Linux include X11R7, un sistema X Window della open source.
[2] il DNS poisoning si verifica quando un aggressore si introduce in un server DNS, direzionando i sistemi client verso un host malizioso.
[3] l'IP spoofing si verifica quando un aggressore invia pacchetti di rete i quali appaiono erroneamente provenienti da un host fidato presente sulla rete.
[4] Un collegamento di tipo 'multiplexed' consiste in un numero considerevole di segnali inviati attraverso un mezzo comune condiviso. Con SSH verranno inviati attraverso un collegamento sicuro comune, un certo numero di canali.
Il Dynamic Host Configuration Protocol (DHCP) è un protocollo di rete per l'assegnazione automatica di informazioni TCP/IP alle macchine client. Ciascun client DHCP si collega al server DHCP posizionato centralmente, il quale ritorna la configurazione di rete del client (incluso l'indirizzo IP, ed i server DNS).
Il DHCP è utile per la configurazione automatica delle interfacce di rete del client. Durante la configurazione del sistema client, l'amministratore può scegliere il DHCP invece di inserire un indirizzo IP, maschera di rete, gateway o server DNS. Il client riprende questa informazione dal server DHCP. Il DHCP si rivela utile anche quando l'amministratore desidera cambiare gli indirizzi IP di un ampio numero di sistemi. Invece di riconfigurare tutti i sistemi, l'amministratore può modificare un solo file di configurazione DHCP sul server per il nuovo set di indirizzi IP. Se i server DNS di un'organizzazione cambiano, le modifiche vengono applicate al server DHCP, non ai client DHCP. Quando un amministratore riavvia la rete o i client, le modifiche saranno effettive.
Se una organizzazione possiede un server DHCP funzionale e propriamente collegato ad una rete, gli utenti di laptop ed altri computer portatili possono spostare questi dispositivi da un ufficio ad un altro.
Per poter configurare un server DHCP, è necessario creare il file di configurazione dhcpd.conf
. Un esempio di file è disponibile su /usr/share/doc/dhcp-<
.
version
>/dhcpd.conf.sample
Il DHCP utilizza anche il file /var/lib/dhcpd/dhcpd.leases
per archiviare il database in 'affitto' (lease) del client. Per ulteriori informazioni, fate riferimento alla Sezione 5.2.2, «Database degli affitti».
The first step in configuring a DHCP server is to create the configuration file that stores the network information for the clients. Use this file to declare options and global options for client systems.
Il file di configurazione può contenere schede e linee vuote aggiuntive per facilitare la formattazione. Le parole chiave distinguono tra lettere maiuscole e lettere minuscole, e le linee che iniziano con cancelletto (#) sono considerate commenti.
Due sono gli schemi di aggiornamento DNS attualmente implementati — la modalità di aggiornamento DNS ad-hoc e quella della modalità di aggiornamento della bozza di interazione DHCP-DNS interim. Se e quando queste due modalità vengono accettate come parte del processo degli standard Internet Engineering Task Force (IETF), sarà disponibile una terza modalità — il metodo di aggiornamento DNS standard. Il server DHCP deve essere configurato per l'utilizzo di uno dei due schemi correnti. La versione 3.0b2pl11 e le versioni precedenti utilizzavano la modalità ad-hoc, tuttavia questo non è più consigliato. Se desiderate che venga mantenuto lo stesso comportamento, aggiungete la riga riportata di seguito nella parte superiore del file di configurazione:
ddns-update-style ad-hoc;
Per utilizzare la modalità consigliata, aggiungete la riga riportata di seguito nella parte superiore del file di configurazione:
ddns-update-style interim;
Per ulteriori informazioni sulle diverse modalità, consultate la pagina man dhcpd.conf
.
Esistono due tipi di dichiarazioni nei file di configurazione:
Parametri — Indicano come eseguire un'operazione, se eseguire un'operazione oppure quali opzioni di configurazione di rete inviare al client.
Dichiarazioni — Descrivono la topologia della rete, i client, forniscono indirizzi per i client o applicano un gruppo di parametri a un gruppo di dichiarazioni.
Alcuni parametri che iniziano con la parola chiave opzione vengono indicati come options. Queste opzioni controllano le opzioni DHCP; mentre i parametri configurano i valori non facoltativi oppure controllano l'attività del server DHCP.
I parametri (incluse le opzioni) dichiarati prima di una sezione inclusa tra parentesi graffe ({ }) sono considerati parametri globali, ovvero si applicano a tutte le sezioni che li seguono.
Se modificate il file di configurazione, le modifiche saranno confermate solo al riavvio del demone DHCP con il comando service dhcpd restart
.
Invece di modificare un file di configurazione DHCP e riavviare il servizio ogni volta, utilizzando il comando omshell
avrete a disposizione una modalità interattiva per interrogare, e modificare la configurazione di un server DHCP. Utilizzando omshell
, è possibile eseguire tutte le modifiche mentre il server è in esecuzione. Per maggiori informazioni su omshell
, consultate la pagina man di omshell
.
Nell'Esempio 5.1, «Dichiarazione di sottorete» le opzioni routers
, subnet-mask
, domain-name
, domain-name-servers
, e time-offset
, sono utilizzate per le istruzioni host
presenti.
In aggiunta, è possibile dichiarare una subnet
, una dichiarazione subnet
deve essere inclusa per ogni sottorete della rete. In caso contrario, il server DHCP non riuscirà ad avviarsi.
Quest'esempio riporta delle opzioni globali per ogni client DHCP nella sottorete e un range
dichiarato. Ai client viene assegnato un indirizzo IP compreso nel range
.
subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-name "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time range 192.168.1.10 192.168.1.100; }
Tutte le sottoreti che condividono la stessa rete fisica dovrebbero essere inserite in una dichiarazione shared-network
, come mostra l'Esempio 5.2, «Dichiarazione di rete condivisa». I parametri contenuti nella shared-network
, e non nelle dichiarazioni subnet
, sono considerati parametri globali. Il nome della shared-network
deve essere un titolo descrittivo per la rete, come per esempio 'test-lab' per descrivere tutte le sottoreti in un ambiente di laboratorio di prova.
shared-network name { option domain-name "test.redhat.com"; option domain-name-servers ns1.redhat.com, ns2.redhat.com; option routers 192.168.0.254; more parameters for EXAMPLE shared-network subnet 192.168.1.0 netmask 255.255.252.0 { parameters for subnet range 192.168.1.1 192.168.1.254; } subnet 192.168.2.0 netmask 255.255.252.0 { parameters for subnet range 192.168.2.1 192.168.2.254; } }
Come mostrato nell'Esempio 5.3, «Dichiarazione di gruppo», la dichiarazione group
può essere utilizzata per applicare i parametri globali ad un gruppo di dichiarazioni. Per esempio, è possibile raggruppare reti condivise, sottoreti, pure host.
group { option routers 192.168.1.254; option subnet-mask 255.255.255.0; option domain-name "example.com"; option domain-name-servers 192.168.1.1; option time-offset -18000; # Eastern Standard Time host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; } host raleigh { option host-name "raleigh.example.com"; hardware ethernet 00:A1:DD:74:C3:F2; fixed-address 192.168.1.6; } }
Per configurare un server DHCP che affitta indirizzi IP dinamici al sistema inserito in una sottorete, modificate l'Esempio 5.4, «Parametro del range» inserendo i vostri valori. Tale procedura indica un tempo di affitto di default, il tempo massimo ed i valori della configurazione di rete per i client. L'esempio riportato qui di seguito assegna gli indirizzi IP ai sistemi client nel range
192.168.1.10 e 192.168.1.100.
default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; option routers 192.168.1.254; option domain-name-servers 192.168.1.1, 192.168.1.2; option domain-name "example.com"; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.10 192.168.1.100; }
Per assegnare un indirizzo IP a un client che si basa sull'indirizzo MAC di una scheda dell'interfaccia di rete, utilizzare il parametro hardware ethernet
contenuto nella dichiarazione host
. Come dimostra l'Esempio 5.5, «Indirizzo IP statico con DHCP», la dichiarazione host apex
specifica che la scheda di rete con l'indirizzo MAC 00:A0:78:8E:9E:AA dovrebbe sempre corrispondere all'indirizzo IP 192.168.1.4.
Notate che il parametro facoltativo host-name
può essere usato per assegnare un host name al client.
host apex { option host-name "apex.example.com"; hardware ethernet 00:A0:78:8E:9E:AA; fixed-address 192.168.1.4; }
L'esempio fornito del file di configurazione, può essere usato come punto di partenza a cui aggiungere le opzioni di configurazione personalizzata. Per copiarlo nella posizione corretta, usate il seguente comando:
cp /usr/share/doc/dhcp-<version-number>
/dhcpd.conf.sample /etc/dhcpd.conf
(dove <version-number>
è la versione del DHCP).
Per un elenco completo di dichiarazioni per le opzioni e delle loro funzioni, fate riferimento alla pagina man dhcp-options
.
Sul server DHCP, il file /var/lib/dhcpd/dhcpd.leases
archivia il database degli affitti del client DHCP. Si consiglia di non modificare il file. Le informazioni sull'affitto DHCP per ogni indirizzo IP assegnato di recente sono archiviate automaticamente nel database degli affitti. Le informazioni includono la durata dell'affitto, a chi è stato assegnato l'indirizzo IP, l'inizio e la fine delle date di affitto e l'indirizzo MAC della scheda di interfaccia di rete usata per riprendere l'affitto.
Tutti gli orari del database degli affitti fanno riferimento al Coordinated Universal Time (UTC), non all'ora locale.
Il database degli affitti viene ricreato qualvolta si desidera limitare la sua dimensione. Come prima cosa tutti gli affitti esistenti vengono salvati in un database temporaneo degli affitti. Il file dhcpd.leases
viene rinominato dhcpd.leases~
, ed il database temporaneo degli affitti viene salvato nel file dhcpd.leases
.
Il demone DHCP può essere terminato, o il sistema può essere interrotto, dopo aver rinominato il database in affitto sul file di backup, ma prima di aver salvato il nuovo file. Se ciò accade, il file dhcpd.leases
non esiste, ma sarà comunque necessario per avviare il servizio. Non create un nuovo file di affitto, in caso contrario tutti gli affitti verranno persi. La soluzione corretta sarà quella di rinominare il file di backup dhcpd.leases~
in dhcpd.leases
e quindi avviare il demone.
Quando viene avviato il server DHCP per la prima volta, esso non avrà successo se il file dhcpd.leases
non è già esistente. Usate il comando touch /var/lib/dhcp/dhcpd.leases
per creare il file nel caso in cui non dovesse esistere.
Se lo stesso server esegue BIND come un server DNS, questa fase non risulterà necessaria poichè avviando automaticamente il servizio named
, si andrà alla ricerca di un file dhcpd.leases
.
Per avviare il servizio DHCP, utilizzate il comando /sbin/service dhcpd start
. Per arrestare il server DHCP, utilizzate invece il comando /sbin/service dhcpd stop
.
Se disponete di più interfacce di rete per il sistema, ma desiderate che il server DHCP si avvii unicamente su di una interfaccia ben specifica, potete configurare il server DHCP per l'avvio solo sul dispositivo in questione. In /etc/sysconfig/dhcpd
, aggiungete il nome dell'interfaccia all'elenco DHCPDARGS
:
# Opzioni della linea di comando DHCPDARGS=eth0
Questo è utile per una macchina firewall con due schede di rete. Una scheda di rete può configurata come client DHCP per recuperare un indirizzo IP in Internet. L'altra scheda di rete può essere usata come un server DHCP per la rete interna protetta dal firewall. Se specificate solo la scheda di rete collegata alla rete interna, otterrete un sistema più sicuro in quanto gli utenti non possono collegarsi al demone tramite Internet.
Altre opzioni della linea di comando possono essere specificate nel file /etc/sysconfig/dhcpd
e includono:
-p
— Specifica il numero di porta UDP sulla quale <portnum>
dhcpd
deve essere in ascolto. Il default è la porta 67. Il server DHCP trasmette le risposte ai client DHCP tramite un numero di porta superiore di una unità, a quello specificato per la porta UDP. Per esempio, se si accetta la porta 67, il server si mette in ascolto sulla porta 67 per raccogliere le richieste, mentre utilizza la porta 68 per rispondere al client. Se si specifica una porta e si utilizza il relay agent DHCP, occorre specificare la stessa porta sulla quale il relay agent DHCP è in ascolto. Per maggiori informazioni consultate Sezione 5.2.4, «Relay Agent DHCP».
-f
— Eseguite il demone come processo in primo piano. Questo viene usato soprattutto per operazioni di debug.
-d
— Registrate il demone del server DHCP sul descrittore di errori standard. Questo è usato soprattutto per operazioni di debug. Se non è specificato, il log viene scritto nel file /var/log/messages
.
-cf
— Specificate la posizione del file di configurazione. La posizione di default è <filename>
/etc/dhcpd.conf
.
-lf
— Specifica la posizione del file del database in affitto. Se il file del database in affitto è già esistente, è importante che lo stesso file venga utilizzato a ogni avvio del server DHCP. Si consiglia di usare questa opzione solo per operazioni di debug su macchine non destinate alla produzione. La posizione di default è <filename>
/var/lib/dhcpd/dhcpd.leases
.
-q
— non stampate l'intero messaggio di copyright quando avviate il demone.
Il Relay Agent DHCP (dhcrelay
) vi consente di comunicare le richieste DHCP e BOOTP provenienti da una sottorete senza server DHCP a uno o più server DHCP su altre sottoreti.
Quando un client DHCP richiede delle informazioni, il Relay Agent inoltra la richiesta all'elenco di server DHCP specificati all'avvio del Relay Agent DHCP. Quando un server DHCP invia una risposta, viene eseguito il broadcast o l'unicast sulla rete che ha inviato la richiesta originale.
Il Relay Agent DHCP ascolta le richieste DHCP su tutte le interfacce a meno che non vengano specificate le interfacce nel file /etc/sysconfig/dhcrelay
con la direttiva INTERFACES
.
Per avviare il Relay Agent DHCP, utilizzate il comando service dhcrelay start
.
Per configurare manualmente un client DHCP, è necessario modificare il file /etc/sysconfig/network
per abilitare il file di networking e di configurazione per ciascun dispositivo di rete nella directory /etc/sysconfig/network-scripts
. In questa directory ogni dispositivo dovrebbe avere un file di configurazione chiamato ifcfg-eth0
dove eth0
è il nome del dispositivo di rete.
Il file /etc/sysconfig/network
dovrebbe contenere la riga seguente:
NETWORKING=yes
La variabile NETWORKING
deve essere impostata su yes
per attivare il networking al momento dell,avvio.
Il file /etc/sysconfig/network-scripts/ifcfg-eth0
deve contenere le seguenti righe:
DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
Sarà necessario un file di configurazione per ogni dispositivo che desiderate configurare per usare il DHCP.
Altre opzioni per lo script di rete sono:
DHCP_HOSTNAME
— Usate questa opzione solo se il server DHCP richiede al client di specificare un hostname prima di ricevere un indirizzo IP. (Il demone del server DHCP in Red Hat Enterprise Linux non supporta questo contenuto.)
PEERDNS=
, dove <answer>
è una delle seguenti:
<answer>
yes
— Modificare /etc/resolv.conf
con le informazioni provenienti dal server. Se si usa DHCP, allora yes
è il default.
no
— Non modificate /etc/resolv.conf
.
SRCADDR=
, dove <address>
è l'indirizzo IP source specificato per i pacchetti in uscita.
<address>
USERCTL=
, dove <answer>
è una delle seguenti:
<answer>
yes
— Gli utenti non root sono abilitati al controllo di questo dispositivo.
no
— Gli utenti non root non sono abilitati al controllo di questo dispositivo.
Se preferite una interfaccia grafica, consultate Capitolo 2, Configurazione di rete su come usare il Network Administration Tool per configurare una interfaccia di rete in modo da utilizzareDHCP.
Per configurazioni avanzate delle opzioni del client DHCP, come ad esempio il protocol timing, i requisiti dell'affitto, le richieste, il supporto DNS dinamico, gli alias insieme ad una vasta gamma di valori da sovrascrivere ed aggiungere alle configurazioni del client, consultare le pagine man di dhclient
e dhclient.conf
Per opzioni di configurazione aggiuntive consultare le seguenti risorse.
Pagina man di dhcpd
— Descrive il funzionamento del demone DHCP.
Pagina man di dhcpd.conf
— Spiega come configurare il file di configurazione di DHCP con alcuni esempi.
Pagina man di dhcpd.leases
— Spiega come configurare il file degli affitti DHCP con alcuni esempi.
Pagina man di dhcp-options
— Spiega la sintassi per dichiarare le opzioni DHCP in dhcpd.conf
; con alcuni esempi.
Pagina man di dhcrelay
— Spiega il Relay Agent DHCP e le opzioni di configurazione.
/usr/share/doc/dhcp-<
— Contiene i file di esempio, README, e le note di rilascio per le versioni attuali del servizio DHCP.
version
>/
File Transfer Protocol (FTP) è uno dei protocolli più vecchi e usati in Internet. Il suo compito è quello di trasferire i file tra host su di una rete in modo sicuro, senza richiedere all'utente di eseguire un log direttamente nell'host remoto o di sapere come usare il sistema remoto. Esso permette agli utenti di accedere i file su sistemi remoti, usando un insieme di comandi molto semplici.
Questo capitolo riporta le informazioni di base del protocollo FTP, insieme alle opzioni di configurazione per il server FTP primario presente con Red Hat Enterprise Linux, vsftpd
.
Tuttavia, poichè FTP è prevalentemente presente su Internet, viene richiesto spesso di condividere alcuni file con il pubblico. Gli amministratori del sistema, dovrebbero essere a conoscenza delle caratteristiche uniche del protocollo FTP.
Diversamente dai protocolli usati su Internet, FTP necessita di porte di rete multiple per funzionare in modo corretto. Quando una applicazione del client FTP inizia un collegamento ad un server FTP, verrà aperta sul server la porta 21 — conosciuta come porta di comando. Questa porta viene usata per emettere tutti i comandi al server. Qualsiasi dato richiesto dal server, viene ritornato al client tramite una porta dati. Il numero della porta per i collegamenti dei dati e il modo con il quale i suddetti collegamenti vengono inizializzati, varia a seconda se il client richiede i dati in modalità attiva o passiva.
Di seguito viene riportata la descrizione delle suddette modalità:
La modalità attiva è il metodo originale usato dal protocollo FTP per il trasferimento dei dati all'applicazione del client. Quando il trasferimento dei dati della modalità attiva viene iniziato dal client FTP, il server apre un collegamento dalla porta 20 sul server per l'indirizzo IP, e una porta non privilegiata randomica (maggiore di 1024) specificata dal client. Questo significa che la macchina del client deve essere abilitata ad accettare i collegamenti attraverso qualsiasi porta al di sopra di 1024. Con la crescita delle reti non sicure, come ad esempio Internet, l'uso dei firewall per proteggere le macchine dei client è molto importante. Poichè questi firewall spesso impediscono i collegamenti in entrata provenienti dai server FTP in modalità attiva, è stato ideata la modalità passiva.
La modalità passiva, come quella attiva, viene iniziata dall'applicazione client FTP. Quando si richiedono dati al server, il client FTP indica che desidera accedere ai dati in modalità passiva, e il server fornisce l'indirizzo IP e una porta non privilegiata e randomica (maggiore di 1024) sul server stesso. Il client si collega sulla porta presente sul server, per scaricare le informazioni richieste.
Anche se la modalità passiva risolve le problematiche dovute all'interferenza dei firewall del client con i dati di collegamento, tale modalità può complicare la gestione dei firewall del server. Limitando la gamma di porte non privilegiate offerte per i collegamenti passivi nel file di configurazione del server FTP, rappresenta un modo per limitare il numero di porte aperte su di un server, e semplifica il compito di creazione delle regole del firewall per il server. Consultare Sezione 6.5.8, «Opzioni della rete» per maggiori informazioni su come limitare le porte passive.
Red Hat Enterprise Linux contiene due diversi server FTP:
Red Hat Content Accelerator — Un Web server basato sul Kernel che consente di avere un web server e servizi FTP con elevate prestazioni. Poichè la velocità rappresenta la sua prima caratteristica, esso presenta una funzionalità limitata e viene eseguito solo come server FTP anonimo. Per maggiori informazioni su come configurare e gestire Red Hat Content Accelerator, consultare la documentazione disponibile online su http://www.redhat.com/docs/manuals/tux/.
vsftpd
— Un demone FTP sicuro e veloce, il quale rappresenta il server FTP preferito per Red Hat Enterprise Linux. Il remainder di questo capitolo si concentra su vsftpd
.
Il Very Secure FTP Daemon (vsftpd
) è stato creato per essere veloce, stabile e in modo particolare sicuro. La sua abilità di gestire in modo efficiente e sicuro un gran numero di collegamenti, rappresenta il motivo per il quale vsftpd
è il solo FTP 'stand-alone' distribuito con Red Hat Enterprise Linux.
Il modello di sicurezza usato da vsftpd
presenta tre aspetti primari:
Una separazione sostanziale di processi privilegiati e non — I suddetti processi gestiscono compiti diversi, e ognuno di questi processi viene eseguito con privilegi minimi necessari per affrontare un compito.
I compiti che richiedono privilegi elevati vengono gestiti da processi che richiedono privilegi minimi — Facendo leva sullecompatibilità presenti nella libreria libcap
, i compiti che generalmente richiedono i privilegi completi di root, possono essere eseguiti in modo più sicuro da un processo con meno privilegi.
La maggior parte dei processi vengono eseguiti in una cella chroot
— Quando possibile, variare la directory root dei processi, sulla directory condivisa; la suddetta directory viene così considerata una cella chroot
. Per esempio, se la directory /var/ftp/
risulta essere la directory condivisa primaria, vsftpd
assegna nuovamente /var/ftp/
alla nuova directory root, conosciuta come /
. Questa operazione non permette alcuna azione da parte di hacker nei confronti di ogni directory non contenuta sotto la nuova directory root.
L'uso di queste pratiche di sicurezza provoca i seguenti effetti su come vsftpd
affronta queste richieste:
Il processo genitore viene eseguito con il minimo dei privilegi necessari. — Il processo genitore calcola dinamicamente il livello dei privilegi necessari per minimizzare il livello di rischio. I processi figli gestiscono l'interazione diretta con i client FTP e vengono eseguiti con il numero più basso possibile di privilegi.
Tutte le operazioni che richiedono privilegi elevati, vengono gestite da un processo genitore piccolo. — Similmente al server HTTP, vsftpd
lancia i processi figli non privilegiati, in modo da gestire i collegamenti in entrata. Ciò permette al processo genitore privilegiato, di essere il più piccolo possibile e di gestire un numero più basso di compiti.
Tutte le richieste provenienti dai processi figlio non privilegiati, vengono distribuiti dal processo genitore. — Le comunicazioni con i processi figlio vengono ricevute attraverso un socket, e la validità di una informazione provenienti dai processi figlio, viene controllata prima di essere abilitata.
Molte interazioni con i client FTP vengono gestite in una cella chroot
da processi figlio non privilegiati. — Poichè questi processi figlio non sono privilegiati e hanno accesso solo alla directory che è stata condivisa, qualsiasi processo interrotto permette all'aggressore un accesso ai file condivisi.
L'RPM vsftpd
è in grado d'installare il demone (/usr/sbin/vsftpd
), la sua configurazione con i file relativi, e le sue directory FTP sul sistema. Il seguente è un elenco di file e directory maggiormente considerati quando si configura vsftpd
:
/etc/rc.d/init.d/vsftpd
— script d'inizializzazione (initscript) usato dal comando /sbin/service
per avviare, arrestare o ricaricare vsftpd
. Consultate Sezione 6.4, «Avvio e arresto di vsftpd
» per maggiori informazioni sull'uso di questo script.
/etc/vsftpd/vsftpd.conf
— Il file di configurazione per vsftpd
. Consultate Sezione 6.5, «Opzioni di configurazione vsftpd
» per un elenco di opzioni importanti presenti all'interno di questo file.
/etc/vsftpd.ftpusers
— Un elenco di utenti non abilitati ad eseguire un log in su vsftpd
. Per default questo elenco include anche gli utenti root
, bin
, e daemon
.
/etc/vsftpd.user_list
— Questo file può essere configurato in modo da permettere o negare l'accesso agli utenti presenti nell'elenco, a seconda se la direttiva userlist_deny
è impostata in /etc/vsftpd/vsftpd.conf
su YES
(default) o NO
. Se /etc/vsftpd.user_list
viene usato per garantire l'accesso agli utenti, i nomi degli utenti elencati non devono apparire in /etc/vsftpd.ftpusers
.
/var/ftp/
— Tale directory contiene i file serviti da vsftpd
. Essa contiene inoltre la directory /var/ftp/pub/
per gli utenti anonimi. Entrambe le directory sono leggibili da tutti, ma possono essere modificate solo dall'utente root.
L'RPM vsftpd
installa lo script /etc/rc.d/init.d/vsftpd
, il quale lo si può accedere usando il comando /sbin/service
.
Per avviare il server come utente root, digitare:
/sbin/service vsftpd start
Per arrestare il server come utente root, digitare:
/sbin/service vsftpd stop
L'opzione restart
rappresenta un modo più semplice per arrestare e riavviare vsftpd
. Esso rappresenta il modo più efficiente per confermare i cambiamenti apportati alla configurazione, dopo aver modificato il file di configurazione per vsftpd
.
Per riavviare il server come utente root digitare:
/sbin/service vsftpd restart
L'opzione condrestart
(conditional restart) avvia solo vsftpd
se quest'ultimo è in esecuzione. Questa opzione è utile per gli script, in quanto non avvia il demone se lo stesso non è in esecuzione.
Per riavviare il server in modo condizionato come utente root, digitare:
/sbin/service vsftpd condrestart
Talvolta un solo computer viene usato per servire i domini FTP multipli. Questa tecnica viene chiamata multihoming. Un modo per eseguire tale tecnica, multihome, usando vsftpd
, è quello di eseguire delle copie multiple del demone, ognuna delle quali con il proprio file di configurazione.
Per fare questo, assegnare prima tutti gli indirizzi IP pertinenti ai dispositivi della rete o dispositivi di rete alias presenti sul sistema. Consultare Capitolo 2, Configurazione di rete per maggiori informazioni sulla configurazione dei dispositivi di rete e dei dispositivi alias. Informazioni aggiuntive sugli script di configurazione della rete sono disponibili nel Capitolo 1, Interfacce di rete.
Successivamente, il server DNS per i domini FTP, deve essere configurato in modo da indicare le macchine corrette. Per informazioni su BIND e sui file di configurazione consultare il Capitolo 3, BIND (Berkeley Internet Name Domain).
Per far sì che vsftpd
risponda alle richieste su diversi indirizzi IP, bisogna eseguire copie multiple del demone. La prima copia deve essere eseguita usando gli initscript vsftpd
, come riportato nelSezione 6.4, «Avvio e arresto di vsftpd
». Questa copia usa il file di configurazione standard, /etc/vsftpd/vsftpd.conf
.
Ogni sito FTP aggiuntivo deve avere il file di configurazione con un nome unico nella directory /etc/vsftpd/
, come ad esempio /etc/vsftpd/vsftpd-site-2.conf
. Ogni file di configurazione deve essere leggibile e scrivibile solo da utenti root. All'interno di ogni file di configurazione per ogni server FTP in ascolto su di una rete IPv4, le seguenti direttive devono essere uniche:
listen_address=N.N.N.N
Sostituire N.N.N.N
con l'indirizzo IP unico per il sito FTP servito. Se il sito stà usando IPv6, usare invece la direttiva listen_address6
.
Una volta che ogni server aggiuntivo possiede un file di configurazione, il demone vsftpd
deve essere lanciato da un prompt della shell root usando il seguente comando:
vsftpd /etc/vsftpd/<configuration-file>
[amp ]
Nel comando sopra indicato, sostituire <configuration-file>
con il nome unico per il file di configurazione del server, come ad esempio /etc/vsftpd/vsftpd-site-2.conf
.
Altre direttive da alterare in base al server sono:
anon_root
local_root
vsftpd_log_file
xferlog_file
Per un elenco completo delle direttive disponibili all'interno del file di configurazione di vsftpd
, consultare Sezione 6.5, «Opzioni di configurazione vsftpd
».
Per configurare qualsiasi server aggiuntivo in modo da avviarsi automaticamente al momento dell'avvio, aggiungere il comando sopra citato alla fine del file /etc/rc.local
.
Anche se vsftpd
potrebbe non offrire un livello di personalizzazione offerto da altri server FTP disponibili, esso offre opzioni sufficienti per far fronte a molte delle esigenze di un amministratore. Per questo motivo gli errori di configurazione e quelli programmatici sono limitati.
Tutta la configurazione di vsftpd
è gestita dal suo file di configurazione, /etc/vsftpd/vsftpd.conf
. Ogni direttiva è situata sulla propria riga all'interno del file e segue il formato seguente:
<directive>
=<value>
Per ogni direttiva, sostituire <directive>
con una valida direttiva, e <value>
con un valore accettato.
Non ci deve essere alcun spazio tra <directive>
, il simbolo uguale, e <value>
in una direttiva.
Le righe di commento devono essere precedute dal carattere #
e sono ignorate dal demone.
Per un elenco completo di tutte le direttive disponibili, consultare la pagina man per vsftpd.conf
.
Il seguente è un elenco di alcune delle direttive più importanti all'interno di /etc/vsftpd/vsftpd.conf
. Tutte le direttive non esplicitamente trovate all'interno del file di configurazione di vsftpd
, sono impostate nel loro valore di default.
Il seguente è un elenco delle direttive che controllano il comportamento generale del demone vsftpd
.
listen
— Quando abilitata, vsftpd
viene eseguita in modalità standalone. Red Hat Enterprise Linux imposta questo valore su YES
. Questa direttiva non può essere usata insieme con la direttiva listen_ipv6
.
Il valore di default è NO
.
listen_ipv6
— Quando abilitata, vsftpd
viene eseguita in modalità standalone, ma è in ascolto sui socket IPv6. Questa direttiva non può essere usata insieme con la direttiva listen
.
Il valore di default è NO
.
Il seguente è un elenco di direttive le quali controllano il comportamento di login e dei meccanismi di controllo dell'accesso.
anonymous_enable
— Quando abilitata, gli utenti anonimi sono abilitati al log in. Il nome utente anonymous
e ftp
sono accettati.
Il valore di default è YES
.
Consultare Sezione 6.5.3, «Opzioni per l'utente anonimo» per un elenco di direttive che influenzano gli utenti anonimi.
banned_email_file
— Se la direttiva deny_email_enable
viene impostata su YES
, la stessa specifica il file contenente un elenco di password email anonime, le quali non hanno un accesso al server.
Il valore di default è /etc/vsftpd.banned_emails
.
banner_file
— Specifica il file contenente il testo mostrato quando viene stabilito un collegamento con il server. Questa opzione annulla qualsiasi testo specificato nella direttiva ftpd_banner
.
Non vi è alcun valore di default per questa direttiva.
cmds_allowed
— Specifica un elenco di comandi delimitati da una virgola abilitati dal server. Tutti gli altri comandi vengono rifiutati.
Non vi è alcun valore di default per questa direttiva.
deny_email_enable
— Quando abilitata, qualsiasi utente anonimo che utilizza le password delle email specificate in /etc/vsftpd.banned_emails
non sarà in grado di accedere al server. Il nome del file di riferimento di questa direttiva può essere specificato usando la direttiva banned_email_file
.
Il valore di default è NO
.
ftpd_banner
— Quando abilitata, la stringa specificata all'interno di questa direttiva, viene visualizzata quando viene stabilito un collegamento al server. Questa opzione può essere annullata dalla direttiva banner_file
.
Per default vsftpd
mostra i suoi banner standard.
local_enable
— Quando abilitata, gli utenti locali sono abilitati ad eseguire un log in nel sistema.
Il valore di default è YES
.
Consultare Sezione 6.5.4, «Opzioni dell'utente locale» per un elenco di direttive che influenzano gli utenti locali.
pam_service_name
— Specifica il nome del servizio PAM per vsftpd
.
Il valore di default è ftp
. Da notare tuttavia che con Red Hat Enterprise Linux il valore è impostato su vsftpd
.
Il valore di default è NO
. Da notare tuttavia che con Red Hat Enterprise Linux il valore è impostato su YES
.
userlist_deny
— Quando usato insieme con la direttiva userlist_enable
e impostato su NO
, tutti gli utenti locali sono impossibilitati ad eseguire un accesso, a meno che il nome utente non sia presente nel file specificato dalla direttiva userlist_file
. Poichè l'accesso viene negato prima di richiedere la password al client, impostando questa direttiva su NO
, impedisce agli utenti locali di richiedere una password in modo non cifrato attraverso la rete.
Il valore di default è YES
.
userlist_enable
— Quando abilitata, gli utenti presenti nel file specificato dalla direttiva userlist_file
, non possono eseguire l'accesso. Poichè l'accesso viene negato prima di richiedere la password al client, gli utenti non hanno la necessità di richiedere delle password non cifrate attraverso la rete.
Il valore di default è NO
, tuttavia con Red Hat Enterprise Linux il valore è impostato su YES
.
userlist_file
— Specifica il file indicato da vsftpd
, quando è abilitata la direttiva userlist_enable
.
Il valore di default è /etc/vsftpd.user_list
ed è creato durante l'installazione.
cmds_allowed
— Specifica un elenco, separato da una virgola, di comandi FTP abilitati dal server. Qualsiasi altro comando viene rifiutato.
Non vi è alcun valore di default per questa direttiva.
Il seguente è un elenco di direttive le quali controllano l'accesso al server degli utenti anonimi. Per usare queste opzioni, la direttiva anonymous_enable
deve essere impostata su YES
.
anon_mkdir_write_enable
— Quando abilitata insieme con la direttiva write_enable
, gli utenti anonimi sono in grado di creare nuove directory all'interno di una directory genitore, la quale possiede i permessi di scrittura.
Il valore di default è NO
.
anon_root
— Specifica i cambiamenti della directory vsftpd
, dopo che un utente anonimo ha eseguito il log in.
Non vi è alcun valore di default per questa direttiva.
anon_upload_enable
— Quando abilitata insieme con la direttiva write_enable
, gli utenti anonimi sono abilitati ad eseguire un upload di file all'interno della directory genitore la quale possiede i permessi di scrittura.
Il valore di default è NO
.
anon_world_readable_only
— Quando abilitata, gli utenti anonimi possono solo scaricare i file letti da tutti 'world-readable'.
Il valore di default è YES
.
ftp_username
— Specifica l'account dell'utente locale (riportato in /etc/passwd
), usato per un utente FTP anonimo. La home directory specificata in /etc/passwd
per l'utente, è la directory root dell'utente FTPanonimo.
Il valore di default è ftp
.
no_anon_password
— Quando abilitata, non viene richiesta alcuna password all'utente anonimo.
Il valore di default è NO
.
secure_email_list_enable
— Quando abilitata, viene accettato solo un elenco specificato di email password per login anonimi. Ciò rappresenta un modo molto conveniente di offrire una sicurezza limitata per contenuti resi pubblici senza la necessità di utenti virtuali.
I login anonimi vengono evitati a meno che la password risulta essere presente nell'elenco /etc/vsftpd.email_passwords
. Il formato del file è di una password per riga, senza alcuno spazio.
Il valore di default è NO
.
Il seguente è un elenco di direttive che caratterizzano il modo di accesso al server dell'utente locale. Per usare queste opzioni, la direttiva local_enable
deve essere impostata su YES
.
chmod_enable
— Quando abilitata, il comando FTP SITE CHMOD
viene abilitato per gli utenti locali. Questo comando permette agli utenti locali di cambiare i permessi presenti sui file.
Il valore di default è YES
.
chroot_list_enable
— Quando abilitata, gli utenti locali presenti nel file specificato nella direttiva chroot_list_file
, vengono posizionati in una cella chroot
previo log in.
Se abilitata con la direttiva chroot_local_user
, gli utenti locali elencati nel file specificato nella direttiva chroot_list_file
, non vengono posizionati in una cella chroot
dopo il log in.
Il valore di default è NO
.
chroot_list_file
— Specifica il file contenente un elenco di utenti locali indicati quando la direttiva chroot_list_enable
è impostata su YES
.
Il valore di default è /etc/vsftpd.chroot_list
.
chroot_local_user
— Quando abilitata, la directory root verrà cambiata, dopo aver eseguito il log in, nella home directory degli utenti locali.
Il valore di default è NO
.
Abilitando chroot_local_user
si và incontro a diverse problematiche riguardanti la sicurezza, in special modo per utenti che possiedono dei privilegi di upload. Per questo motivo tale configurazione non è consigliata.
guest_enable
— Quando abilitata, tutti gli utenti che non sono anonimi, vengono registrati come utenti guest
, i quali rappresentano gli utenti locali specificati nella direttiva guest_username
.
Il valore di default è NO
.
guest_username
— Specifica il nome utente sul quale viene mappato l'utente guest
.
Il valore di default è ftp
.
local_root
— Specifica il cambiamento della directory di vsftpd
dopo che l'utente locale ha eseguito il log in.
Non vi è alcun valore di default per questa direttiva.
local_umask
— Specifica il valore di umask per la creazione di un file. Da notare che il valore di default viene espresso con un numero ottale 'octal mode' (un sistema numerico basato su otto cifre), il quale include un prefisso "0". In caso contrario il valore viene considerato come un numero intero con base decimale.
Il valore di default è 022
.
passwd_chroot_enable
— Quando abilitata insieme con la direttiva chroot_local_user
, viene modificata la directory root vsftpd
degli utenti locali in base all'evento della /./
nel campo della home directory all'interno di /etc/passwd
.
Il valore di default è NO
.
user_config_dir
— Specifica il percorso per una directory contenente i file di configurazione che presentano il nome degli utenti locali del sistema, il quale contiene a sua volta le impostazioni specifiche per quell'utente. Qualsiasi direttiva nel file di configurazione dell'utente, annulla quelle trovate in /etc/vsftpd/vsftpd.conf
.
Non vi è alcun valore di default per questa direttiva.
Il seguente è un elenco di direttive che influenzano le directory.
dirlist_enable
— Quando abilitata, gli utenti possono visualizzare gli elenchi della directory.
Il valore di default è YES
.
dirmessage_enable
— Quando abilitata, viene visualizzato un messaggio ogni qualvolta un utente inserisce una directory con un file di messaggio. Questo messaggio si trova all'interno della directory che è stata inserita. Il nome di questo file è specificato nella direttiva message_file
ed è per default .message
.
Il valore di default è NO
. Da notare tuttavia che con Red Hat Enterprise Linux il valore è impostato su YES
.
force_dot_files
— Quando abilitata, i file che iniziano con un punto (.
), vengono elencati negli elenchi delle directory, con l'accezione dei file .
e ..
Il valore di default è NO
.
hide_ids
— Quando abilitata, tutti gli elenchi delle directory mostrano ftp
come l'utente e il gruppo per ogni file.
Il valore di default è NO
.
message_file
— Specifica il nome del file di messaggio quando si usa la direttiva dirmessage_enable
.
Il valore di default è .message
.
text_userdb_names
— Quando abilitata, vengono usati i nomi dell'utente e dei gruppi in formato di test, al posto delle voci UID e GID. Abilitando questa opzione potrebbe rallentare le prestazioni del server.
Il valore di default è NO
.
use_localtime
— Quando abilitata, gli elenchi della directory rivelano l'orario locale per il computer invece dell'orario GMT.
Il valore di default è NO
.
Il seguente è un elenco di direttive che influenzano le directory.
download_enable
— Quando abilitata, è possibile scaricare i file.
Il valore di default è YES
.
chown_uploads
— Quando abilitata, tutti i file caricati dagli utenti anonimi, sono posseduti dall'utente specificato nella direttiva chown_username
.
Il valore di default è NO
.
chown_username
— Specifica il proprietario dei file caricati anonimamente, se si abilita la direttiva chown_uploads
.
Il valore di default è root
.
write_enable
— Quando abilitata, sono abilitati i comandi FTP che possono modificare il file system, come ad esempio DELE
, RNFR
, e STOR
.
Il valore di default è YES
.
Il seguente è un elenco di direttive che influenzano il comportamento di vsftpd
durante un logging.
dual_log_enable
— Quando abilitata insieme con xferlog_enable
, vsftpd
registra contemporaneamente due file: un log wu-ftpd
-compatibile per il file specificato nella direttiva xferlog_file
(/var/log/xferlog
per default) e un file log standard vsftpd
specificato nella direttiva vsftpd_log_file
(/var/log/vsftpd.log
per default).
Il valore di default è NO
.
log_ftp_protocol
— Quando abilitato insieme con xferlog_enable
e con xferlog_std_format
impostato su NO
, vengono registrati tutti i comandi FTP e le risposte. Questa direttiva è utile per il debugging.
Il valore di default è NO
.
syslog_enable
— Quando abilitata insieme con xferlog_enable
, tutti i logging registrati normalmente sul file log vsftpd
standard specificato nella direttiva vsftpd_log_file
(/var/log/vsftpd.log
per default), vengono inviati al sistema che li registra invece della facility FTPD.
Il valore di default è NO
.
vsftpd_log_file
— Specifica il file log vsftpd
. Per usare questo file, xferlog_enable
deve essere abilitato e xferlog_std_format
deve essere impostato su NO
o, se si imposta xferlog_std_format
su YES
, dual_log_enable
deve essere abilitato. È importante notare che se syslog_enable
è impostato su YES
, viene usato il sistema di log, invece del file specificato in questa direttiva.
Il valore di default è /var/log/vsftpd.log
.
xferlog_enable
— Quando abilitata, vsftpd
registra i collegamenti (solo in formato vsftpd
) e le informazioni di trasferimento del file sul file log specificato nella direttiva vsftpd_log_file
(per default /var/log/vsftpd.log
). Se xferlog_std_format
è impostato su YES
, vengono registrate solo le informazioni sul trasferimento del file e non i collegamenti, e viene usato il file log specificato in xferlog_file
(/var/log/xferlog
per default). È importante notare che entrambi i file log ed i formati log vengono usati se dual_log_enable
è impostato su YES
.
Il valore di default è NO
. Da notare tuttavia che con Red Hat Enterprise Linux il valore è impostato su YES
.
xferlog_file
— Specifica il file log wu-ftpd
-compatibile. Per usare questo file, bisogna abilitare xferlog_enable
, e xferlog_std_format
deve essere impostato su YES
. Esso viene anche usato se dual_log_enable
è impostato su YES
.
Il valore di default è /var/log/xferlog
.
xferlog_std_format
— Quando abilitata insieme con xferlog_enable
, viene registrato, sul file specificato nella direttiva xferlog_file
, solo un log di tresferimento del file wu-ftpd
-compatibile (/var/log/xferlog
per default). È importante notare che questo file registra solo i trasferimenti del file e non registra i collegamenti al server.
Il valore di default è NO
. Da notare tuttavia che con Red Hat Enterprise Linux il valore è impostato su YES
.
Per mantenere una compatibilità con i file log scritti dal server FTP wu-ftpd
più vecchio, la direttiva xferlog_std_format
è impostata su YES
con Red Hat Enterprise Linux. Tuttavia, questa impostazione significa che i collegamenti al server non sono registrati.
Per eseguire un log dei collegamenti in formato vsftpd
e gestire un log di trasferimento del file wu-ftpd
-compatibile, impostare dual_log_enable
su YES
.
Se non è importante mantenere un log di trasferimento del file wu-ftpd
-compatibile, impostare xferlog_std_format
su NO
, e commentare la riga con un carattere #
, oppure cancellare l'intera riga.
Il seguente è un elenco di direttive che influenzano il modo con il quale vsftpd
interagisce con la rete.
accept_timeout
— Specifica la quantità di tempo per un client, nell'uso della modalità passiva, per stabilire un collegamento.
Il valore di default è 60
.
anon_max_rate
— Specifica la velocità massima di trasferimento dei dati per gli utenti anonimi in byte al secondo.
Il valore di default è 0
, il quale non limita la velocità di trasferimento.
connect_from_port_20
Quando abilitata, vsftpd
viene eseguita con privilegi sufficienti per aprire la porta 20 sul server, durante i trasferimenti dei dati in modalità attiva. Disabilitare questa opzione permette a vsftpd
di essere eseguito con meno privilegi, ma potrebbe essere non compatibile con alcuni client FTP.
Il valore di default è NO
. Da notare tuttavia che con Red Hat Enterprise Linux il valore è impostato su YES
.
connect_timeout
— Specifica il tempo massimo, in secondi, al quale un client che usa una modalità attiva, deve rispondere per un collegamento dei dati.
Il valore di default è 60
.
data_connection_timeout
— Specifica il tempo massimo, in secondi, all'interno del quale il trasferimento dei dati può arrestarsi. Una volta azionato, il collegamento al client remoto viene chiuso.
Il valore di default è 300
.
ftp_data_port
— Specifica la porta usata per i collegamenti attivi dei dati quando connect_from_port_20
è impostato su YES
.
Il valore di default è 20
.
idle_session_timeout
— Specifica il tempo massimo che intercorre tra due comandi da un client remoto. Una volta azionato, il collegamento al client remoto viene chiuso.
Il valore di default è 300
.
listen_address
— Specifica l'indirizzo IP sul quale vsftpd
è in ascolto per i collegamenti di rete.
Non vi è alcun valore di default per questa direttiva.
Se si eseguono copie multiple di vsftpd
servendo indirizzi IP diversi, il file di configurazione per ogni copia del demone vsftpd
, deve avere un valore diverso per questa direttiva. Consultare Sezione 6.4.1, «Avvio di copie multiple di vsftpd
» per maggiori informazioni sui server FTP 'multihomed'.
listen_address6
— Specifica l'indirizzo IPv6 sul quale vsftpd
è in ascolto per i collegamenti di rete, quando listen_ipv6
è impostato su YES
.
Non vi è alcun valore di default per questa direttiva.
Se si eseguono copie multiple di vsftpd
servendo indirizzi IP diversi, il file di configurazione per ogni copia del demone vsftpd
, deve avere un valore diverso per questa direttiva. Consultare Sezione 6.4.1, «Avvio di copie multiple di vsftpd
» per maggiori informazioni sui server FTP 'multihomed'.
listen_port
— Specifica la porta sulla quale vsftpd
è in ascolto per i collegamenti di rete.
Il valore di default è 21
.
local_max_rate
— Specifica la velocità massima di trasferimento dei dati, in byte al secondo, per utenti locali registrati nel server.
Il valore di default è 0
, il quale non limita la velocità di trasferimento.
max_clients
— Specifica il numero massimo di client simultanei che si possono collegare al server, quando lo stesso è in esecuzione in modalità 'standalone'. Qualsiasi altro collegamento client aggiuntivo causerà la generazione di un messaggio di errore.
Il valore di default è 0
, il quale non limita i collegamenti.
max_per_ip
— Specifica il numero massimo di client che si possono collegare dallo stesso indirizzo IP della sorgente.
Il valore di default è 0
, il quale non limita i collegamenti.
pasv_address
— Specifica l'indirizzo IP per l'indirizzo IP 'public facing' del server, per i server situati dietro i firewall Network Address Translation (NAT). Ciò abilita vsftpd
a fornire l'indirizzo di ritorno corretto per i collegamenti in modalità passiva.
Non vi è alcun valore di default per questa direttiva.
pasv_enable
— Quando abilitata, sono permessi i collegamenti in modalità passiva.
Il valore di default è YES
.
pasv_max_port
— Specifica la porta più alta inviata ai client FTP per i collegamenti in modalità passiva. Questa impostazione viene usata per limitare la gamma della porta, in modo da semplificare la creazione delle regole del firewall.
Il valore di default è 0
, il quale non limita la gamma della porta passiva più alta. Il valore non deve eccedere 65535
.
pasv_min_port
— Specifica la porta più bassa inviata ai client FTP per i collegamenti in modalità passiva. Questa impostazione viene usata per limitare la gamma della porta, in modo da semplificare la creazione delle regole del firewall.
Il valore di default è 0
, il quale non limita la gamma della porta passiva più bassa. Il valore non deve essere minore di 1024
.
pasv_promiscuous
— Quando abilitata, i collegamenti dei dati non vengono controllati in modo da assicurare che gli stessi siano originati dallo stesso indirizzo IP. Questa impostazione è utile solo per alcuni tipi di tunneling.
Non abilitate questa opzione se non è necessario, in quanto essa disabilita un contenuto di sicurezza molto importante, il quale verifica che i collegamenti in modalità passiva siano originati dallo stesso indirizzo IP del collegamento di controllo che inizia il trasferimento dei dati.
Il valore di default è NO
.
port_enable
— Quando abilitata, sono permessi i collegamenti in modalità attiva.
Il valore di default è YES
.
Per maggiori informazioni su vsftpd
, consultate le seguenti risorse.
Directory /usr/share/doc/vsftpd-
— Sostituire <version-number>
/<version-number>
con la versione installata del pacchetto vsftpd
. Questa directory contiene un file README
con informazioni di base sul software. Il file TUNING
contiene alcuni suggerimenti sulla regolazione della prestazione di base e la directory SECURITY/
la quale contiene le informazioni sul modello di sicurezza impiegato da vsftpd
.
Pagine man relative a vsftpd
— Sono disponibili un certo numero di pagine man per il demone ed i file di configurazione. Il seguente è un elenco di alcune delle più importanti pagine man.
man vsftpd
— Descrive le opzioni della linea di comando disponibili per vsftpd
.
man vsftpd.conf
— Contiene un elenco dettagliato di opzioni disponibili all'interno del file di configurazione per vsftpd
.
man 5 hosts_access
— Descrive il formato e le opzioni disponibili all'interno dei file di configurazione dei wrapper TCP: hosts.allow
e hosts.deny
.
http://vsftpd.beasts.org/ — La pagina del progetto vsftpd
è molto utile per trovare la documentazione più recente e per contattare l'autore del software.
http://slacksite.com/other/ftp.html — Questo sito web fornisce una breve spiegazione delle differenze tra un FTP in modalità attiva e passiva.
http://www.ietf.org/rfc/rfc0959.txt — Un elenco completo di Request for Comments (RFC) 'Richiesta di commenti', relativi al protocollo FTP da IETF.
Uno dei compiti di un amministratore di sistema è quello di configurare il sistema stesso in modo da svolgere compiti particolari, per diversi tipi di utenti e per diverse configurazioni hardware. Questa sezione spiega come configurare un sistema Red Hat Enterprise Linux.
Durante l'installazione, il monitor del sistema, la scheda video e le impostazioni del display sono configurati. Per cambiare una di queste impostazioni, usare lo Tool di configurazione di X.
Per iniziare lo Tool di configurazione di X, selezionare System (on the panel) => Amministrazione => Display, oppure digitare il comando system-config-display
ad un prompt della shell (per esempio, in un terminale XTerm o GNOME). Se il sistema X Window non è in esecuzione, viene avviata una versione più piccola di X per eseguire il programma.
Dopo aver effettuato un cambiamento delle impostazioni, abbandonate il desktop grafico ed effettuate nuovamente un log in per confermare i cambiamenti.
Il pannello Impostazioni permette agli utenti di cambiare la risoluzione e la profondità del colore. Il display di un monitor consiste in tanti piccoli punti chiamati pixel. Il numero di pixel visualizzato nello stesso istante è chiamato risoluzione. Per esempio, la risoluzione 1024x768 significa che vengono usati 1024 pixel in orizzontale, e 768 pixel verticale. Più elevati sono i numeri inerenti la risoluzione, e migliore sarà la qualità dell'immagine mostrata dal monitor.
La profondità del colore del display determina il numero di colori visualizzati. Più alta è la profondità del colore, maggiore è il contrasto tra i colori.
Quando l'applicazione Tool di configurazione di X viene avviata, vengono verificati sia la scheda video che il monitor. Se si verifica l'hardware in modo corretto, le sue informazioni verranno visualizzate sulla tabella Hardware come mostrato in Figura 7.2, «Impostazioni hardware del display».
Per cambiare il tipo di monitor o qualsiasi sue impostazioni, fate clic sul pulsante Configura corrispondente. Per cambiare il tipo di scheda video o qualsiasi sue applicazioni, fate clic sul pulsante Configura vicino alle proprie impostazioni.
Se sono state installate schede video multiple, il supporto per il monitor dual head sarà disponibile e verrà configurato tramite la tabella Dual head come mostrato in Figura 7.3, «Impostazioni del display Dual Head».
Per abilitare l'utilizzo del Dual Head controllate la casella relativa Utilizza dual head.
Per configurare il secondo tipo di monitor, fate clic sul pulsante Configura. Potrete altresì configurare le altre impostazioni Dual Head utilizzando l'elenco a tendina corrispondente.
Per l'opzione Layout del Desktop, selezionando Desktop espansi permetterà ad entrambi i monitor di utilizzare uno spazio di lavoro più grande. Selezionando invece Desktop individuali verrà condiviso il mouse e la tastiera fra i display, ma limita le finestre ad un singolo display.
Tenendo presente che gli amministratori di sistema hanno bisogno di rendere sicuri i propri sistemi mission-critical, i propri servizi e/o dati, Red Hat Enterprise Linux fornisce un vasta gamma di tool e di metodi, che fanno parte di una strategia di sicurezza completa.
Questo capitolo fornisce una introduzione generale sulla sicurezza, ed in modo particolare da una prospettiva specifica di Red Hat Enterprise Linux. Fornisce vari concetti nelle aree di valutazione della sicurezza, punti deboli comuni, e metodi di reazione in risposta agli incidenti ed alle intrusioni. Altresi, fornisce informazioni specifiche e semplici concetti riguardanti la configurazione su come usare SELinux, in modo da rendere più sicuri la Workstation, il Server, VPN, il firewall ed altri tipi d'implementazione.
Questo capitolo richiede una conoscenza di base sulla sicurezza IT, e di conseguenza fornisce solo una copertura minima di pratiche comuni come ad esempio il controllo dell'accesso fisico, procedure e policy sulla gestione degli account ecc. Quando consentito, vengono indicati riferimenti a risorse ed informazioni esterne.
Sommario
A causa del continuo ricorso a potenti computer che aiutano le aziende nella loro gestione e nel mantenimento delle informazioni del proprio personale, le aziende del settore hanno potuto creare una pratica molto importante, e cioè quella di rendere sicure le loro reti ed i loro computer. Le imprese hanno stimolato la conoscenza e l'abilità degli esperti sulla sicurezza, e conseguentemente a verificare propriamente i sistemi ed adattare le soluzioni per far fronte ai requisiti operativi dell'organizzazione stessa. A causa di queste organizzazioni, di natura molto dinamiche e che consentono l'accesso ai propri dipendenti alle risorse IT sia in modo remoto che in modo locale, la necessità di avere degli ambienti informatici sicuri è diventata sempre più rilevante.
Sfortunatamente, molte organizzazioni (così come singoli utenti) considerano il fattore sicurezza come un fattore secondario, un processo che si può trascurare in favore dell'aumento della potenza, della produttività, e delle considerazioni di carattere finanziario. Una sua implementazione, viene spesso intrapresa postmortem — cioè dopo il verificarsi di una intrusione da parte di un utente non autorizzato. Gli esperti nel campo della sicurezza, concordano che le misure più idonee sono quelle prese prima del collegamento ad una rete non fidata, come ad esempio Internet, tale provvedimento aiuta in modo efficace a contrastare i tentativi d'intrusione.
Se un cracker ha a disposizione tempo sufficiente, risorse, e motivazioni, sarà in grado di introdursi in quasi ogni sistema. Alla fine dei conti, tutte le procedure di sicurezza e le tecnologie attualmente disponibili, non possono garantirvi la totale sicurezza dei vostri sistemi. I router sono in grado di rendere sicuri i gateway nei confronti di Internet. I firewall vi aiuteranno a rendere sicuri i confini della vostra rete. I Virtual Private Network renderanno possibile e sicuro il passaggio dei vostri dati attraverso un flusso cifrato. Gli Intrusion detection system, hanno l'abilità di avvisarvi della presenza di attività maliziosa. Tuttavia, il successo di tutti questi mezzi di deterrenza, dipendono da un certo numero di variabili che includono:
L'esperienza dei membri responsabili alla configurazione, al controllo e mantenimento di queste tecnologie.
L'abilità di emettere patch e aggiornare i servizi e i kernel in modo veloce ed efficiente.
L'abilità del personale preposto, a mantenere un costante controllo della rete.
A causa dello stato dinamico della capacità dei sistemi di conservare i dati e le tecnologie, rendere sicure le vostre risorse corporative può essere un compito complesso. A causa di questa complessità, potrebbe risultare difficile trovare risorse idonee per tutti i vostri sistemi. Mentre è possibile avere del personale la cui conoscenza informatica è in grado di coprire molte aree riguardanti la sicurezza, risulta difficile trattenere personale esperto in più aree. Questo perchè ogni area richiede una concentrazione e un'attenzione costante, in quanto essa è in continua evoluzione. Le informazioni sulla sicurezza non restano invariate.
Supponete di gestire una rete di tipo enterprise. Tali reti generalmente includono sistemi operativi, applicazioni, server, monitor di rete, firewall, intrusion detection system e molto altro. Immaginate ora di cercare di tenervi aggiornati su tutti questi sistemi. Data la complessità degli ambienti di networking e dei software moderni, exploit e bug possono rappresentare purtroppo una costante. Mantenersi aggiornati con patch e altri cambiamenti su di una rete, può risultare un compito non facile, in particolar modo in una grande organizzazione con sistemi eterogenei.
La combinazione tra l'esperienza necessaria e il compito di mantenersi aggiornati su di un gran numero di sistemi, facilita il verificarsi di incidenti, i sistemi vengono violati, i dati corrotti e i servizi interrotti.
Per migliorare le tecnologie riguardanti la sicurezza, quindi proteggere sistemi, reti e dati, pensate come un cracker, verificate la sicurezza dei sistemi andando alla ricerca della vulnerabilità. La ricerca di queste vulnerabilità all'interno dei vostri sistemi e delle risorse della rete, può aiutarvi ad evidenziare eventuali carenze nel vostro apparato di sicurezza, dandovi la possibilità di far fronte a tali problemi prima che un cracker possa fare danni.
Se effettuate una verifica della vostra abitazione, ovviamente controllerete se ogni porta sia chiusa. Controllerete ogni finestra assicurandovi che esse siano ben chiuse. Lo stesso concetto viene applicato per i sistemi, le reti e per i dati elettronici. Gli utenti maliziosi rappresentano i ladri dei vostri dati. Concentratevi sui loro strumenti, sulla loro mentalità, e sulle loro motivazioni in modo tale da poter reagire con successo ad eventuali loro azioni.
È necessario distinguere i vari modi di valutazione della vulnerabilità. Le valutazioni possono essere suddivise in: Controllo esterno e controllo interno.
Quando si effettua un controllo esterno, non farete altro che cercare di compromettere i vostri sistemi dall'esterno. Trovandovi all'esterno avrete lo stesso punto di vista che si presenta ad un cracker. Vedrete quello che un cracker vede — indirizzi IP publicly-routable, i sistemi sul vostro DMZ, interfacce esterne del vostro firewall e molto altro. DMZ è l'acronimo di "demilitarized zone", il quale corrisponde ad un computer oppure ad una sottorete minore che si trova tra una rete interna fidata, come ad esempio una LAN privata corporativa, e una rete esterna non fidata, come ad esempio può essere internet. Generalmente DMZ contiene dei dispositivi accessibili al traffico di internet, come ad esempio Web (HTTP ) server, server FTP, SMTP (e-mail) server e server DNS.
Quando effettuate un controllo interno invece, vi troverete in una condizione di vantaggio in quanto considerati utenti fidati. Questo tipo di controllo vi fornirà il vostro punto di vista e quello dei vostri colleghi, una volta effettuata la registrazione sui vostri sistemi. Potrete vedere i server di stampa, i file server, i database e altre risorse.
Sono presenti delle distinzioni tra questi due tipi di valutazione. Trovandovi all'interno avrete maggiori privilegi rispetto ad un utente esterno. Ancora oggi in molte organizzazioni la sicurezza viene configurata in modo tale da mantenere gli intrusi all'esterno. Molto poco viene fatto per mantenere una maggiore sicurezza da attacchi interni (firewall dipartimentali, controllo dell'accesso livello-utente, procedure di autenticazione per risorse interne, e molto altro). Generalmente sono disponibili numerose risorse quando si effettua un controllo dall'interno, questo perchè molti sistemi sono interni alla compagnia. Una volta posizionati all'esterno, vi sarà dato uno stato di utente non fidato. I sistemi e le risorse disponibili esternamente sono generalmente limitati.
È importante considerare la differenza tra una valutazione della vulnerabilità e le prove di penetrazione. Pensate ad una valutazione della vulnerabilità come il primo passo verso una prova di penetrazione. Le informazioni ottenute dalla valutazione, saranno usate durante la prova. Mentre la valutazione và alla ricerca di buchi e potenziali punti deboli, la prova di penetrazione cerca di sfruttare i risultati.
L'assegnazione di infrastrutture di rete, rappresenta un processo dinamico. La sicurezza, sia dell'informazione e sia fisica, è dinamica. Effettuando una valutazione, si può ottenere una panoramica, la quale può essere falso positivo e falso negativo.
Gli amministratori responsabili risultano essere idonei solo in base agli strumenti da loro usati e alla loro conoscenza. Prendete qualsiasi strumento di valutazione attualmente disponibile, usatelo sul vostro sistema, e quasi sicuramente vi saranno dei falsi-positivi. Sia a causa dell'utente che a causa di un errore del programma, il risultato è identico. Il tool potrebbe essere in grado di trovare dei punti deboli che in realtà non esistono (falso-positivo); o ancora peggio, lo strumento non trova alcun punto debole quando in realtà essi sono esistenti (falso-negativo).
Una volta definite le differenze tra la valutazione della vulnerabilità e la prova di penetrazione, è sempre buona pratica prendere i risultati della valutazione e controllarli accuratamente prima di effettuare una prova di penetrazione.
Se cercate di sfruttare i punti deboli delle risorse di produzione, si può incorrere a spiacevoli risultati nei confronti della produttività ed efficienza dei vostri sistemi e della rete.
Il seguente elenco riporta alcuni dei benefici che si possono ottenere effettuando delle valutazioni dei vari punti deboli.
Crea un coinvolgimento proattivo nei confronti della sicurezza delle informazioni
Trova potenziali exploit prima dei cracker
Ne risualta in un aggiornamento dei sistemi e patch correlate
Promuove la crescita e aiuta lo sviluppo della competenza del personale
Riduce la perdita economica e la pubblicità negativa
Per assistere alla selezione dei tool per la valutazione della vulnerabilità, è consigliato stabilire una metodologia di valutazione. Sfortunatamente, non vi è alcuna metodologia predefinita o approvata in questo momento, senso comune e pratica sono sufficienti a questo scopo.
Qual'è l'obbiettivo? Stiamo cercando un solo server, oppure una intera rete e qualsiasi cosa presente al suo interno? Siamo esterni o interni alla compagnia? Le risposte a queste domande sono importanti, in quanto vi aiuteranno non solo a selezionare gli strumenti ma anche a scegliere il modo per usarli.
Per saperne di più su come stabilire delle metodologie, consultate i seguenti siti web:
http://www.isecom.org/projects/osstmm.htmLa Open Source Security Testing Methodology Manual (OSSTMM)
http://www.owasp.org/La Open Web Application Security Project
Un processo di valutazione può iniziare usando una forma di strumento di raccolta delle informazioni. Quando si controlla l'intera rete, identificate prima la struttura,in modo da poter trovare gli host in esecuzione. Una volta identificati, esaminate ogni host in modo individuale. Per fare ciò, avrete bisogno di un altro set di strumenti. Sapere quale strumento dovete usare rappresenta una fase cruciale nel trovare i punti deboli.
Proprio come in qualsiasi aspetto della vita quotidiana, ci sono un gran numero di tool capaci di eseguire gli stessi lavori. Lo stesso concetto viene applicato anche per effettuare una valutazione della sicurezza. Ci sono tool specifici per i diversi sistemi operativi, per le applicazioni ed anche per le reti (basate su protocolli usati). Alcuni tool non sono a pagamento mentre altri si. Alcuni sono facili da usare, mentre altri sono poco documentati e difficili da usare, ma hanno in compenso dei contenuti che altri non hanno.
Trovare gli strumenti giusti può rappresentare un compito difficile, quello che conta alla fine è l'esperienza. Se possibile, impostate un 'laboratorio' e provate un maggior numero di strumenti possibile, annotando le qualità ma anche i loro punti deboli.Ricontrollate il file README o le pagine man in questione. In aggiunta, per maggiori informazioni controllate Internet, ad esempio gli articoli, manuali passo-dopo-passo, oppure le mailing list specifiche di uno strumento.
Gli strumenti di seguito riportati, sono solo alcuni esempi di strumenti disponibili.
Nmap è un tool molto diffuso ed è incluso in Red Hat Enterprise Linux, può essere usato per determinare la disposizione di una rete. Nmap è disponibile ormai da molti anni ed è probabilmente il tool più usato per la raccolta delle informazioni. È inclusa anche una eccellente pagina man, capace di fornire una descrizione dettagliata delle sue opzioni e del suo uso. Gli amministratori possono usare Nmap su di una rete, per trovare sistemi host e per aprire delle porte.
Nmap rappresenta un primo passo corretto per la valutazione della vulnerabilità. Potete tracciare tutti gli host all'interno della vostra rete, e addirittura passare una opzione capace di permettere Nmap, di identificare il sistema operativo in esecuzione su di un host particolare. Nmap è una buona base per stabilire un criterio d'uso dei servizi sicuri e arrestare quelli non usati.
Nmap può essere eseguito da un prompt della shell digitando il comando nmap
seguito dall'hostname o dall'indirizzo IP della macchina che desiderate controllare.
nmap foo.example.com
I risultati di questo controllo (il quale può richiedere anche qualche minuto, depende dalla posizione dell'host) dovrebbe assomigliare al seguente:
Starting nmap V. 3.50 ( www.insecure.org/nmap/ ) Interesting ports on localhost.localdomain (127.0.0.1): (The 1591 ports scanned but not shown below are in state: closed) Port State Service 22/tcp open ssh 25/tcp open smtp 111/tcp open sunrpc 443/tcp open https 515/tcp open printer 950/tcp open oftep-rpc 6000/tcp open X11 Nmap run completed -- 1 IP address (1 host up) scanned in 71.825 seconds
Nmap verifica le porte di comunicazione di rete in ascolto più usate o in attesa dei servizi. Questa conoscenza può essere utile per un amministratore che desidera terminare i servizi non necessari.
Per maggiori informazioni sull'uso di Nmap, consultate la homepage al seguente URL:
Nessus è uno scanner completo per la sicurezza del servizio. L'architettura plug-in di Nessus permette agli utenti di personalizzarlo per i loro sistemi, e per le loro reti. Come con qualsiasi scanner, Nessus è idoneo tanto quanto il database della firma sul quale fà affidamento. Fortunatamente, Nessus viene costantemente aggiornato, esso contiene un rapporto esteso, verifica host, e ricerca la vulnerabilità in tempo reale. Ricordatevi che possono esserci falsi positivi e falsi negativi, anche su di uno strumento potente e aggiornato come Nessus.
Nessus non è incluso ne supportato da Red Hat Enterprise Linux. È stato incluso in questo documento solo come riferimento per gli utenti interessati al suo impiego.
Per maggiori informazioni su Nessus, consultate la homepage al seguente URL:
Nikto è un eccellente scanner script (CGI) common gateway interface. Ha la capacità non solo di controllare eventuali vulnerabilità CGI, ma anche di effettuare questo controllo in modo da eludere gli intrusion detection system. È accompagnato da una eccellente documentazione la quale deve essere consultata attentamente prima di eseguire il programma. Se avete un certo numero di Web server in grado di fornire script CGI, Nikto può diventare una risorsa eccellente per il controllo della sicurezza di questi server.
Nikto non è incluso ne supportato da Red Hat Enterprise Linux. È stato incluso in questo documento solo come riferimento per gli utenti interessati al suo uso.
Maggiori informazioni su Nikto sono disponibili sul seguente URL:
VLAD è uno scanner per le vulnerabilità sviluppato dal team RAZOR a Bindview, Inc., viene usato per il controllo della SANS Top Ten list dei problemi più comuni sulla sicurezza (problematiche inerenti SNMP, condivisione dei file, ecc). Anche se non presenta tanti contenuti quanti ne possiede Nessus, vi consigliamo ugualmente di consultarlo.
VLAD non è incluso ne supportato da Red Hat Enterprise Linux. È stato incluso in questo documento solo come riferimento per gli utenti interessati al suo uso.
Sono disponibili maggiori informazioni su VLAD sul sito web del team RAZOR al seguente URL:
Sono disponibili, a seconda del vostro obbiettivo e delle vostre risorse, molti tool. Ci sono strumenti per reti wireless, reti Novel, sistemi Windows, sistemi Linux e molti altri. Un'altra fase essenziale per l'effettuazione di una valutazione, può essere la revisione della sicurezza fisica, il controllo del personale, o la verifica di rete PBX/voice. Stanno emergendo nuovi concetti, come ad esempio war walking, per il controllo del perimetro delle vostre strutture fisiche enterprise per la vulnerabilità di rete wireless. Essi rappresentano solo alcuni di questi concetti emergenti che potete investigare e, se necessario, incorporare nelle vostre verifiche. L'immaginazione e l'esposizione sono i soli limiti di una pianificazzione e di una conduzione delle valutazioni sulla vulnerabilità.
Una volta scoperte le vulnerabilità di un sistema, il software interessato deve essere aggiornato in modo da evitare potenziali rischi. Se il pacchetto fà parte della distribuzione Red Hat Enterprise Linux ed è supportato, Red Hat, Inc. emette, appena possibile, alcuni pacchetti aggiornati in grado di risolvere i problemi riguardanti la sicurezza. Spesso la verifica di un exploit viene accompagnata da una patch (o da un source code capace di risolvere il problema). La patch viene applicata al pacchetto di Red Hat Enterprise Linux, provato dal team Red Hat che ne assicura la qualità, ed emesso come un aggiornamento errata. Se la patch viene a mancare, allora uno sviluppatore di Red Hat lavorerà insieme con il tecnico responsabile del pacchetto, per la risoluzione del problema. Dopo aver risolto tale problema, il pacchetto viene provato, emettendo così un errata update.
Se è stato rilasciato un aggiornamento dell'errata riguardante il software sul vostro sistema, è consigliato effettuare un aggiornamento dei pacchetti in questione appena possibile, questo per minimizzare il periodo nel quale il vostro sistema può essere vulnerabile.
Quando si esegue un aggiornamento software di un sistema, è importante scaricare la versione aggiornata da una fonte fidata. Un aggressore è in grado di ricostruire facilmente un pacchetto con lo stesso numero della versione del pacchetto preposto per la soluzione dei problemi, ma con un exploit diverso presente nel suo interno, immettendolo così su Internet. Se si verifica quanto sopra descritto, l'uso delle misure di sicurezza come ad esempio il controllo dei file con l'RPM originale, non sarà sufficiente a rilevare l'exploit. Per questo motivo è molto importante scaricare gli RPM da fonti fidate come ad esempio Red Hat, Inc., e controllare la firma del pacchetto, per assicurarsi che lo stesso sia stato costruito dalla fonte.
Red Hat offre due modi per ottenere informazioni sugli errata updates:
Elencati e disponibili per il download su Red Hat Network
Elencati ma non disponibili sul sito web Red Hat Errata
Iniziando con la gamma Red Hat Enterprise Linux, i pacchetti aggiornati possono essere scaricati solo da Red Hat Network. Anche se il sito web Red Hat Errata contiene le informazioni aggiornate, esso non contiene i pacchetti attuali per il download.
Red Hat Network vi permette di automatizzare molti dei processi di aggiornamento. Determina quali pacchetti RPM sono necessari al vostro sistema, li scarica da un luogo sicuro, verifica la firma RPM, assicurandosi così che essi non siano stati alterati, e successivamente li aggiorna. L'installazione del pacchetto può verificarsi immediatamente oppure può essere programmato durante un periodo ben determinato.
Red Hat Network necessita di un System Profile per ogni macchina che desiderate aggiornare. Il System Profile contiene informazioni hardware e software. Queste informazioni sono riservate e non vengono quindi divulgate. Esse sono usate per determinare quali aggiornamenti degli errata sono applicabili per ogni sistema. Senza queste informazioni, Red Hat Network non è in grado di determinare se il vostro sistema ha bisogno di aggiornamenti. Quando viene emesso un errata riguardante la sicurezza (o qualsiasi tipo di errata),Red Hat Network vi invierà una email con la sua descrizione, indicandovi anche i sistemi che saranno colpiti. Per apportare un aggiornamento, potete usare il Red Hat Update Agent oppure organizzare l'aggiornamento del pacchetto attraverso il sito web http://rhn.redhat.com.
Red Hat Enterprise Linux include il Red Hat Network Alert Notification Tool, una icona del pannello molto conveniente, che mostra allarmi visibili quando vi è un aggiornamento per un sistema Red Hat Enterprise Linux registrato. Consultate il seguente URL per maggiori informazioni sull'applet: https://rhn.redhat.com/rhn/help/quickstart.jsp
Prima di installare qualsiasi errata di sicurezza, assicurarsi di leggere qualsiasi istruzione speciale contenuta nell'errata report ed eseguitela scrupolosamente. Consultare Sezione 8.2.1.5, «Applicare i cambiamenti» per istruzioni generali su come applicare i cambiamenti fatti da un errata update.
Quando vengono emessi gli errata report riguardanti la sicurezza, essi vengono pubblicati sul sito web Red Hat Errata disponibile su http://www.redhat.com/security/. Da questa pagina selezionate il prodotto e la versione per il vostro sistema, e successivamente selezionare security nella parte superiore della pagina, per visualizzare solo il Red Hat Enterprise Linux Security Advisories. Se uno dei commenti è un pacchetto usato sul vostro sistema, selezionatelo per ottenere maggiori informazioni.
I dettagli descrivono l'exploit inerenti la sicurezza, insieme con altre istruzioni specifiche necessarie per l'aggiornamento del pacchetto, in modo tale da poter risolvere i problemi di sicurezza che si sono verificati.
Per poter scaricare il pacchetto (o pacchetti) aggiornato, fate clic sul link per eseguire un login su Red Hat Network, fate clic sul nome del pacchetto e salvatelo sul disco fisso. È fortemente consigliato creare una nuova directory come ad esempio /tmp/updates
per poter salvare il pacchetto scaricato.
Tutti i pacchetti di Red Hat Enterprise Linux sono firmati con la chiave Red Hat, Inc. GPG. GPG è l'acronimo di GNU Privacy Guard, o GnuPG, un pacchetto di software libero utilizzato per assicurare l'autenticità dei file distribuiti. Per esempio, una chiave privata (chiave segreta) posseduta da Red Hat, assicura il pacchetto, mentre la chiave pubblica lo verifica. Se la chiave pubblica distribuita da Red Hat non corrisponde con la chiave privata durante la verifica RPM, il pacchetto potrebbe essere stato alterato e quindi non si tratterebbe di un pacchetto fidato.
L'utility RPM all'interno di Red Hat Enterprise Linux, prova automaticamente la verifica della firma GPG di un pacchetto RPM prima d'installarlo. Se la chiave GPG di Red Hat non è installata, installatela da un luogo sicuro e statico come ad esempio un CD-ROM d'installazione di Red Hat Enterprise Linux.
Assumendo che il CD-ROM è stato montato in /mnt/cdrom
, usate il seguente comando per importarlo nel vostro keyring (un database di chiavi fidate presente sul sistema):
rpm --import /mnt/cdrom/RPM-GPG-KEY
Per poter visualizzare un elenco di tutte le chiavi installate usate per la verifica dell'RPM, eseguite il seguente comando:
rpm -qa gpg-pubkey*
Per la chiave di Red Hat, l'output include quanto segue:
gpg-pubkey-db42a60e-37ea5438
Per visualizzare i particolari di una chiave specifica, usare il comando rpm -qi
seguito dall'output del comando precedente, come riportato in questo esempio:
rpm -qi gpg-pubkey-db42a60e-37ea5438
È molto importante controllare la firma dei file RPM prima di procedere alla loro installazione. In questo modo potete assicurarvi che essi non siano stati alterati dalla distribuzione dei pacchetti di Red Hat, Inc.. Per verificare tutti i pacchetti scaricati nello stesso istante, emettere il seguente comando:
rpm -K /tmp/updates/*.rpm
Per ogni pacchetto,se la chiave GPG esegue una verifica corretta, il comando ritorna gpg OK
. Altrimenti, assicuratevi di usare la chiave pubblica di Red Hat corretta, verificando anche la fonte del contenuto. I pacchetti che non passano le verifiche GPG non dovrebbero essere installate, in quanto essi possono essere stati alterati da terzi.
Dopo aver verificato la chiave GPG e dopo aver scaricato tutti i pacchetti associati con l'errata report, installateli come utente root ad un promt della shell.
Questo può essere fatto in modo sicuro per la maggior parte dei pacchetti (eccetto per i pacchetti del kernel), emettendo il seguente comando:
rpm -Uvh /tmp/updates/*.rpm
Per i pacchetti del kernel, è consigliato usare il seguente comando:
rpm -ivh /tmp/updates/<kernel-package>
Sostituire <pacchetto del kernel>
nell'esempio precedente, con il nome dell'RPM del kernel.
Una volta riavviata la macchina in modo sicuro usando il nuovo kernel, il vecchio kernel può essere rimosso usando il seguente comando:
rpm -e <old-kernel-package>
Sostituire <pacchett-kernel-vecchio>
nel precedente esempio, con il nome dell'RPM del kernel più vecchio.
Non è necessario rimuovere il vecchio kernel. Il boot loader di default, GRUB, permette l'installazione di kernel multipli, scelti da un menu al momento dell'avvio.
Prima di installare qualsiasi errata di sicurezza, assicurarsi di leggere qualsiasi istruzione speciale contenuta nell'errata report ed eseguitela scrupolosamente. Consultare Sezione 8.2.1.5, «Applicare i cambiamenti» per istruzioni generali su come applicare i cambiamenti fatti da un errata update.
Dopo aver scaricato ed installato gli errata tramite il Red Hat Network o il sito web di Red Hat, è importante interrompere l'uso del software più vecchio ed iniziare ad usare quello nuovo. Come eseguire tale operazione dipende dal tipo di software che è stato aggiornato. Il seguente elenco riporta le categorie generali del software e fornisce istruzioni sull'uso delle versioni aggiornate dopo l'aggiornamento di un pacchetto.
In generale, riavviare il sistema rappresenta il modo più sicuro per assicurarsi che la versione più aggiornata di un pacchetto software venga usata; tuttavia, questa opzione non è sempre disponibile per un amministratore di sistema.
Le applicazioni del tipo user-space, sono tutti quei programmi che possono essere iniziati da un utente del sistema. Generalmente tali applicazioni vengono usate solo quando un utente, uno script oppure una utility di un compito automatizzato, vengono lanciati senza persistere per un periodo di tempo prolungato.
Una volta aggiornata l'applicazione user-space, interrompete ogni istanza dell'applicazione presente sul sistema, e lanciare nuovamente il programma per usare la versione aggiornata.
Il kernel rappresenta il nucleo della componente software per il sistema operativo di Red Hat Enterprise Linux. Esso gestisce l'accesso alla memoria, al processore, e alle periferiche, programmando anche tutti i vari compiti.
A causa del suo ruolo centrale, il kernel non può essere riavviato senza aver fermato il computer. Quindi, una versione aggiornata del kernel non può essere usata fino a quando il sistema non viene riavviato.
Le librerie condivise sono delle unità di codice, come glibc
, le quali sono usate da un certo numero di applicazioni e di servizi. Le applicazioni che utilizzano una libreria condivisa, generalmente caricano il codice condiviso quando l'applicazione è inizializzata, in questo modo ogni applicazione che utilizza la libreria aggiornata, deve essere interrotta e rilanciata.
Per determinare quale applicazione in esecuzione si collega ad una particolare libreria, utilizzare il comando lsof
, come riportato nel seguente esempio:
lsof /usr/lib/libwrap.so*
Questo comando ritorna un elenco di tutti i programmi in esecuzione che usano i wrapperTCP per un controllo dell'accesso host. In questo modo, ogni programma presente nell'elenco, deve essere interrotto e rilanciato se il pacchetto tcp_wrappers
è aggiornato.
I servizi SysV sono programmi server persistenti lanciati durante il processo di avvio. Un esempio di servizi SysV sono sshd
, vsftpd
, e xinetd
.
Poichè questi programmi generalmente persistono in memoria se la macchina è avviata, ogni servizio SysV aggiornato, deve essere interrotto e rilanciato dopo il miglioramento del pacchetto. Questo può essere fatto usando lo Services Configuration Tool oppure effettuando un log in un prompt della shell root, emettendo il comando /sbin/service
come riportato nel seguente esempio:
/sbin/service <service-name>
restart
Nell'esempio precedente, sostituire <nome -servizio>
con il nome del servizio, come ad esempio sshd
.
xinetd
I servizi controllati dal super servizio xinetd
possono essere eseguiti solo se vi è un collegamento attivo. Esempi di servizi controllati da xinetd
sono Telnet, IMAP, e POP3.
A causa del lancio delle nuove istanze di questi servizi, da parte di xinetd
ogni volta che si riceve una nuova richiesta, i collegamenti che si verificano dopo un miglioramento sono gestiti dal software aggiornato. Tuttavia, se vi sono collegamenti attivi al momento del miglioramento del servizio controllato da xinetd
, essi vengono serviti dalla versione più vecchia del software.
Per eliminare le vecchie istanze di un particolare servizio controllato da xinetd
, migliorare il pacchetto per il servizio e poi interrompere tutti i processi attualmente in esecuzione. Per determinare se il processo è in esecuzione, usare il comando ps
e poi il comando kill
o killall
per interrompere le istanze correnti del servizio.
Per esempio, se i pacchetti imap
degli errata della sicurezza vengono emessi, migliorare i pacchetti, e poi inserire il seguente comando come root, in un prompt della shell:
ps -aux | grep imap
Questo comando ritorna tutte le sessioni IMAP attive. Sessioni individuali potranno essere terminate emettendo il seguente comando:
kill <PID>
Se questo non è in grado di terminare la sessione, utilizzate il seguente comando:
kill -9 <PID>
Negli esempi precedenti, sostituire <PID>
con il numero d'identificazione del processo (presente nella seconda colonna del comando ps
) per una sessione IMAP.
Per eliminare tutte le sessioni IMAP attive, emettere il seguente comando:
killall imapd
I programmi che garantiscono l'accesso ad un sistema, utilizzano un processo di autenticazione per verificare l'identità degli utenti (e stabilire quindi chi essi siano).
Generalmente ogni programma è in possesso di un proprio processo di autenticazione. Con Red Hat Enterprise Linux, vi é un unico programma che centralizza i programmi d'identificazione usati in passato, questo programma viene chiamato Pluggable Authentication Modules (PAM).
Le caratteristiche di PAM, permettono all'amministratore del sistema di possedere una buona flessibilitá nell'impostazione delle policy di autenticazione per il sistema stesso.
Nella maggior parte dei casi il file di configurazione PAM per una applicazione che la riconosce, risulta essere sufficiente. Tuttavia, talvolta puó essere necessario modificare un file di configurazione PAM. Una configurazione non corretta di PAM potrebbe compromettere la sicurezza del sistema, é importante quindi conoscere la struttura del file prima di apportare qualsiasi modifica. Per maggiori informazioni consultate Sezione 9.1.3, «Formato del file di configurazione PAM».
PAM offre i seguenti vantaggi:
uno schema di autenticazione comune che può essere usato con diverse applicazioni.
maggiore flessibilità e controllo tramite l'autenticazione, sia per gli amministratori del sistema che per gli sviluppatori dell'applicazione.
una libreria singola documentata in modo soddisfacente, la quale permette agli sviluppatori di scrivere programmi senza dover creare i propri schemi di autenticazione.
La directory /etc/pam.d/
contiene i file di configurazione PAM per ogni applicazione supportata. Nelle versioni precedenti di PAM veniva usato il file /etc/pam.conf
, ma ora il suo utilizzo è sconsigliato, e viene usato solo se la directory /etc/pam.d/
non è esistente.
Ogni applicazione o servizio che supporta PAM, possiede un file all'interno della directory /etc/pam.d/
. Ogni file all'interno di questa directory, viene nominato dopo il servizio per il quale controlla l'accesso.
Spetta al programma che supporta PAM definire il proprio nome del servizio e installare il relativo file di configurazione PAM nella directory /etc/pam.d/
. Per esempio, il programma login
definisce il proprio nome del servizio come login, ed installa il file di configurazione PAM /etc/pam.d/login
.
Ogni file di configurazione PAM contiene un gruppo di direttive formattate come segue:
<interfaccia modulo>
<control flag>
<nome modulo>
<argomenti modulo>
Ciascuno di questi elementi viene spiegato nelle seguenti sezioni.
Sono disponibili attualmente quattro tipi di interfacce di moduli PAM. Ognuno dei quali corrisponde ad un aspetto diverso del processo di autorizzazione:
auth
— Questa interfaccia del modulo autentica l'uso. Per esempio, esso richiede e verifica la validità di una password. I moduli con questa interfaccia possono anche impostare delle credenziali come l'appartenenza al gruppo o i ticket di Kerberos.
account
— Questa interfaccia del modulo verifica la disponibilità all'accesso. Per esempio, controlla se un account è scaduto o se l'utente ha il permesso di collegarsi ad una determinata ora del giorno.
password
— Questa interfaccia del modulo viene utilizzata per la modifica delle password dell'utente.
session
— Questa interfaccia configura e gestisce le sessioni dell'utente. I moduli con questa interfaccia, possono effettuare ulteriori compiti richiesti per autorizzare l'accesso, per esempio montando la home directory dell'utente o rendendo disponibile la sua mailbox.
Un singolo modulo può fornire una o tutte le interfacce del modulo.Per esempio pam_unix.so
fornisce tutti e quattro le interfacce del modulo.
In un file di configurazione PAM l'interfaccia del modulo è il primo aspetto definito. Per esempio una riga tipica di configurazione potrebbe essere:
autoriz. necessaria pam_unix.so
Ciò indica a PAM di utilizzare l'interfaccia auth
del modulo pam_unix.so
.
Le direttive dell'interfaccia del modulo possono essere conservate o messe l'una sull'altra, in modo tale che moduli multipli possano essere utilizzati insieme per un unico scopo. Se un flag di controllo del modulo utilizza un valore "sufficient" o "requisite" (consultate Sezione 9.1.3.2, «Control Flag» per maggiori informazioni su questi flag), l'ordine con cui vengono elencati i moduli è molto importante per il processo di autenticazione.
Lo stacking rende più facile per l'amministratore richiedere la verifica di determinate condizioni prima di autenticare l'utente. Per esempio, il comando reboot
utilizza normalmente numerosidi tipo stacked, come lo dimostra il suo file di configurazione PAM:
[root@MyServer ~]# cat /etc/pam.d/reboot #%PAM-1.0 auth sufficient pam_rootok.so auth required pam_console.so #auth include system-auth account required pam_permit.so
La prima riga è un commento e quindi non viene processata.
auth sufficient pam_rootok.so
— Questa riga utilizza il modulo pam_rootok.so
per controllare se l'utente in questione è un utente root, verificando che il rispettivo UID sia uguale a 0. Se tale verifica ha un esito positivo, non verranno consultati altri moduli ed il comando verrà eseguito. Se invece si avrà un esito negativo, il modulo successivo verrà consultato.
auth required pam_console.so
— Questa riga utilizza il modulo pam_console.so
per cercare di autenticare l'utente. Se l'utente stesso risulta essere già registrato alla console, pam_console.so
controlla la presenza del file all'interno della directory /etc/security/console.apps/
con lo stesso nome del servizio (reboot). Se tale fale è presente, l'autenticazione ha esito positivo passando il controllo al modulo successivo.
#auth include system-auth
— Questa riga risulta essere commentata e quindi non verrà processata.
account required pam_permit.so
— Questa riga utilizza il modulo pam_permit.so
il quale permette all'utente root, o qualsiasi altro utente registrato sulla console, di riavviare il sistema.
Quando chiamati, tutti i moduli PAM generano un risultato positivo o negativo. I Control flag indicano a PAM cosa fare con il risultato. Poiché i moduli possono essere ordinati in determinati modi, i control flag permettono di stabilire l'importanza di un risultato positivo o negativo di un particolare modulo per l'autenticazione dell'utente al servizio.
Sono disponibili quattro control flag predefinite:
required
— Per procedere con l'autenticazione il modulo deve superare il controllo. Se il controllo di un modulo fallisce, l'utente non ne viene avvisato fino a quando tutti gli altri moduli dello stesso tipo non sono stati controllati.
requisite
— Il modulo deve superare la verifica perché l'autenticazione vada a buon fine. Tuttavia, se la verifica di un modulo fallisce, l'utente ne viene immediatamente avvisato tramite un messaggio che richiama il primo modulo required
orequisite
.
sufficient
— Il risultato del modulo viene ignorato se fallisce. Tuttavia, se il risultato del modulo con opzione sufficient
supera la verifica e nessun modulo con opzione required
che lo precedono abbia fallito, non viene richiesto nessun altro risultato e l'utente viene autenticato.
optional
— Il risultato del modulo viene ignorato.L'unico caso in cui un modulo con opzione optional
è necessario ai fini dell'autenticazione è quando non ci sono altri moduli che si riferiscono all'interfaccia.
L'ordine con il quale i moduli required
sono chiamati non é importante. I control flag sufficient
e requisite
invece, conferiscono una certa importanza all'ordine.
È disponibile ora per PAM, una sintassi del control flag più recente che permette di avere un maggiore controllo.
La pagina man pam.d
, e la documentazione PAM, presenti nella directory /usr/share/doc/pam-
, dove <version-number>
/<version-number>
è il numero della versione per PAM sui vostri sistemi, descrive questa nuova sintassi in modo più dettagliato.
Il nome del modulo fornisce a PAM il nome del modulo 'pluggable' contenente l'interfaccia del modulo specificato. Con le vecchie versioni di Red Hat Enterprise Linux, il percorso intero per il modulo veniva fornito all'interno del file di configurazione di PAM. Tuttavia con l'avvento di sistemi multilib, i quali possono conservare moduli PAM a 64-bit all'interno della directory /lib64/security/
, il nome della directory viene omesso perchè le applicazioni sono collegate alla versione appropriata di libpam
, la quale può trovare la versione corretta del modulo.
PAM utilizza degli argomenti per fornire informazioni ad un modulo pluggable durante il processo di autenticazione di un determinato tipo di modulo.
Per esempio il modulo pam_userdb.so
utilizza informazioni contenute nel file Berkeley DB per autenticare l'utente. Il Berkeley DB è un database Open Source concepito per essere incorporato in varie applicazioni. Il modulo prende un argomento db
, in modo tale che il file Berkeley DB riconosca il database da utilizzare per il servizio richiesto.
Quanto segue rappresenta una riga pam_userdb.so
tipica all'interno dei una configurazione PAM. <path-to-file>
è il path completo per il file del database di Berkeley DB:
auth required pam_userdb.so db=<path-to-file>
Gli argomenti non validi vengono generalmente ignorati e non influenzano il successo né il fallimento del modulo PAM. Tuttavia, numerosi moduli riporteranno un errore sul file /var/log/secure
.
Di seguito viene riportato un esempio del file di configurazione PAM:
#%PAM-1.0 auth required pam_securetty.so auth required pam_unix.so nullok auth required pam_nologin.so account required pam_unix.so password required pam_cracklib.so retry=3 password required pam_unix.so shadow nullok use_authtok session required pam_unix.so
La prima riga è un commento, come indicato dal carattere cancelletto (#
) all'inizio della stessa.
Le righe da due a quattro contengono tre moduli da usare per l'autenticazione del login.
auth required pam_securetty.so
— Questo modulo assicura che se l'utente prova a collegarsi come root, la tty in uso sia elencata nel file /etc/securetty
, se tale file esiste.
Se la tty non viene elencata all'interno del file, qualsiasi tentativo di registrazione come utente root fallisce, generando un messaggio d'errore Login incorrect
.
auth required pam_unix.so nullok
— Questo modulo richiede all'utente una password, che poi verifica usando le informazioni conservate in /etc/passwd
e, se esiste, /etc/shadow
.
auth required pam_nologin.so
— Questa è la fase finale di autenticazione. Con la suddetta fase si controlla l'esistenza del file /etc/nologin
. Se esiste e l'utente non è root, l'autenticazione non ha successo.
In questo esempio, tutti e tre i moduli auth
vengono controllati, anche se il primo modulo auth
non supera la verifica. Questa strategia impedisce all'utente di sapere i motivi per i quali l'autenticazione non è permessa. Se il suddetto utente è a conoscenza dei suddetti motivi, egli riuscirebbe ad irrompere nel sistema con estrema facilità.
account required pam_unix.so
— Questo modulo effettua qualsiasi verifica necessaria dell'account. Per esempio se le password shadow sono state abilitate, la componente dell'account del modulo pam_unix.so
verifica se l'account è scaduto o se l'utente non ha modificato la password nel periodo stabilito.
password required pam_cracklib.so retry=3
— Se la password è scaduta, il componente del modulo pam_cracklib.so
ne richiede una nuova. Successivamente verifica la nuova password per determinare se la stessa può essere facilmente indovinata da un programma password cracking.
L'argomento retry=3
specifica che se il primo tentativo ha esito negativo, l'utente avrà a disposizione altri due tentativi per creare una password difficile da decifrare.
password required pam_unix.so shadow nullok use_authtok
— Questa riga specifica che se il programma modifica la password dell'utente, sarà necessario utilizzare l'interfaccia password
del modulo pam_unix.so
per poter eseguire tale operazione.
L'argomento shadow
specifica al modulo di creare password shadow durante l'aggiornamento della password dell'utente.
L'argomento nullok
specifica al modulo di permettere all'utente di modificare la password da una password vuota, altrimenti la stessa viene considerata come un blocco dell'account.
L'argomento finale di questa riga, use_authtok
, fornisce un buon esempio sull'importanza di un ordine specifico con i moduli PAM. Questo argomento specifica al modulo di non richiedere all'utente una nuova password. Esso invece deve accettare qualsiasi password passata dal modulo precedente. In questo modo tutte le nuove password devono passare il controllo pam_cracklib.so
per verificare la sicurezza delle password prima di accettarle.
session required pam_unix.so
— La riga finale specifica che il componente della sessione del modulo pam_unix.so
viene usato per gestire la sessione stessa. Questo modulo registra il nome utente e il tipo di servizio in /var/log/secure
all'inizio e alla fine di ogni sessione. Puòessere supportato da altri moduli di sessione per ottenere una migliore funzionalità.
È possibile creare o aggiungere nuovi moduli PAM in qualsiasi momento per un utilizzo da parte di applicazioni con capacità PAM.
Per esempio, se uno sviluppatore crea un metodo di creazione della password e scrive un modulo PAM per supportarlo, i programmi che supportano PAM, usano immediatamente il nuovo modulo ed il metodo password senza essere modificati o ricompilati.
Questo permette agli sviluppatori e agli amministratori del sistema, di effettuare una sorta di mix e match, e di prova, dei metodi di autenticazione per diversi programmi senza ricompilarli.
La documentazione sulla scrittura dei moduli è inclusa nella directory /usr/share/doc/pam-
dove <version-number>
/<numero-versione>
rappresenta il numero della versione di PAM.
Numerosi tool di gestione presenti con Red Hat Enterprise Linux permettono all'utente di ottenere privilegi elevati fino a cinque minuti tramite il modulo pam_timestamp.so
. È importante capire come questo meccanismo funzioni, in quanto se un utente si allontana dal terminale mentre pam_timestamp.so
è in funzione, rende la macchina vulnerabile a manipolazioni apportate da un altro utente che ha un accesso fisico alla console.
Con lo schema di timestamp di PAM, l'applicazione di gestione grafica richiede all'utente una password root quando lanciata. Una volta autenticato, il modulo pam_timestamp.so
crea, per default, un file timestamp all'interno della directory /var/run/sudo/
. Se il file timestamp è già esistente, gli altri programmi di gestione non richiederanno alcuna password. Invece, il modulo pam_timestamp.so
aggiornerà il file timestamp, riservando cinque minuti aggiuntivi di accesso amministrativo all'utente.
È possibile verificare lo stato corrente del file timestamp, semplicemente controllando il file /var/run/sudo/<user>
. Per il desktop il file in questione è unknown:root
. Se presente e se il timestamp corrispondente presenta un valore minore di cinque minuti, le credenziali risulteranno valide.
L'esistenza del file timestamp viene indicata da una icona di autenticazione, la quale verrà visualizzata nell'area di notifica del pannello.
Si consiglia prima di allontanarsi da una console dove è attivo un timestamp di PAM, di eliminare il file timestamp. Per fare ciò all'interno di un ambiente grafico, fate clic sull'icona di autenticazione sul pannello. Quando appare una finestra di dialogo, fate clic sul pulsante Dimentica l'autorizzazione.
Illustrazione del dialogo di congedo dell'autenticazione.
Considerazioni da tener presenti per quanto riguarda il file timestamp di PAM:
Se avete effettuato un log in remoto in un sistema usando ssh
, usate il comando /sbin/pam_timestamp_check -k root
per eliminare il file timestamp.
È necessario eseguire il comando /sbin/pam_timestamp_check -k root
dallo stesso terminal usato per lanciare l'applicazione privilegiata.
È necessario eseguire il log in come utente che originariamente ha invocato il modulo pam_timestamp.so
, in modo da poter usare il comando /sbin/pam_timestamp_check -k
. Non effettuate il log in come utente root per emettere questo comando.
Se desiderate annullare le credenziali del desktop (senza utilizzare Dimentica l'Autorizzazione sull'icona), usate il seguente comando:
/sbin/pam_timestamp_check -k root </dev/null >/dev/null 2>/dev/null
Se non utilizzate il seguente comando, rimuoverete solo le credenziali (se presenti) dal pty da dove eseguite il comando stesso.
Per informazioni su come eliminare il file timestamp usando pam_timestamp_check
, consultate la pagina man di pam_timestamp_check
.
Il modulo pam_timestamp.so
accetta diverse direttive. Di seguito sono riportate le due opzioni più comunemente usate:
timestamp_timeout
— Specifica il periodo(in secondi) entro il quale il file timestamp è valido. Il valore di default è di 300 secondi (cinque minuti).
timestampdir
— Specifica la directory entro la quale il file timestamp è conservato. Il valore di default è /var/run/sudo/
.
Per maggiori informazioni sul controllo del modulo pam_timestamp.so
, consultate Sezione 9.1.8.1, «Documentazione installata».
Red Hat Enterprise Linux conferisce al primo utente che effettua una registrazione sulla console fisica della macchina, una certa abilitá di manipolare alcuni dispositivi ed effettuare alcuni compiti che normalmente sono riservati all'utente root. Questo é controllato da un modulo PAM chiamato pam_console.so
.
Quando un utente si collega a un sistema Red Hat Enterprise Linux, il modulo pam_console.so
viene chiamato da login
o dai programmi di login grafici, gdm e kdm. Se questo utente è il primo utente a collegarsi alla console fisica — chiamata utente console — il modulo gli assegna la proprietà di vari dispositivi generalmente appartenenti all'utente root. L'utente della console è proprietario di questi dispositivi fino al termine della sessione locale. Quando l'utente non è più collegato, gli viene tolta la proprietà dei dispositivi la quale viene conferita all'utente root.
I dispositivi interessati includono, ma non sono limitati a, schede audio, unità floppy e CD-ROM.
Questo consente all'utente locale di manipolare questi dispositivi senza avere un accesso root, semplificando i compiti più comuni per l'utente della console.
È possibile modificare l'elenco dei dispositivi controllati da pam_console.so
modificando i seguenti file:
/etc/security/console.perms
/etc/security/console.perms.d/50-default.perms
È possibile modificare i permessi di numerosi dispositivi non presenti all'interno dei file sopra riportati, o annullare i valori predefiniti specificati. Invece di modificare il file 50-default.perms
, potreste creare un nuovo file (per esempio
) inserendo le modifiche necessarie. Il nome del nuovo file di default deve iniziare con un numero superiore a 50 (per esempio xx
-name.perms51-default.perms
). Ciò annullerà i valori di default all'interno del file 50-default.perms
.
Se il file di configurazione display manager gdm, kdm, o xdm è stato alterato in modo da permettere agli utenti remoti di effettuare un login e se l'host è configurato per essere eseguito sul runlevel 5, è consigliabile cambiare le direttive <console>
e <xconsole>
all'interno di /etc/security/console.perms
nei seguenti valori:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :0\.[0-9] :0 <xconsole>=:0\.[0-9] :0
Facendo questo, si impedirà agli utenti remoti di ottenere un accesso ai dispositivi e alle applicazioni soggette a restrizioni presenti sulla macchina.
Se il file di configurazione display manager gdm, kdm, o xdm è stato alterato in modo da permettere agli utenti remoti di effettuare un log in e se l'host è configurato per essere eseguito sul runlevel 5, è consigliabile rimuovere le direttive <xconsole>
e <console>
nei seguenti valori:
<console>=tty[0-9][0-9]* vc/[0-9][0-9]*
L'utente console può accedere a qualsiasi programma configurato per un utilizzo all'interno della directory /etc/security/console.apps/
.
Questa directory contiene i file di configurazione i quali sono in grado di abilitare l'utente console ad eseguire determinate applicazioni in /sbin
e /usr/sbin
.
Questi file di configurazione hanno lo stesso nome delle applicazioni che loro stessi impostano.
Uno dei gruppi di applicazioni a cui l'utente console può accedere è composto da tre programmi per spegnere o riavviare il sistema:
/sbin/halt
/sbin/reboot
/sbin/poweroff
Poichè si tratta di applicazioni che supportano i moduli PAM, essi chiamano i modulipam_console.so
per poter funzionare.
Per maggiori informazioni, consultate Sezione 9.1.8.1, «Documentazione installata».
Le seguenti risorse spiegano maggiormente i metodi sull'uso e sulla configurazione di PAM. In aggiunta a queste risorse, leggete i file di configurazione di PAM presenti sul sistema, per capire meglio come essi sono strutturati.
Pagine man relative a PAM — Sono presenti con PAM un certo numero di pagine man per diversi file di configurazione e applicazioni. Il seguente, è un elenco delle pagine man più importanti.
pam
— Informazioni introduttive soddisfacenti su PAM, incluso la struttura e lo scopo dei file di configurazione di PAM stesso.
Da notare che la suddetta pagina man affronta sia /etc/pam.conf
che i file di configurazione individuali nella directory /etc/pam.d/
. Per default Red Hat Enterprise Linux utilizza i file di configurazione individuali nella directory /etc/pam.d/
, ignorando /etc/pam.conf
anche se esistente.
pam_console
— Descrive lo scopo del modulo pam_console.so
. Descrive anche la sintassi appropriata per una entry all'interno del file di configurazione di PAM.
console.apps
— Descrive il formato e le opzioni disponibili all'interno del file di configurazione /etc/security/console.apps
, il quale definisce quali applicazioni sono accessibili dall'utente della console assegnato da PAM.
console.perms
— Descrive il formato e le opzioni disponibili all'interno del file di configurazione /etc/security/console.perms
, il quale specifica i permessi dell'utente console assegnato da PAM.
pam_timestamp
— Descrive il modulo pam_timestamp.so
.
/usr/share/doc/pam-
— Contiene una System Administrators' Guide, un Manuale dello scrittore del modulo e un Manuale dello sviluppatore dell'applicazione. Contiene inoltre una copia dello standard PAM, DCE-RFC 86.0, dove <version-number>
<numero_versione>
è la versione del numero di PAM.
/usr/share/doc/pam-
— Contiene le informazioni sul modulo PAM <version-number>
/txts/README.pam_timestamppam_timestamp.so
dove <numero-versione>
è il numero della versione di PAM.
http://www.kernel.org/pub/linux/libs/pam/ — Il primo sito Web di distribuzione del progetto Linux-PAM, contenente informazioni su vari moduli e applicazioni PAM, le relative FAQ e una documentazione aggiuntiva su PAM.
La documentazione all'interno del sito web sopra riportato, si riferisce all'ultima versione dell'upstream di PAM, e potrebbe non risultare completamente accurata per la versione di PAM inclusa in Red Hat Enterprise Linux.
Il controllo dell'accesso ai servizi di rete é uno dei fattori che riguardano la sicurezza piú importanti che un amministratore possa incontrare. Fortunatamente, con Red Hat Enterprise Linux sono disponibili un numero di tool creati appositamente per questo. Per esempio, un firewall basato su iptables
filtra i pacchetti di rete non desiderati all'interno dello stack di rete del kernel. Per i servizi di rete che lo utilizzano, i wrapper TCP aggiungono un livello di protezione, definendo quale host può collegarsi ai servizi di rete "wrapped". Uno dei servizi di questo tipo é il super serverxinetd
. Questo servizio é chiamato super server perché controlla le connessioni per un sottogruppo di servizi di rete, e garantisce un controllo di accesso piú accurato.
Figura 9.3, «Controllo di accesso per i servizi di rete» rappresenta una illustrazione basica di come questi tool lavorano insieme per proteggere i servizi di rete.
Exhibit A: Controllo di accesso per servizi di rete Flowchart
Il pacchetto dei wrapper TCP (tcp_wrappers
viene installato per default e fornisce un controllo d'accesso basato su di un host per i servizi di rete. Il componente piú importante all'interno del pacchetto é la libreria /usr/lib/libwrap.a
. In termini generali, un servizio wrapped TCP é stato compilato usando la libreria libwrap.a
.
Quando si tenta il collegamento ad un servizio wrapped TCP, il servizio prima si riferisce ai file d'accesso dell'host (/etc/hosts.allow
e /etc/hosts.deny
) per determinare se l'host del client é abilitato al collegamento. In molti casi, il servizio usa il demone syslog (syslogd
) per scrivere il nome del client richiedente e del servizio richiesto su /var/log/secure
o /var/log/messages
.
Se un client é abilitato al collegamento, i wrapper TCP permettono il controllo della connessione al servizio richiesto non interferendo con la comunicazione tra il client ed il server.
In aggiunta al controllo dell'accesso ed al logging, i wrapper TCP possono attivare i comandi per interagire con il client prima di rifiutare o permettere il controllo della connessione al servizio di rete richiesto.
Poichè i wrapper TCP rappresentano un'aggiunta molto importante per i tool di sicurezza di un amministratore del server, molti servizi di rete all'interno di Red Hat Enterprise Linux sono collegati alla libreria libwrap.a
. Alcune applicazioni includono /usr/sbin/sshd
, /usr/sbin/sendmail
, e /usr/sbin/xinetd
.
Per determinare se un servizio di rete binario é collegato alla libreria libwrap.a
, digitare il seguente comando come utente root:
ldd <binary-name> | grep libwrap
Sostituire <nome-binario>
con il nome del binario del servizio di rete.
Se viene ritornato un prompt senza alcun output, allora il servizio di rete non è collegato a libwrap.a
.
Il seguente esempio indica che /usr/sbin/sshd
è collegato a libwrap.a
:
[root@myserver ~]# ldd /usr/sbin/sshd | grep libwrap libwrap.so.0 = > /usr/lib/libwrap.so.0 (0x00655000) [root@myserver ~]#
I wrapper TCP forniscono i seguenti vantaggi rispetto alle altre techniche di controllo dei servizi di rete:
Transparenza sia per il client che per il servizio di rete wrapped 'inglobato'. — Sia il client che si collega che il servizio di rete wrapped non sono a conoscenza dell'uso dei wrapper TCP. Gli utenti abilitati non si accorgeranno di niente, mentre coloro che non sono abilitati non riusciranno a collegarsi.
Gestione centralizzata dei protocolli multipli. — I wrapper TCP funzionano indipendentemente dai servizi di rete da loro protetti, in questo modo, molte applicazioni possono condividere un insieme comune di file di configurazione per il controllo dell'accesso semplificandone così la gestione.
Per determinare se la macchina di un client é abilitata a collegarsi ad un servizio, i wrapper TCP si riferiscono ai seguenti file, i quali sono conosciuti come file di accesso degli host:
/etc/hosts.allow
/etc/hosts.deny
Quando un servizio TCP-wrapped riceve una richiesta client, esso esegue le seguenti fasi:
Riferimenti /etc/hosts.allow
. — Il servizio TCP wrapped analizza sequenzialmente il file /etc/hosts.allow
e applica la prima regola specificata per quel servizio. Se trova una regola corrispondente, la connessione verrá abilitata. Altrimenti sará intrapresa la fase successiva.
Riferimenti /etc/hosts.deny
. — Il servizio TCP wrapped analizza sequenzialmente il file /etc/hosts.deny
. Se trova una regola corrispondente, rifiuterá la connessione. In caso contrario, verrá garantito l'accesso.
I seguenti punti sono molto importanti da considerare quando si usano i wrapper TCP per la protezione dei servizi di rete:
Poichè le regole d'accesso in hosts.allow
sono applicate prima, esse hanno la precedenza rispetto alle regole specificate in hosts.deny
. Tuttavia, se viene permesso l'accesso ad un servizio in hosts.allow
, viene ignorato il rifiuto d'accesso allo stesso servizio in hosts.deny
.
Le regole in ogni file vengono lette dall'alto verso il basso, applicando la prima regola corrispondente, data ad un servizio. L'ordine delle regole é molto importante.
Se nessuna regola per il servizio viene trovata in entrambi i file, oppure se i file non esistono, l'accesso al servizio viene garantito.
I servizi TCP wrapped non nascondono le regole dai file di accesso degli host, cosí qualsiasi cambiamento su hosts.allow
o hosts.deny
sará confermato immediatamente senza riavviare i servizi di rete.
Se l'ultima riga di un file di accesso host non risulta essere un carattere di una nuova riga (creato premendo il testo Enter), l'ultima regola nel file fallirá, e un errore verrà registrato su /var/log/messages
o /var/log/secure
. Questo é anche il caso di una regola che possiede righe multiple senza l'uso del carattere barra. L'esempio riportato illustra una sezione di un messaggio di registrazione nel verificarsi di un fallimento della regola a causa delle seguenti circostanze:
warning: /etc/hosts.allow, line 20: missing newline or line too long
Il formato per /etc/hosts.allow
e /etc/hosts.deny
é identico. Le righe vuote o quelle che iniziano con il segno (#) vengono ignorate, e ogni regola deve essere sulla propria riga.
Ogni regola usa il seguente formato di base per controllare l'accesso ai servizi di rete:
<daemon list>
:<client list>
[:<option>
:<option>
: ...]
<daemon list>
— Un elenco separato da virgole di nomi del processo (non i nomi del servizio) oppure di wildcard ALL
. L'elenco del demone accetta anche gli operatori (consultare Sezione 9.2.2.1.4, «Operatori») per permettere una maggiore flessibilitá.
<client list>
— Un elenco, separato da una virgola, di hostname, di indirizzi IP, pattern speciali, oppure wildcard il quale identifica gli host interessati dalla regola. L'elenco del client accetta anche gli operatori riportati nelSezione 9.2.2.1.4, «Operatori» per permettere una maggiore flessibilitá.
<option>
— Un'azione facoltativa o un elenco di azioni separato da due punti, effettuate quando la regola viene innescata. I campi di opzione supportano le estensioni, lanciare i comandi della shell, permettere o rifiutare l'accesso, e alterare il comportamento di logging.
Maggiori informazioni sui termini specifici sopra indicati, sono disponibili all'interno di questa guida:
La seguente regola é un esempio di accesso degli host
vsftpd : .example.com
Questa regola indica ai wrapper TCP di cercare i collegamenti al demone FTP (vsftpd
) da ogni host nel dominio example.com
. Se questa regola appare in hosts.allow
, la connessione verrá accettata. Se la regola appare in hosts.deny
, la connessione sará rifiutata.
Il prossimo esempio di regola di accesso agli host é piú complesso e usa due campi di opzione:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied>>/var/log/sshd.log \ : deny
Notate in questo esempio che ogni campo è preceduto dal carattere (\). L'uso di questo carattere evita il fallimento della regola a causa della lunghezza.
Questo esempio indica che se si cerca di effettuare un collegamento sul demone SSH (sshd
) da un host nel dominio example.com
, eseguire il comando echo
il quale registrerá il tentativo su di un file speciale, e negare il collegamento. A causa dell'uso della direttiva deny
, questa riga rifiuterá l'accesso anche se apparirá nel file hosts.allow
. Per maggiori informazioni sulle opzioni disponibili, consultare Sezione 9.2.2.2, «Campi di opzione».
Le Wildcard permettono ai wrapper TCP di corrispondere facilmente con i gruppi di demoni o degli host. Esse sono usate molto frequentemente nel campo dell'elenco dei client delle regole di accesso.
Sono disponibili le seguenti wildcard:
ALL
— Corrisponde con tutto. Puó essere usato sia per l'elenco dei demoni che per quella dei client.
LOCAL
— Corrisponde a qualsiasi host che non contiene un periodo (.), come ad esempio l'host locale.
KNOWN
— Corrisponde a qualsiasi host dove l'hostname e l'indirizzo host sono conosciuti o dove l'utente é conosciuto.
UNKNOWN
— Corrisponde a ogni host dove l'hostname o l'indirizzo host sono sconosciuti o dove anche l'utente é sconosciuto.
PARANOID
— Corrisponde a qualsiasi host dove l'hostname non corrisponde all'indirizzo dell'host.
Le wildcard KNOWN
, UNKNOWN
, e PARANOID
dovrebbero essere usate con attenzione in quanto una rottura nella risoluzione del nome puó compromettere l'ingresso ad un servizio ad un utente abilitato.
I Pattern possono essere usati nel campo del client delle regole di accesso, per poter meglio specificare i gruppi di host del client.
Di seguito viene riportata una lista dei pattern piú comuni accettati per le entry nel campo del client:
Hostname che iniziano con un punto (.) — Posizionando un punto all'inizio di un hostname, corrisponde a tutti gli host che condividono i componenti del nome elencati. Il seguente esempio sará applicato per ogni host all'interno del dominio example.com
:
ALL : .example.com
Indirizzo IP che termina con un punto (.) — Posizionando un punto alla fine di un indirizzo IP, si corrisponde a tutti gli host che condividono i gruppi numerici iniziali di un indirizzo IP. Il seguente esempio sará valido per tutti gli host all'interno della rete 192.168.x.x
:
ALL : 192.168.
indirizzo IP/maschera di rete — Espressioni della maschera di rete possono essere usate come un pattern per controllare l'accesso a un gruppo particolare di indirizzi IP. Il seguente esempio sará valido per qualsiasi host con un indirizzo di 192.168.0.0
fino a 192.168.1.255
:
ALL : 192.168.0.0/255.255.254.0
Quando si lavora nello spazio dell'indirizzo IPv4, la lunghezza della coppia indirizzo/prefisso (prefixlen) coppia delle dichiarazioni (CIDR) non è supportata. Solo le regole IPv6 possono usare questo formato.
coppia [IPv6 address]/prefixlen — Le coppie [net]/prefixlen possono essere usate come un pattern per controllare l'accesso a un gruppo particolare di indirizzi IPv6. Il seguente esempio sará valido per qualsiasi host con un indirizzo di 3ffe:505:2:1::
fino a 3ffe:505:2:1:ffff:ffff:ffff:ffff
:
ALL : [3ffe:505:2:1::]/64
Asterisco (*) — L'asterisco puó essere usato quando ci si riferisce ad interi gruppi di hostname o di indirizzi IP, solo se non sono presenti in un elenco del client contenente altri tipi di pattern. Il seguente esempio sará valido per ogni host all'interno del dominio example.com
:
ALL : *.example.com
La barra (/) — Se l'elenco di un client inizia con una barra, verrá trattato come un file name. Ció é utile se sono necessarie le regole che specificano numeri molto grandi di host. Il seguente esempio si riferisce ai wrapper TCP per il file /etc/telnet.hosts
per tutti i collegamenti Telnet:
in.telnetd : /etc/telnet.hosts
Altri pattern meno usati sono accettati dai wrapper TCP. Consultate la pagina man 5 hosts_access
per maggiori informazioni.
Prestate molta attenzione quando usate gli hostname e i nomi del dominio.Gli aggressori possono usare una varietá di trucchi per aggirare un'accurata risoluzione del nome. In aggiunta, ogni interruzione nel servizio DNS eviterebbe anche agli utenti autorizzati l'uso dei servizi di rete. Per questo motivo è consigliabile usare gli indirizzi IP quando possibile.
L'implementazione Portmap
dei Wrapper TCP non supporta gli host look-ups, ciò significa che portmap
non può utilizzare gli hostname per identificare gli host. Di conseguenza le regole di controllo dell'accesso per portmap in hosts.allow
o hosts.deny
, devono usare gli indirizzi IP oppure la parola chiave ALL
, per poter specificare gli host.
Le modifiche apportate alle regole di controllo per l'accesso di portmap
, possono non avere un effetto immediato se non si riavvia il servizio portmap
.
Servizi molto diffusi, come ad esempio NIS e NFS, per operare dipendono da portmap
, per questo motivo fate attenzione a questi limiti.
Al momento le regole per il controllo dell'accesso, accettano un operatore, EXCEPT
. Puó essere usato nell'elenco del demone oppure nell'elenco del client di una regola.
L'operatore EXCEPT
abilita specifiche eccezioni a corrispondenze piú vaste all'interno della stessa regola.
Nel seguente esempio da un file hosts.allow
, tutti gli host example.com
sono abilitati a connettersi a tutti i servizi eccetto cracker.example.com
:
ALL: .example.com EXCEPT cracker.example.com
In un altro esempio da un file hosts.allow
, i client dalla rete 192.168.0.
possono usare tutti i servizi eccetto FTP:
x
ALL EXCEPT vsftpd: 192.168.0.
Amministrativamente, è più semplice evitare di usare gli operatori EXCEPT
. Questo permette ad altri amministratori di controllare velocemente i file appropriati per vedere quali sono gli host autorizzati,per accedere ai servizi senza passare per i vari operatori EXCEPT
.
In aggiunta alle regole di base sul rifiuto o sul permesso all'accesso, l'implementazione Red Hat Enterprise Linux dei wrapper TCP, supporta le estensioni per la lingua di controllo per l'accesso attraverso i campi di opzione. Usando i campi di opzione all'interno delle regole di accesso degli host, gli amministratori possono ottenere una varietá di compiti come ad esempio l'alterazione del comportamento di log, il consolidamento del controllo d'accesso, e il lancio dei comandi della shell.
I campi di opzione permettono all'amministratore di cambiare la funzione di registrazione ed il livello di prioritá per una regola, usando la direttiva severity
.
Nel seguente esempio, i collegamenti per il demone SSH, da un qualsiasi host nel dominio example.com
sono registrati su authpriv
syslog
di default (perché nessun valore é specificato) con una priorità di emerg
:
sshd : .example.com : severity emerg
É possibile specificare una funzione usando l'opzione severity
. Il seguente esempio registra qualsiasi tentativo di collegamento SSH da parte dell'host dal dominio example.com
, su local0
con una priorità alert
:
sshd : .example.com : severity local0.alert
In pratica, questo esempio non funziona fino a quando il demone syslog (syslogd
) é configurato per effettuare un log su local0
. Consultare la pagina man syslog.conf
per informazioni inerenti la configurazione delle facility log personalizzate.
I campi di opzione permettono agli amministratori di abilitare o negare gli host in una regola singola, aggiungendo semplicemente le direttive allow
o deny
come opzione finale.
Per esempio, le due regole seguenti abilitano dei collegamenti SSH da client-1.example.com
, ma rifiutano i collegamenti da client-2.example.com
:
sshd : client-1.example.com : allow sshd : client-2.example.com : deny
Permettendo il controllo d'accesso in base alla regola, il campo di opzione permette agli amministratori di consolidare tutte le regole d'accesso in un file singolo: hosts.allow
o hosts.deny
. Alcuni lo considerano il modo piú facile per organizzare le regole d'accesso.
I campi di opzione permettono alle regole d'accesso di lanciare i comandi della shell attraverso le seguenti direttive:
spawn
— Lancia un comando della shell come programma figlio. Questa opzione puó effettuare dei compiti come ad esempio usare /usr/sbin/safe_finger
per ottenere piú informazioni inerenti il client richiedente, o creare file di registrazione speciali usando il comando echo
.
Nel seguente esempio, i client che cercano di accedere ai servizi Telnet dal dominio example.com
sono registrati su di un file speciale:
in.telnetd : .example.com \ : spawn /bin/echo `/bin/date` from %h>>/var/log/telnet.log \ : allow
twist
— Sostituisce il servizio richiesto con il comando specificato. Questa direttiva viene usata spesso per impostare delle trappole per gli aggressori (chiamate anche "honey pots"). Esso puó essere usato per mandare messaggi ai client. La direttiva twist
deve essere presente alla fine della riga della regola.
Nel seguente esempio, ai client che tentano di accedere i servizi FTP dal dominio example.com
viene inviato un messaggio tramite il comando echo
:
vsftpd : .example.com \ : twist /bin/echo "421 This domain has been black-listed. Access denied!"
Per maggiori informazioni inerenti le opzioni di comando della shell, consultare la pagina man hosts_options
.
Le espansioni, quando usate insieme con le direttive spawn
e twist
forniscono informazioni inerenti il client, il server ed i processi coinvolti.
Di seguito viene riportata una lista delle estensioni supportate:
%a
— Fornisce l'indirizzo IP del client.
%A
— Fornisce l'indirizzo IP del server.
%c
— Fornisce una varietá d'informazioni inerenti il client, come ad esempio il nome utente e l'hostname, oppure il nome utente e l'indirizzo IP.
%d
— Fornisce il nome del processo del demone.
%h
— Fornisce l'hostname del client (o l'indirizzo IP se l'hostname non è disponibile).
%H
— Fornisce l'hostname del server (o l'indirizzo IP se l'hostname non è disponibile).
%n
— Fornisce l'hostname del client. Se non è disponibile, viene visualizzato unknown
. Se l'hostname del client e l'indirizzo host non corrispondono, viene visualizzato paranoid
.
%N
— Fornisce l'hostname del server. Se non è disponibile, viene visualizzato unknown
. Se l'hostname del server e l'indirizzo host non corrispondono, compare, paranoid
.
%p
— Fornisce l'ID del processo del demone.
%s
— Fornisce vari tipi di informazioni del server, quali il processo demone e l'indirizzo host o IP del server.
%u
— Fornisce l'username del client. Se non è disponibile, viene visualizzato unknown
.
Il seguente esempio usa una espansione insieme con il comando spawn
per identificare l'host del client in un file di registrazione personalizzato.
Quando si cerca di eseguire un collegamento al demone SSH (sshd
), da un host presente nel dominio example.com
, eseguire il comando echo
per registrare il tentativo, includendo l'hostname del client (usando l'espansione %h
), per un file speciale:
sshd : .example.com \ : spawn /bin/echo `/bin/date` access denied to %h>>/var/log/sshd.log \ : deny
In modo simile, le espansioni possono essere usate per personalizzare i messaggi per il client. Nell'esempio seguente, , i client che cercano di accedere ai servizi FTP dal dominio example.com
vengono informati che essi sono stati esclusi dal server:
vsftpd : .example.com \ : twist /bin/echo "421 %h has been banned from this server!"
Per una spiegazione completa delle estensioni disponibili, e anche delle opzioni aggiuntive del controllo di accesso, consultare la sezione 5 delle pagine man per hosts_access
(man 5 hosts_access
) e la pagina man per hosts_options
.
Per maggiori informazioni sui wrapper TCP consultate Sezione 9.2.5, «Risorse aggiuntive».
Il demone xinetd
é un TCP wrapped super service il quale controlla l'accesso ad una sottorete dei servizi di rete incluso FTP, IMAP e Telnet. Esso fornisce anche delle opzioni di configurazione specifiche del servizio per un controllo dell'accesso, aumento del logging, del ridirezionamento, procedura binding e controllo dell'utilizzazione delle risorse.
Quando un client cerca di collegarsi ad un servizio di rete controllato da xinetd
, il super servizio riceve la richiesta e controlla la presenza di qualsiasi regola di controllo per l'accesso ai Wrapper TCP.
Se viene permesso l'accesso, xinetd
verifica che il collegamento venga permesso seguendo le proprie regole d'accesso per quel servizio. Esso controlla altresì che il servizio sia in grado di ricevere ulteriori risorse ad esso assegnate, e che non stia infrangendo alcuna regola.
Se tutte queste condizioni vengono soddisfatte (e cioè se viene permesso l'accesso al servizio, che il servizio non abbia raggiunto i propri limiti di risorse, e che lo stesso non stia infrangendo alcuna regola), xinetd
avvia una istanza del servizio richiesto, passandogli il controllo del collegamento. Dopo aver stabilito il collegamento, xinetd
non interferisce nella comunicazione tra il client ed il server.
I file di configurazione per xinetd
sono di seguito riportati:
/etc/xinetd.conf
— Il file di configurazione xinetd
globale.
/etc/xinetd.d/
— La directory che contiene tutti i file del servizio specifico.
Il file /etc/xinetd.conf
contiene le impostazioni di configurazione generali che influenzano ogni servizio sotto il controllo di xinetd
. Viene letto una volta quando il servizio xinetd
viene avviato, cosí per poter confermare i cambiamenti riguardanti la configurazione, sarà necessario riavviare il servizio xinetd
. Di seguito viene riportato un esempio del file /etc/xinetd.conf
:
defaults { instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST cps = 25 30 } includedir /etc/xinetd.d
Queste righe controllano i seguenti aspetti di xinetd
:
instances
— Specifica il numero massimo di richieste che xinetd
puó processare.
log_type
— Configura xinetd
in modo da usare la funzione di log authpriv
, il quale scrive le entry di registrazione sul file /var/log/secure
. Se si aggiunge una direttiva come ad esempio FILE /var/log/xinetdlog
, verrà creato un file di log personalizzato chiamato xinetdlog
nella directory /var/log/
.
log_on_success
— Configura xinetd
in modo da registrare i tentativi di collegamenti riusciti. Per default, vengono registrati l'indirizzo IP dell'host remoto e l'ID del processo che elabora la richiesta.
log_on_failure
— Configura xinetd
in modo da registrare i tentativi di collegamento falliti o se il collegamento è stato rifiutato.
cps
— Configura xinetd
in modo da non abilitare più di 25 connessioni al secondo verso un servizio specifico. Quando tale limite viene raggiuto, il servizio entra in pausa per 30 secondi.
includedir
/etc/xinetd.d/
— Include le opzioni dichiarate nei file di configurazione del servizio specifico, posizionato nella directory /etc/xinetd.d/
. Consultate Sezione 9.2.4.2, «La directory /etc/xinetd.d/» per maggiori informazioni.
Spesso le impostazioni log_on_success
e log_on_failure
in /etc/xinetd.conf
sono maggiormente modificate nei file di registrazione specifici del servizio. Per questa ragione, piú informazioni possono apparire in un file di registrazione di un servizio, rispetto alle informazioni date dal file /etc/xinetd.conf
. Consultate Sezione 9.2.4.3.1, «Opzioni di Logging» per maggiori informazioni.
La directory /etc/xinetd.d/
contiene i file di configurazione per ogni servizio gestito da xinetd
, ed i nomi dei file relativi al servizio. Come con xinetd.conf
, questa directory viene letta solo quando il servizio xinetd
é avviato. Per confermare qualsiasi cambiamento, l'amministratore deve riavviare il servizio xinetd
.
Il formato dei file nella directory /etc/xinetd.d/
usa le stesse convenzioni di /etc/xinetd.conf
. La ragione principale per la quale la configurazione di ogni servizio viene conservata in file separati, é quella di permettere una personalizzazione piú facile con minore probabilitá di condizionare altri servizi.
Per avere una idea di come questi file sono strutturati, considerate il file /etc/xinetd.d/krb5-telnet
:
service telnet { flags = REUSE socket_type = stream wait = no user = root server = /usr/kerberos/sbin/telnetd log_on_failure += USERID disable = yes }
Queste righe controllano vari aspetti del servizio telnet
:
service
— Definisce il nome del servizio, generalmente usando un nome elencato nel file /etc/services
.
flags
— Imposta un numero di attributi per il collegamento. REUSE
indica a xinetd
di usare nuovamente il socket per un collegamento Telnet.
Il flag REUSE
non viene più supportato. Ora tutti i servizi implicitamente utilizzano il flag REUSE
.
socket_type
— Imposta il tipo di socket di rete per stream
.
wait
— Definisce se il servizio è singolo 'single-threaded' (yes
) o multiplo 'multi-threaded' (no
).
user
— Definisce con quale user ID verrà eseguito il processo.
server
— Definisce l'eseguibile binario da lanciare.
log_on_failure
— Definisce i parametri di logging per log_on_failure
in aggiunta a quelli giá definiti in xinetd.conf
.
disable
— Definisce se il servizio é disabilitato (yes
) o abilitato (no
).
Per maggiori informazioni sulle suddette opzioni ed il loro utilizzo, consultate la pagina man xinetd.conf
.
Vi é una vasta gamma di direttive disponibili per i servizi protetti da xinetd
. Questa sezione evidenzia alcune delle opzioni maggiormente usate.
Le seguenti opzioni di logging sono disponibili per /etc/xinetd.conf
, e per i file di configurazione specifici del servizio all'interno della directory /etc/xinetd.d/
.
Di seguito é riportato un elenco di alcune delle opzioni di logging piú comunemente usate:
ATTEMPT
— Registra i tentativi falliti di accesso (log_on_failure
).
DURATION
— registra il tempo di utilizzo di un servizio da parte di un sistema remoto (log_on_success
).
EXIT
— Registra il segnale di uscita o di chiusura del servizio (log_on_success
).
HOST
— Registra l'indirizzo IP dell'host remoto (log_on_failure
e log_on_success
).
PID
— Registra l'ID del processo del server che riceve la richiesta (log_on_success
).
USERID
— Registra l'utente remoto usando il metodo definito in RFC 1413 per tutti i servizi stream multi-thread (log_on_failure
e log_on_success
).
Per un elenco completo delle opzioni di logging, consultare la pagina man xinetd.conf
.
Gli utenti dei servizi xinetd
possono scegliere di usare le regole di accesso agli host dei wrapper TCP, fornire il controllo di accesso tramite i file di configurazione xinetd
, o un insieme dei due. Informazioni relative all'uso dei file di controllo dell'accesso host dei wrapper TCP sono riportate nelSezione 9.2.2, «File di configurazione dei Wrapper TCP».
Questa sezione affronta l'uso di xinetd
per controllare l'accesso ai servizi.
A differenza dei wrapper TCP, le modifiche apportate al controllo dell'accesso verranno confermate se l'amministratore di xinetd
riavvia il servizio xinetd
.
Inoltre, a differenza dei wrapper TCP, il controllo dell'accesso eseguito attraverso xinetd
, influenzerà solo i servizi controllati da xinetd
.
Il controllo dell'accesso host fornito da xinetd
differisce dal metodo usato dai wrapper TCP. Mentre i wrapper TCP raggruppano tutta la configurazione di accesso in due file, /etc/hosts.allow
e /etc/hosts.deny
, il controllo dell'accesso di xinetd
viene trovato su ogni file di configurazione del servizio all'interno della directory /etc/xinetd.d/
.
Le seguenti opzioni d'accesso host sono supportate da xinetd
:
only_from
— Permette solo agli host specificati di usare il servizio.
no_access
— Impedisce a questi utenti di usare il servizio.
access_times
— Specifica la fascia oraria in cui un particolare servizio può essere utilizzato. La fascia oraria deve essere specificata nel formato HH:MM-HH:MM e utilizzare le 24 ore della giornata.
Le opzioni only_from
e no_access
possono usare un elenco di indirizzi IP o di hostname, oppure è possibile specificare un'intera rete. Come per i wrapper TCP, se associate il controllo di accesso xinetd
con una configurazione di logging migliorata, potete aumentare la sicurezza, bloccando le richieste da host non autorizzati, registrando anche ogni tentativo effettuato.
Per esempio, il seguente file /etc/xinetd.d/telnet
può bloccare l'accesso telnet da parte di un gruppo specifico di rete, e restringere la fascia oraria durante la quale anche gli utenti autorizzati possono collegarsi:
service telnet { disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/kerberos/sbin/telnetd log_on_failure += USERID no_access = 172.16.45.0/24 log_on_success += PID HOST EXIT access_times = 09:45-16:15 }
In questo esempio, quando un sistema client dalla rete 10.0.1.0/24
, come ad esempio 10.0.1.2, cerca di accedere al servizio Telnet, esso riceverá il seguente messaggio:
Collegamento interrotto da un host estraneo.
In aggiunta, il loro tentativo di login viene registrato in /var/log/messages
nel modo seguente:
Sep 7 14:58:33 localhost xinetd[5285]: FAIL: telnet address from=172.16.45.107 Sep 7 14:58:33 localhost xinetd[5283]: START: telnet pid=5285 from=172.16.45.107 Sep 7 14:58:33 localhost xinetd[5283]: EXIT: telnet status=0 pid=5285 duration=0(sec)
Quando si usano i wrapper TCP insieme ai controlli d'accesso xinetd
, é importante capire il rapporto tra due meccanismi di controllo.
Di seguito viene riportato l'ordine delle operazioni seguite da xinetd
quando un client richiede un collegamento:
Il demone xinetd
accede alle regole dell'accesso host dei wrapper TCP attraverso una libreria libwrap.a
. Se una regola di rifiuto 'deny' corrisponde con il client, la connessione viene passata su xinetd
.
Il demone xinetd
controlla le proprie regole di controllo dell'accesso sia per il servizio xinetd
che per il servizio richiesto. Se una regola di rifiuto 'deny' corrisponde con il client host, la connessione viene terminata. Altrimenti, xinetd
avvia un esempio del servizio richiesto passando il controllo della connessione al servizio stesso.
Prestare attenzione quando si usano i controlli d'accesso dei wrapper TCP insieme con i controlli dell'accesso xinetd
. Una configurazione errata puó causare degli effett indesiderati.
I file di configurazione dei servizi di xinetd
supportano anche il collegamento dei servizi a particolari indirizzi IP, e il ridirezionamento delle richieste in entrata ad altri indirizzi IP, hostname o porte.
Il binding è controllato tramite l'opzione bind
nei file di configurazione dei servizi, e collega un servizio a un particolare indirizzo IP usato sul sistema. Una volta configurata, l'opzione bind
permette l'accesso al servizio solo alle richieste che utilizzano tale indirizzo IP. In questo modo i servizi diversi possono essere inviati alle interfacce di rete in base all'esigenza.
Questo è particolarmente utile per sistemi con più adattatori di rete e indirizzi IP. Su tale sistema, i servizi non sicuri, (come Telnet), possono essere configurati in solo ascolto sull'interfaccia collegata ad una rete privata e non con una interfaccia collegata con Internet.
L'opzione redirect
, che accetta un indirizzo IP o un hostname seguito da un numero di porta, indica al servizio di ridirezionare tutte le richieste per il servizio verso la posizione specificata. Questa funzione può essere usata per puntare verso un altro numero di porta sullo stesso sistema, ridirezionare la richiesta verso altri indirizzi IP sulla stessa macchina, inviare la richiesta a un numero di porta e sistema completamente diverso oppure a una combinazione di queste opzioni. In questo modo, un utente che si collega a un servizio su un sistema può essere instradato verso un altro sistema senza causare problemi.
Il demone xinetd
è in grado di compiere questo ridirezionamento creando un processo che rimane attivo durante la connessione tra la macchina client che svolge la richiesta, e l'host che effettivamente fornisce il servizio e che trasferisce i dati fra i due sistemi.
I vantaggi delle opzioni bind
e redirect
si notano quando esse vengono usate insieme. Collegando un servizio a un indirizzo IP su un sistema e ridirezionando successivamente la richiesta per il servizio a una seconda macchina che può essere vista solo dalla prima macchina, potete usare un sistema interno che fornisce servizi a una rete totalmente diversa. Altrimenti, le due opzioni possono essere usate per limitare l'esposizione di un servizio su una macchina multihome a un indirizzo IP conosciuto, e ridirigere tutte le richieste per il servizio verso un'altra macchina appositamente configurata.
Per esempio, esaminate un sistema usato come firewall i cui parametri per il servizio Telnet sono:
service telnet { socket_type = stream wait = no server = /usr/kerberos/sbin/telnetd log_on_success += DURATION USERID log_on_failure += USERID bind = 123.123.123.123 redirect = 10.0.1.13 23 }
Le opzioni bind
e redirect
contenute in questo file assicurano che il servizio Telnet della macchina sia collegato all'indirizzo IP esterno (123.123.123.123
), quello rivolto verso Internet. Inoltre, tutte le richieste per il servizio telnet inviate a 123.123.123.123
vengono ridirezionate tramite un altro adattatore di rete a un indirizzo IP interno (10.0.1.13
) accessibile solo dal firewall e dai sistemi interni. Il firewall invia in seguito la comunicazione tra i due sistemi e il sistema in collegamento crede di essere collegato a 123.123.123.123
mentre in realtà è collegato a un'altra macchina.
Questa funzione è particolarmente utile per gli utenti con collegamenti veloci e un unico indirizzo IP fisso. Quando viene utilizzato il (NAT) Network Address Translation, i sistemi dietro la macchina gateway che utilizzano solo indirizzi IP interni, non sono disponibili all'esterno del sistema gateway. Tuttavia, quando alcuni servizi controllati da xinetd
sono configurati con le opzioni bind
e redirect
, la macchina gateway può agire come un proxy fra i sistemi esterni e una macchina interna configurata per fornire il servizio. Inoltre, le varie opzioni di controllo dell'accesso e di loggin di xinetd
sono disponibili per una protezione aggiuntiva.
Il demone xinetd
puó aggiungere un livello basico di protezione per attacchi Denial of Service (DoS). Di seguito viene riportata una lista di direttive che possono aiutare a limitare gli effetti di tali attacchi:
per_source
— Definisce il numero massimo di istanze per un servizio per indirizzo IP della sorgente. Accetta solo numeri interi come argomento e puó essere usato in xinetd.conf
e nei file di configurazione del servizio specifico nella directory xinetd.d/
.
cps
— Definisce il numero massimo di connessioni al secondo. Questa direttiva prende due argomenti separati da uno spazio bianco. Il primo é il numero massimo di connessioni permesse al sirvizio al secondo. Il secondo é il numero dei secondi che xinetd
deve attendere prima di abilitare nuovamente il servizio. Accetta solo numeri interi come argomento e puó essere usato in xinetd.conf
e nei file di configurazione del servizio specifico nella directory xinetd.d/
.
max_load
— Definisce l'uso del limite della CPU, o carico medio, per un servizio. Accetta come argomento numeri 'floating point' con virgola mobile.
Il carico medio è una stima del numero di processi attivi in un determinato momento. Per maggiori informazioni sul carico medio consultate i comandi uptime
, who
, e procinfo
.
Sono disponibili altre opzioni di gestione delle risorse per xinetd
. Consultate la pagina man di xinetd.conf
per maggiori informazioni.
Ulteriori informazioni relative ai wrapper TCP e xinetd
sono disponibili nella documentazione del sistema e su internet.
La documentazione fornita con il sistema costituisce un'ottimo punto di partenza per le informazioni sulle opzioni di configurazione per i wrapper TCP, su xinetd
, e sul controllo d'accesso.
/usr/share/doc/tcp_wrappers-
— Questa directory contiene un file <version>
/README
che affronta il funzionamento dei wrapper TCP, ed i vari rischi di spoofing esistenti nell'utilizzo degli hostname e degli indirizzi host.
/usr/share/doc/xinetd-
— Questa directory contiene un file <version>
/README
che affronta i vari aspetti sul controllo dell'accesso e un file sample.conf
che contiene diversi aspetti per la modifica dei file di configurazione specifici al servizio presenti nella directory /etc/xinetd.d/
.
Wrapper TCP e pagine man relative a xinetd
— Vi è un certo numero di pagine man per diversi file di configurazione e applicazioni riguardanti i wrapper TCP e xinetd
. Di seguito vengono riportate alcune delle pagine man più importanti:
man xinetd
— La pagina man per xinetd
.
man 5 hosts_access
— La pagina man per i file di controllo dell'accesso host dei wrapper TCP.
man hosts_options
— La pagina man per i campi delle opzioni dei wrapper TCP.
man xinetd.conf
— La pagina man che elenca le opzioni di configurazione di xinetd
.
http://www.xinetd.org/ — La home di xinetd
, contenente un esempio di file di configurazione, un elenco completo di tutti i contenuti, e una informativa FAQ.
http://www.macsecurity.org/resources/xinetd/tutorial.shtml — Sito che spiega in modo dettagliato i vari modi per modificare i file di configurazione predefiniti di xinetd
per adattarli alle proprie necessità di sicurezza.