jueves, 7 de marzo de 2013

Servidor TFTP en Ubuntu con permisos de escritura

Mucho hardware de red todavía utiliza TFTP para subir y bajar configuraciones y para copiar firmware, etc.
Existen pequeños programas para windows que como administrador de sistemas te sacan del apuro cundo los necesitas, pero en este articulo trataremos de explicar como configurar un servidor TFTP en Ubuntu.


Elegimos tftpd-hpa por que no tiene limitacion de 32MB (atftpd la tiene) y por que permite que utilicemos los comandos put y get.

Instalamos el cliente tftp, y los demonios tftpd-hpa y xinetd
apt-get install tftp tftpd-hpa xinetd

Una vez instalado configuramos los siguiente archivos de la siguiente manera:
root@hostname:~# nano /etc/default/tftpd-hpa
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
#la opción --create es la que permite                               #que se puedan crear archivos cuando realizamos put
TFTP_OPTIONS="--secure --create"



root@hostname:~#nano /etc/inetd.conf
#FIJAROS QUE ESTA TODO COMENTADO
# /etc/inetd.conf:  see inetd(8) for further informations.
#
# Internet superserver configuration database
#
#
# Lines starting with "#:LABEL:" or "#<off>#" should not
# be changed unless you know what you are doing!
#
# If you want to disable an entry so it isn't touched during
# package updates just comment it out with a single '#' character.
#
# Packages should modify this file by using update-inetd(8)
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
#:INTERNAL: Internal services
#discard                stream  tcp     nowait  root    internal
#discard                dgram   udp     wait    root    internal
#daytime                stream  tcp     nowait  root    internal
#time           stream  tcp     nowait  root    internal
#:STANDARD: These are standard services.
#:BSD: Shell, login, exec and talk are BSD protocols.
#:MAIL: Mail, news and uucp services.
#:INFO: Info services
#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
#:RPC: RPC based services
#:HAM-RADIO: amateur-radio services
#:OTHER: Other services

Por si acaso alguno tiene iniciativa recordar que NO hay que crear un archivo dentro de la ruta /etc/xinet.d/tftpd o algo parecido

A continuación creamos los directorios necesarios y asignamos los  permisos adecuados.
root@hostname:~# sudo mkdir /var/lib/tftpboot
root@hostname:~# sudo chmod -vfR 777 /var/lib/tftpboot
root@hostname:~# sudo chown -vfR tftp:tftp /var/lib/tftpboot

Reiniciamos los servicios
root@hostname:~# sudo service xinetd stop;sudo service tftpd-hpa stop;sudo service tftpd-hpa start;sudo service xinetd start

Comprobamos que se esta ejecutando el servicio TFTPD
root@hostname:~# ps -aux | grep tftpd
root     29285  0.0  0.0  15088   332 ?        Ss   20:07   0:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure --create /var/lib/tftpboot
root@hostname:~# netstat -nap | grep tftp
udp        0      0 0.0.0.0:69              0.0.0.0:*                           29285/in.tftpd
unix  2      [ ]         DGRAM                    98078    29285/in.tftpd

Ahora podemos probar el tftp con el cliente
root@hostname:~# tftp 127.0.0.1
tftp> ?
Commands may be abbreviated.  Commands are:

connect         connect to remote tftp
mode            set file transfer mode
put             send file
get             receive file
quit            exit tftp
verbose         toggle verbose mode
trace           toggle packet tracing
status          show current status
binary          set mode to octet
ascii           set mode to netascii
rexmt           set per-packet retransmission timeout
timeout         set total retransmission timeout
?               print help information
tftp> get prueba1.txt
Received 9350 bytes in 0.0 seconds
tftp> put prueba2.txt
Sent 9350 bytes in 0.0 seconds

tftp> quit




Servidor FTP en Ubuntu con permisos de escritura

Instalamos los paquetes necesarios:
sudo apt-get install vsftpd
Des-habilitamos los usuarios que no nos interesa que accedan a través del protocolo FTP.

more /etc/pam.d/vsftpd
# Standard behaviour for ftpd(8).
auth    required        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth    required        pam_shells.so


nano /etc/ftpusers
# /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5).

root
daemon
bin
sys
sync
games
man
lp
mail
news
uucp
nobody

Modificamos el archivo de configuración para permitir que los usuarios del sistema accedan y su máscara por defecto sea rwxrwxrwx
nano /etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
syslog_enable=YES
connect_from_port_20=YES
ftpd_banner=Servidor FTP
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
local_umask=000

