Haciendo tu SSH mas seguro
Empecemos por lo básico que es SSH?
SSH (Secure SHell, en español: intérprete de órdenes seguro) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la computadora mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.
Además de la conexión a otras máquinas, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH.
Bueno, primero de todo vamos a Instalar nuestro paquete ssh en Linux, yo lo he echo desde Ubuntu, si utilizas otras distribución cambia en el comando el gestor de paquetes y listo.
Para instalar ssh hacemos:
seifreed@seifreed-linux-labs:~$ sudo aptitude install ssh
Esto nos instalará el paquete que necesitamos.
Ahora empezaremos haciendo SSH más seguro.
Tecleamos en el terminal, para editar el archivo. Por defecto en Ubuntu el archivo se encuentra en /etc/ssh/sshd_config:
seifreed@seifreed-linux-labs:~$ sudo nano /etc/ssh/sshd_config
Ahora vamos a mirar el archivo de configuración, recordad que las lineas que lleven# es que están comentados significan que no se leeran al ejecutar el servicio.
Cambiando el Puerto:
Por defecto SSH trabaja en el puerto 22, como esto ya es sabido por todos, los exploits y escaneos ya se centran en el puerto 22. Así que vamos a cambiarlo:
# What ports, IPs and protocols we listen for
Port 8142
Ahora ssh trabajará en el puerto 8142
Ahora veremos como funciona hagamos una prueba.
Recordad que todos los cambios efectuados requieren un reinicio del servicio,
para reiniciar ssh:
seifreed@seifreed-linux-labs:~$ sudo /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
Hagamos la prueba. Si hiciéramos una conexión ssh normal, lo haríamos de la siguiente manera:
seifreed@seifreed-linux-labs:~$ ssh seifreed@192.168.241.128
ssh: connect to host 192.168.241.128 port 22: Connection refused
Como podéis comprobar nos sale que la conexión no se puede realizar.
Ahora vamos ha hacer una conexión como se tendría que hacer una vez hemos cambiado el puerto
seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.128
The authenticity of host ‘[192.168.241.128]:8142 ([192.168.241.128]:8142)’ can’t be established.
RSA key fingerprint is 58:bd:21:76:a9:1d:cc:25:e2:76:fd:82:00:43:81:6c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[192.168.241.128]:8142′ (RSA) to the list of known hosts.
seifreed@192.168.241.128′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686
Cambiando direcciones Ip de escucha:
Por defecto SSH escucha a todo el mundo. Ahora en cambio sólo lo habilitaremos para una dirección:
# Use these options to restrict which interfaces/protocols sshd will bind to
ListenAddress 192.168.241.130
Reiniciamos el servicio y hagamos una prueba, nos conectamos desde una máquina con ip distinta a la 192.168.241.130:
seifreed@seifreed-linux-labs:~$ ifconfig eth0
eth0 Link encap:Ethernet direcciónHW 00:0c:29:86:4c:ed
Direc. inet:192.168.241.128 Difus.:192.168.241.255 Másc:255.255.255.0
Dirección inet6: fe80::20c:29ff:fe86:4ced/64 Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX:3834 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:3421 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:3415609 (3.4 MB) TX bytes:533316 (533.3 KB)
Interrupción:19 Dirección base: 0×2000seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.128
ssh: connect to host 192.168.241.128 port 8142: Connection refused
Ahora haremos la prueba desde una máquina que sí tenga la ip que queremos:
seifreed@seifreed-linux-labs:~$ ifconfig eth0
eth0 Link encap:Ethernet direcciónHW 00:0c:29:86:4c:ed
Direc. inet:192.168.241.130 Difus.:192.168.241.255 Másc:255.255.255.0
Dirección inet6: fe80::20c:29ff:fe86:4ced/64 Alcance:Enlace
ACTIVO DIFUSIÓN FUNCIONANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX:24398 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:11525 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:29914995 (29.9 MB) TX bytes:1406365 (1.4 MB)
Interrupción:19 Dirección base: 0×2000seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
seifreed@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686
Estableciendo Protocolo de SSH:
SSH puede trabajar con protocolo 1 o 2. Lo estabelecemos en 2. Aunque creo que por defecto en las nuevas versiones ya viene con protocolo 2 implementado.
Protocol 2
LoginGrace Time.
Con esto ponemos el tiempo en el que puede un usuario estar con la ventanita de introduce el password. Si pasa el tiempo que establecemos y no se autentica se le cierra la conexión. Para cambiar el parámetro, cambiamos esto del archivo de configuración:
# Authentication:
LoginGraceTime 30
Vamos a ver que pasa cuando nos pasamos del tiempo:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
seifreed@192.168.241.130′s password:
Connection closed by UNKNOWN
Conectarse como root.
Por defecto SSH hace que te puedas conectar como root a la máquina.
Veamos un ejemplo:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 root@192.168.241.130
root@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
root@seifreed-linux-labs:~#
Esto NO debería permitirse. Asi que cambiamos esta linea en el archivo de configuración:
# Authentication:
PermitRootLogin no
Y ahora hacemos la prueba:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 root@192.168.241.130
root@192.168.241.130′s password:
Permission denied, please try again.
root@192.168.241.130′s password:
No permitir contraseñas vacías.
Por defecto viene que no, pero no está de mas revisarlo.
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
X11Forwanding.
Con esto podríamos habilitar un ssh gráfico. En teroría si es un servidor lo dehjamos en NO.
X11Forwarding no
Autenticación mediantante certificados:
La manera mas segura de autenticarse contra un servidor SSH es mediante un certficado. Lo cambiamos a YES
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication yes
Encaminamiento:
SSH permite usar su propio cliente de encaminamiento. Para habilitarlo ponemos:
#Habilitar encaminamiento:
AllowAgentForwarding yes
Encaminamiento TCP:
Con esto podemos bailitar encaminamiento TCP
AllowTcpForwarding yes
Máximo de intentos de contraseña:
MaxStartups 4
Por defecto viene habilitado en 10. Nosotros los estableceremos a 3. Cuando haya fallado 3 veces se le cortará la conexión:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
seifreed@192.168.241.130′s password:
Permission denied, please try again.
seifreed@192.168.241.130′s password:Permission denied, please try again.
seifreed@192.168.241.130′s password:seifreed@192.168.241.130′s password:
Permission denied (publickey,password).
seifreed@seifreed-linux-labs:~$
Intento de conexión fallida guardada en Log.
Con esta línea lo que haremos es que, cuando llegue a la mitad del número que establecemos se guarda en un log:
Sep 5 16:28:59 seifreed-linux-labs sshd[12210]: Failed password for seifreed from 192.168.241.130 port 51527 ssh2
Ahora estableceremos nuestro cifrado seguro de SSH:
Ciphers aes128-ctr,aes256-ctr,arcfour256,arcfour,aes128-cbc,aes256-cbc
Habilitando mensaje para cuando nos conectemos por ssh,
ahora lo que hacemos quitar la almohadilla de esta linea:
Banner /etc/issue.net
Ahora editamos ese archivo y le ponemos el mensaje que queramos:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:
Habilitando usuarios:
Podemos hacer que sólo se puedan autenticar los usuarios que notros queramos:
#Usuarios permitidos
AllowUsers marc
Ahora veremos un ejemeplo:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:
Permission denied, please try again.
Ahora veremos si que nos deja entrar con el usuario que queremos:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 marc@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
marc@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug 31 13:33:16 UTC 2009 i686
Habilitando Grupos:
Ahora sólo permitiremos usuario que estén dentro un grupo determinado, veamos como dejamos ahora el archivo de configuración:
#Habilitando Usuarios
AllowUsers marc seifreed
#Habilitando grupos
AllowGroups users_ssh
Probemos ahora con el usuario seifreed que ahora lo tenemos dentro de los usuario permitidos:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:
Permission denied, please try again.
seifreed@192.168.241.130′s password:
ES decir aunque este en la lista de usuarios permitidos tambiñen ha de estar dentro del grupo que le hemos dicho ahora hagmaos la prueba con el user metido:
seifreed@seifreed-linux-labs:~$ ssh -p 8142 seifreed@192.168.241.130
Bienvenido al SSH seguro para la Comunidad De DragoNjar
seifreed@192.168.241.130′s password:
Linux seifreed-linux-labs 2.6.28-15-generic #51-Ubuntu SMP Mon Aug
Esconder versión SSH:
Código: snprintf(buf, sizeof buf, “SSH-%d.%d-%.100s\n”, major, minor, SSH_VERSION); por tanto, para eliminar/cambiar el banner sólo hace falta modificar la macro SSH_VERSION que está definida en version.h:
Código: #define SSH_VERSION “OpenSSH_4.5″
NOTA: no existe otra forma posible de hacer esto, ya que OpenSSH no lee el banner de un fichero, sino que está incrustado en el propio código.
Y hasta aquí para configurar nuestro servidor SSH.
Gracias a security by default y Sor_Zitroen de Wadalbertia por las ayudas.
Ubuntu one file sharing
Bueno vengo ha hablaros de un servicio que está en fase Beta que se llama Ubuntu one file sharing.
Nota: Este servicio es sólo compatible con Ubuntu 9.04
Aquí tenéis la página oficial
Que es Ubuntu One File Sharing?
Es un sistema de almacenamiento parecido a 4shared. Se puede sincronizar con los demás Ubuntu’s donde tengas instalado el cliente
Aquí tenemos la página principal:

