Mostrando entradas con la etiqueta debian. Mostrar todas las entradas
Mostrando entradas con la etiqueta debian. Mostrar todas las entradas

jueves, 10 de marzo de 2016

Ncat: Abriendo puertos a la escucha e iniciar un chat.









Como mencionamos anteriormente, veríamos ejemplos sobre Netcat para ver lo que nos ofrece y en esta entrada en el blog comenzamos con ello. Lo primero antes de nada es decir el entorno que usaremos en adelante para las pruebas y ejemplos que no será mas que dos máquinas cliente/servidor con S.O. derivados de Debian, pero también usaremos entornos Windows para estos ejemplos.

Hoy vamos a ver como podemos dejar a la escucha un puerto abierto para recibir conexiones o por ejemplo iniciar un chat entre ellos. Lo primero es ver la sintáxis de ncat. 

nc [-options] hostname port[s] [ports]
nc -l -p port [-options] [hostname] [port]

Ahora procederemos abrir el puerto que quedará a la escucha para el cliente mediante la orden "nc -l -p 8080" donde -l es listen(a la escucha) -p es el puerto en el que se quedará a la escucha y abierto( 8080). Una vez ejecutado ahora desde el cliente lanzaremos el comando para conectarnos al puerto en concreto "nc [ip del destino] 8080". Ahora en la siguiente imagen (a la izquierda el cliente y a la derecha el servidor) vemos como hemos entablado la conexión e iniciamos la conversación entre ambos. Como dato estas conversaciones van en texto en blanco sin ningún tipo de cifrado.




Es un primer ejemplo sencillo para que veamos la facilidad y potencial de Netcat.



martes, 24 de noviembre de 2015

Buscando direcciones email: theharverster





Muchas veces como IT tenemos que obtener direcciones email de dominios en los que estamos evaluando la seguridad y la fuga de información. Una parte importante de estas evaluaciones es la llamada information gathering (recopilación de información) que es la que nos va permitir montar el proceso de explotación y la búsqueda de vulnerabilidades. Para la búsqueda de direcciones email tenemos TheHarvester el cual nos permite buscar información sobre un dominio.

Para hacer uso de él usaremos Kali, una plataforma de auditoria y seguridad informática.

Abriremos el terminal y ejecutaremos "theharvester" si nos mostrará las opciones, la explicación de las mismas.





Ahora ejecutaremos un ejemplo para buscar emails sobre un dominio aleatorio.





Como vemos se nos mostrarán las dirección y los propios servidores. Este programa para obtener emails, subdominios, host, nombres de empleados, puertos abiertos desde recursos públicos, nos facilitará nuestro trabajo en este apartado de obtención de información.



martes, 17 de noviembre de 2015

Securizando nuestras conexiones: Instalando y configurarando OpenVPN









Como IT una parte importante es la seguridad y esta hay que tomársela bastante en serio y para el ámbito empresarial más aún. En el mundo empresarial son muchas las ocasiones en que sus empleados trabajan en remoto fuera de la intranet, ya sea por trabajo a pie de calle, porque  su estructura empresarial no está centralizada en un lugar concreto en definitiva, a la hora de trabajar con sus sistemas y redes se tienen que vale de conexiones remotas que no son ni seguras ni estables y es aquí donde entra VPN.

Una VPN o red privada virtual nos permite tener una conexión estable, segura, fiable e incluso más rápida que otro tipo de conexiones remotas. Este tipo de conexión nos permite trabajar  a través de la WAN como si estuviéramos en la propia LAN y esto lo permite creando un túnel de conexión desde nuestro cliente hasta la red interna permitiendo trabajar al cliente remoto de una manera local y segura.





Para poner en práctica todo esto nos vamos a valer de un servidor Debian  y de OpenVPN. Antes de empezar la instalación recomiendo que visitéis los enlaces puestos a lo largo de la entrada y que os empapéis bien de los conocimientos previos, también es recomendable la web de OpenVPN que está en perfecto inglés como se ha de esperar. Vuelvo a repetir OpenVPN no es una instalación sencilla, requiere de conocimientos previos para poder llevar a cabo su correcta instalación, configuración y puesta en marcha.