A veces me ha pasado que he tenido que eliminar la configuración PAM para vsftpd (Suele dar problemas, no se si es un bug)

rm /etc/pam.d/vsftpd
nano /etc/vsftpd.conf
#pam_service_name=vsftpd

Reiniciamos el demonio ftp y listo, ya tenemos funcionando un servidor FTP

service vsftpd restart

Mi recomendación para crear los usuarios y que todo funcione bien (permisos etc) es la siguiente:

Cuando creemos los usuarios tendremos que mantener la siguiente estructura.

dirFTP (r-xr-xr-x)
   |__dirusuarioA (r-xr-xr-x)
         |__dirconpermisosdeescritura(rwxrwxrwx)

   |__dirusuarioB (r-xr-xr-x)
         |__dirconpermisosdeescritura(rwxrwxrwx)
   ·
   ·
   ·

   |__dir usuario Z (r-xr-xr-x)
         |__dir con permisos de escritura(rwxrwxrwx)



El shell de los usuarios lo suelo poner a /usr/sbin/nologin por seguridad.
El directorio /home del usuario A sería /home/dirFTP/dirusuarioA
El usuario A cuando se conecta por FTP tiene que ver una única carpeta llamada dirconpermisosdeescritura y es en esta carpeta en la única que podrá subir archivos o crear carpetas etc.

ftp://usuario:clave123@ip_servidor_FTP/

Plugin nagios para enviar notificaciones html por correo


Modificaciones del plugin nagios "notify-html-email" para enviar notificaciones html por correo.

He modificado el plugin para que aparezcan mis gráficas pnpnagios dentro del correo, castellanizarlo, etc.

Un ejemplo de como queda:


Hay que recordar que en ubuntu no viene instalado por defecto la libreria MIME lite Perl pero se puede instalar facilmente desde:

apt-get install libmime-lite-perl

El comando que hay que definir en nagios debería ser algo asi:
/usr/bin/perl $USER1$/notify-html-email $USER6$

$USER1$ es el directorio de plugins
$USER6$ es la url de acceso a nagios
estas variables se definen en el archivo /etc/nagios3/resources.cfg

Aquí dejo el script modificado

#!/usr/bin/perl

use strict;
use warnings;

use MIME::Lite;
use URI::Escape;

my $nagios_url = $ARGV[0] || die('You must pass the url to your nagios installation as the first argument'); 

my $color_red    = '#FF8080';
my $color_green  = '#80FF80';
my $color_yellow = '#FFFF80';
my $color_orange = '#FF9900';
my $color_even   = '#C9C9C9';
my $color_odd    = '#EAEAEA';

my %colors=(
    'PROBLEM'         => $color_red,
    'RECOVERY'        => $color_green,
    'ACKNOWLEDGEMENT' => $color_yellow,
    'CRITICAL'        => $color_red,
    'WARNING'         => $color_yellow,
    'OK'              => $color_green,
    'UNKNOWN'         => $color_orange,
    'UP'              => $color_green,
    'DOWN'            => $color_red,
    'UNREACHABLE'     => $color_orange,
);

my %allowed_types = (
    'PROBLEM'         => 1,
    'RECOVERY'        => 1,
    'ACKNOWLEDGEMENT' => 1
);

exit if !defined($allowed_types{$ENV{NAGIOS_NOTIFICATIONTYPE}});
my $type = $ENV{NAGIOS_SERVICEATTEMPT} ? 'service' : 'host';

my $font = 'helvetica, arial';
my $style_th_even = '"background-color: #c9c9c9; font-weight: bold; width: 130px;"';
my $style_th_odd  = '"background-color: #eaeaea; font-weight: bold; width: 130px;"';
my $style_td_even = '"background-color: #c9c9c9;"';
my $style_td_odd  = '"background-color: #eaeaea;"';
my $style_table   = "\"background-color: #000000; font-family: consolas, verdana, arial; font-size: 12px;\"";
my $style_body   = "\"background-color: #ffffff;\"";

my $style_state = sprintf('"background-color: %s"', 
    $type eq 'service'
    ? $colors{$ENV{NAGIOS_SERVICESTATE}}
    : $colors{$ENV{NAGIOS_HOSTSTATE}}
);

my $subject = sprintf('[EMPRESA] %s [%s] ',
    $type eq 'service' ? $ENV{NAGIOS_HOSTNAME} . ' - ' . $ENV{NAGIOS_SERVICEDESC} : $ENV{NAGIOS_HOSTNAME},
    $type eq 'service' ? $ENV{NAGIOS_SERVICESTATE} : $ENV{NAGIOS_HOSTSTATE}
);

