Dec 22, 2013 - Add Git Branch Name to Terminal Prompt (Mac)

Comments

When in a repository directory, show the name of the currently checked out Git branch in the prompt.

#Requirements

  1. Mac OS X (Lion)
  2. Terminal with Bash

#Method

Open the Terminal app and if the file ~/.bash_profile does not already exist create it with the following command.

touch ~/.bash_profile

Harry Cutts points out in the comments that you should be able to use the file ~/.bashrc instead to make this method applicable to Linux.

Open ~/.bash_profile in your favorite editor and add the following content to the bottom.


    # Git branch in prompt.

    parse_git_branch() {

        git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'

    }

    export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

Notes:

  • Depending on configuration changes you may have made previously you may already have a PS1 variable being exported. In this case you will need to add \$(parse_git_branch) somewhere in the existing value.
  • The \[\033[32m\] parts set the color of the branch text. If you prefer another color check online for a reference on valid values.
  • The \ in \$(parse_git_branch) is important to ensure the function is called each time the prompt is displayed; without it, the displayed branch name would not be updated when, for example, checking out a different branch or moving in and out of a Git repository directory.

Now when you change to a directory that is within a Git repository, the prompt will be supplemented with the name of the current branch. When you switch branches the prompt will update accordingly.

If you are using an existing Terminal session, don’t forget to make the changes take effect by sourcing the file with the command source ~/.bash_profile.

Jun 22, 2013 - Cum sociis natoque penatibus

Comments

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus fermentum facilisis velit eu auctor. Maecenas tincidunt, leo tempor bibendum auctor, ligula lorem ultricies tellus, ac auctor lorem libero a sapien. Donec ac suscipit tellus. Quisque vitae placerat lorem. In ullamcorper malesuada risus, eget fringilla lacus dignissim at. Proin faucibus, nibh vel molestie scelerisque, lorem urna tempus lacus, id viverra odio dolor sit amet odio. In hendrerit, orci vel scelerisque luctus, arcu purus aliquet turpis, a bibendum nulla est et dui.

Praesent pellentesque posuere lectus eget condimentum. Ut vitae nisi diam. Quisque vitae ipsum magna. Aliquam pretium laoreet tortor quis volutpat. Donec congue, nisl nec consequat varius, enim enim consectetur felis, a viverra libero elit in ligula. Cras posuere ipsum vel mi scelerisque, eu interdum velit elementum. Duis eu posuere est. Ut vestibulum urna eu viverra fringilla. Aliquam tempus nisi eros, vitae posuere nulla fermentum in. Praesent et justo eros. Proin eleifend justo vel justo condimentum ullamcorper. Curabitur vel vehicula lectus. Mauris sed ex ac ipsum ultrices bibendum at id tortor. Aenean dictum magna ac nisi posuere euismod. Ut fermentum, nulla quis venenatis varius, risus nulla dictum felis, ut dictum eros libero vitae justo.

Integer aliquam tellus vel libero eleifend, condimentum euismod odio tincidunt. Vivamus felis ante, faucibus quis urna nec, volutpat pulvinar quam. Cras dictum libero ac augue bibendum, et pretium ex pharetra. Vivamus suscipit et erat id eleifend. Proin vulputate, quam sit amet pretium fermentum, felis neque scelerisque metus, a rhoncus quam nisi sit amet urna. Sed et commodo libero, laoreet rutrum eros. Vivamus tempor, leo eget scelerisque molestie, sapien augue viverra tortor, et semper arcu eros ut elit. Sed pulvinar ipsum in semper facilisis.

Jun 14, 2013 - Ssh No Pass Rsa Key Setup Spanish

SSH sin contraseña y de forma segura usando pareja de claves RSA

Todos sabemos que ssh es un protocolo muy seguro, ya que todo la información que circula por la conexión entre cliente y servidor está encriptada.

Cuando hacemos una conexión a un servidor ssh lo hacemos así:
 

ssh usuario@direcion.ip.com
El servidor y el cliente ssh negocian el protocolo ssh que se usará (por seguridad debe ser la versión 2)

Y después generan un acuerdo de cifrado para el canal, de manera que ya todo lo que circule por él, esté cifrado.

La conexión continua..

Una vez abierto un canal seguro, el servidor nos pedirá contraseña para acceder y tras introducirla el servidor la comprobará.

Si la clave es correcta obtendremos acceso al servidor ssh.

Aquí se presentan dos inconvenientes.

1.- El password, aunque encriptado, viaja por la red cada vez que nos conectamos y esto puede ser peligroso si alguien estuviese capturando (snifando) datos de nuestra red y fuese capaz de generar fuerza bruta contra nuestros datos para sacar el pass.

2.- Tener que meter una y otra vez la clave cuando iniciamos sesión es ‘cansino’ y además, si tenemos 20 servidores y los que acceder…. Tenemos que tener 20 claves diferentes, ya que si usamos una sola para todo compromete la seguridad de los 20 pcs si perdemos la clave o alguien nos la roba.

Para todo esto hay una solución, usar un par de claves RSA.

 

Explicación sobre pareja de claves RSA

¿Que es RSA?

RSA es un sistema de encriptado que usa un algoritmo imposible de solucionar a día de hoy. Se creé que con la llegada de sistemas cuánticos y su rapidez se puedan llegar a solucionar.

¿Por qué una pareja?
Esto mucha gente no lo entiende, y lo voy a explicar muy claro.

Es una pareja de claves porque se crean a pares y de forma que una no sirve sin la otra, una clave es privada y la otra pública.

Clave privada:
Se usa para desencriptar y es la que debe estar solo presente en la máquina cliente y protegerla.

Clave  pública:
Se usa para encriptar y se puede repartir sin miedo a tus amigos.
Esta clave solo encripta y no puede usarse para desencriptar ni lo que se haya encriptado con ella.
Solo la clave privada asociada a ella puede desencriptar lo que se haya encriptado con la clave pública.

¿Y como funciona?
El proceso es el mismo pero con una diferencia…
 

ssh usuario@direcion.ip.com
El servidor y el cliente ssh negocian el protocolo ssh que se usará (por seguridad debe ser la versión 2)
Y después generan un acuerdo de cifrado para el canal, de manera que ya todo lo que circule por él, esté cifrado.
La conexión continua..

Hasta aquí todo igual, pero ahora comienza la diferencia…..:

El cliente decide usar usar RSA para identificarse, así que le manda al servidor información sobre su clave pública..

El servidor busca en su base da datos en busca de la clave pública del cliente, cuando la encuentra le manda un desafío, si si, como lo oyes. El servidor manda un paquete llamado (challenge) que contiene un número aleatorio cifrado con la clave pública del cliente.

El cliente recibe el paquete incriptado y usa la clave privada para desencriptar el mensaje, una vez desencriptado se lo devuelve al server… y le dice “¡Eh mira, lo he averiguado, así que soy yo!”.

El servidor comprueba que el número devuelto es igual que el que mandó encriptado y por tanto el usuario es el que dice ser, ya que ninguna otra persona puede desencriptar el paquete sin no tiene la clave privada asociada a la pública. Así que se permite la sesión.

Yo creo que explicado así se entiende a la perfección.

¿Os habéis fijado que en ningún momento se mandan claves por la red?

Ahora podrías dar a todos tus amigos tu cláve pública y así poder entrar en sus sistemas sin pedir contraseña ni tener que usar una contraseña para cada sitio.

Como podréis imaginar, si alguien os copia la clave privada de vuestro ordenador, podrá acceder a cualquier sistema en el que estén la clave pública….. que peligro ¿no?

Tranquilos, generaremos una clave RSA que esté encriptada con clave, de manera que si alguien os la quita se quedará con la cara partida porque hace falta una clave para poder usarla… jejeje.

 

Preparación del Servidor para permitir autenticación por RSA

Accedemos a nuestro servidor:
 

ssh usuario@servidor.com
Tendremos que meter la clave como siempre.

Una vez dentro tendremos que editar el archivo /etc/ssh/sshd_config
 

sudo nano /etc/ssh/sshd_config
Buscamos las siguientes líneas y nos aseguramos de que estén así:
 

PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

 

La primara opción permite el uso de clave pública para que un cliente se identifique.
La segunda especifíca donde se guarda la relación de claves públicas autorizadas.

Una vez modificado lo que sea necesario presionamos Ctrl+o para guardar, presionamos “enter” para confirmar y luego Ctrl+x para salir.

Comprobamos que existe la carpeta .ssh dentro del directorio home, el cual debe de contener el archivo authorized_keys
 

ls -al  ~
Si no existe lo crearemos
 

mkdir ~/.ssh
touch ~/.ssh/authorized_keys
En ese archivo se guardan las claves públicas de los clientes autorizados.
Necesitamos reiniciar el demonio ssh y normalmente eso no supone una caida del cliente que está conectado a ssh… así que:
 

sudo service ssh restart
Ahora ya podemos salir del ssh:
 

exit

 

Configuración del Cliente para usar RSA

El cliente de la versión actual de ssh está configurado para usar en primera instancia automáticamente una privada RSA para identificarse, así que solo tenemos que crearla.

 

Creación de parejas de claves

Ahora llega el momento de crear nuestra pareja de claves, es importante comprender que podemos crear la pareja de claves en cualquier pc y llevarlas a donde queramos…. pero en este caso las crearemos en el cliente.

Primero comprobamos que existe la carpeta .ssh dentro del directorio home, el cual es necesario ya que es ahí donde se generarán la pareja de claves.
 

ls -al  ~
Si no existe lo crearemos
 

mkdir ~/.ssh
Ahora generamos la pareja de claves RSA
 

ssh-keygen -t rsa
Nota: ssh-keygen genera por defecto claves RSA pero por si las moscas lo hemos especificado.

Creará una clave de 1028 Bits, muy segura, aunque se pueden crear mayores claves con menor rendimiento… claro está.

Tras ejecutar el comando nos preguntará donde generar la clave, le dejamos la ruta por defecto ~/.ssh/id_rsa

Seguidamente nos pedirá una clave de paso, yo uso la misma que para mi sesión, pero podéis usar cualquier clave que sea segura, que contenga numeros, símbolos y letras en minúscula y mayúscula.

Una vez terminado tendréis una clave privada (id_rsa) y otra pública (ud_rsa.pub) en el directorio .ssh de vuestra carpeta personal.

Ahora moveremos la llave pública al servidor usando scp, que pertenese al paquete de ssh y permite copiar contenido usando ssh de forma segura:
 

scp ~/.ssh/id_rsa.pub usuario@servidor.com:/tmp/
Y metemos la clave para mandar la llave pública a la carpeta temporal del server.

 

Añadiendo la clave pública al servidor ssh

Tras copiar la clave pública en el server hay que añadirlo al archivo authorized_keys
Accedemos al servidor ssh:
 

ssh usuario@servidor.com
Y ejecutamos:
 

cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
Listo, ya podemos salir del server y al entrar no usaremos clave para iniciar sesión, y ojo, sigue leyendo.
 

exit

 

Usar ssh-agent para evitar la frase de paso

Si ya has intentado acceder pos ssh para probar la conexión te habrás percatado de que te pide contraseña…. ehhh! jeje para para, no me llames mentirosooooo jejee

Dije que no te pediría clave para iniciar sesión, y de hecho, no lo hace, lo que pasa es que tu clave privada está cifrada ¿Recuerdas que al crearla pusiste una clave para protegerla?

Usaremos ssh-agent, que se instala automáticamente al instalar ssh y que se ejecuta al inicio de cada sesión de manera automática.

Usaremos ssh-add para añadir la clave a ssh-agent de manera que esté vinculada a la sesión y no te pida más la pass para desencriptar la clave privada…. ya se encargará ssh de pedírsela a ssh-agent.
 

ssh-add ~/.ssh/id_rsa
Eso nos pedirá la frase de paso que usamos para crearla, y la añadirá a la base de datos.

Prueba ahora y verás…

Ya puedes usar tu clave privada sin temor, y compartir la pública para poder acceder a otros servidores o pc’s sin tener que memorizar gran cantidad de claves.

Nota: Tras reiniciar o cerrar la sesión actual en tu sistema linux, se te volverá a pedir la clave de paso, pero puedes hacer que no te la vuelva a pedir pinchando en la opción “Desbloquear al iniciar sesión” …. o algo así XD

Bien, para terminar os recomiendo que impidáis el acceso mediante clave al server ssh.

¿Para qué?

Pues para evitar ataque de fuerza bruta y que intenten sacar el pass.

Accedemos a nuestro servidor:
 

ssh usuario@servidor.com
Ya no tendríamos que meter la clave… jejeje
Una vez dentro tendremos que editar nuevamente el archivo /etc/ssh/sshd_config
 

sudo nano /etc/ssh/sshd_config
Buscamos las siguientes líneas y nos aseguramos de que estén así:
 

#PasswordAuthentication yes
Y la dejamos así:
 

PasswordAuthentication no
Ahora reinicias el servicio ssh
 

sudo service ssh restart
Listo, ya no os pedirá contraseña normal y exigirá identificación por RSA.

Jun 13, 2013 - Nmap Tricks

10 trucos de Nmap

 

Nmap (“Network Mapper”) is a free and open source (license) utility for network exploration or security auditing. Many systems and network administrators also find it useful for tasks such as network inventory, managing service upgrade schedules, and monitoring host or service uptime.

In addition to my list you can also check out this Comprehensive Guide to Nmap here and of course the man pages
Here are some really cool scanning techniques using Nmap

1) Get info about remote host ports and OS detection

