lunes, 21 de julio de 2008

Programar tareas en linux crontad

Al igual que en linux existe un programador de tares que se llama crontad solo que es un poco distinto la manera de trabajar con el esto con respecto a windows que es mucho mas facil de entender aqui es un poco mas complejo aqui les pongo un ejemplo de tareas con crontad

0 4 * * * /usr/bin/date # Todos los días a las 04:00 de la mañana

Este muestra la hora y fecha todos los dias a las cuatro de la mañana

Los parametros para trabajar con el crontad son los siguientes

mm : Minuto dentro de la hora (0-59)
hh : Hora del día (0-23)
dd : Día del mes (1-31)
MM : Mes del año (1-12)
ss : Día de la semana (0-6, Domingo=0)
Comandos : Secuencia de comandos a ejecutar, deben ir separados con ";", pudiéndose redireccionar tanto la salida estándar como la de errores hacia algún archivo (2>&1).

$ crontab -l # lista las tareas en el cron del usuario
$ crontab -e # edita el archivo cron del usuario
$ crontab mi_archivo # activa mi_archivo como archivo cron del usuario

Con esto ya debemos de tener para programar nuestras tareas en linux

domingo, 20 de julio de 2008

Cómo ocultar la versión de PHP y apache en un servidor web

Para poner un pocos mas de seguridad en nuestro web server podriamos hacer unos pequeños ajustes

Para ocultar la version e apache seria modificar o agregar en el caso de que no existan estas dos lineas en el archivo de configuracion de apache en debian es /etc/apache2/apache2.con

ServerSignature Off
ServerTokens Prod

Con esto esta listo ya no veran la versión de apache que se muestra con algunos errores o cuando entran por ip o algo parecido

Para ocultar la versión de php es muy simple tambien

Para ocultarlo, basta con ir al fichero php.ini, y poned a “off” la línea “expose_php = On”. Esta línea viene activada en la mayoría de las distribuciones, y en las compilaciones de PHP.

Configuración de servidor https Debian etch 4.0 ó Ububtu Server 7.0

Muchas veces queremos poner que las paginas de nuestro servidor web sean https pero no contamos con dinero suficiente para para comprar los certificados entonces recurrimos a los gratuits aqui les pongo un buen ejemplo de como implanar uno suponiendo que ya tenemos el servidor andando sino aqui tambien hay una manual de como montarlo.

Instalaremos openssl:

apt-get install openssl ssl-cert

Para activar el mod ssl tecleamos:

a2enmod ssl

Esto nos dira que debemos reiniciar el apache lo hacemos de la siguiente manera

/etc/ini.d/apache2 forece-reload

Con esto ya esta activado el mod ssl

openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

Con esto le estamos diciendo que cree un certificado el cual durara 365 dias se va a llamar apache.pem y los va a guardar en /etc/apache2/ luego cambiamos los permisos del fichero

chmod 600 /etc/apache2/apache.pem

Y por útlimo editamos la configuración del servidor Apache, primero el fichero /etc/apache2/ports.conf y añadimos la siguiente línea:

Listen 443

Luego creamos los host virtuales de la siguiente manera para que cuando lso usuarios entren http los redireccione a https


Redirect / https://midominio.com
ServerName midominio.com



SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem
DocumentRoot /var/www/mipagina
ServerName midominio.com


Reiniciamos el apache

/etc/init.d/apache2 restart

Y listo ya tenemos nuestro servidor web montado con https.

jueves, 17 de julio de 2008

Configurar servidor dns bind con vistas

La nueva versión 9 del tal vez el programa mas popular de dns en linux bind tienes muchas mejoras y nuevas herramientas, una de las que mas me impresiono gratamente es la de las vistas con esta opción podemos configurar un servidor dns para que sirva en la red interna y a la ves en la red publica

Escenario del ejemplo
En el ejemplo a continuación se muestran los archivos de configuración para el programa named que representan el
siguiente escenario:
Red Interna (clientes): 172.31.0.0/16 (segmento de direcciones privadas)
Red DMZ (servidores): 172.31.0.0/16 (segmento de direcciones privadas)
Red Externa (Internet): 200.122.271/29 (segmento de direcciones públicas)

Todos los servidores en la red privada DMZ son accesados desde la Internet gracias a NAT estáticos configurados
en el Firewall.
Los servidores en la red DMZ son accesados desde la red Interna directamente a su dirección DMZ sin NAT,
ruteados eso si por el FireWall

Archivos de configuración

/etc/named.conf ó /etc/bind/named.conf