my $host_url = sprintf('%s/cgi-bin/status.cgi?navbarsearch=1&host=%s',
    $nagios_url,
    $ENV{NAGIOS_HOSTNAME}
);
my @rows;
my $notification_title;

if($type eq 'service') {
    my $service_url = sprintf('%s/cgi-bin/extinfo.cgi?type=2&host=%s&service=%s',
        $nagios_url,
        $ENV{NAGIOS_HOSTNAME},
        uri_escape($ENV{NAGIOS_SERVICEDESC})
    );
    my $service_perf_image_url = sprintf('%s/../../pnp4nagios/graph?host=%s&srv=%s',
        $nagios_url,
        $ENV{NAGIOS_HOSTNAME},
        uri_escape($ENV{NAGIOS_SERVICEDESC})
    );
    $notification_title = sprintf('Notificacion de Servicio - %s (%s)',
$ENV{NAGIOS_SERVICESTATE},
$ENV{NAGIOS_SERVICESTATETYPE}
    );

    @rows = (
        {
            'title' => 'Estado:',
            'data'  => "$ENV{NAGIOS_SERVICESTATE} ($ENV{NAGIOS_SERVICESTATETYPE})",
            'style' => $style_state,
        },
        { 
            'title' => 'Equipo:',
            'data'  => "<a href=\"$host_url\">$ENV{NAGIOS_HOSTNAME}</a> ($ENV{NAGIOS_HOSTALIAS}) $ENV{NAGIOS_HOSTGROUPNAME}",
        },
        { 
            'title' => 'Direccion IP:',
            'data'  => $ENV{NAGIOS_HOSTADDRESS},
        },
        { 
            'title' => 'Servicio:',
            'data'  => "<a href=\"$service_url\">$ENV{NAGIOS_SERVICEDESC}</a> ($ENV{NAGIOS_SERVICEDISPLAYNAME})",
        },
        {
            'title' => 'Chequeo del Servicio',
            'data'  => "$ENV{NAGIOS_SERVICEOUTPUT}",
        },
        {
            'title' => 'Momento del evento:',
            'data'  => $ENV{NAGIOS_SHORTDATETIME},
        },
        {
            'title' => 'PNP4Nagios:',
            'data'  => "<a href=\"$service_perf_image_url\">Visualizar graficos</a>",
        },
    );
} else {
    my $host_perf_image_url = sprintf('%s/../../pnp4nagios/graph?host=%s&srv=_HOST_',
        $nagios_url,
        $ENV{NAGIOS_HOSTNAME},
        uri_escape($ENV{NAGIOS_SERVICEDESC})
    );
    $notification_title = sprintf('Notificacion de Equipo - %s (%s)',
$ENV{NAGIOS_HOSTSTATE},
$ENV{NAGIOS_HOSTSTATETYPE}
    );

    @rows = (
        {
            'title' => 'Estado:',
            'data'  => "$ENV{NAGIOS_HOSTSTATE} ($ENV{NAGIOS_HOSTSTATETYPE})",
            'style' => $style_state,
        },

            'title' => 'Equipo:',
            'data'  => "<a href=\"$host_url\">$ENV{NAGIOS_HOSTNAME}</a> ($ENV{NAGIOS_HOSTALIAS}) $ENV{NAGIOS_HOSTGROUPNAME}",
        },
        { 
            'title' => 'Direccion IP:',
            'data'  => $ENV{NAGIOS_HOSTADDRESS},
        },
        {
            'title' => 'Chequeo del equipo:',
            'data'  => $ENV{NAGIOS_HOSTOUTPUT},
        },
        {
            'title' => 'PNP4Nagios:',
            'data'  => "<a href=\"$host_perf_image_url\">Visualizar graficos</a>",
        },
    );
}

if($ENV{NAGIOS_NOTIFICATIONTYPE} eq 'ACKNOWLEDGEMENT') {
    push(@rows,
        {
            'title' => 'Reconocido por:',
            'data'  => $ENV{NAGIOS_NOTIFICATIONAUTHORALIAS},
        }
    );
    push(@rows,
        {
            'title' => 'Comentario:',
            'data'  => $ENV{NAGIOS_NOTIFICATIONCOMMENT},
        }
    );
}