Vamos a darle a Suscribe to Ubuntu One para hacer una cuenta nueva.

Como sólo lo queremos probar eligiremos la versión gratuita. Continuemos

Le damos a Continue y recibiremos al email. Para confirmar el registro. A través del email ppodremos completar los datos.

Ahora hacemos login en la página principal y entonces nos quedamos así::

Ahora vamos al paso 2. A instalar el cliente

Instalamos el software. Con esta aplicación añadimos el ordenador al plan Ubuntu One.
Una vez lo hayamos instalado bajamos hacai abajo e instalamos el cliente para Gnome

Este lo instalaremos en cada uno de los ordenadores que se conectarán.
Ahora abrimos la aplicación:

Cuando le demos se nos abrirá el navegador y nos volverá a preguntar sobre el plan que queremos elegir.

Lo agregamos y volvemos a darle a Ubuntu One y nos aparecerá un icono en la parte derecha.

Se nos abrirá un navegador y nos mostrará esto:

Aqui será donde subiremos los archivos. Se puede hacer carpetas y todo.
Vamos a darle a upload.

Como véis solo podemos subir un archivo a la vez.

Y coimo véis el fichero queda subido

Unhide
Leyendo Security By Default me entero que han sacado la nueva versión de Unhide. Podéis leer la noticia aquí.
Que es Unhide?
Unhide es una herramienta forense que permite descubrir procesos y puertos TCP/UDP ocultos por rootkits / LKMs o cualquier otra tecnica de ocultacion.
//Unhide (ps)
Permite identificar procesos que hayan sido ocultados. Implementa tres tecnicas:
- Comparacion de la informacion obtenida por /bin/ps frente a los directorios en /proc
- Comparacion de la informacion visible por /bin/ps frente a la que se puede obtener utilizando diversas sycalls del sistema (syscall scanning)
- Ocupacion por fuerta bruta del espacio de PIDs disponibles en el sistema (PIDs bruteforcing)
// Unhide-TCP
Permite identificar puertos TCP/UDP que esten a la escucha pero no aparezcan listados en /bin/netstat haciendo brute forcing sobre el espacio de puertos TCP/UDP disponibles en el sistema.
Instalación de Unhide en Ubuntu 9.04
Hemos de ejecutar estos comandos
pruebas@badiatech:~$ mkdir unhide
pruebas@badiatech:~$ cd unhide/
pruebas@badiatech:~/unhide$ wget http://mirrors.kernel.org/ubuntu/pool/universe/u/unhide/unhide_20071102-2_i386.deb
–2009-08-11 20:43:39– http://mirrors.kernel.org/ubuntu/pool/universe/u/unhide/unhide_20071102-2_i386.deb
Resolviendo mirrors.kernel.org… 130.239.17.6
Conectando a mirrors.kernel.org|130.239.17.6|:80… conectado.
Petición HTTP enviada, esperando respuesta… 200 OK
Longitud: 697424 (681K) [text/plain]
Guardando: «unhide_20071102-2_i386.deb»100%[======================================>] 697.424 53,0K/s en 16s
2009-08-11 20:43:56 (41,3 KB/s) – `unhide_20071102-2_i386.deb’ guardado [697424/697424]
pruebas@badiatech:~/unhide$ sudo dpkg -i unhide_20071102-2_i386.deb
Seleccionando el paquete unhide previamente no seleccionado.
(Leyendo la base de datos …
112964 ficheros y directorios instalados actualmente.)
Desempaquetando unhide (de unhide_20071102-2_i386.deb) …
Configurando unhide (20071102-2) …
Utilizando `/usr/sbin/unhide-linux26′ para proveer `unhide’.
Ahora ya tendremos instalado Unhide.
Pruebas con Unhide
- Analizando procesos

- Análisis de procesos ocultos.
- Análisis de procesos por fuerza bruta
Y por último también realiza un escaneo de puertos.

Parece ser que mi Ubuntu está sano!
Servidor Web en Windows en Linux y en MAC OS X
Ahora veremos como en las tres plataformas podemos habilitar un servidor web con unos sencillos pasos.
Pero..que es un servidor web:
Un servidor web es un programa que implementa el protocolo HTTP (HyperText Transfer Protocol). Este protocolo pertenece a la capa de aplicación del modelo OSI y está diseñado para transferir lo que llamamos hipertextos, páginas web o páginas HTML (HyperText Markup Language): textos complejos con enlaces, figuras, formularios, botones y objetos incrustados como animaciones o reproductores de música.
Es un programa que se ejecuta continuamente en un ordenador (también se emplea el término para referirse al ordenador que lo ejecuta), manteniéndose a la espera de peticiones por parte de un cliente (un navegador web) y que responde a estas peticiones adecuadamente, mediante una página web que se exhibirá en el navegador o mostrando el respectivo mensaje si se detectó algún error.
Instalación y prueba de Servidor Web en Windows
Lo que haremos primero es ir a la página web para descargar el paquete que nos permitirá descargar los archivos necesarios para la instalación del Servidor Web.

Una vez nos descarguemos el ejecutable y lo ejecutemos hará una serie de descargas para sus archivos.

Una vez se haya bajado el instalador necesario podremos elegir los componentes que queramos.

Elegimos lo que queramos y empezamos con la instalación:

Aquí tenemos un resumen de la instalación. Si estamos de acuerdo con lo que hemos seleccionado podemos continuar.

El instalador de Web Platform descargará las aplicaciones que necesite.

Se irán descargando y se irán instalando.
Una vez instalado veremos como queda ISS funcionando.

ISS también dispone de un panel de configuración

Y ahora veremos como queda el servidor web fucionando.

Y hasta aquí la configuración del servidor web en Windows.
Instalación en Linux
Lo que haremos será instalar los paquetes necesarios.

El comando que se ha de ejecutar como root es:
aptitude install libapache2-mod-chroot apache2 libapache2-mod-php5 php5-cli php5-common php5-cgi php5-mysql mysql-server-5.0 mysql-client-5.0 php5-gd sudo
Con esto tendremos el servidor web instalado. Ahora veremos como funciona

Y hasta aquí la configuración del servidor web en Linux.
Instalación del Servidor Web en MAC OS X
Primero de todo nos vamos a Preferencias.

Nos vamos al apartado de comparir o sharing

En sharing habilitamos la parte de Servidor Web

Y aqui podemos ver el servidor web funcionando.

Y hasta aqui como tener un servidor web funcionando.
