lunes, 11 de julio de 2016

Uso de Chkconfig en un Servidor

Chkconfig que permite configurar que servicios arrancan/detienen en cada nivel de ejecucción. Aclaración: chkconfig no inicia ni detiene servicios al momento (excepto aquellos bajo xinetd), tan solo crea o elimina precisamente los enlaces de los que se habló en el punto anterior de una manera mas amigable. Si lo que se quiere es iniciar o detener el servicio en tiempo real o manualmente hay que usar service o directamente el script con su argumento conveniente tal como se explicó anteriormente.
 
Veamos ejemplos que muestran como trabajar con chkconfig.
 
 

Con la opción --list nos da una lista completa de todos los servicios instalados y para cada nivel si arrancará (on) al entrar a ese nivel o se detendrá (off) o simplemente no se iniciara. Nótese que al final de la lista vienen los servicios que dependen del superservidor xinetd.
 
Si se indica como argumento el nombre de algún servicio nos regresará su estatus
#chkconfig apache2
apache2   on

Sin ningún argumento nos dará una lista con el status de todos los servicios
#chkconfig
httpd  off
mysql  on
smb    on
 
Se desea que el servidor web apache (httpd) inicie cuando se entra en el nivel 5, entonces usamos la opción --level:

#chkconfig --level 5 httpd on

La base de datos MySQL no se desea que inicie en los niveles 3 y 5, solo hasta que el administrador decida arrancarla:

#chkconfig --level 35 mysql off


sábado, 9 de julio de 2016

Escaneo de Redes con Nmap

En un proceso completo de pruebas de penetración, existen instancias previas a ejecutar esta herramienta pero, para dar los primeros pasos, probablemente sea la mejor forma de comenzar. Nmap es una herramienta de escaneo de redes que permite identificar qué servicios se están ejecutando en un dispositivo remoto, así como la identificación de equipos activos, sistemas operativos en el equipo remoto, existencia de filtros o firewalls, entre otros.

En palabras sencillas, cuando se va a atacar un servidor o dispositivo, el atacante podrá realizar distintas arremetidas en función del servicio: no es lo mismo dañar un servidor web, un servidor de base de datos o un router perimetral. Por lo tanto, en cualquier despliegue, el primer paso será identificar los servicios en la infraestructura, para decidir cómo avanzar y, considerando que en una prueba de penetración se “imitan” los pasos de un atacante, también se iniciará de la misma manera.

Nmap es una herramienta de línea de comandos (existen algunas interfaces gráficas pero, personalmente, no las recomiendo, aunque es una cuestión de gustos) donde se debe indicar cuál será el o los objetivos y la serie de parámetros que afectarán la forma en que se ejecuten las pruebas y los resultados que se obtienen. Puede instalarse tanto en Linux, Windows, Mac u otros sistemas operativos.

En su forma tradicional, una línea de comando sería la siguiente:

> nmap 172.16.1.1

En donde nmap es el comando en sí mismo y 172.16.1.1 es el objetivo (que también puede ser indicado con un nombre de dominio). La respuesta a estos comandos será un listado de los puertos abiertos o cerrados en dicha dirección. La ejecución sin parámetros ejecuta un escaneo sencillo a los 1000 puertos más comunes (véase que en la imagen se muestra uno abierto y 999 cerrados), realizando anteriormente un ping para ver si el equipo está vivo (si el equipo no responde al ping, no se realizará el test de los puertos).

Cuando agregas parámetros puedes obtener mejores resultados. Algunos parámetros comunes para tener en cuenta son:

[-iL] puedes indicar una lista de equipos o redes a escanear. > nmap –iL hosts.txt
[-sP] solo escanea con un ping. Es una buena forma de ver cuántas direcciones IP se pueden checar. Una vez que se tienen enlistadas, se podrá ir solo con las que están vivas.
[-P0] es la forma de omitir el ping e ir directo al escaneo de puertos. Muchos sistemas no responden el ping como método de seguridad, por lo que, escanearlos de todas formas, también puede ser útil en entornos más reales (no es necesario para los entornos de aprendizaje inicial).
[-p] lista los puertos que se desean escanear. > nmap –iL hosts.txt –p 22,25,80,445
[-sV] intenta determinar la versión del servicio en el objetivo.
[-O] informa el sistema operativo en el objetivo.
Una vez ejecutado Nmap, ya se conocen cuáles son los servicios (al menos los identificados) que se están ejecutando en el blanco de la prueba de penetración. Ahora ya se puede pasar a las siguientes etapas, en donde se utilizará esta información para comenzar la búsqueda de vulnerabilidades en la infraestructura y en los servicios identificados.


jueves, 7 de julio de 2016

Buscar archivos en Linux/Ubuntu usando el comando find

Busca el archivo deseado con el comando find siguiendo la siguiente estructura:

sudo find nombre_directorio -name nombre_archivo

Ejemplos de uso del comando find:

  1. sudo find /home/nombre_usuario/Escritorio -name “*.jpg”: Busca todos los archivos del Escritorio con extensión .jpg.
  2. sudo find . -name “*hola*”: Busca todos los archivos que contienen la palabra “hola” en el nombre.
  3. sudo find . ! -name “*hola*”: Busca todos los archivos que NO contienen la palabra “hola” en el nombre.
  4. sudo find . -name “*servidor*” -a “*correo*”: Busca todos los archivos que contienen la palabra “servidor” y “correo” en el nombre.
  5. sudo find . -name “*servidor*” -a “*correo*”: Busca todos los archivos que contienen la palabra “servidor” y “correo” en el nombre.
  6. sudo find . -iname “*hola*”: Busca todos los archivos que contienen la palabra “hola” en el nombre tanto en mayúsculas como en minúsculas.
  7. sudo find . -user nombre_usuario: Busca todos los archivos de un usuario determinado (nombre_usuario).
  8. sudo find . -size +1000k: Busca todos los archivos de tamaño mayor a 1000 kb.
  9. sudo find . -amin -30: Busca todos los archivos a los que se accedió en los últimos 30 minutos.
  10. sudo find . -atime 365: Busca todos los archivos a los que se accedió hace un año exactamente.
  11. sudo find . -name “*.jpg” -exec rm {} \;: Busca todos los archivos con extensión .jpg y los borra.

Almacena el resultado de la búsqueda en un archivo de texto.

Si el resultado de la búsqueda anterior te ha proporcionado una gran cantidad de información, te va a resultar mucho más cómodo almacenar el resultado de la búsqueda en un fichero de texto para poder revisarlo posteriormente.

Para guardar el resultado de la búsqueda en un archivo de texto en tu Escritorio tienes que realizar la búsqueda de la siguiente manera:

sudo find nombre_directorio -name nombre_archivo > /home/nombre_usuario/Escritorio/Lista.txt

miércoles, 6 de julio de 2016

Verificar si un servidor tiene registro PTR en el DNS

Un Registro PTR

El registro PTR es el registro de recurso (RR) de un dominio que define las direcciones IP de todos los sistemas en una notación invertida. Esta inversión permite que se pueda buscar una IP en el DNS ya que a la notación de la IP invertida se le añade el dominio in-addr.arpa, convirtiendo la IP en un nombre de dominio.

Un Registro A

A = Address – (dirección) Este registro se usa para traducir nombres de servidores de alojamiento a direcciones IP

Usaremos el dominio de google.com.ve como ejemplo

Verificando desde un terminal por nombre de dominio
# host -t A google.com.ve
google.com.ve has address 172.217.1.196

Verificando desde un terminal por IP
host -t PTR 172.217.1.196
196.1.217.172.in-addr.arpa domain name pointer iad23s26-in-f4.1e100.net.

Aquí se puede observar que si no tiene un registro de dominio PTR, con el siguiente mensaje arrojado nos daremos.

