lunes, 31 de enero de 2011

SSH

En vuestros repositorios ya tenéis SSH dispuesto a instalar, así pues:
$ sudo apt-get install ssh
Una vez instalado se autoiniciará el demonio que ejecuta el servidor SSH y gestiona las solicitudes de login remoto.


 Configuracion: Mayor seguridad
Como decía antes no es muy inteligente usar SSH sin modificar el fichero de configuración del servidor. Vamos a modificar algunas opciones para conseguir una seguridad aceptable.
$ sudo gedit /etc/ssh/sshd_config
(nota) Si algunas de las opciones que aquí comento no aparecen en vuestro sshd_config, simplemente agregadlas. Podéis hacerlo donde queráis, aunque lo suyo es que lo hagáis al principio o al final para que sepáis cuales son las opciones que vosotros habéis agregado.
Vemos un fichero de configuración típico basado en “opción valor”. Vamos a comenzar las modificaciones por el puerto que es lo primero que vemos y una de las cosas más importantes. SSH usa por defecto el puerto 22. Esto significa que si no lo cambiamos estamos entregando a un caco que sabe la dirección de dónde vivimos (nuestra IP) también la llave del portal.
Cambiaremos el puerto para evitarlo. Esto no quita que el caco pueda intentar averiguar “el portal” si sabe cómo hacerlo pero al menos le ponemos impedimentos. También hay scripts que atacan directamente el puerto 22, por lo que el cambio de puerto es algo obligatorio. Poned el que queráis y abridlo también en el router para que podáis acceder a vuestro ordenador desde otro. Usaremos por ejemplo el 4321, podéis poner el que queráis. Así pues en el fichero de configuración:
port 4321
Un poco más abajo buscad la opción “Protocol” debe estar a valor 2, si no es así (valor 1 ó 2,1 ponedla. Hay dos versiones de protocolo SSH. La primera está ya en desuso y tiene varias vulnerabilidades. Así debéis dejarlo en vuestra configuración:
Protocol 2
Buscad la sección “Authentication”. Sus dos primeras opciones son también importantes. La primera es el número de segundos que tendrá el usuario remoto para hacer login en tu máquina. Poned ese valor a pocos segundos, no tardamos mucho en hacer login si sabemos la cuenta y la password. De esta forma evitamos ciertos scripts que se aprovechan de ese tiempo. El valor típico en términos de seguridad es 30, aunque podéis poned incluso menos si estáis más conformes.
LoginGraceTime 30
Justo debajo tenéis otras de las opciones más importantes, PermitRootLogin. Si antes usé la metáfora del caco y el portal, esta opción viene a ser que le digáis también en qué planta del bloque de pisos vivís y qué puerta, faltándole sólo la llave. Con esto lo que insinúo es que si sabe por qué puerto entrar, tan sólo le queda averiguar dos datos: el nombre de una cuenta y su contraseña.
Si tenemos esta opción habilitada (yes) el caco ya tiene la mitad del trabajo hecho, pues el usuario “root” existe en todas las máquinas GNU/Linux, tan sólo le queda averiguar la contraseña. Por eso es más que recomendable deshabilitar esta opción. No os preocupéis los que tenéis en mente usar SSH para hacer un uso administrativo, podéis hacerlo con vuestra cuenta y sudo sin problema alguno. Así pues…
PermitRootLogin no
También podéis señalar con el dedo las cuentas que tienen permitido el uso SSH (AllowUsers). Pongamos un ejemplo, que es como mejor se entienden las cosas: Supongamos que tienes un amigo con el que quieres compartir algo vía SSH y además tiene un hermano que es un enreda y en el que no confías por si te la puede liar. Llamaremos a las cuentas “amigo” y “pesado” respectivamente. Para restringir el uso de SSH a tu amigo y a tu propia cuenta (llamémosla “pepino”) podemos indicárselo mediante configuración. Incluso podemos indicar también que tu amigo sólo se pueda conectar a tu ordenador desde el suyo, sabiendo su IP (supongamos que es 83.45.258.21). Pondríamos en la configuración:
AllowUsers pepino amigo@83.45.258.21
De esta forma tú podrías usar tu cuenta (pepino) para conectar a tu equipo desde cualquier lugar, tu amigo podría hacerlo sólo desde su ordenador (si tiene esa IP) y tu hermano no podría conectar a tu máquina vía SSH, si no tiene tu cuenta.
Otra opción interesante es el número de intentos que tiene el usuario remoto para hacer login (MaxAuthTries). Como comenté antes, quien intente conectar debe acordarse de su login y password, por lo que es tontería darle un número grande de intentos. En principio con dos son más que suficientes. Si al segundo intento no lo ha conseguido se cortará la conexión SSH. Siempre se puede volver a conectar y reintentarlo, pero así nos quitamos de encima ciertos scripts que intentan encontrar el login por fuerza bruta a base de ensayo y error.
MaxAuthTries 2
Por último hay otra opción que define el número máximo de usuarios conectados simultáneamente a tu máquina. Esto ha de adaptarse a tus propias necesidades. Si estamos hablando de un ordenador personal donde sólo vas a conectar tú, pues lo lógico sería que como mucho hubiera una. Si estamos hablando de un ordenador que hará las veces de servidor compartiendo una carpeta a varias máquinas, deberás decidir cuántos son. Cuanto tengas claro el número indícalo en la opción siguiente en lugar de la ‘X’:
MaxStartups X
Ya podéis guardar y cerrar gedit. Con esto tenéis un servidor SSH bastante seguro. Como comenté antes nunca es 100% seguro pero a priori podéis estar bien tranquilos. Sólo resta reiniciar el propio servidor SSH para que tome los cambios que hemos efectuado en su configuración. Escribid en consola:
$ sudo /etc/init.d/ssh restart
Un último consejo. Como habéis visto podemos poner trabas al caco en cuanto a nuestra dirección y puerta, pero ¿podemos ponerle problemas con la llave? La llave se entiende que es la contraseña. Y la respuesta es afirmativa. Podéis hacerlo pero vosotros mismos. Poned claves en condiciones a vuestras cuentas. Usad como poco 5 ó 6 caracteres y a ser posible que se entremezclen mayúsculas, minúsculas y números, por ejemplo: entr3TuXeSyp3p1n0s.
Es un ejemplo exagerado, enrevesado a la hora de escribir e incómodo para meterlo en sudo cada dos por tres, pero intentad que sea del estilo y procurad que no sea algo tan simple como vuestro nombre, el de vuestra mascota, vuestra fecha de nacimiento, grupo favorito, etc.

VSFTPD

Opciones de demonios

La lista siguiente presenta las directrices que controlan el comportamiento general del demonio vsftpd.
  • listen — Cuando está activada, vsftpd se ejecuta en modo independiente. Red Hat Enterprise Linux configura este valor a YES. Esta directriz no se puede utilizar en conjunto con la directriz listen_ipv6.
    El valor predeterminado es NO.
  • listen_ipv6 — Cuando esta directriz está activada vsftpd se ejecuta en modo independiente, pero solamente escucha a los sockets IPv6. Esta directriz no se puede utilizar junto con la directriz listen.
    El valor predeterminado es NO.
  • session_support — Si está activada, vsftpd intentará mantener sesiones de conexión para cada usuario a través de Pluggable Authentication Modules (PAM).

Opciones de conexión y control de acceso

La siguiente es una lista de las directrices que controlan el comportamiento de los inicios de sesión y los mecanismos de control de acceso.
  • anonymous_enable — Al estar activada, se permite que los usuarios anónimos se conecten. Se aceptan los nombres de usuario anonymous y ftp.
    El valor por defecto es YES.

  • banned_email_file — Si la directriz deny_email_enable tiene el valor de YES, entonces esta directriz especifica el archivo que contiene una lista de contraseñas de correo anónimas que no tienen permitido acceder al servidor.
    El valor predeterminado es /etc/vsftpd.banned_emails.
  • banner_file — Especifica un archivo que contiene el texto que se mostrará cuando se establece una conexión con el servidor. Esta opción supersede cualquier texto especificado en la directriz ftpd_banner.
    Esta directriz no tiene un valor predeterminado.
  • cmds_allowed — Especifica una lista delimitada por comas de los comandos FTP que permite el servidor. Se rechaza el resto de los comandos.
    Esta directriz no tiene un valor predeterminado.
  • deny_email_enable — Si está activada, se le niega el acceso al servidor a cualquier usuario anónimo que utilice contraseñas de correo especificadas en /etc/vsftpd.banned_emails. Se puede especificar el nombre del archivo al que esta directriz hace referencia usando la directriz banned_email_file.
    El valor predeterminado es NO.
  • ftpd_banner — Si está activada, se muestra la cadena de caracteres especificada en esta directriz cuando se establece una conexión con el servidor. banner_file puede sobreescribir esta opción.
    Por defecto, vsftpd muestra su pancarta estándar.
  • local_enable — Al estar activada, los usuarios locales pueden conectarse al sistema.
    El valor por defecto es YES.

  • pam_service_name — Especifica el nombre de servicio PAM para vsftpd.
    El valor predeterminado es ftp, sin embargo, bajo Red Hat Enterprise Linux, el valor es vsftpd.
  • tcp_wrappers — Al estar activada, se utilizan TCP wrappers para otorgar acceso al servidor. También, si el servidor FTP está configurado en múltiples direcciones IP, la opción VSFTPD_LOAD_CONF se puede utilizar para cargar diferentes archivos de configuración en la dirección IP solicitada por el cliente.
    El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux el valor está configurado a YES.
  • userlist_deny — Cuando se utiliza en combinación con la directriz userlist_enable y con el valor de NO, se les niega el acceso a todos los usuarios locales a menos que sus nombres esten listados en el archivo especificado por la directriz userlist_file. Puesto que se niega el acceso antes de que se le pida la contraseña al cliente, al configurar esta directriz a NO previene a los usuarios locales a proporcionar contraseñas sin encriptar sobre la red.
    El valor por defecto es YES.
  • userlist_enable — Cuando está activada, se les niega el acceso a los usuarios listados en el archivo especificado por la directriz userlist_file. Puesto que se niega el acceso al cliente antes de solicitar la contraseña, se previene que los usuarios suministren contraseñas sin encriptar sobre la red.
    El valor predeterminado es NO, sin embargo, bajo Red Hat Enterprise Linux el valor está configurado a YES.
  • userlist_file — Especifica el archivo al que vsftpd hace referencia cuando la directriz userlist_enable está activada.
    El valor predeterminado es /etc/vsftpd.user_list y es creado durante la instalación.
  • cmds_allowed — Especifica una lista separada por comas de los comandos FTP que permite el servidor. Cualquier otro comando es rechazado.
    Esta directriz no tiene un valor predeterminado.

Opciones de usuario anónimo

A continuación, se presenta una lista de las directrices que controlan el acceso de usuarios anónimos al servidor. Para utilizar estas opciones, la directriz anonymous_enable debe tener el valor de YES.
  • anon_mkdir_write_enable — Cuando se activa en combinación con la directriz write_enable, los usuarios anónimos pueden crear nuevos directorios dentro de un directorio que tiene permisos de escritura.
    El valor predeterminado es NO.
  • anon_root — Especifica el directorio al cual vsftpd cambia luego que el usuario anónimo se conecta.
    Esta directriz no tiene un valor predeterminado.
  • anon_upload_enable — Cuando se usa con la directriz write_enable, los usuarios anónimos pueden cargar archivos al directorio padre que tiene permisos de escritura.
    El valor predeterminado es NO.
  • anon_world_readable_only — Si está activada, los usuarios anónimos solamente pueden descargar archivos legibles por todo el mundo.
    El valor por defecto es YES.
  • ftp_username — Especifica la cuenta del usuario local (listada en /etc/passwd) utilizada por el usuario FTP anónimo. El directorio principal especificado en /etc/passwd para el usuario es el directorio raíz del usuario FTP anónimo.
    El valor por defecto es ftp.
  • no_anon_password — Cuando está activada, no se le pide una contraseña al usuario anónimo.
    El valor predeterminado es NO.
  • secure_email_list_enable — Cuando está activada, solamente se aceptan una lista de contraseñas especificadas para las conexiones anónimas. Esto es una forma conveniente de ofrecer seguridad limitada al contenido público sin la necesidad de usuarios virtuales.
    Se previenen las conexiones anónimas a menos que la contraseña suministrada esté listada en /etc/vsftpd.email_passwords. El formato del archivo es una contraseña por línea, sin espacios al comienzo.
    El valor predeterminado es NO.

Opciones del usuario local

La siguiente es una lista de las directrices que caracterizan la forma en que los usuarios locales acceden al servidor. Para utilizar estas opciones, la directriz local_enable debe estar a YES.
  • chmod_enable — Cuando está activada, se permite el comando FTP SITE CHMOD para los usuarios locales. Este comando permite que los usuarios cambien los permisos en los archivos.
    El valor por defecto es YES.
  • chroot_list_enable — Cuando está activada, se coloca en una prisión de chroot a los usuarios locales listados en el archivo especificado en la directriz chroot_list_file.
    Si se utiliza en combinación con la directriz chroot_local_user, los usuarios locales listados en el archivo especificado en la directriz chroot_list_file, no se colocan en una prisión chroot luego de conectarse.
    El valor predeterminado es NO.
  • chroot_list_file — Especifica el archivo que contiene una lista de los usuarios locales a los que se hace referencia cuando la directriz chroot_list_enable está en YES.
    El valor por defecto es /etc/vsftpd.chroot_list.
  • chroot_local_user — Si está activada, a los usuarios locales se les cambia el directorio raíz (se hace un chroot) a su directorio principal luego de la conexión.
    El valor predeterminado es NO.

Servidor y cliente FTP

Servidor FTP

Un servidor FTP es un programa especial que se ejecuta en un equipo servidor normalmente conectado a Internet. Su función es permitir el intercambio de datos entre diferentes servidores/ordenadores.
Por lo general, los programas servidores FTP no suelen encontrarse en los ordenadores personales, por lo que un usuario normalmente utilizará el FTP para conectarse remotamente a uno y así intercambiar información con él.
Las aplicaciones más comunes de los servidores FTP suelen ser el alojamiento web, en el que sus clientes utilizan el servicio para subir sus páginas web y sus archivos correspondientes; o como servidor de backup (copia de seguridad) de los archivos importantes que pueda tener una empresa. Para ello, existen protocolos de comunicación FTP para que los datos se transmitan cifrados, como el SFTP (Secure File Transfer Protocol).

Cliente FTP

Cuando un navegador no está equipado con la función FTP, o si se quiere cargar archivos en un ordenador remoto, se necesitará utilizar un programa cliente FTP. Un cliente FTP es un programa que se instala en el ordenador del usuario, y que emplea el protocolo FTP para conectarse a un servidor FTP y transferir archivos, ya sea para descargarlos o para subirlos.
Para utilizar un cliente FTP, se necesita conocer el nombre del archivo, el ordenador en que reside (servidor, en el caso de descarga de archivos), el ordenador al que se quiere transferir el archivo (en caso de querer subirlo nosotros al servidor), y la carpeta en la que se encuentra.
Algunos clientes de FTP básicos en modo consola vienen integrados en los sistemas operativos, incluyendo Miscrosoft Windows, DOS, GNU/Linux y Unix. Sin embargo, hay disponibles clientes con opciones añadidas e interfaz gráfica. Aunque muchos navegadores tienen ya integrado FTP, es más confiable a la hora de conectarse con servidores FTP no anónimos utilizar un programa cliente.

domingo, 19 de diciembre de 2010

Apuntes FTP

El puerto 20, para la transferencia de datos
el pureto 21, para la transferencia de ordenes (control).

Conexion modo activo:
la conexion para la tranferencia de datos es inciada por el servidor utilizando el puerto indicado por el cliente FTP.
Conexion modo pasivo: el cliente FTP inicia la xonexion para la tranferencia de datos utilizando el puerto que indica el servidor.

Conexion  modo activo
1. el cliente manda el comando PORT y el puerto 1036 desde su puerto de control 1035.
2. el servidor envia al cliente el comando ACK por el puerto de control 21 del servidor.
3. el servidor FTP envia datos desde su puerto de datos, el puerto 20.
4. el cliente envia el comando ACK por el puerto de datos, el puerto 1036.

Conexion en modo pasivo
1. El cliente manda comando PASV desde el puerto de control, puerto 1035.
2. El servidor FTP responde con un puerto > 1023 desde su puerto de control, puerto 21.
3. El cliente inicia la conexion de datos desde el puerto 1036 a un puerto aleatorio del servidor desde el puerto de datos 1036.
4. El servidor envia el comando ACK desde su puerto de datos, puerto 2040
5. el cliente cierra la conexion desde su puerto de datos, puerto 1036

Apuntes

1) Netstat -atnp
2) Convienen tener en cuenta que, al igual que existen buscadores we bde tipo heneral, tambien hay buscadores especificos sobre servidores FTP anonimos. las herramientas mas habituales een este tipo de buscadores son FTPSearch y Archie. Sin embargo, las operaciones se centran solo en los nombres de archivo y no son tan eficientes como los buscadores web.
3) Con la orden netstat
4) El ftp seguro brinda una autorizacion segura, integridad y privacidad en la tranferencia de datos mediente protocolos ssh
5) Es mas segura la ejecucion del servidor en modo standlone ya que se envia la ejecucion de otro proceso adicional que puede generar mayor inseguridad si no se configura correctamente
6) Intruccion unidad
7)
8)
9) Al que tenga por home
al home de los anonimos o al svr
10) Si
11) Los clientes FTP son independientes de los servidores FTP. lo unico importante es que el servidor FTP este activo y a la escucha de peticiones de conexiones FTP. el cliente FTP lo que hace es la peticion de conexio
12) Abrir la herramienta qFTP e ir a la opcion Marcadores
13) No porque las tranferencias de los datos, usuarios y contraseñas se realizan en texto plano por la red, con lo cual un usuario medio utilizando un sniffer podria capturar las contraseñas
14) FTPS es el nombre usado para indicar que FTP realiza transferencias de archivos seguras
se base en la utilizacion de protocolo SSL para cifrar tanto el canal de control como el de datos
15) Si al descargar un archivo de un servidor FTP se quiere cambiar su nombre, hay que ejecutar la siguiente orden
ftp> getr archivo.txt

