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

viernes, 26 de febrero de 2016

Ncat: ¿Que es netcat?








Hoy y en adelante vamos a ver detenidamente que es y ejemplos sobre netcat. En las siguientes entradas veremos ejemplos prácticos en los que veremos y pondremos en práctica esta herramienta básica para cualquier IT.

Ncat tiene ya muchos años pero es una de las primeras herramientas que usé cuando me pidieron que iniciara un chat entre dos máquinas mediante un terminal y de las que sigo usando, Netcat nos permite abrir puertos sencillamente y asociar una shell a este. Después de esto nos permite jugar con esto de múltiples maneras transferencia de ficheros, chats, usarlo para que nos de la hora del mismo servidor, mensajes.

Antes de nada como siempre tendremos que leer algo de ncat en wikipedia por ejemplo:
Netcat es una herramienta de red que permite a través de intérprete de comandos y con una sintaxis sencilla abrir puertos TCP/UDP en un HOST (quedando netcat a la escucha), asociar una shell a un puerto en concreto (para conectarse por ejemplo a MS-DOS o al intérprete bash de Linux remotamente) y forzar conexiones UDP/TCP (útil por ejemplo para realizar rastreos de puertos o realizar transferencias de archivos bit a bit entre dos equipos). Fue originalmente desarrollada por Hobbit en 1996 y liberada bajo una licencia de software libre permisiva (no copyleft, similar a BSD, MIT) para UNIX. Posteriormente fue portada aWindows y Mac OS X entre otras plataformas. Existen muchos forks de esta herramienta que añaden características nuevas como GNU Netcat o Cryptcat.
Una vez tenemos una idea clara de lo que es netcat y que es lo que nos ofrece acabaremos mirando un pequeño vistazo como siempre al manual de netcat mediante "man netcat".





En siguientes entradas veremos más en profundidad casos prácticos en los que veremos lo que netcat nos ofrece y podemos hacer con él.

jueves, 30 de abril de 2015

Solución de problemas - Internet / Acceso a la Red en Linux: Comprobando/configurando DNS & fichero HOST



En esta entrada vamos a ver como ver las DNS asignadas a nuestro cliente o servidor y como cambiarlas y asignarles otras.

Las DNS o Sistema de Nombre de Dominio, básicamente es un sistema el cual nos permite tener una relación entre el nombre del recurso al que queramos acceder con su dirección IP todo esto almacenado en una base de datos. Por ejemplo cuando en nuestro navegador solicitamos www.google.es el DNS recibe esa petición y te dirige a la dirección 216.58.210.131. Las DNS podemos tenerlas configuradas de dos maneras manualmente o dinámicamente, en este último caso nos la reparte el servidor DHCP.





Para ver las DNS configuradas en nuestro servidor no tenemos más que escribir la siguiente línea de comandos "cat /etc/resolv.conf".





Una vez mostrada podemos modificarlas, pero antes de ello vamos a seguir los pasos correspondientes y esto antes de modificar algo realizar una copia del mismo para posteriormente poder restaurarla. Esto lo haremos con la siguiente lineas de comandos "cp -f /etc/resolv.conf{,.bak}".

Una vez realizada nuestra copia de seguridad procedemos a modificar las DNS, las cuales podemos poner varias como pueden ser las de OpenDNS( 208.67.222.222 – 208.67.220.220) o google (8.8.8.8 – 8.8.4.4) también puedes disponer de direcciones mas anónimas en este enlace. Una vez nos hemos decidido procedemos a modificar las DNS, mediante el siguiente comando "vim /etc/resolv.conf" y añadimos la direcciones de DNS que hemos elegido.