options {
directory "/var/named";
version " Piensalo Bien antes de hacer algo";
query-source address * port 53;
auth-nxdomain yes;
allow-query { any; };
// DNS Hecho por: hgeorge123
};

view "internal" {
match-clients { 172.31.0.0/16; 127.0.0.0/8; };
recursion yes;

zone "dominio.com" IN {
type master;
file "named.dominio.com";
allow-transfer { any; };
allow-update { none; };
};

zone "10.31.172.in-addr.arpa" {
type master;
file "named.dominio.com.rev";
allow-transfer { any; };
allow-update { none; };
};

view "external" {
match-clients { any; };

zone "tudominio.com" IN {
type master;
file "named.tudominio.com";
allow-transfer { none; };
allow-update { none; };
};

zone "271.122.200.in-addr.arpa" IN {
type master;
file "named.tudominio.com.rev";
allow-transfer { none; };
allow-update { none; };
};

Esta es la configuracion que tiene que tener el named.conf estan declaradas las dos vistas la vista que ve la red internet y la que ve la red externa, ahora declaramos las zonas

/var/named/named.dominio.com

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008071300 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
IN A 172.31.10.1
IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
IN MX 5 mail
dns1 IN A 172.31.10.1
dns2 IN A 172.31.10.1
www IN A 172.31.0.1
mail IN A 172.31.0.1

/var/named/named.dominio.com.rev

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008052202 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
dns1 IN NS 172.31.10.1
dns2 IN NS 172.31.10.1
1 IN PTR mail
1 IN PTR www

/var/named/named.tudominio.com

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008071300 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
IN A 200.122.271.89
IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
IN MX 5 mail
dns1 IN A 200.122.271.89
dns2 IN A 200.122.271.89
www IN A 200.122.271.89

/var/named/named.tudominio.com.rev

$TTL 3h
@ IN SOA dominio.com. root.dominio.com (
2008071001 ; Serial
3h ; Refresh
2h ; Retry
1w ; Expire
1d ) ; Negative
@ IN NS dns1.dominio.com.
IN NS dns2.dominio.com.
89 IN PTR dns1.dominio.com.
89 IN PTR mail
89 IN PTR www

Con esto ya tenemos el nuestro servidor dns listo iniciamos el servico o reiniciamos si ya lo tenemos listo esto solo funciona en bind 9 en el 8 no, como información adicional les digo que cada ves que hagana algun cambio en los archivos de zona actualizen el serial el cual esta en el siguiente formato año/mes/dia/numero de modificacion un ejemplo es:
288071001 Esto dice año 2008 mes 07 dia 10 modificacion 1 del dia.

miércoles, 16 de julio de 2008

Instalacion y configuracion de zimbra en debian etch 4.0

Muchos administradores se matan la cabeza montando un servidor de correo debido a que no es nada facil a pesar de postfix que ha humanisado mas los archivos de configuración porque sendmail es otro nivel, bueno para quitarse muchos dolores de cabeza yo recomiendo instalar zimbra como gestor de correo y aqui les pongo un ejemplo facil de como montarlo a mi me funciono perfecto.

Primero revisamos el /etc/hosts que este hay el el nombre del equipo y dominio para el que va a ser servidor de correo, deberia haber algo parecido a esto

127.0.0.1 localhost.localdomain localhost
192.168.0.110 server1.example.com server1

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

En caso de que no este el nombre del equipo y el dominio borramos lo que este hay y agregamos el dominio con nombre de host de etsa manera

echo server1.example.com > /etc/hostname

luego reiniciamos para que surtan efecto los cambios en todo el sistema

Al cargar ejecutamos hostname -f y no debe arrojar como resultado esto
server1.example.com

Luego revisamos el archivo /etc/resolv.conf qu eesten configurado los ip de nuestro servidor dns en el caso de que el servidor de correo este detras un firewall o gateway en una red privada, luego de esto desintalamos los paquetes innecesarios para nuestra instalación y que ademas dan problemas con el zimbra

apt-get remove --purge exim4 exim4-base exim4-config exim4-daemon-light

acto seguido instalamos los que si necesitamos

apt-get install libc6-i686 sudo libidn11 curl fetchmail libgmp3c2 libexpat1 libgetopt-mixed-perl libxml2 libstdc++6 libpcre3 libltdl3 ssh
ya con esto tenemos el sistema listo para em pesar con la instalación del zimbra nos cambiamos de directorio y nos descargamos la ultima versión que para el momento es 5.0.8

cd /tmp/
wget http://files.zimbra.com/downloads/5.0.8_GA/zcs-5.0.8_GA_2462.DEBIAN4.0.20080709172452.tgz

Acto seguido que lo hemos descargado empezamos con la instalación

tar xvfz zcs-5.0.8_GA_2462.DEBIAN4.0.20080709172452.tgz
cd zcs-5.0.8_GA_2462.DEBIAN4.0.20080709172452
./install.sh -l

En este paso nos hara una serie de preguntas

Checking for prerequisites...
NPTL...FOUND
sudo...FOUND sudo-1.6.8p12-4
libidn11...FOUND libidn11-0.6.5-1
fetchmail...FOUND fetchmail-6.3.6-1etch1
libpcre3...FOUND libpcre3-6.7+7.4-2
libgmp3c2...FOUND libgmp3c2-2:4.2.1+dfsg-4
libxml2...FOUND libxml2-2.6.27.dfsg-2
libstdc++6...FOUND libstdc++6-4.1.1-21
openssl...FOUND openssl-0.9.8c-4etch1
libltdl3...FOUND libltdl3-1.5.22-4
Prerequisite check complete.
Checking for standard system perl...
perl-5.8.8...FOUND standard system perl-5.8.8

Install zimbra-ldap [Y] Y
Install zimbra-logger [Y] Y
Install zimbra-mta [Y] Y
Install zimbra-snmp [Y] Y
Install zimbra-store [Y] Y
Install zimbra-apache [Y] Y
Install zimbra-spell [Y] Y
Install zimbra-proxy [N] N

The system will be modified. Continue? [N] Y

Main menu

1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled
+Create Admin User: yes
+Admin user to create: admin@server1.example.com
******* +Admin Password UNSET
+Enable automated spam training: yes
+Spam training user: spam.m0bqyoayc@server1.example.com
+Non-spam(Ham) training user: ham.ygch0qyz1@server1.example.com
+Global Documents Account: wiki@server1.example.com
+SMTP host: server1.example.com
+Web server HTTP port: 80
+Web server HTTPS port: 443
+Web server mode: http
+IMAP server port: 143
+IMAP server SSL port: 993
+POP server port: 110
+POP server SSL port: 995
+Use spell check server: yes
+Spell server URL: http://server1.example.com:7780/aspell.php

4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit

Address unconfigured (**) items (? - help)

Aqui tienes que elegir la opción numero 3 y ponerle una clave al usuario admin no menor de 6 digitos, cn este usuario es que vamos a trabajar siempre para administrar nuestro servidor

Store configuration

1) Status: Enabled
2) Create Admin User: yes
3) Admin user to create: admin@server1.example.com
** 4) Admin Password UNSET
5) Enable automated spam training: yes
6) Spam training user: spam.m0bqyoayc@server1.example.com
7) Non-spam(Ham) training user: ham.ygch0qyz1@server1.example.com
8) Global Documents Account: wiki@server1.example.com
9) SMTP host: server1.example.com
10) Web server HTTP port: 80
11) Web server HTTPS port: 443
12) Web server mode: http
13) IMAP server port: 143
14) IMAP server SSL port: 993
15) POP server port: 110
16) POP server SSL port: 995
17) Use spell check server: yes
18) Spell server URL: http://server1.example.com:7780/aspell.php