nmap -sS -P0 -sV -O <target>

Where < target > may be a single IP, a hostname or a subnet

-sS TCP SYN scanning (also known as half-open, or stealth scanning)

-P0 option allows you to switch off ICMP pings.

-sV option enables version detection

-O flag attempt to identify the remote operating system

Other option:

-A option enables both OS fingerprinting and version detection

-v use -v twice for more verbosity.

nmap -sS -P0 -A -v < target >

2) Get list of servers with a specific port open

**nmap -sT -p 80 -oG – 192.168.1.* grep open**

Change the -p argument for the port number. See “man nmap” for different ways to specify address ranges.

3) Find all active IP addresses in a network

nmap -sP 192.168.0.*

There are several other options. This one is plain and simple.

Another option is:

nmap -sP 192.168.0.0/24

for specific  subnets

4)  Ping a range of IP addresses

nmap -sP 192.168.1.100-254

nmap accepts a wide variety of addressing notation, multiple targets/ranges, etc.

5) Find unused IPs on a given subnet

nmap -T4 -sP 192.168.2.0/24 && egrep “00:00:00:00:00:00″ /proc/net/arp

6) Scan for the Conficker virus on your LAN ect.

nmap -PN -T4 -p139,445 -n -v –script=smb-check-vulns –script-args safe=1 192.168.0.1-254