Después de esto tendremos que revisar el fichero host (/etc/host) en busca de modificaciones porque si aquí hay alguna búsqueda local aunque tengamos las DNS correctas la búsqueda se va a realizar según este puesta aquí la relación nombre real – dirección IP. Si recordamos esto ya lo hemos tocado anteriormente en el tema ( "Migrando nuestra web de hosting" Ver web mientras la actualización de DNS se completa ( Linux, OSX, Windows).


Para comprobarlo escribimos el siguiente comando "cat /etc/host" y se nos mostrará el contenido del mismo.


Ahora en caso de querer modificarlo lo primero que haremos será un backup del fichero "cp -f /etc/hosts{,.bak}". Una vez realizado el backup en caso de que queramos añadir alguna relación especifica para nosotros el formato que debemos introducir será <dirección ip> <nombre del host>. Y para editar el fichero deberemos escribir "vim /etc/hosts". Ya en el modificamos o editamos lo que queramos.








miércoles, 8 de abril de 2015

Solución de problemas - Internet / Acceso a la Red en Linux: Comprobando/configurando dirección IP & puerta de enlace (GW)




En esta entrada vamos a ver como comprobar/cambiar/establecer la dirección IP y su máscara de red ( estática, DHCP) y por último la puerta de enlace (GW).


Para mostrar la dirección IP usaremos 'ifconfig' ( 'ipconfig -a' para mostrar todos los dispositivos sin importar si están levantados o no). 





Ahora tendremos que decidirnos por una dirección estática o dinámica (DHCP).


· Dirección dinámica (DHCP): En este tipo de asignación sera al servidor DHCP al que le solicitaremos la dirección, después de solicitarlo este nos asignará una dirección IP, también nos asignará una puerta de enlace y una DNS.





A la hora de solicitar la dirección ip para el dispositivo de red nos bastará con escribir 'dhclient -r eth1' y 'dhclient eth1'.




· Dirección estática: En este tipo de asignación seremos nosotros el que lo asignaremos.

Ahora para asignar una dirección manual o estática, asignaremos la dirección IP y la máscara de red.

En este ejemplo trabajar con una ip con máscara clase C, en la imagen veremos como asignarla simplemente escribiendo 'ifconfig eth1 192.168.1.90/24' y comprobaremos la dirección nueva 'ifconfig eth1'







Para hacer que estos cambios sean persistentes, es decir que se mantengan tras el reinicio tendremos que alterar un fichero. Y si vamos a alterar el fichero lo mejor que podemos hacer es realizar una copia del mismo 'cp -f /etc/network/interfaces{,.bak}' 





Una vez realizada la copia de seguridad podremos editar el fichero 'vim /etc/network/interfaces' para disponer de una dirección asignada mediante DHCP o manualmente.


DHCP persistente: Añadiremos al fichero que estamos editando lo siguiente.

auto eth0
iface eth0 inet dhcp

IP estática persistente: Añadiremos al fichero que estamos editando lo siguiente que variará en función de la configuración que queramos.

iface eth0 inet static
address 192.168.1.90
netmask 255.255.255.0
gateway 

Por último veremos como mostrar/configurar la puerta de enlace (GW). Para mostrar la puerta de enlace que tenemos actualmente lo veremos mediante 'route -n'.





Una vez mostrada, para cambiar la puerta de enlace asignada en este adaptador de red tan solo tendremos que asignarla manualmente mediante 'route add default gw 192.168.1.2 eth1'





Para eliminar una puerta de enlace tan solo con escribir 'route delete default gw 192.168.1.2 eth1'









lunes, 19 de enero de 2015

Explorando Powershell: Mostrando y matando procesos (Get-Process)







Hoy en "Explorando Powershell", veremos get-process y como sacarle partido a este.

Escribimos en nuestro powershell "get-process" o también funcionan los alias "gps" o "ps" y vemos todos los procesos.





También podemos buscar los procesos de manera especifica si conocemos el nombre, conocemos las primeras letras o podemos buscar varios procesos separándolo mediante comas como se muestra en la imagen.





Podemos mostrar diferentes características del proceso como la compañía, la versión del producto y más características.




Y finalmente podemos eliminar un proceso mediante su código "Id" y el comando "kill".






jueves, 13 de noviembre de 2014

Explorando powershell: Script automatizado con envío de ip pública vía email ( Windows Server 2012 + Powershell + email + SCHTASKS )







Hoy veremos un simple script para enviar un email a nuestra email desde powershell con un simple script y automatizaremos esto para que se ejecute cada cierto tiempo, teniendo así actualizada la dirección IP pública.

Lo primero que tenemos que hacer es comprobar que nuestra powershell esté en la versión 4.0, ejecutando 'get-host' nos mostrará la versión actual.

Despues de comprobar la versión vamos a realizar el script esto, lo podemos hacer con un editor cualquiera como notepad++, block de notas o como en mi caso Powershell ISE.

Abrimos a nuestro Powershell ISE (con permisos de administrador) e introducimos la script (mis valores son con cuenta gmail y en las letras en rojo tendréis que editarlas con vuestros valores).


#almacenamos la fecha en la variable $date
$date = Get-Date -format d
#Extraemos la ip de la web "http://chekip.dyndns.com" y la almacenados en la variable $currentip
$currentip = (New-Object net.webclient).downloadstring("http://checkip.dyndns.com") -replace "[^\d\.]" 
while ($currentip -eq '') {$currentip = (New-Object net.webclient).downloadstring("http://checkip.dyndns.com") -replace "[^\d\.]"} 
#Montamos nuestro correo añadimos las variables almacenadas y lo enviamos
Write-Host "sending public ip $currentip ..." 
$EmailFrom = "usuario@gmail.com"
$EmailTo = "usuario@gmail.com" 
$Subject = "#$date - ip windows server " 
$Body = "Fecha: $date // Public server ip $currentip" 
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("cuenta_usuario_mail_sin_dominio", "contraseña_del_email"); 

$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)


Una vez escrito todo lo comprobamos que funciona desde el mismo edito ejecutamos > guardamos y comprobamos que funciona bien tanto en la pantalla, como que llega a nuestro email.






Una vez ejecutado sin fallos comprobamos nuestro email.






Una vez realizado todo lo anterior ahora vamos a crear una tarea programada para añadir este script y que se ejecute cuando nosotros queramos.