16) FTP PASV Y RETR
17) Intrucciones unidad
18) Esta web permite el alojamiento gratis: http://www.tripod.lycos.es/. se puede utilizar esta o cualquier otra que sea gratuita y sirva para hacer la prueba


19) No debe confundirse el protocolo de transferencia de ficheros SFTP y FTPS.
FTPS se base en la utilizacion de protocolo SSL. SFTP es un protocolo diferente que asegura las transferencias basandose en SSH. Tanto SFTP como FTPS utilizan un metodo de clave publica RSA para el que se cifra la conexion mediante SSL. SFTP es un modulo o una funcionalidad adicional del servicio SSH que utiliza el puerto 22.
20) Bastara con dirigirse a la pantalla de configuracion de las opciones generales y modificar el texto weolcome banner text.
21)Realiza la conexion como de costumbre desde el navegador y localiza el archivo de filezilla
22) Intrucciones unidad
23)




test

1) b
2) a
3) d -puerto 20
4) Es una cuenta de usuario especial que permite a los usuarios acceder a un servidor sin tener en cuenta porpia de acceso
5) El servidor FTP en una conexion anonima requiere autenticacion como usuario anonymous y como contraseña, una direccion de correo electronico
6) b -a traves del puerto 21
7)b binary
8)d -la creacion de colas de descargas
9)b -resume
10) Por lo general, este directorio se utiliza para almacenar los archivos que suben al servidor FTP los usuarios anonimos.
11) Cuando un usuario accede a un FTP de forma anonima en realidad esta accediendo como un usuario establecido el sistema, que suele llamarse ftp, si bien no wexiste un usuario anonymous
12) Si existe un protcolo, llamdno fxp, que permite la tranferencia entre servidor FTP remotos incluso como usuarios anonimos.
13) Es falsa. puede modificarse los permisos de forma grafica o con la orden chmod, dependiendo de los permisos del archivo.
14) b)ftp> get archivo.txt archivo_local.txt
15) Utilizando la herramienta grafica de servicios. para eloshabria que abrir:
sistema-administracion-servicios
en windows control alt suprimir y pestaña procesos.
16) En la pagina web de security space

