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





lunes, 17 de septiembre de 2012

Cómo modificar la programación de backups en Zimbra

Desde la web del administrador de Zimbra podemos modificar algunos parámetros como por ejemplo el directorio donde almacenamos los backups, el tipo de backup, etc.

Sin embargo si queremos ir al detalle no es posible desde la web.
Para realizar una programación personalizada necesitamos acceder por ssh (podéis usar el cliente putty) al servidor y utilizando el usuario zimbra llamar al comando:

zmschedulebackup



para ver la programación actual ejecutaremos:
zimbra@zimbra01:/root$ zmschedulebackup -q

Current Schedule:

        f 0 1 * * 6 -a all --mail-report
        i 0 1 * * 0-5 --mail-report
        d 28d 0 0 * * * --mail-report

Ó

zimbra@zimbra01:/root$ zmschedulebackup -s
 "-a all --mail-report" f "0 1 * * 6"
 "--mail-report" i "0 1 * * 0-5"
 "--mail-report" d 28d "0 0 * * *"



por defecto la programación es esta:

zimbra@zimbra01:/root$ zmschedulebackup -s
 "-a all --mail-report" f "0 1 * * 6"
 "--mail-report" i "0 1 * * 0-5"
 "--mail-report" d 1m "0 0 * * *"


Esto significa que zimbra por defecto realiza un backup completo (f - full) cada día 6 de la semana a la 1am, realiza también una copia incremental (i - incremental) los días 0 a 5 de la semana a la 1am y elimina (d - delete) todos los backups que sean más antiguos que un mes.

Si queremos cambiar (Reemplazar) la configuración actual de backup por otra, en nuestro caso deseamos que se eliminen las copias más antiguas de 28días. Debemos llamar al comando "zmschedulebackup" con la opción "-R".

zmschedulebackup -R "--mail-report" f "0 1 * * 6" i "0 1 * * 0-5" d 28d "0 0 * * *"

Adjunto la ayuda del comando para que se vean las opciones más claras.


zimbra@zimbra01:/root$ zmschedulebackup --help

Schedule regular backups

Usage: zmschedulebackup [-q|-D|-s|-F| [{-A|-R} [zmbackup options] { <backup-type> } { <backup-schedule> } ] ]
  -q: query (default command) - prints existing schedule
  -s: save schedule to text format for easy restoration
  -F: flush - remove current schedule (cancel all scheduled backups)
  -A: append - adds specified backup to current schedule
  -R: replace - replace current schedule with specified schedule
  -D: default - replace current schedule with DEFAULT schedule

  Options that will be passed to zmbackup:
  -n: no compression - Backs up blobs as individual files rather than in zip files.
  -z: compress - Backs up blobs in compressed zip files.  Ignored if --zipStore is specified.
  --zipStore: - Backup up blobs in zip files without compression.
  -t: target - backup target location (default is /opt/zimbra/backup)
  -a: account - account specific (default is all)
  --mail-report: Send an email report to the admin user.
  --server: server - Mail server hostname. Default is localhost.
  --sync: Runs full backup synchronously.
  --excludeBlobs: Exclude blobs from full backup; if unspecified, use server config
  --includeBlobs: Include blobs in full backup; if unspecified, use server config
  --excludeHsmBlobs: Exclude blobs on HSM volumes from full backup; if unspecified, use server config
  --includeHsmBlobs: Include blobs on HSM volumes in full backup; if unspecified, use server config
  --excludeSearchIndex: Exclude search index from full backup; if unspecified, use server config
  --includeSearchIndex: Include search index in full backup; if unspecified, use server config

  Backup Mode (Standard or Auto-Grouped) comes from global/server config zimbraBackupMode

  Cron schedule:
        backup-type: <i|f|d arg>
        i: incremental backup (not needed in Auto-Grouped backup mode)
        f: full backup
        d <arg>: delete backups. <arg> is n{d|m|y}
        backup-schedule: crontab style time specifier, QUOTED.  See crontab(5)
                Fields are:
                        minute         0-59
                        hour           0-23
                        day of month   1-31
                        month          1-12
                        day of week    0-7 (0 or 7 is Sun, or use names)

        Default schedule in Standard backup mode is:
        f    0 1 * * 6
        i    0 1 * * 0-5
        d 1m 0 0 * * *

        Default schedule in Auto-Grouped backup mode is:
        f    0 1 * * 0-6
        d 1m 0 0 * * *

martes, 27 de marzo de 2012

Cómo instalar Logwatch en ubuntu


Es importante tener configurado previamente postfix para que el servidor sea capaz de enviar correos


Instalamos el paquete a través del repositorio
sudo apt-get install logwatch


Preparamos la configuración de logwatch
sudo cp -vfR /usr/share/logwatch/default.conf/* /etc/logwatch
sudo cp -vfR /usr/share/logwatch/dist.conf/* /etc/logwatch
sudo cp -vfR /usr/share/logwatch/default.conf/*.conf /etc/logwatch/
sudo mkdir /var/cache/logwatch


sudo mv  /etc/logwatch/*.conf /etc/logwatch/conf/

Modificamos la configuración de Logwatch, aquí se pueden hacer muchas cosas pero lo básico sería poner los correos origen y destino a donde se envían los informes.
sudo nano /etc/logwatch/conf/logwatch.conf
Format = html
MailTo =emaildestino@midominio.es
MailFrom = emailorigen@midominio.es

Ejecutamos Logwatch a mano para recibir el primer informe y comprobar que todo funciona bien.
sudo /etc/cron.daily/00logwatch


Lo aprendi de:


jueves, 1 de marzo de 2012

Cómo añadir MIBS al cliente snmp

Si cuando hacer un snmpwalk desde tu ubuntu, el comando snmpwalk te devuelve que no reconoce el OID
por ejemplo si ejecutas


snmpwalk -v1 -cpublic laipdemiswitchsnmp system


devuelve:


system: Unkown Object Identifier (Sub-id not found:(top) -> system)



para solucionarlo hay que instalar las MIBS de snmp



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

ahora si ejecutas:




snmpwalk -v1 -cpublic laipdemiswitchsnmp system

debería devolver algo distinto de:


system: Unkown Object Identifier (Sub-id not found:(top) -> system)