1.- Instalación: Actualizamos el sistema e instalamos OpenVPN.

sudo apt-get update
sudo apt-get install openvpn

2.- Configuración: Comenzamos con la configuración de ficheros y generación de certificados necesarios.

Copiamos ficheros:

cp –r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa

Nos movemos al directorio easy-rsa:

cd /etc/openvpn/easy-rsa

Editamos el fichero vars:

vim /etc/openvpn/easy-rsa/vars

Dejamos esta línea así:

export KEY_SIZE=2048

Ponemos los valores siguientes:

export KEY_COUNTRY="ES"
export KEY_PROVINCE="SE"
export KEY_CITY="Seville"
export KEY_ORG="TEST"
export KEY_EMAIL="mail.mydomain"
export KEY_EMAIL="mail@host.domain
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme
export PKCS11_MODULE_PATH=changeme
export PKCS11_PIN=1234

Generamos los certificados dentro del directorio easy-rsa, esto puede variar en el tiempo de exportación en función del tamaño del key:

source ./vars
./clean-all

./build-ca

Generamos el certificado del server:

./build-key-server saw

Ahora generamos el certificado del cliente:

./build-key

Generamos la clave HMAC:

openvpn --genkey --secret ta.key
cp ta.key keys

cp -r easy-rsa/keys/ .

Modificamos la configuración VPN para poner el servidor en funcionamiento:

vim /etc/openvpn/server.conf

Dejamos el archivo como aparece a continuación:

port 1194
proto tcp
dev tun

#Nuevos certificados
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/saw.crt
key /etc/openvpn/keys/saw.key
dh /etc/openvpn/keys/dh2048.pem
tls-auth /etc/openvpn/keys/ta.key 0

#rangos de direcciones
server 192.168.1.50 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"

#DNS 
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

client-to-client
keepalive 10 120

cipher AES-256-CBC # Triple-DES
comp-lzo

max-clients 5

user nobody
group nogroup
tcp-nodelay
persist-key
persist-tun

log /var/log/openvpn.log
status /var/log/openvpn-status.log

verb 3
mute 20
#client-config-dir ccd

Habilitamos el bit de forwarding:

echo 1 > /proc/sys/net/ipv4/ip_forward

Eliminamos decomentamos la linea "net.ipv4.ip_forward=1"en el fichero "/etc/sysctl.conf":

vim /etc/syscrl.conf

Cargamos el módulo tun:

modprobe tun

Después de esto habilitamos el servicio y lo arrancamos:

/etc/init.d/openvpn start

Añadimos la siguiente línea de comando para iptables:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s "192.168.88.0/24" -j ACCEPT
iptables -A FORWARD -j REJECT

iptables -t nat -A POSTROUTING -s "192.168.1.0/24" -j MASQUERADE

Finalmente guardar las reglas:

iptables-save


Finalmente vuelvo a recordar que para montar un servidor de este tipo debemos de tener unos conocimientos previos, esta guía es una mera muestra de como montarlo. Para llevarlo a acabo se deben tener conocimientos preestablecidos sobre redes, sistemas operativos, VPN y OpenVPN.



domingo, 10 de mayo de 2015

PPTD : Creando una VPN rápida, sencilla pero no tan segura.







Hoy veremos como crear una pequeña rápida y sencilla VPN sobre un servidor linux para tunelizar nuestras comunicaciones. Para ello usaremos el protocolo PPTP el cual ya os adelanto que no es muy seguro pero que nos sacará de algún que otro apuro para realizar tareas en los nuestros clientes ya que muchas veces para aplicaciones de pequeños negocios  y grandes negocios se necesitan valer de una VPN para trabajar y hacer más productivo su trabajo. Para esto trabajaremos con un servidor debian o deribado. 


Instalando pptpd: Comenzaremos instalando mediante la siguiente línea.

sudo apt-get install pptpd

Fichero de configuarión pptpd: Una vez instalado configuraremos  el fichero pptpd