# Begin the email
my $body = "
<body style=$style_body>
<h2 style=\"text-align:center; font-family: verdana, arial; color: #203040\">Monitorizacion Nagios</h2>
<p style=\"text-align:center; font-family: verdana, arial; color: #404040\">$notification_title</p>
<table align=\"center\" border=\"0\" cellpadding=\"4\" cellspacing=\"2\" style=$style_table>";

# Add the rows to the email
for(my $i=0; $i<@rows; $i++) {
    $body .= sprintf('<tr><th style=%s>%s</th><td style=%s>%s</td></tr>',
        $i % 2 == 0 ? $style_th_even : $style_th_odd,
        $rows[$i]->{'title'},
        defined($rows[$i]->{'style'}) ? $rows[$i]->{'style'} : $i % 2 == 0 ? $style_td_even : $style_td_odd,
        $rows[$i]->{'data'}
    );
}
$body .= "</table><p style=\"text-align:center\"><img src=\"cid:lgNextel.png\" height=\"30px\"></body>";

my $msg = MIME::Lite->new(
    To      => $ENV{NAGIOS_CONTACTEMAIL},
    Subject => $subject,
    Type    =>'multipart/related'
);

$msg->attach(Type => 'text/html', Data => $body);
$msg->attach(Type => 'image/png', Id   => 'lgNextel.png', Path => '/var/www/img/lgNextel.png');


$msg->send();

jueves, 28 de febrero de 2013

Mapear impresoras de red mediante script batch

El comando rundll32 printui.dll PrintUIEntry se utiliza para controlar las impresoras mediante scripts. Es un comando muy útil para los scripts de inicio de sesión de cada usuario.

Un script sencillo para conectar impresoras compartidas y predeterminar una de ellas puede ser este (recordar que hay que añadir los drivers necesarios en el servidor):

SET PRINTSERVER01=IP_o_nombre_del_servidor_que_comparte_impresoras

echo Conectando impresoras
RunDll32.EXE printui.dll,PrintUIEntry /in /n \\%PRINTSERVER01%\impresora_A
RunDll32.EXE printui.dll,PrintUIEntry /in /n \\%PRINTSERVER01%\impresora_B
RunDll32.EXE printui.dll,PrintUIEntry /in /n \\%PRINTSERVER01%\impresora_C
echo Conectadas

echo Predeterminando impresora 
RunDll32.EXE printui.dll,PrintUIEntry /y /n \\%PRINTSERVER01%\impresora_A
echo Predeterminada


Bibliografía:
http://technet.microsoft.com/es-es/library/ee624057(v=ws.10).aspx
http://www.robvanderwoude.com/2kprintcontrol.php

martes, 15 de enero de 2013

Ejecutar máquina de vmware Player dentro de máquina de vmware ESX

Ejecutar una máquina virtual utilizando vmware player cuando vmware player está instalado en una máquina virtual ejecutada sobre un servidor vmware ESX. Según el siguiente esquema:

maquina_virtual_2
          ^
          |
vmware player
          ^
          |
maquina_virtual_1 (sin vmware tools)
          ^
          |
vmware ESX


Estando parada la maquina_virtual_1 hay un archivo *.vmx, en el hay que modificar/crear los siguientes parámetros.


deploymentPlatform = “vmkernel”
isolation.tools.getPtrLocation.disable = “TRUE”
isolation.tools.setPtrLocation.disable = “TRUE”
isolation.tools.setVersion.disable = “TRUE”
isolation.tools.getVersion.disable = “TRUE”
monitor_control.disable_directexec = “TRUE”
monitor_control.disable_chksimd = “TRUE”
monitor_control.disable_ntreloc = “TRUE”
monitor_control.disable_selfmod = “TRUE”
monitor_control.disable_reloc = “TRUE”
monitor_control.disable_btinout = “TRUE”
monitor_control.disable_btmemspace = “TRUE”
monitor_control.disable_btpriv = “TRUE”
monitor_control.disable_btseg = “TRUE”
monitor_control.vt32 = “TRUE”
monitor_control.restrict_backdoor = “TRUE”
tools.upgrade.policy = “manual”


Podemos hacerlo desde el Virtual center o el propio ESX en las propiedades de  maquina_virtual_1 -> Options -> Advanced -> General -> Botón Configuration Parameters












Después instalamos vmware player en la maquina_virtual_1.

Ya podemos copiar la maquina_virtual_2 en la maquina_virtual_1 y ejecutarla.












miércoles, 2 de enero de 2013

Cómo securizar un sevidor nagios con apache2 mod_security y mod_evasion en Ubuntu



