Configurare il demone NTPD

Lun, 25/04/2005 - 17:15

Configurare il demone NTPD

Inviato da Madman 1 commento

NTP (Network Time Protocol) è un protocollo utilizzato per la sincronizzazione degli orologi di una o più macchine attraverso uno o più time server che forniscono questo servizio attraverso Internet, in genere è in ascolto sulla porta 123.

Questa guida è stata preparata utilizzando NTP contenuto nel pachetto ntp-4.2.0-18mdk.rpm su Mandriva 2006 Cooker.

Spesso è importante avere un orologio di sistema attendibile soprattuto nel caso in cui ci siano dei job di cron che devono partire ad una certa ora su più macchine in perfetta sincronia oppure nel caso in cui si verifichi un incidente (come l'attacco di una macchina) che richiede delle informazioni dipendenti dai log, infatti i log di sistema o quelli generati da programmi come Apache indicano l'ora e la data in cui è stata compiuta una certa azione, quindi è importante che le informazioni contenute nei log siano attendibili.

Installazione

Come al solito urpmi ci viene in aiuto quindi dopo averlo configurato in modo appropriato basta lanciare:

# urpmi ntp

Se non avete ancora provveduto a configurare urpmi vi consiglio queste due ottime guide che vi spiegano come procedere.

Installazione dei programmi con urpmi
Urpmi for newbie

Configurazione

NTP può essere usato in due modi, la modalità demone ovvero il demone ntpd gira in background aggiornando l'orologio di sistema in "real-time" usando i server indicati nel file di configurazione, oppure esiste la modalità che io chiamo "una volta ogni tanto" ovvero tramite il comando ntpdate $time_server (dove $time_server è l'indirizzo di un NTP server) che permette di aggiornare l'orologio di sistema quando lo si desidera questo comando può essere inserito come job di cron per essere eseguito una volta all'ora, una al giorno, una alla settimana, una al mese, etc...

Questa guida tratterà entrambe le modalità di utilizzo.

Il file di configurazione principale di NTP è situato in /etc/ntp.conf, apriamolo con il nostro editor di fiducia.

#orologio locale che permette ai vari client della LAN di sincronizzare il loro orologio con il server NTP

server	127.127.1.0	
fudge	127.127.1.0 stratum 10	

#server NTP da cui prendere l'ora per la sincronizzazione questi sono i server gentilmente offerti dall'IEN Galileo Ferraris, ovviamente sono server per l'ora italiana, se avete necessità di sincronizzare il vostro orologio con altre nazionalità all'indirizzo http://www.eecis.udel.edu/~mills/ntp/clock1b.html potete trovare un elenco degli altri server NTP disonibili

server ntp1.ien.it minpoll 9 maxpoll 10
server ntp2.ien.it minpoll 9 maxpoll 10

#l'opzione driftfile specifica un file nel quale verrà salvata la correzione di frequenza dell'orologio di sistema rispetto a quello del server, #se questo file viene definito il demone utilizzerà come valore di correzione iniziale quello indicato in questo file in caso contrario utilizzerà il #valore 0, assicuratevi di incare un path nel quale il demone ntpd può scrivere

driftfile /etc/ntp/drift
multicastclient	
broadcastdelay	0.008

#l'opzione authenticate indica se l'accesso al server deve essere autenticato, se il server necessita di autenticazione impostatela a yes

authenticate no

#l'opzione keys serve ad indicare un file contenente le chiavi da utilizzare per l'accesso ad un server NTP che necessita di autenticazione, #i permessi di tale file devono essere 0600

In questo caso il file contenente le chiavi è nel path /etc/ntp/keys quindi le chiavi andranno inserite al suo interno con la seguente sintassi:
ID tipo chiave
ID indica il numero di identificazione della chiave che può essere compreso tra 1 e 65534
tipo indica la tipologia della chiave, uno dei tanti disponibili è MD5 che viene indicato con M
chiave indica la chiave che è composta da 1 a 16 caratteri ASCII

ESEMPIO:

/etc/ntp/keys
1 M qu4eo127y0f5
2 M Gei86FdkT56S

In questo caso 1 indica la chiave per il server 1 e 2 indica la chiave per il server 2.

Per poter utilizzare le chiavi bisogna indicare al demone quali sono le chiavi fidate da utilizzare tramite l'opzione trustedkey

ESEMPIO:

trustedkey 1 2