# host -t PTR 172.217.1.196
Host 196.1.217.172.in-addr.arpa. not found: 3(NXDOMAIN)

martes, 21 de junio de 2016

Registros NS, A, CNAME, MX y SPF de un DNS: ¿y eso qué es lo que es?

Registro NS (name server): indica los servidores de DNS autorizados para el dominio, es decir, a quién tengo que preguntar para saber acerca de los registros de dominio.com.
Ejemplo: toharia.com NS ns15.ovh.net

Registro A (address): indica la dirección IP a la que se debe traducir ese nombre de dominio.
Ejemplo: toharia.com A 94.23.62.64

Registro CNAME (canonical name): permite definir alias o nombres de domino equivalentes. Normalmente, se usa para definir subdominios (que casi siempre apuntarán al dominio principal, aunque no es obligatorio).
Ejemplo: mail.toharia.com CNAME toharia.com, pero también diego.toharia.com CNAME deigote.com

Registro MX (mail exchange): permite definir a qué servidor se envía el correo electrónico del dominio en cuestión. Cuenta con un campo prioridad, por lo que para un mismo dominio se pueden definir varios registros MX con distinta prioridad, escogiéndose el primero que esté disponible en cada momento.
Ejemplo: toharia.com MX 1 aspmx.l.google.com, toharia.com MX 5 alt1.aspmx.l.google.com. En la práctica, cuando un servidor SMTP (es decir, que envía correo) tiene que enviar un correo a diego@toharia.com, inspecciona los registros MX para toharia.com, y envía el correo al de mayor prioridad que encuentre disponible (en este caso, empezaría por alt1.aspmx.l.google.com, y luego seguiría con el resto).

Registro SPF (sender policy framework): permite definir qué servidores están autorizados para enviar correo electrónico del dominio. Su uso surgió como propuesta para acabar o al menos dificultar el spam (correos no deseados con publicidad, phishing, etcétera). Normalmente, los spammers envían correo electrónico desde direcciones recopiladas en internet (y a direcciones recopiladas en internet 😀 ), para que sea más difícil indentificar el correo como spam. Sin embargo, si el filtro antispam está bien implementado, mirará el registro SPF del dominio del remitente de un correo entrante, y si la dirección IP origen del correo no está entre las adminitidas en dicho registro, lo marcará como spam. Podéis aprender más sobre SPF en el sitio web oficial.
Ejemplo: toharia.com SPF v=spf1 a mx include:aspmx.googlemail.com ~all. Si os fijáis, lo que viene a decir es que el campo spf incluye el registro A, el registro MX y el servidor aspmx.googlemail.com. Esto es porque los correos los enviaré desde el propio servidor que aloja toharia.com, desde los servidores de recepción de correo MX, y desde aspmx.googlemail.com (en mi caso sería redundante ya que los registros MX ya incluyen este servidor).

TIPO DE REGISTRO
DESCRIPCIÓN
A (Address)

Registro de dirección que resuelve un nombre de un anfitrión hacia una dirección IPv4 de 32 bits.
AAAA
Registro de dirección que resuelve un nombre de un anfitrión hacia una dirección IPv6 de 128 bits.
CNAME (Canonical Name)
Registro de nombre canónico que hace que un nombre sea alias de otro. Los dominios con alias obtienen los sub-dominios y registros DNS del dominio original.
MX (Mail Exchanger)
Registro de servidor de correo que sirve para definir una lista de servidores de correo para un dominio, así como la prioridad entre éstos.
PTR (Pointer)
Registro de apuntador que resuelve direcciones IPv4 hacia el nombre anfitriones. Es decir, hace lo contrario al registro A. Se utiliza en zonas de Resolución Inversa.
SRV (Service)
Registro de servicios que especifica información acerca de servicios disponibles a través del dominio. Protocolos como SIP (Session Initiation Protocol) y XMPP (Extensible Messaging and Presence Protocol) suelen requerir registros SRV en la zona para proporcionar información a los clientes.
TXT (Text)
Registro de texto que permite al administrador insertar texto arbitrariamente en un registro DNS. Este tipo de registro es muy utilizado por los servidores de listas negras DNSBL (DNS-based Blackhole List) para la filtración de Spam. Otro ejemplo de uso son las VPN, donde suele requerirse un registro TXT para definir una llave que será utilizada por los clientes.
NS (Name Server)
Registro de servidor de nombres que sirve para definir una lista de servidores de nombres con autoridad para un dominio.
SOA (Start of Authority)
Registro de inicio de autoridad que especifica el Servidor DNS Maestro (o Primario) que proporcionará la información con autoridad acerca de un dominio de
Internet, dirección de correo electrónico del administrador, número de serie del dominio y parámetros de tiempo para la zona.