Para esto utilizaremos schtask, podemos consultar el enlace anterior o simplemente buscar la ayuda en nuestro powershell con 'schtask /?'. 

Ejemplo explicado:

schtasks /create /sc el_tipo_de_tiempos /mo cada_cuanto_tiempo /d cuantos_dias /tn nombre_tarea_programada /tr /ruta/del/script /st hora_de_inicio

Ejemplo: 


schtasks /create /sc minute /mo 10 /d 31 /tn send_public_ip /tr C:\scripts\public_ip_email_send.ps1 /st 08:00:00







Y por último mostramos el estado de la tarea programada con el comando de consulta query 'schtask /query /TN send_public_ip'.




Y finalmente como vemos en la imagen nos muestra el estado del proceso y cuándo se va a ejecutar la próxima vez. 

Si queremos eliminar nuestro schtask ejecutaremos por ejemplo como es mi caso 'schtask /delete /TN send_public_ip'









miércoles, 5 de noviembre de 2014

Script automatizado con envío de ip pública vía email ( Linux + sSMTP + email + cron&crontab )










Anteriormente vimos en "Enviando email desde consola (Linux): SSMTP + GMAIL" como configurar nuestro sistema para enviar emails desde el terminal y también vimos en "Buscando nuestra dirección ip pública" como saber cual es nuestra ip pública. 

En este caso tiraremos de lo anterior y generaremos un script el cual nos va a permitir tener en nuestro correo la dirección ip pública de nuestro host de forma automatizada y que se ejecutará cuando nosotros queramos. Para esto último tiraremos de cron&contrab que nos permitirá ponerle un tiempo de ejecución a nuestro script para mantener actualizado y saber si hemos tenido algún cambio en nuestra ip pública.


" Como aspecto de seguridad esta "herramienta" la podríamos tener en nuestro propio portátil, así en caso de ser sustraído y conecten nuestro ordenador este ya enviaría la ip pública a nuestro email. Con esta información ya tendríamos un gran paso y nos pondríamos manos a la obra en la recuperación de nuestro portátil. "

Una vez repasado todo la anterior, nos ponemos manos a la obra con nuestro script. Como editor utilizaré vim, pero siempre se puede usar el sencillo nano para ello. Nos vamos al terminal y creamos el script mediante "vim nombrescript.sh". Una vez dentro introducimos el código.


#!/bin/sh
# Script envío ip pública via email.
echo "# Ip publica mserv --> $(curl icanhazip.com) || fecha: $(date)" | mail -s "# mserv ip: $(curl icanhazip.com) | fecha: $(date)" usuario@gmail.com                       

        
                                                 
                                                                    

Este script hace un envío de la ip pública con la fecha y hora al correo electrónico en mi caso gmail.

Una vez tenemos, automatizaremos el proceso para que este script se ejecute cada 5 minutos en nuestro caso (en vuestro caso según el tiempo que deseéis), pero antes de nada vamos hacer un pequeño repaso a crontab.

Con crontab podemos controlar el momento en ele que se ejecutan determinadas tareas según una fecha, una hora, una serie de veces, etc. 

Para usar crontab podemos hacerlo de la siguiente manera:

crontab -e  (Nos permite editar y configurar el script o tarea que se vaya a realizar)
crontab -l   (Nos lista tareas que ya están programadas)
crontab -d  (Borra las tareas que ya están programadas)

Una vez dentro del fichero tendremos que escribir con un orden tal que así ''m h dom mon dow user /command/ruta/del/script.sh'
  • m = el minuto en el que se va a ejecutar.
  • h  = la hora en que se va a ejecutar.
  • dom = el día del mes en el que se va a ejecutar.
  • dow = el día de la semana.
  • user = el usuario que lo va a ejecutar.
  • command = la ruta del script que vamos a ejecutar. 

Tenemos también caracteres especiales predefinidos como son:

  • @reboot (al iniciarse el sistema)
  • @yearly (una vez al año)
  • @annually (una vez al año)
  • @monthly (una vez al mes)
  • @weekly (una vez a la semana)
  • @daily (una vez al día)
  • @midnight (una vez al día)
  • @hourly  (una vez cada hora)

Una vez visto por encima pondré un par de ejemplos

*/30 * * * * /ruta/del/script.sh (se ejecutará cada 30 minutos)

30 21 * 7 root apt-get -y update (el domingo a las 21:30 root ejecutará la actualización)

Si necesitáis más ejemplos, aquí los tenéis. 

Una vez habiendo visto crontab por encima procedemos a hacer nuestro ejemplo. Abrimos la consola y escribimos '
crontab -e'. Una vez ahí escribiré mi ejemplo (si vosotros usáis otro pues el vuestro).


*/5 * * * * /ruta/del/script/enviodecorreoip.sh 


 (esto lo que hará será dirigirse a la ruta del script y ejecutarlo cada 5 minutos) 


Una vez echo esto nos dirigimos a nuestro correo (gmail en mi caso) y comprobamos que ha comenzado a funcionar.