domingo, 21 de noviembre de 2010

Apuntes Examen TEMA 3

Archivo de configuracion sshd_config


PermitRootLogin no: indica que el usuario administrador root no puede conectarse a la máquina remota como tal.
RSAAuthentication yes: indica que está permitida la autenticacion por clave RSA.
PubkeyAuthentication yes: informa de que esta permitida la auntenticacion por clave publica.
RhostsAuthentication no: indica que no se permite el metodo de autenticacion por rhost, es decir, no se habilita la posibilidad de generar un archivo .rhost en el directorio home del usuario en la maquina remota. en este archivo se especifican usuarios y máquinas desde las que se puede acceder a la maquina remota sin contraseña.
HostbasedAuthentication no: informa de que no se utiliza el metodo de autenticacion por host, sino por usuario.
X11Forwarding yes: avisa de que se permite, a los clientes que se conecten, ejecutar aplicaciones de X Window y transmitir la informacion grafica sobre la conexion segura.
MaxAuthTries nn: establece el numero maximo de intentos de conexion. es muy importante establecer un valor razonable ya que se evitarian los ataques basados en la fuerza bruta.

Autenticacion de usuarios

Autenticacion por contraseña.
SSH permite autenticar a un usuario utilizando su contraseña. Para ello, cada vez que el usuario quiera establecer una conexion, se le pide una contraseña que se envia al servidor. Este comprueba que el usuario existe y que la clave introducida es correcta. La validacion utilizada en el servidor se basaria en el archivo /etc/shadow, el procedimiento tipico para los sistemas Unix o basados en el.
Este metodo, aunque tiene el inconveniente de requerir al usuario su contraseña cada vez que quiera establecer una sesion, por lo menos no realiza el envio del login y la contraseña en texto plano.