sudo vim /etc/pptpd.conf

Editamos en el los apartados localip (esta es la ip de nuestro servidor) y remoteip (el rango de IP que se dará a los cliente que conecten)

localip 192.168.1.200 (ejemplo)
remoteip 192.168.1.30-33 (ejemplo)


Fichero de opciones pptpd: Ahora editaremos las opciones de pptpd en el fichero "/etc/ppp/pptpd-options" donde editaremos las dns en mi caso usé para el ejemplo las google, pero en caso de necesidad de usar otro de la red interna sería elegir el adecuado.

vim /etc/ppp/pptpd-options

Editamos los siguientes valores

ms-dns 8.8.8.8

ms-dns 8.8.4.4




Creando un usuario para los clientes que van a conectar: Una vez realizado esto crearemos un usuario con su contraseña que será la que le valga al cliente para validarse, esto se realiza en el fichero "/etc/ppp/chap-secrets"

Aqui editaremos el fichero introduciendo en el usuario, servidor, contraseña y nos valdremos de la siguiente linea de comandos, la cual deberemos modificar en función de los valores que le queramos dar.

echo "usuario pptpd contraseña *" >> /etc/ppp/chap-secrets




Permitiendo redireccionamiento: Ahora debemos permitir el redireccionamiento para que el cliente pueda acceder a todos os dispositivos de la red interna para ello editaremos el fichero "/etc/sysctl.conf" y descomentaremos la linea "net.ipv4.ip_forward=1" y finalmente aplicamos los cambios "sudo sysctl -p".

Abriendo puertos: Ahora tendremos que abrir puertos en el router correspondiente para el correcto acceso del cliente, los puertos que tendremos que abrir seran el 1723 en el router de la red del servidor.

Finalmente nos queda contectar mediante un dispositivo cliente a nuestra VPNRecordar finalmente como se comenta en el comienzo que nos es un tipo de tunelación muy seguro y que por lo tanto tendremos que optar por otras opciones en caso de necesitarlas







lunes, 16 de marzo de 2015

Instalación y configuración de bind9 en linux ( 2 de 2)









En esta  publicación vamos a ver como se configura nuestro servicio de DNS BIND9 en nuestro servidor basado en Debian, en nuestro caso linuxmint. 

¿Configurar que?


Lo primero que haremos será parar el servicio mientras configuramos, esto lo haremos con 'sudo service bind9 stop' o 'sudo /etc/init.d/bind9 stop'.





Una vez parado el servicio tendremos que activar la generación y registro de los logs del servidor bind 9, para ello nos dirigimos al fichero 'named.conf' que se encuentra en '/etc/bind/named.conf', aquí añadiremos el siguiente código al final del texto.


logging {
        channel logdnsbind.log{
                file "/var/log/logdnsbind.log";
                severity deb
dug 10;
                print-category yes;
                print-time yes;
                print-severity yes;
                };
category queries { logdnsbind.log;}; };



Una vez realizado esto nos tendremos que crear el fichero del log para que pueda registrar en el los eventos. El fichero como el código de arriba indica se llama 'logdnsbind.log'. Tenemos que tener en cuenta a la hora de crearlo que tendremos que añadirle el grupo al que pertenece 'chgrp' y el propietario o owner del fichero 'chown'. Creamos el fichero con la orden 'sudo touch logdnsbind.log' ( con esto crearemos un archivo en blanco ). 

Después de esto editamos el grupo del archivo con el siguiente comando:

sudo chgrp bind logdnsbind.log

Cambiamos el propietario del archivo:
 
sudo chown bind logdnsbind.log

Ahora como podemos ver con la siguiente línea de comandos se nos muestra el propietario del fichero y grupo al que pertenece que como dijimos arriba es bind.



Una vez finalizado reiniciamos el servicio mediante 'sudo service bind9 restart' o 'sudo /etc/init.d/bind9 restart'.

testeando@testeando-VirtualBox / $ sudo service bind9 restart
 * Stopping domain name service... bind9                                                                     [ OK ]
 * Starting domain name service... bind9                                                                     [ OK ] 


 (*) Nota: si da algún fallo no duden en preguntar y si no encuentran solución siempre pueden saltar el punto de los logs.