Successivamente bisogna associare ogni chiave ad un server.

ESEMPIO:

server ntp1.ien.it key 1
server ntp2.ien.it key 2

keys /etc/ntp/keys

trustedkey 1 2
requestkey 1 2
controlkey 1 2

#ntp ha la possibilità di fornire informazioni relative a ciò che accade durante il suo funzionamento tramite l'opzione statsdir che specifica #una cartella nel quale queste informazioni andranno salvate

statsdir /var/log/ntpstats/

#ntp ha anche la possibilità di archiviare in un file di log le informazioni che produce tramite l'opzione logfile

logfile /var/log/ntpd

#è possibile restringere l'accesso al server NTP solo a determinati indirizzi o a classi di indirizzi tramite le opzioni restrict, default e #ignore, per esempio con restrict si concede l'accesso al server solo a una classe di indirizzi
restrict 192.168.16.0 netmask 255.255.255.0[/b]

Se avete deciso di utilizzare NTP come demone adesso non dovete fare altro che salvare il file di configurazione e riavviare il demone perchè le modifiche vengano applicate:

# /etc/init.d/ntpd reload

Se invece avete deciso di usare NTP in modalità "una volta ogni tanto" è ora di preparare un piccolo scipt che sincronizzerà l'orologio di sistema con il server NTP e contemporanemanete sincronizzerà l'hardware clock con l'orologio di sistema.

AVVERTENZA!!!
Quando viene installato ntpd vengono creati automaticamente in /etc/rcX.d (dove X è un numero che va da 0 a 6, ogni numero corrisponde ad un runlevel, man init per maggiori informazioni) quindi ntpd verrà eseguito automaticamente all'avvio; se non volete che ciò accada dovete rimuovere tutti i link simbolici che fanno riferimento a /etc/init.d/ntpd

Aprite il vostro editor preferito e incollate quanto segue.

#!/bin/sh
/usr/sbin/ntpdate ntp1.ien.it ntp2.ien.it && hwclock --systohc && echo "Il system clock e l'hardware clock sono ora sincronizzati con il server NTP"

Lo script è davvero di una semplicità estrema, io non capisco quasi nulla di bash scripting quindi se qualcuno volesse migliorarlo è liberissimo di farlo.

Ora rendiamo eseguibile lo script:

$ chmod ug+x /path/to/script

Dato che solo l'utente root può modificare l'orologio di sistema facciamo in modo che lo script appartenga a quest ultimo.

# chown root.root /path/to/script

Ora dobbiamo fare in modo che lo script si avvii con un intervallo di tempo prestabilito, per fare sì che ciò accada dobbiamo impostare un job di cron. Per farlo ci sono due metodi.

Metodo 1:

# crontab -e

Questo comando apre il file /etc/crontab con l'editor testuale Vim.

Attenzione a quello che fate poichè Vim non è per niente user-friendly

Per inserire del testo scrivete :i, inserite qualcosa di simile a questo:

30 16 * * * /path/to/script

Questa sintassi indica che lo script verrà eseguito sempre alle 16:30. Se volete cambiare qualcosa sappiate che il primo numero indica i minuti, il secondo le ore, il terzo indica il giorno del mese, il quarto indica il mese e il quinto indica il giorno della settimana.

Dopo aver impostato il job di cron con la frequenza che volete premete ESC e per salvare :write quindi per uscire :quit, se avete sbagliato qualcosa uscite senza salvare con :quit!.

Per verificare che il job di cron sia stato inserito correttamente digitate:

# contab -l

Questo comando restituirà come output la lista dei job di cron tra cui dovreste vedere anche quello inserito da voi.

Metodo 2:

Se non avete voglia di modificare crontab potete inserire il vostro script in una di queste cartelle:

/etc/cron.daily/ (una volta al giorno)
/etc/cron.hourly/ (ogni ora)
/etc/cron.weekly/ (una volta alla settimana)
/etc/cron.monthly/ (una volta al mese)
Conclusione

Ora il vostro computer dovrebbe avere un orologio che spacca il secondo.

Ci vediamo alla prossima guida!





Commenti

Ritratto di Madman
#1

Inviato da Madman il Lun, 02/05/2005 - 14:37.

Modulo Webmin per NTPD

Ho trovato anche un modulo per Webmin che permette di gestire il demone NTPD.

http://www.netorbit.it/ntp.html