Select, or 'r' for previous menu [r]

Enter "4" (without the quotes) and press "Enter" to modify the admin password. Now you'll be asked for the new password.

Password for admin@server1.example.com (min 6 characters): [TR9Fm7uD]

Aqui introduces el password para el usuario admin

Main menu

1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-store: Enabled
4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-logger: Enabled
7) zimbra-spell: Enabled
8) Default Class of Service Configuration:
r) Start servers after configuration yes
s) Save config to file
x) Expand menu
q) Quit

*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help)

Con esot ya tenemos casi listo nuestro servidor de correo nos hara una preguna sobre donde y en que archivo va a sarvar los cambio le damos a todo enter

Save configuration data to a file? [Yes] Enter
Save config in file: [/opt/zimbra/config.5422]
Saving config in /opt/zimbra/config.5422...done.
The system will be modified - continue? [No] Y

Operations logged to /tmp/zmsetup.02062008-135354.log
Setting local config values...done.
Setting up CA...done.
Creating SSL certificate...done.
Initializing ldap...done.
Setting replication password...done.
Setting Postfix password...done.
Setting amavis password...done.
Deploying CA to /opt/zimbra/conf/ca ...done.
Creating server entry for server1.example.com...done.
Setting spell check URL...done.
Setting service ports on server1.example.com...done.
Adding server1.example.com to zimbraMailHostPool in default COS...done.
Installing skins...
hotrod
lavender
waves
steel
sky
bones
yahoo
sand
lemongrass
beach
bare
done.
Setting zimbraFeatureIMEnabled=FALSE...done.
Setting zimbraFeatureTasksEnabled=TRUE...done.
Setting zimbraFeatureBriefcasesEnabled=TRUE...done.
Setting zimbraFeatureNotebookEnabled=TRUE...done.
Setting MTA auth host...done.
Setting TimeZone Preference...done.
Creating domain server1.example.com...done.
Creating user admin@server1.example.com...done.
Creating postmaster alias...done.
Creating user wiki@server1.example.com...done.
Creating user spam.m0bqyoayc@server1.example.com...done.
Creating user ham.ygch0qyz1@server1.example.com...done.
Setting spam training accounts...done.
Initializing store sql database...done.
Setting zimbraSmtpHostname for server1.example.com...done.
Initializing logger sql database...done.
Initializing mta config...done.
Configuring SNMP...done.
Setting services on server1.example.com...done.
Setting up zimbra crontab...done.
Setting up syslog.conf...done.