Como configuración de red además de la dirección ip fija, máscara de subred y puerta de enlace normales, tendremos que cambiar las dns a '127.0.0.1' o la ip fija que hemos usado. Esto lo podemos hacer de manera gráfica o editando el fichero 'resolv.conf' que como explicamos en otro un este articulo se encuentra en '/etc/resolv.conf' y que idiremos allí las dns dejando escrito las mismas, en nuestro caso la nuestra, 'nameserver 127.0.0.1' .

¿Que son estos fichero que hay en '/etc/bind/'?

Antes de ponernos a copiar como locos vamos a interesarnos un poco por ver estos ficheros que son y para que sirven.

/etc/bind/named.conf  -----------------------------  Fichero de configuración principal.
/etc/bind/named.conf.options  ----------------  Opciones generales del servidor.
/etc/bind/name.conf.local -----------------------  Fichero de configuración de zonas.
/etc/bind/named.conf.default-zones -------  Declaración de zonas por defecto.
/etc/bind/db.root  -----------------------------------  Servidores raíz.
/etc/db.local -------------------------------------------  Resolución directa del búcle local.
/etc/bind/db.127 -------------------------------------  Resolución inversa del búcle local.
/etc/bind/db.0 -----------------------------------------  Resolución inversa red.
/etc/bind/ db.255 ------------------------------------  Resolución inversa broadcast.

 Bien, visto el significado de los ficheros vamos a comenzar haciendo una copia del fichero original '/etc/bind/named.conf.local' esto lo haremos con la siguiente orden:



sudo cp /etc/bind/named.conf.local{,.original}


Después vamos a editar el fichero original, con los datos que hemos elegido para nuestro caso.


 - Dominio: itpuntoes.com
 - Dirección ip: 192.168.1.31


Con estos datos comenzamos editando el fichero con la orden 'sudo nano /etc/bind/named.conf.local', una vez en el introduciremos los siguientes datos:


zone "itpuntoes.com" {
    type master;
    file "db.itpuntoes";
};
zone "1.168.192.in-addr.arpa" {
  type master;
  file "db.itpuntoesinv";
};



Guardamos los datos introducidos en el fichero. Ahora establecido nuestro nuevo dominio dns tendremos que decidir que servidor dns va a resolver lo que nuestro servidor dns no pueda resolver, esto lo hacemos editando el fichero '/etc/bind/named.conf.options' aquí ya os dejo vuestra opción yo he elegido las de google, pero pueden usar por ejemplo las de vuestro ISP o opendns por ejemplo.



Una vez dentro del fichero como vemos  en la imagen descomentaremos unas líneas y editaremos para añadir nuestro servidor dns alternativo(google en nuestro caso '8.8.8.8').


Una vez guardado vamos a crear el fichero '/etc/bind/db.itpuntoes' con la orden 'sudo /etc/bind/db.itpuntoes' y en el introduciremos el siguiente código.


$TTL    604800
@   IN  SOA itpuntoes.com. root.itpuntoes.com. (
                  1     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@       IN      NS      ns.itpuntoes.com.
ns      IN      A       192.168.1.31
box     IN      A       192.168.1.31 
 
 
Después de esto vamos con la zona inversa copiamos el archivo 'db.127' con
la orden 'sudo cp /etc/bind9/db.127 /etc/bind/db.itpuntoesinv' después de esto 
editamos el fichero 'sudo nano /etc/bind/db.itpuntoesinv' y lo dejamos como 
muestra el siguiente código.
 
 
$TTL    604800
@       IN      SOA     localhost. root.localhost. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.
31      IN      PTR     ns.itpuntoes.com.
 
 
Después de esto reiniciamos el servicio 'sudo service bind9 restart' y una vez 
reiniciado ya lo tenemos listo. ¡No olvidéis seguirnos en próximas publicaciones!. 


Instalación y configuración de bind9 en linux ( 1 de 2)