replace 192.168.0.1-256 with the IP’s you want to check.

7) Scan Network for Rogue APs.

nmap -A -p1-85,113,443,8080-8100 -T4 –min-hostgroup 50 –max-rtt-timeout 2000 –initial-rtt-timeout 300 –max-retries 3 –host-timeout 20m –max-scan-delay 1000 -oA wapscan 10.0.0.0/8

I’ve used this scan to successfully find many rogue APs on a very, very large network.

8) Use a decoy while scanning ports to avoid getting caught by the sys admin

sudo nmap -sS 192.168.0.10 -D 192.168.0.2

Scan for open ports on the target device/computer (192.168.0.10) while setting up a decoy address (192.168.0.2). This will show the decoy ip address instead of your ip in targets security logs. Decoy address needs to be alive. Check the targets security log at /var/log/secure to make sure it worked.

9) List of reverse DNS records for a subnet

**nmap -R -sL 209.85.229.99/27 awk ‘{if($3==”not”)print”(“$2″) no
PTR”;else print$3″ is “$2}’ grep ‘(‘**

This command uses nmap to perform reverse DNS lookups on a subnet. It produces a list of IP addresses with the corresponding PTR record for a given subnet. You can enter the subnet in CDIR notation (i.e. /24 for a Class C)). You could add “–dns-servers x.x.x.x” after the “-sL” if you need the lookups to be performed on a specific DNS server. On some installations nmap needs sudo I believe. Also I hope awk is standard on most distros.

10) How Many Linux And Windows Devices Are On Your Network?

sudo nmap -F -O 192.168.0.1-255 | grep "Running: " > /tmp/os; echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"

Hope you have fun, and remember don’t practice these techniques on machines or networks that are not yours.

 

fuente : http://blog.urfix.com/10-cool-nmap-tricks-techniques/