After all you'll be asked if you want to notify Zimbra of your installation. Press "Enter" if you want to do that, or enter "N" (without the quotes) and press "Enter" if you disagree to that. Afterwards the system will be initialized - it should look like this:

Starting servers...done.
Checking for deprecated zimlets...done.
Installing zimlets...
com_zimbra_date
com_zimbra_url
com_zimbra_cert_manager
com_zimbra_phone
com_zimbra_search
com_zimbra_local
com_zimbra_email
done.
Initializing Documents...done.
Restarting mailboxd...done.

Moving /tmp/zmsetup.02062008-135354.log to /opt/zimbra/log

Por ultimo para verificar que todo este bien nos cambiamos al usuario zimbra y verificamos que todos los servicios esten arriba de la siguiente manera

su - zimbra
zmcontrol status Esto nos deberia de arrojar como resultado lo siguiente
Host server1.example.com
antispam Running
antivirus Running
ldap Running
logger Running
mailbox Running
mta Running
snmp Running
spell Running
stats Running

En caso de no arrojar un resultado parecido a este intentamos levantar los servicios asi

zmcontrol start

Si todo ha ido bien tenemos listo nuestro servidor de correo sino es porque te slataste algun paso del manual.

Para empezar a administrar nuestro servidor entramos a la consola administrativa de la siguiente manera https://server1.example.com:7071/zimbraAdmin/ impotante que "A" de Admin este en mayuscula si no esta en mayuscula no va a entrar en la consola aqui nos pide un usuraio y una clave el usuario es admin y la clave es la uqe pusimos hace ratos atras, la consola no la voy a explicar porque ella se explica sola es muy facil y eficiente, todo lo que resta es crear los usuarios y los dominios si vas a hacer el servidor multidominio y listo.

Para entrar en modo usuario entras de la siguiente manera http://server1.example.com introduces el usuario en este formato usuario@midominio.com y la clave si no le pones el @dominio no va a entrar debido a que puede ser servidor multi dominio, como información adicional les digo que antes de empezar a instalar el zimbra tienen que tener el DNS bien configurado apuntando hacia la ip de nuestro servidor de correo porque sino el zimbra les va a dar error en la instalación.

viernes, 11 de julio de 2008

Limitar intentos fallidos de ssh o brute force

Hay muchos administradores de red que necesitan conectarse desde fuera a los servidores del trabajo pero no saben como hacen para abrir el puerto ssh sin ser tan vulnerable una opción seria configurar un vpn u otra seria limitar las conexiones de ese puerto por tiempo y numero de conexiones una herramienta ideal para eso seria el iptables el firewall por excelencia de linux aqui les pongo un ejemplo de como hacerlo

iptables -N pqtes-tcp-permitidos
iptables -A pqtes-tcp-permitidos -p TCP -m state --state NEW --dport 22 -m recent --set
iptables -A pqtes-tcp-permitidos -p TCP -m state --state NEW --dport 22 -m recent --pdate --seconds 60 --hitcount 4 -j DROP
iptables -A pqtes-tcp-permitidos -p TCP -m state --state NEW --dport 22 -j ACCEPT

la primera regla crea la cadena de paquetes, la segunda regla agrega el número IP que inicia una conexión SSH a una lista, la tercera regla actualiza la lista y prueba que no hayan más de 4 requerimientos nuevos en un lapso de 60 segundos, Si los hay, la regla descarta el requerimiento. De esta manera limitamos la tasa a máximo 3 requerimientos por minuto por IP

Otra cosa interesante seria bloquear los broadcast aqui dejo la linea de como bloquearlos

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

Con esto ya tenemos el ssh seguro y prevenimos el brute force de ssh.