Google+

viernes, 31 de julio de 2009

Pagina funcionando correctamente


Desde que abrí el blog había algo que me jodía la web y hacía que de repente la pagina apareciera en blanco, bien pues di con el problema, era el modulo de python. Y como python no uso en mi blog, adiós modulo. Por si alguien le sirve en el log de apache me salía algo así:

[Fri Jul 31 11:45:13 2009] [error] (12)Cannot allocate memory: fork: Unable to fork new process
FATAL:  erealloc():  Unable to allocate 1245184 bytes
FATAL:  erealloc():  Unable to allocate 77824 bytes
FATAL:  erealloc():  Unable to allocate 77824 bytes
FATAL:  erealloc():  Unable to allocate 311296 bytes

Estas lineas las multiplicáis por infinito y eso era mi log de apache, pero ya esta arreglado. Así pues la navegación será más confortable.

jueves, 30 de julio de 2009

Conocer de que tipo es un archivo, comando file


A menudo solemos trabajar en modo comando y no disponemos de un entorno gráfico para averiguar de que tipo son nuestros archivos. Se que las extensiones de los archivos nos ayudan pero como todo el mundo sabe, a Linux no le hace falta poner una extensión para saber que es. Por eso tenemos el comando file.

#file test
test: python script text executable

#file foto
foto: PNG image, 729 x 438, 8-bit/color RGBA, non-interlaced

#file moblin-netbook-ux-beta-20090518-004.img
moblin-netbook-ux-beta-20090518-004.img: ISO 9660 CD-ROM filesystem data 'netbook-ux-bet-i686-20090518183' (bootable)

Como podeis ver es un comando muy util y que os ayudará bastante si administrais maquinas linux.

lunes, 27 de julio de 2009

Instalar ejabberd en Fedora con autentificación LDAP


Es importante en los días en los que estamos la comunicación entre todo el personal de la oficina y que mejor manera que con una mensajería interna, ya que tener el messenger no queda muy corporativo. Hemos elegido ejabberd y los usuarios como siempre de un LDAP, si os preguntáis por que siempre cojo los datos del LDAP es para tener un control mayor. Si buscáis por el blog tengo como instalar un LDAP, pero si esta montado mejor que mejor.



Instalamos ejabberd desde los repositorios
#yum install ejabberd

Activar el servicio:
#chkconfig ejabberd on

Editar fichero de configuración:
#vi /etc/ejabberd/ejabberd.cfg