martes, 31 de mayo de 2016

Introducción a Playbooks

Sobre Playbooks

Libros de jugadas son una forma completamente diferente de usar ansible que en el modo de ejecución de la tarea adhoc, y son particularmente poderosos.

En pocas palabras, libros de jugadas son la base para un muy simple sistema de despliegue de gestión de la configuración y multi-máquina, a diferencia de cualquier que ya existen, y uno que se adapta muy bien a la implementación de aplicaciones complejas.

Libros de jugadas pueden declarar configuraciones, pero también pueden orquestar etapas de cualquier proceso ordenado manual, incluso como diferentes pasos deben rebotar hacia atrás y adelante entre conjuntos de máquinas en las órdenes particulares. Ellos pueden iniciar tareas de forma sincrónica o asincrónica.

Si bien es posible ejecutar el principal usr / local / bin / ansible programa para tareas ad-hoc, libros de jugadas son más propensos a mantenerse en control de código fuente y se utiliza para empujar a cabo la configuración o asegurar las configuraciones de los sistemas remotos están dentro de las especificaciones.

También hay algunos juegos completos de libros de jugadas que ilustran muchas de estas técnicas en el repositorio de ansibles-ejemplos . Nos gustaría recomendar mirando a éstos en otra pestaña a medida que avanza.

También hay muchos puntos saltando después de aprender libros de jugadas, así que salta de nuevo al índice de la documentación después de que haya terminado con esta sección.

Playbook Idioma Ejemplo

Libros de jugadas se expresan en formato YAML (ver YAML Sintaxis ) y tener un mínimo de sintaxis, que intenta intencionalmente para no ser un lenguaje de programación o escritura, sino más bien un modelo de configuración o un proceso.

Cada libro de jugadas se compone de uno o más 'juega' en una lista.

El objetivo de un juego es el mapeo de un grupo de hosts para algunos roles bien definidos, representados por lo que las tareas de llamadas ansibles. En un nivel básico, una tarea no es nada más que una llamada a un módulo de ansible (ver Información sobre los módulos ).

Al componer un libro de jugadas de múltiples 'juega', es posible organizar los despliegues multi-máquina, corriendo ciertos pasos en todos los equipos en el grupo de servidores web, a continuación, ciertos pasos en el grupo de servidores de base de datos, a continuación, más comandos de nuevo en el grupo de servidores web, etc. .

"Juega" son más o menos una analogía con el deporte. Usted puede tener un buen montón de obras que afectan a sus sistemas para hacer cosas diferentes. No es como si se acaba definiendo un estado o modelo en particular, y se puede ejecutar diferentes obras de teatro en diferentes momentos.

Para empezar, aquí hay un libro de jugadas que contiene sólo un juego:

--- 
-  Anfitriones :  servidores web 
  vars : 
    http_port :  80 
    max_clients :  200 
  usuario_remoto :  raíz 
  tareas : 
  -  Nombre :  asegurar Apache está en la última versión 
    de yum :  name = = httpd estado más reciente 
  -  Nombre :  escribir el archivo de configuración de Apache 
    plantilla :  src = /srv/httpd.j2 dest = / etc / httpd.conf 
    notificar : 
    -  Reinicia Apache 
  -  nombre :  asegurar Apache está funcionando (y activarlo en el arranque) 
    del servicio :  nombre = = httpd estado comenzó a enabled = yes 
  manipuladores : 
    -  nombre :  reinicio apache 
      servicio :  estado name = = httpd renovadas

