miércoles, 1 de diciembre de 2010

Monitorización de Weblogic con Mission Control

Cansado del engorroso sistema de monitorización y diagnóstico de weblogic (WLDF) porque no puedes guardar esos datos, pues bien, lee este artículo ¡que te interesa!

Desde hace algún tiempo existen herramientas de monitorización de JVM para poder comprobar, al momento, el estado de esta. Por ejemplo, la simple jconsole o el famoso VisualVM. Pero dejémonos de charlas y vayamos al grano, en este artículo nos centraremos en el fantástico Jrockit Mission Control 4 y su integración con Weblogic que, para los que no lo sepan, se puede integrar!!!

¿Qué pasos realizaremos para su integración? pues muy fácil, lee y aprende:

Primer paso: descárgate el jrockit mission control y paga su licencia.

Segundo paso: descomprímelo y arráncalo.

Tercer paso: una vez arrancado, veremos en el menú superior una serie de opciones: HELP >> Install Plugins ...(Unsupported) ---> NO TODO IBA A SER PERFECTO :(

Quarto paso: Se descargará el listado de plugins actuales y seleccionaremos el que queremos, “WebLogic Flight Recorder Tab Pack”. Bájalo y reinicia jrmc.

Quinto paso: una vez reiniciado mission control, nos conectaremos vía jmx al weblogic y selecionaremos la opción start flight recording, con el botón derecho del mouse. Esto generará un archivo jfr con toda una serie de info del estado del servidor weblogic y de sus componentes, como por ejemplo: HTTP Requests, JDBC, colas JMS, EJB's, Webservices, JTA, consumos cpu, heap, ...

Espero es os guste este artículo y os sirva como introducción al fantástico mundo Jrmc.

viernes, 19 de junio de 2009

Securización de un sistema Ubuntu (GNU/Linux) Parte I

Securización del sistema base

Kernel: parámetros de seguridad

El kernel de Linux dispone de diversos parámetros que nos permiten configurar su actuación frente al tráfico de red. Al iniciar el sistema se establecen los valores de los parámetros indicados en ‘/etc/sysctl.conf’. No obstante, también es posible modificarlos mediante el comando ’sysctl’.

Los parámetros más importantes a tener en cuenta son:

- Activar la protección contra IP spoofing:

sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.conf.all.rp_filter=1

- Activar TCP SYN Cookie Protection para minimizar la posibilidad de ataques de denegación de servicio por ataques de paquetes SYN. No obstante, actualmente ya no se recomienda esta opción dado que las capacidades de los sistemas han aumentado considerablemente y activarlo nos hace perder otras características de TCP.

sysctl -w net.ipv4.tcp_syncookies=1

- Desactivar el reenvío de paquetes IP (solo es necesario cuando queremos que la máquina actue como una pasarela mediante NAT):

sysctl -w net.ipv4.ip_forward=0
sysctl -w net.ipv6.ip_forward=0

- Ignorar Broadcasts Request:

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1

- Activar la protección contra mensajes de error mal construidos:

sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1

- Desactivar ICMP Redirect Acceptance, mediante los cuales un atacante podría indicar al sistema una ruta mejor para llegar a otras redes (habitualmente utilizado por routers). Únicamente los permitiremos si proceden de nuestro gateway:

sysctl -w net/ipv4/conf/all/accept_redirects=0
sysctl -w net/ipv4/conf/all/send_redirects=0
sysctl -w net/ipv4/conf/all/secure_redirects=1

- Desactivar IP Sourcing routing mediante el cual un atacante podría especificar la ruta a seguir para ir desde una IP origen a una destino:

sysctl -w net.ipv4.conf.all.accept_source_route=0

- Logear paquetes: Spoofed Packets, Source Routed Packets, Redirect Packets

sysctl -w net.ipv4.conf.all.log_martians=1

- Ignorar ICMP Requests PINGs, personalmente prefiero dejarlo a 0 y controlar desde donde y hacia donde permito los pings mediante iptables (firewall). En cualquier caso, si queremos desactivar completamente que el sistema responda a pings:

sysctl -w net.ipv4.icmp_echo_ignore_all=1

Para consultar los valores actuales:

sysctl net.ipv4.conf.default.rp_filter
sysctl net.ipv4.conf.all.rp_filter
sysctl net.ipv4.tcp_syncookies
sysctl net.ipv4.ip_forward
sysctl net.ipv6.ip_forward
sysctl net.ipv4.icmp_echo_ignore_broadcasts
sysctl net.ipv4.icmp_ignore_bogus_error_responses
sysctl net.ipv4.conf.all.accept_redirects
sysctl net.ipv4.conf.all.send_redirects
sysctl net.ipv4.conf.all.accept_source_route
sysctl net.ipv4.conf.all.log_martians

Para establecer los nuevos valores de forma permanente para sucesivos reinicios es necesario modificar /etc/sysctl.conf.

Limitando los recursos del sistema

Se considera una buena práctica limitar los recursos del sistema utilizados por los usuarios, de forma que minimicemos las probabilidades de que se efectúen ataques de denegación de servicio contra todo el sistema.

Memoria, número de procesos y sesiones concurrentes

Para limitar la memoria, el número de procesos y las sesiones concurrentes que puede tener cada usuario debemos editar ‘/etc/security/limits.conf’. A modo de ejemplo:

# Prevents anyone from dumping core files.
* hard core 0

# This will prevent anyone (except root) from having more than 150 processes, and a warning will be given at 100 processes.
* soft nproc 100
* hard nproc 150

# This will prevent anyone in the 'users' group from having more than 150 processes, and a warning will be given at 100 processes.
@users soft nproc 100
@users hard nproc 150
@users - maxlogins 4

# Address space limit: 2GB
* hard as 2097152
# Maximum data size: 128MB
* hard data 131072
# Maximum locked-in-memory address space: 128MB
* hard memlock 131072
# Maximum resident set size: 1GB
* hard rss 1013352

martes, 30 de diciembre de 2008

Comandos linux

su nombreusuario Cambia el usuario actual a nombreusuario (pedirá la contraseña del usuario con el que queramos iniciar la sesión (su root)
who -u Muestra los usuarios conectados al sistema (who -u)
who -b Muestra la fecha y hora del último reinicio del sistema (who -b)

ps -A Muestra todos los procesos en ejecución y el identificador de proceso (PID) (ps -A)
ps -A grep bash Muestra todos los procesos que lleven la palabra "bash" (ps -A grep bash)
ps -fu oracle Muestra los procesos y los usuarios que los ejecutan en formato UNIX (ps -fu oracle)
pstree Procesos activos del sistema jerarquizados en forma de árbol (pstree)
kill -9 numeroproceso Cierra el proceso especificado por el PID numeroproceso (kill -9 745)

jueves, 31 de julio de 2008

Un poquito de seguridad Apache (extraído de WebTaller.com)

Seguridad en Apache. Autentificación y autorización de usuarios en Apache.
Cuando un servidor apache recibe una petición de una página web, antes de devolver el resultado, lleva a cabo varias acciones para verificar que la petición esta autorizada.
Las distintas acciones que lleva a cabo para verificar la validez de la aplicación, se pueden agrupar en tres tipos: Autentificación, Autorización y Control de Acceso.
La autentificación es el proceso por el cual se verifica la identidad de una persona. De una forma simple, este proceso se puede llevar a cabo mediante un nombre de usuario y una contraseña, pero se pueden llegar a utilizar otros métodos para validar la identidad de una persona, como mediante el uso de certificados, tarjetas etc…
En apache la autentificación puede estar gestionada por distintos módulos, dependiendo de la forma de implementación. Si decide llevarla a cabo gestionando ficheros con listas de usuarios y contraseñas (encriptadas), deberá utilizar el módulo mod_auth. Sin embargo, si decide llevarla a cabo mediante base de datos, deberá utilizar los módulos mod_auth_dbm.

La autorización es el proceso por el cual se verifica que un usuario con una identidad conocida, tiene acceso al recurso solicitado. Para llevar a cabo esta acción, se suelen utilizar listas de permisos en las cuales se enumeran cada una de las acciones que puede realizar un usuario, o las que no puede hacer. Normalmente, para simplificar la gestión de estos ficheros, los usuarios se suelen unir en grupos proporcionando los permisos al grupo.
En apache la autorización a recursos es gestionada o bien mediante la directiva en el fichero principal de configuración, o bien mediante la configuración de la carpeta a través de ficheros .htaccess.
El control de acceso es el proceso por el cual se verifica que la máquina desde la que se ha hecho la petición, tiene acceso al recurso. Los controles de acceso se utilizan para limitar y controlar las máquinas que tienen acceso a un recurso independientemente del usuario que accede, ya que estos controles se llevan a cabo antes de que se realice el proceso de autentificación.
En apache, el control de acceso se puede llevar a cabo mediante las directivas y , o a través del fichero de configuración .htaccess para controlar una carpeta especifica.
En todo caso y para poder llevar a cabo la configuración de las tres características aquí enumeradas, autentificación, autorización y control de acceso, es necesario tener la directiva AllowOverride con el valor AuthConfig, para así permitir el uso de las distintas directivas de autentificación.
Autentificación y autorización de usuarios en Apache. Mod_auth

Para configurar el servidor apache para que sea capaz de autentificar a los usuarios y verificar la autorización del mismo al recurso solicitado, es necesario realizar las siguientes acciones:
Crear un fichero con usuarios
Crear un fichero con grupos (si es necesario)
Definir las directivas en el fichero de configuración o mediante un fichero .htaccess

En los ficheros de usuarios de apache, en cada línea se especifica un usuario, escribiendo el nombre de usuario separado de dos puntos, seguido de la contraseña encriptada con MD5.
En los ficheros de grupos de apache, en cada línea se especifica un grupo escribiendo el nombre del grupo seguido de dos puntos, y a continuación separado por espacios, los nombres de los usuarios.

Es recomendable que tanto los ficheros de usuarios como los de grupos, se encuentren almacenados fuera de los directorios publicados, para que de esta forma nadie pueda descargarlos. Asimismo, solo el usuario root debería estar autorizado a escribir en él, mientras que solo el usuario que ejecuta el servicio web, debería estar autorizado para leerlo.

El fichero de grupos se puede crear manualmente, pero el fichero con los usuarios es recomendable crearlo mediante la utilidad htpasswd, que se encuentra en la carpeta con los binarios de apache.

Para crear un fichero de usuario se utilizará la siguiente sintaxis:
htpasswd -c ruta/passwords usuario

El flag -c se utiliza para crear un fichero nuevo, por lo que sólo se deberá poner la primera vez que se crea el fichero, sino lo borrará.
Los módulos que intervienen en la autentificación y autorización son los de core y mod_auth.
Las directivas de mod_auth necesarias para configurar la autenticación y autorización son las siguientes:

AuthUserFile: siver para especificar la ruta donde se almacenará el fichero de usuarios.
AuthGroupFile: sirve para especificar la ruta donde se almacenará el fichero de grupos.
Las directivas de core necesarias para complementar la configuración del módulo son:
AuthType: selecciona el tipo de autentificación de usuarios que se utilizará para autentificar a un usuario. Puede variar por directorio. Los valores posibles son Basic y Digest. Con Basic, la transferencia de las claves se hará sin cifrar, y con digest se harán cifradas.
AuthName: especifica un nombre del dominio para el cual se solicita el acceso, este nombre figurará en la pantalla donde se pide la clave, y a su vez servirá para que el cliente identifique la contraseña que debe utilizar al enviar una petición a un área determinada.
Require: selecciona los usuarios que pueden acceder a un área determinada, los usuarios se pueden determinar a través de nombres o grupos.

Pitufo friki


Ahora la moda entre la gente del ACA son los pitufos, aqui os dejo mi aportación.

viernes, 18 de julio de 2008

Bloquear/Permitir accesos por SSH en RH4.6

Primero limitamos todos los accesos para el servicio SSH (/etc/hosts.deny)
sshd: ALL
Después damos acceso a las ips (/etc/hosts.allow)
sshd: xx.xx.xx.90
sshd: xx.xx.xx.144
sshd: xx.xx.xx.118
sshd: xx.xx.xx.96
También es recomendable restringir el acceso al root por ssh(/etc/ssh/sshd_config)
Descomentar la linea PermitRootLogin no