Para habilitar el servidor como https y deshabilitar http, primero hay que borrar certificados anteriores, si existen
rm -vf /etc/ssl/certs/*snakeoil*
rm -vf /etc/ssl/private/*snakeoil*


Generar nuevos certificados
/usr/sbin/make-ssl-cert generate-default-snakeoil --forceoverwrite


Comentar las líneas *:80
nano /etc/apache2/ports.conf

#NameVirtualHost *:80
#Listen 80

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>


Deshabilitar http
a2dissite default

Habilitar https
a2enmod ssla2ensite default-ssl

Configurar la seguridad, deshabilitar metodos TRACE y deshabilitar la máxima informacion sobre nuestro servidor.
nano /etc/apache2/conf.d/security

Deshabilitar modulos inseguros
rm -vf /etc/apache2/mods-enabled/status.*
rm -vf /etc/apache2/mods-enabled/autoindex.*

Instalar modulos de seguridad y librerias necesarias
ln -s /usr/lib/x86_64-linux-gnu/libxml2.so.2 /usr/lib/libxml2.so.2
apt-get install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev libapache-mod-security

mkdir /etc/modsecurity/activated_rules
cd /etc/modsecurity/activated_rules
ln -s /usr/share/modsecurity-crs/modsecurity_crs_10_config.conf
for f in $(ls /usr/share/modsecurity-crs/base_rules/); do  ln -s /usr/share/modsecurity-crs/base_rules/$f; done
for f in $(ls /usr/share/modsecurity-crs/optional_rules/); do  ln -s /usr/share/modsecurity-crs/optional_rules/$f; done
rm -v /etc/modsecurity/activated_rules/*_session_hijacking.conf
rm -v /etc/modsecurity/activated_rules/*_protocol_anomalies.conf


Habilitar OWASP_ModSecurity_Core_Rule_Set
mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

Basicamente cambiar DtectionOnly por On para habilitar el módulo

nano /etc/modsecurity/modsecurity.conf

#SecRuleEngine DetectionOnly
SecRuleEngine On



Configurar OWASP_ModSecurity_Core_Rule_Set
nano /etc/apache2/mods-available/mod-security.conf


<IfModule security2_module>
        # Default Debian dir for modsecurity's persistent data
        SecDataDir /var/cache/modsecurity

        # Include all the *.conf files in /etc/modsecurity.
        # Keeping your local configuration in that directory
        # will allow for an easy upgrade of THIS file and
        # make your life easier
        Include "/etc/modsecurity/*.conf"
        Include "/etc/modsecurity/activated_rules/*.conf"
</IfModule>


Un ejemplo para configurar mod_evasive
nano /etc/apache2/mods-enabled/mod-evasive.conf


<ifmodule mod_evasive20.c>
   DOSHashTableSize 30970
   DOSPageCount  20
   DOSSiteCount  500
   DOSPageInterval 1
   DOSSiteInterval  1
   DOSBlockingPeriod  1
   DOSLogDir   /var/log/apache2/mod_evasive
   DOSEmailNotify  email@dominio.com
   DOSWhitelist   127.0.0.1
</ifmodule>



a2enmod headers
a2enmod mod-security
service apache2 restart


Comprobar que sólo este habilitado https(443) y no http(80)
netstat -a | grep ESCUCHAR

netstat -a | grep LISTEN

miércoles, 26 de diciembre de 2012

Como generar los certificados para apache2 con SSL

Cuando usamos una plantilla de maquina virtual o si copiamos la configuración desde otro servidor que tenga otro nombre, debemos generar los certificados de nuevo.
Este procedimiento también debería servir cuando caducan los certificados.

Borrar certificados anteriores

rm -vf /etc/ssl/certs/*snakeoil*
rm -vf /etc/ssl/private/*snakeoil*


Generar nuevos
/usr/sbin/make-ssl-cert generate-default-snakeoil --forceoverwrite

jueves, 13 de diciembre de 2012

Cómo migrar de un equipo a otro, NagiosQL


En el equipo viejo:

#mysqldump -h localhost -u root -p --opt --add-drop-database db_nagiosql_v3 > /root/nagios_viejo.sql

En el equipo nuevo:

Para no enviar correos erróneos

#service postfix stop

Para vaciar la cola de mensages

#postsuper -d ALL

Copiar el export nagios_viejo.sql en el directorio /root del nuevo equipo

#mysqldump -h localhost -u root -p --opt --add-drop-database db_nagiosql_v3 > /root/nagios_vacio.sql
#mysql -u root -p db_nagiosql_v3 < /root/nagios_viejo.sql

Borramos la configuración existente de nagios

#rm -vfR /etc/nagiosql/domains/localhost/hosts/*.cfg
#rm -vfR /etc/nagiosql/domains/localhost/*.cfg
#rm -vfR /etc/nagiosql/domains/localhost/services/*.cfg

Copiar más configuraciones de nagios

#sudo scp -vr root@IP_SERVIDOR_VIEJO:/etc/nagios3/htpasswd.users /etc/nagios3/htpasswd.users
#sudo scp -vr root@IP_SERVIDOR_VIEJO:/etc/nagios3/cgi.cfg /etc/nagios3/cgi.cfg
#sudo scp -vr root@IP_SERVIDOR_VIEJO:/etc/nagios3/resource.cfg /etc/nagios3/resource.cfg

Copiar los gráficos viejos

#sudo scp -vr root@IP_SERVIDOR_VIEJO:/var/lib/pnp4nagios/perfdata/* /var/lib/pnp4nagios/perfdata/

Copiar la configuración snmpd

#sudo scp -v root@IP_SERVIDOR_VIEJO:/etc/snmp/snmp* /etc/snmp/

Añadimos las mibs más nuevas

sudo apt-get install snmp-mibs-downloader
sudo download-mibs
sudo sed -i 's/^mibs/#mibs/g' /etc/snmp/snmp.conf

Poner en marcha de nuevo el sistema de correo

Para vaciar la cola de mensages
#postsuper -d ALL

Para iniciar Postfix
#service postfix start

Aplicar la nueva configuración de nagios 

Nos conectamos a la web de NagiosQL http://miserver/nagiosql y en el menú -> Herramientas -> Control Nagios le damos a todos los botones "Hazlo" de manera ordenada.


Reiniciamos y listo


lunes, 29 de octubre de 2012

Cómo configurar ntpd en Solaris 10

Podemos configurar nuestra solaris 10 para que sincronice la hora oficial española ejecutando los siguientes comandos:

date
echo server hora.roa.es >> /etc/inet/ntp.conf

svcadm enable svc:/network/ntp
svcadm refresh svc:/network/ntp
svcadm restart svc:/network/ntp
date

martes, 2 de octubre de 2012

Ampliar una partición con LVM

Seguro que alguna vez nos ha pasado que no sabemos cómo aumentar el tamaño de una partición LVM. 

Pues bien, esto es algo que podemos hacer sin reiniciar el equipo.

Con el comando df -h vemos la ocupación de disco y el tamaño de las particiones


[root@myserver ~]# df -h
S.ficheros          Tamaño Usado  Disp Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
                      1024G  820G  204G  80% /
/dev/sda1             190M   27M  154M  15% /boot
tmpfs                1007M   48K 1007M   1% /dev/shm



Con el comando  lvdisplay visualizamos el estado de los volúmenes lógicos, su tamaño, etc


[root@myserver ~]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV UUID                dQV422-ufdp-QzHM-mnby-f7cV-Y0oi-zOx51J
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1 TB
  Current LE             34368
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol01
  VG Name                VolGroup00
  LV UUID                b41L4R-wgyn-iVUi-pGlj-Bg2G-zqDq-2bqiek
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1,94 GB
  Current LE             62
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1




Con el comando lvextend ampliamos el volumen lógico (hay que disponer de espacio físico libre).
Por ejemplo: lvextend -L1074G /dev/VolGroup00/LogVol00

[root@myserver ~]# lvdisplay
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV UUID                dQV422-ufdp-QzHM-mnby-f7cV-Y0oi-zOx51J
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1,05 TB
  Current LE             34368
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol01
  VG Name                VolGroup00
  LV UUID                b41L4R-wgyn-iVUi-pGlj-Bg2G-zqDq-2bqiek
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                1,94 GB
  Current LE             62
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:1



Con el comando resize2fs ampliamos la partición que contiene el volumen lógico para poder utilizar todo el tamaño del que dispone.
Por ejemplo: resize2fs /dev/mapper/VolGroup00-LogVol00

[root@myserver ~]# df -h
S.ficheros          Tamaño Usado  Disp Uso% Montado en
/dev/mapper/VolGroup00-LogVol00
                      1,1T  820G  238G  78% /
/dev/sda1             190M   27M  154M  15% /boot
tmpfs                1007M   48K 1007M   1% /dev/shm