Os lo voy a postear y vosotros cambiáis las lineas que creáis convenientes:
{loglevel, 5}. #Nivel del log, en nivel 3 esta bien, pero el 5 te da todos los datos
{hosts, ["chat.linuxadmin.es"]}. #Host
{listen,
[
{5222, ejabberd_c2s, [
{certfile, "/etc/ejabberd/ejabberd.pem"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},
{5280, ejabberd_http, [
http_poll,
web_admin
]}
]}.
{s2s_use_starttls, true}.
{s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.
{auth_method, ldap}.
{ldap_servers, ["directorio.linuxadmin.es"]}. #Hostname del servidor ldap
{ldap_port,389}. #Puerto
{ldap_uidattr, "uid"}. #Atributo único
{ldap_uids, [{"uid", "%u"}]}.
{ldap_base, "cn=users,cn=accounts,dc=directorio,dc=linuxadmin,dc=es"}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
%%Administradores web
{acl, admin, {user, "ipuerto"}}. #Usuario administrador para interfaz web
{acl, local, {user_regexp, ""}}.
{access, max_user_sessions, [{10, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, pubsub_createnode, [{allow, all}]}.
{access, register, [{deny, all}]}. #Denegamos que los usuarios se puedan registrar
{language, "es"}. #Idioma
{modules,
[
{mod_adhoc,    []},
{mod_announce, [{access, announce}]},
{mod_caps,     []},
{mod_configure,[]},
{mod_disco,    []},
{mod_irc,      []},
{mod_last,     []},
{mod_muc,      [
{access, muc},
{access_create, muc},
{access_persistent, muc},
{access_admin, muc_admin}
]},
{mod_offline,  []},
{mod_privacy,  []},
{mod_private,  []},
{mod_pubsub,   [ % requires mod_caps
{access_createnode, pubsub_createnode},
{plugins, ["default", "pep"]}
]},
{mod_register, [
{welcome_message, {"Welcome!",
"Hi\nWelcome to this Jabber server."}},
{access, register}
]},
{mod_roster,   []},
{mod_shared_roster,[]},
{mod_stats,    []},
{mod_time,     []},
{mod_vcard,    []},
{mod_version,  []}
]}.

Ahora iniciamos el servicio:
#/etc/init.d/ejabberd start

Ahora podremos ejecutar el cliente, tened cuidado con el firewall en fedora, es muy restrictivo. Para entrar a la parte de administración del ejabber entrad en la dirección del ejabber:
http://chat.linuxadmin.es/admin

Recordad el usuario que hemos puesto una linea de arriba, ipuerto, bueno pues para entrar sería ipuerto@chat.linuxadmin.es y la contraseña que tengáis.

sábado, 25 de julio de 2009

Mejora tu contraseña de tuenti


El viernes me encontré con este genial articulo de Security By Default, sobre tuenti, y como con un simple programa en python, concretamente wfuzz, podrías sacar la contraseña de tuenti en cuestión de tiempo. El problema deriva de que tuenti tiene la peculiar caracterisitca de que permite logeos erróneos ilimitados.

Por ejemplo si vuestra contraseña solo tiene números, con un simple comando podrían sacaros la contraseña en una hora.

No voy a explicar como hacerlo, pero solo quiero avisar. Poned mayusculas, números y algun caracter raro tipo: \|@#&%$". Os evitará problemas. Esperemos que esto se solucione.

miércoles, 22 de julio de 2009

Bacula en Debian


A veces es muy bonito ponerse a crear servidores y eso, pero todo el mundo sabe que en algún momento pueden fallar y necesitaremos tener algo que nos respalde, para ello utilizaremos bacula, que me parece una herramienta bastante avanzada para gestionar nuestros backup's.
 
Si andáis un poco perdidos sobre bacula, son necesario 2 servidores y el agente

  • bacula-director: este contiene los trabajos de backup, los clientes y el servidor de almacenamiento

  • bacula-storage: este contiene los discos duros o cintas donde volcaremos los backups

  • bacula-fd: este es el cliente del backup

En mi caso particular los tres los tengo en el mismo servidor, (hace backup de si mismo también, aun que no lo pondré para no agrandarlo más) y después tengo los bacula-fd donde quiero realizar más backups. Utilizaré mysql para que bacula-director almacene los datos, y dispongo de un RAID 5. Configuraremos dos clientes de prueba, un Linux y un Windows.

Empezamos con el Debian actualizado:


#apt-get update

Instalamos la mysql

#apt-get install mysql-server

Ahora el turno a bacula, si os fijáis bien pongo los 3 servidores que mencione antes:

#apt-get install bacula-client bacula-console bacula-director-mysql bacula-sd

Ahora podréis comprobar que tenemos 3 servicios más en el init.d: bacula-dir, bacula-sd y bacula-fd. No los arranquéis todavía por que no funcionarán. Los ficheros de configuración son un tanto sensibles así que solo funcionará si están perfectamente configurados.

Entramos en la mysql y creamos la base de datos, primero la arrancamos si la tenemos parada:
#/etc/init.d/mysql start

Entramos y creamos la base de datos:
#mysql -u root -p

mysql>create database bacula;

mysql>exit

Ya nos olvidamos de mysql, ahora solo nos queda bacula. Los archivos de configuración como siempre los encontraremos en /etc y este caso concreto en /etc/bacula. Empezaremos configurando el bacula-dir, que es el directorio.
Director {
Name = directorio #Nombre que querais
DIRport = 9101
QueryFile = "/etc/bacula/scripts/query.sql"
WorkingDirectory = "/var/lib/bacula"
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 1
Password = "123456" #Pongo esto de passwd por que es más sencillo para mi
Messages = Daemon
}

#Estos son los clientes de bacula, donde se hará el backup
Client {
Name = correo
Address = 10.100.0.59
FDPort = 9102
Catalog = MyCatalog
Password = "123456"
File Retention = 30 days
Job Retention = 6 months
AutoPrune = yes
}

Client {
Name = windows
Password = 123456
Address = 10.100.0.58
FDPort = 9102
Catalog = MyCatalog
File Retention = 30 days
Job Retention = 6 months
}

#Unidades de almacenamiento

Storage {
Name = File
Address = 10.100.0.57 #Esto es la ip del servidor donde almacenaremos los datos, en mi caso es la ip local de mi servidor
SDPort = 9103
Password = "123456"
Device = FileStorage
Media Type = File
}

#Datos de la base de datos

Catalog {
Name = MyCatalog
dbname = bacula; DB Address = "localhost" ; user = root; password = "lo_que_quieras"
}

#Sistema de logs

Messages {
Name = Standard
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula: Intervention needed for %j\" %r"
mail =admin@linuxadmin.es = all, !skipped #Deberéis configurar el exim4 para que os envié el log a una cuenta externa de correo
operator = root@localhost = mount
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
}

Messages {
Name = Daemon
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r"
mail = tu-mail@tu-dominio.es = all, !skipped
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
}

Pool {
Name = Default
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
}

#Consola

Console {
Name = directorio #igual que el nombre de la segunda linea: "Name = ..."
Password = "123456"
CommandACL = status, .status
}

#Esta tarea, hace backup del /var menos de /var/no_lo_quiero

FileSet {
Name = "correos"
Include {
File = /var
Options {
signature = MD5
}
}
Exclude {
File = /var/no_lo_quiero
}
}

#Esto es para al backup de windows, del disco d
FileSet {
Name = "disco d"
Include {
Options {
signature = MD5
}
File = d:/
}
}

#Esta es la parte donde decimos el ciclo

Schedule {
Name = "CicloSemanal"
Run = Incremental mon-sat at 01:00 #De lunes a sabado backup a la 1 de la madrugada
Run = Full sun at 01:00 #Domingo backup entero a la 1 de la madrugada
}
Schedule {
Name = "Diario"
Run = Full sun-sat at 23:10
}

#Este es el primer trabajo,

JobDefs {
Name = "copia de etc del servidor de correo"
Enabled = yes
Type = Backup
Level = Incremental
Client = correo
FileSet = "correos" #Nombre de la tarea, lo tenemos arriba
Schedule = "CicloSemanal"
Storage = File
Messages = Standard
Pool = Default
Priority = 10
}

Job {
Name = "Correos"
JobDefs = "copia de etc del servidor de correo"
Write Bootstrap = "/var/lib/bacula/correos.bsr"
}

JobDefs {
Name = "portatil windows"
Enabled = yes
Type = Backup
Level = Incremental
Client = windows
FileSet = "disco d"
Schedule = "CicloSemanal"
Storage = File
Messages = Standard
Pool = Default
Priority = 10
}

Job {
Name = "backup portatil disco d"
JobDefs = "portatil windows"
Write Bootstrap = "/var/lib/bacula/backup_portatil.bsr"
}

#Es necesario meter estas lineas para la restauración

#Restaura el disdo D de la maquina windows

Job {
Name = "Restauracion de disco D"
Type = Restore
client = windows
FileSet = "disco d"
Storage = File
Pool = Default
Messages = Standard
Where = d:/restaurado #Restaura en la misma maquina cliente
}

#Restaura /var de la maquina Linux

Job {
Name = "Restauracion de var"
Type = Restore
client = windows
FileSet = "correos"
Storage = File
Pool = Default
Messages = Standard
Where = /var/restore #Restaura en la misma maquina cliente
}

Ahora el bacula-sd.conf, este arvhivo debe de estar en el servidor de almacenamiento. Los backuups se depositan en /media/datos
Storage {
Name = respaldadora-sd
SDPort = 9103
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
}

Director {
Name = respaldadora-dir
Password = "Satur012"
}

Device {
Name = FileStorage
Media Type = File
Archive Device = /media/datos
LabelMedia = yes;
Random Access = Yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}

Messages {
Name = Standard
director = respaldadora-dir = all
}

Ahora el fichero de configuración de la consola de bacula, bconsole.conf:
Director {
Name = localhost
DIRport = 9101
address = 127.0.0.1
Password = "123456"
}

Con estos tres archivos ya tendriamos la parte dificil. Ahora los arrancamos:
#/etc/init.d/bacula-dir start

#/etc/init.d/bacula-sd start

Y si todo ha ido bien debería de arrancar sin problemas. Lo ideal es empezar a configurar los clientes. El cliente de windows lo podréis bajar aquí buscais Win32/64. Importante. Bajad la versión del cliente igual que la del servidor, esto os evitará quebraderos de cabeza.

Ahora entraremos en la consola de bacula:
# bconsole
Connecting to Director localhost:9101
1000 OK: directorio Version: 2.4.4 (28 December 2008)
Enter a period to cancel a command.
*

Una vez en este promp podreis configurar todo lo relacionado con el backup. Lo ideal es que ejecutéis un "status" antes de empezamos a configurar la unidad de almacenamiento. Si todo esta ok menos los clientes no pasaría nada y podríamos continuar.
*label
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: File
Enter new Volume name: datos
Automatically selected Pool: Default
Connecting to Storage daemon File at 10.100.0.57:9103 ...
Sending label command for Volume "datos" Slot 0 ...
3000 OK label. VolBytes=198 DVD=0 Volume="datos" Device="FileStorage" (/media/datos)
Catalog record for Volume "datos", Slot 0 successfully created.
Requesting to mount FileStorage ...
3906 File device "FileStorage" (/media/datos) is always mounted.
You have messages.
*

Lo ideal seria dar permisos solo al usuario bacula en el directorio /media/datos

#chown -R bacula:bacula /media/datos

En cuanto a la parte cliente es lo más sencillo de configurar, el archivo de bacula-fd.conf:
Director {
Name = directorio
Password = 123456
Address = 10.100.0.57 #IP del bacula-dir
}

FileDaemon {
Name = correo
FDport = 9102
WorkingDirectory = /var/lib/bacula/working
Pid Directory = /var/run/
Maximum Concurrent Jobs = 20
}

Messages {
Name = Standard
director = directorio = all, !skipped, !restored
}

No explico la instalación del cliente bacula en windows por que es siguiente, siguiente, siguinte. Cuando este instalado nos dirigiremos a Inicio > Programas > Bacula > Configuration > Edit Client Configuration y metemos las lineas de abajo:
Director {
Name = directorio
Password = 123456
Address = 10.100.0.57 #IP del bacula-dir
}

FileDaemon {
Name = windows
FDport = 9102
WorkingDirectory = "C\\Documents and Settings\\All Users\\Datos de programa\\Bacula\\Work"
Pid Directory = "C\\Documents and Settings\\All Users\\Datos de programa\\Bacula\\Work"
Maximum Concurrent Jobs = 20
}

Messages {
Name = Standard
director = directorio = all, !skipped, !restored
}

Guardamos y reiniciamos el servicio de bacula, como nota, si el servicio de bacula no inicia, es que el archivo esta mal. En linux seri:
#/etc/init.d/bacula-fd start

Reiniciad todas las maquinas y comprobad que todo se inicia en el arranque y solo quedaria ejecutar bconsole y movernos por las diferentes opciones que tenemos.
#bconsole
*status all #comprueba que todo este correcto
*run #ejecuta una tarea
*restore #restaura archivos, los seleccionamos con el comando mark y con done ejecutamos
*help #indespansable

Como detalle seria ideal conigurar exim4 para poder enviar correos a una cuenta externa de correo. Solo queda disfrutar que funcione y ojala que no lo tengáis que usar.

miércoles, 15 de julio de 2009

Mi top ten de los comandos que uso


#history | awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}' | sort -nr | head

242 ssh
137 ping
110 exit
94 vi
62 cd
42 ls
30 nslookup
28 clear
20 kinit
19 scp

domingo, 12 de julio de 2009

Instalar cliente Citrix en Ubuntu


Si tenemos alguna aplicación publicada podremos conectarnos desde Ubuntu. Si alguien se pregunta por que desde Ubuntu, por que pienso que a nivel empresa, Ubuntu junto a Fedora son las mayoritarias. Si alguien tiene algún problema al instalarla en otra distribución que lo comente.



Nos bajamos el tar.gz de la pagina de descargas de Citrix. El paquete se llamara algo así como, linuxx86-11.0.140395.tar.gz

#mkdir citrix (cremos una carpeta por que al descomprimir no lo mete en una carpeta)

#mv linuxx86-11.0.140395.tar.gz citrix

#cd citrix

#tar xvf linuxx86-11.0.140395.tar.gz

#cd linuxx86

#sudo ./setupwfc #Nos preguntara la ruta donde instalarlo y demás preguntas sencillas

#apt-get install libmotif3 libmotif-dev

#sudo ln -s /usr/lib/libXm.so.3 /usr/lib/libXm.so.4

Ya podremos acceder al programa desde nuestro menu Gnome

jueves, 9 de julio de 2009

Actulizar Drupal en Linux


Ya hablamos un poco de como instalar drupal en Slackware paso a paso. Pues claro van saliendo actualizaciones y por seguridad pues las instalaremos. Empezamos:

Con el usuario de administrador nos dirigimos a administrado configuración del sitio sitio en mantenimiento y lo pones en off-line

Desde el servidor nos bajamos el ultimo drupal, a día de hoy el 6.13:
#wget http://ftp.drupal.org/files/projects/drupal-6.13.tar.gz

Movemos el archivo descargado a la carpeta donde se aloje el sitio
#mv drupal-6.13.tar.gz /var/www/htdocs

Descomprimimos
#tar xvf drupal-6.13.tar.gz

Copiamos y pegamos, sin miedo (aun que hacer un backup no viene mal)
#cp drupal-6.13/* .

Editamos el fichero para poder actualizar.
#vi sites/default/settings.php

Y buscamos la cadena: $update_free_access = FALSE; y la cambiamos por esto: $update_free_access = TRUE;

Vamos al navegador y entramos a nuestro sitio a la siguiente dirección:

http://tusitio.com/update.php

Le damos a continuar, este proceso en principio no falla. Cuando este todo OK, volvemos a editar el fichero sites/default/settings.php y cambiamos TRUE por FALSE, tiene que quedar como antes de actualizar.

Ponemos el sitio online otra vez y ya tenemos drupal actualizado. Como veis todo el proceso se ha realizado desde el servidor.

lunes, 6 de julio de 2009

Conocer el Sistema Operativo de un servidor remoto


Con el comando xprobe2 podréis conocer que sistema operativos esta usando un servidor remoto, lo podréis encontrar en los repositorios, aun que si no lo tenéis, siempre lo podéis compilar:
#wget http://freefr.dl.sourceforge.net/sourceforge/xprobe/xprobe2-0.3.tar.gz
#tar xvf  xprobe2-0.3.tar.gz
#cd xprobe2-0.3
#./configure
#make
#make install

Si lo tenéis en los repositorios los pasos de atrás os los ahorráis.
root@linux-q23:~# xprobe2 linuxadmin.es

Xprobe2 v.0.3 Copyright (c) 2002-2005 fyodor@o0o.nu, ofir@sys-security.com, meder@o0o.nu

[+] Target is linuxadmin.es
[+] Loading modules.
[+] Following modules are loaded:
[x] [1] ping:icmp_ping  -  ICMP echo discovery module
[x] [2] ping:tcp_ping  -  TCP-based ping discovery module
[x] [3] ping:udp_ping  -  UDP-based ping discovery module
[x] [4] infogather:ttl_calc  -  TCP and UDP based TTL distance calculation
[x] [5] infogather:portscan  -  TCP and UDP PortScanner
[x] [6] fingerprint:icmp_echo  -  ICMP Echo request fingerprinting module
[x] [7] fingerprint:icmp_tstamp  -  ICMP Timestamp request fingerprinting module
[x] [8] fingerprint:icmp_amask  -  ICMP Address mask request fingerprinting module
[x] [9] fingerprint:icmp_port_unreach  -  ICMP port unreachable fingerprinting module
[x] [10] fingerprint:tcp_hshake  -  TCP Handshake fingerprinting module
[x] [11] fingerprint:tcp_rst  -  TCP RST fingerprinting module
[x] [12] fingerprint:smb  -  SMB fingerprinting module
[x] [13] fingerprint:snmp  -  SNMPv2c fingerprinting module
[+] 13 modules registered
[+] Initializing scan engine
[+] Running scan engine
[-] ping:tcp_ping module: no closed/open TCP ports known on 217.13.94.24. Module test failed
[-] ping:udp_ping module: no closed/open UDP ports known on 217.13.94.24. Module test failed
[-] No distance calculation. 217.13.94.24 appears to be dead or no ports known
[+] Host: 217.13.94.24 is up (Guess probability: 50%)
[+] Target: 217.13.94.24 is alive. Round-Trip Time: 0.01639 sec
[+] Selected safe Round-Trip Time value is: 0.03277 sec
[-] fingerprint:tcp_hshake Module execution aborted (no open TCP ports known)
[-] fingerprint:smb need either TCP port 139 or 445 to run
[-] fingerprint:snmp: need UDP port 161 open
[+] Primary guess:
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.19" (Guess probability: 100%)
[+] Other guesses:
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.20" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.21" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.22" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.23" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.24" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.25" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.26" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.27" (Guess probability: 100%)
[+] Host 217.13.94.24 Running OS: "Linux Kernel 2.4.28" (Guess probability: 100%)
[+] Cleaning up scan engine
[+] Modules deinitialized
[+] Execution completed.

Como veis saca las probabilidades de que sea un sistema u otro. Es curioso ver como la gran mayoría son Linux

viernes, 3 de julio de 2009

Sincronizar hora en Linux


A la hora de usar Kerberos por ejemplo, debemos de tener la hora sincronizada en la granja de ordenadores. Para ello instalaremos el paquete ntp, lo encontraremos en los repositorios sin problemas o incluso puede que este instalado en el sistema operativo por defecto. Añadiremos los servidores e el fichero de configuración que generalmente deberá de estar en /etc. Si lo habéis compilado el paquete pues donde lo hayáis puesto. El fichero ntp.conf deberá tener más o menos la siguiente estructura:
#cat /etc/ntp.conf

driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/
server 10.0.0.2

Podéis añadir tantos "server" como veáis. Yo por ejemplo tengo un servidor local, que es el Kerberos, y además dispone de un servidor ntp.