También podemos romper los elementos de tarea a lo largo de varias líneas usando los tipos de diccionario YAML para suministrar argumentos de los módulos. Esto puede ser muy útil cuando se trabaja con las tareas que tienen parámetros o módulos que tienen muchos parámetros para mantenerlos bien estructurada muy largas. A continuación se muestra otra versión del ejemplo anterior, pero utilizando diccionarios YAML para suministrar los módulos con sus clave = valor argumentos .:

--- 
-  Anfitriones :  servidores web 
  vars : 
    http_port :  80 
    max_clients :  200 
  usuario_remoto :  raíz 
  tareas : 
  -  Nombre :  asegurar Apache está en la última versión 
    de yum : 
      Nombre :  httpd 
      Estado :  reciente 
  -  Nombre :  escribir el archivo de configuración de Apache 
    plantilla : 
      src :  /srv/httpd.j2 
      dest :  /etc/httpd.conf 
    notificar : 
    -  reinicia Apache 
  -  nombre :  garantizar Apache se está ejecutando 
    el servicio : 
      nombre :  httpd 
      estado :  comenzó 
  manipuladores : 
    -  nombre :  reiniciar apache 
      servicio : 
        nombre :  httpd 
        estado :  renovadas

Libros de jugadas pueden contener varias obras de teatro. Es posible que tenga un libro de jugadas que se dirige en primer lugar los servidores web, y luego los servidores de bases de datos. Por ejemplo:

--- 
-  Anfitriones :  servidores web 
  usuario_remoto :  root

  tareas : 
  -  Nombre :  garantizar Apache está en la última versión 
    de yum :  name = = httpd estado más reciente 
  -  Nombre :  escribir el archivo de configuración de Apache 
    plantilla :  src = / srv / httpd.j2 dest = / etc / httpd.conf

-  Anfitriones :  bases de datos 
  usuario_remoto :  root

  tareas : 
  -  Nombre :  garantizar PostgreSQL está en la última versión 
    de yum :  name = = PostgreSQL estado más reciente 
  -  Nombre :  asegurar que PostgreSQL se inicia 
    el servicio :  name = = zapatillas estado PostgreSQL

Puede utilizar este método para cambiar entre el grupo de hosts que usted está apuntando, el registro de nombre de usuario en los servidores remotos, si se debe o no sudo, y así sucesivamente. Obras de teatro, como tareas, se ejecutan en el orden especificado en el libro de jugadas: de arriba a abajo.

A continuación, vamos a romper hacia abajo lo que las diversas características del lenguaje libro de jugadas son.

Lo esencial
Los anfitriones y Usuarios

Para cada juego en un libro de jugadas, puedes elegir el que las máquinas en su infraestructura para apuntar y qué usuario remoto para completar los pasos (denominados tareas) como.

El anfitriones línea es una lista de uno o más grupos o patrones de hosts, separados por dos puntos, como se describe en la Patrones documentación. El usuario_remoto es sólo el nombre de la cuenta de usuario:

--- 
-  Anfitriones :  servidores web 
  usuario_remoto :  root


Fuente : http://docs.ansible.com/ansible/playbooks_intro.html

martes, 3 de mayo de 2016

Comandos para conocer datos de nuestros HDD o particiones


1.- lsscsi (necesitan instalar este paquete para que el comando esté disponible)

2.- lsblk -fm

3.- fdisk -l

4.- df -h

5.- df -hT

6.- blkid

7.- blkid -o list

Para particiones tipo LVM hay otros comandos útiles:

8.- pvdisplay

9.- lvdisplay