Auntenticacion por clave publica
La segunda alternativa de autenticacion utiliza un esquema de vlace publica/privada generadas por el usuario. Tambien se conoce como clave asimetrica y se aplica al usuario. En este caso se reucrre a los elementos siguientes:
1. Una clave publica, que se copia a todos los servidores a los que el usuario quieres conectarse.
2. Una clave privada que solo posee el usuario. Para mayor seguridad, esta cifrada con una frase de paso.
Ambas claves poseen una caracteristica importante: un texto cifrado con la clave publica solo puede descifrarse mediante la clave privada correspondiente, mientras que un texto cifrado con la clave privada solo puede descifrarse mediante su clave publica asociada.

jueves, 18 de noviembre de 2010

Casos Prácticos TEMA 3

Caso práctico 1. El cliente Ubuntu se conecta al servidor del aula(192.168.1.149) de forma segura mediante SSH y tambien, con un enlace o acceso directo. Tambien mediante nautilus(explorador de ubuntu) y con el putty.
 



 Caso práctico 2. Conseguir ejecutar de forma segura aplicaciones gráficas remotas utilizando SSH entre máquinas Linux, con la aplicación xeyes, por ejemplo.



Caso práctico 3. Realizar la instalacion del servidor SSH utilizando Webmin. Es imprescindible para instalarlo mediante Webmin, haberlo instalado previamente mediante el Synaptic.
 




Caso práctico 4. Conseguir entrar al servidor mediante el cliente con una autenticacion por contraseña mediante el usuario que cada uno tenga en el servidor.