FTP
Transferencia de archivo entre
sistemas a través de redes TCP/IP.
El
puerto 20 para transferencia de datos y puerto 21 para transferencia de
órdenes.
CONTROL: 192.168.128.10:1035 → IP ftp: 21
DATOS: 192.168.128.10:1036 → IP ftp: 20
MODO ACTIVO
El
propio servidor toma la iniciativa, y se usa el puerto 21 para el CONTROL y 21
para los DATOS.
El
servidor NO toma iniciativa y solo se usa el 21 para el CONTROL, y cada vez se
abre un puerto nuevo para los DATOS cada vez.
# apt-cache search vsftp
# apt-get install
vsftpd
# service vsftpd
start
Veo
que existe el proceso corriendo del FTP:
# ps aux|grep ftp
Y que el servicio está a la escucha:
# netstat -natup
Busco el archivo
syslog:
# find / -name syslog
Veo los ultimos sucesos ocurridos en el sistema:
# tail -n 10 /var/log/syslog
En el navegador de la Máquina Real:
ftp://192.168.128.226/
He creado con nano un fichero dentro de /srv/ftp un archivo llamado hola:
Ahora vamos a instalar el filezilla y vamos a configurar el
acceso ftp.
En el servidor ftp, vamos al fichero de configuración.
# nano /etc/vsftp.conf
Descumentamos para habilitar los usuarios
locales local_enable=YES
Descumentamos para dejar escribir a los
usuarios locales write_enable=YES
Para que el usuario vea su propia carpeta y
no las demás:
chroot_local_user=YES
Cambias el mensaje de Bienvenida:
ftpd_banner=Bienvenido al Servidor FTP de
MJesus
Siempre reiniciamos el servidor ftp después de cada cambio:
$ service vsftpd restart
Y por supuesto, creamos el/los usuario/s local en la maquina:
$ adduser pepe
Mirar enlace:
Se instalan los 2 servicios, el de servidor ftp y
openssl
# apt-get install vsftpd openssl
Creas los certificados SSL:
Creamos la carpeta /etc/ssl/private y
le cambiamos los permisos total para root.
# mkdir -p /etc/ssl/private
# chmod 700 /etc/ssl/private
Lo creo:
# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout
/etc/ssl/private/vsftpd.pem -out
/etc/ssl/private/vsftpd.pem
Configuración:
Copio y pego esta configuración tal cual al
final del fichero.
# nano /etc/vsftpd.conf
# Turn on SSL
ssl_enable=YES
# Allow anonymous users to use
secured SSL connections
allow_anon_ssl=YES
# All non-anonymous logins are
forced to use a secure SSL connection in order to
# send and receive data on data
connections.
force_local_data_ssl=YES
# All non-anonymous logins are
forced to use a secure SSL connection in order to send the password.
force_local_logins_ssl=YES
# Permit TLS v1 protocol
connections. TLS v1 connections are preferred
ssl_tlsv1=YES
# Permit SSL v2 protocol
connections. TLS v1 connections are preferred
ssl_sslv2=NO
# permit SSL v3 protocol
connections. TLS v1 connections are preferred
ssl_sslv3=NO
# Disable SSL session reuse
(required by WinSCP)
require_ssl_reuse=NO
# Select which SSL ciphers
vsftpd will allow for encrypted SSL connections (required by FileZilla)
ssl_ciphers=HIGH
# This option specifies the
location of the RSA certificate to use for SSL
# encrypted connections.
Reiniciamos el servicio:
# service vsftpd restart
Recuerda crear el usuario:
# adduser marta
Comprobamos su funcionamiento en filezilla:
Usaremos la distribución Open Media Vault, es un servidor NAS.
Va más allá que un ftp, porque lo tengo es almacenamiento en red.
Este servidor incluirá el FTP, ssh, samba, …
Inicializamos la máquina.
Nos logeamos con usuario y contraseña, y elegimos el idioma.
Entramos en el Panel.
•
SMB
es el sistema de compartición por defecto de Windows.
•
FTP
es el servidor de compartición de archivos, como ya se ha visto
•
SSH
es la conexión remota y segura a un servidor.
Vamos a usar principalmente estos 3 servicios.
Gestión de Raid:
Actualmente tengo un HD de 8 GB
Vamos a crear 2 discos duros virtuales nuevos:
Almacenamiento /
Agregar disco
Agregamos
estos 2 discos a un sistema RAID:
Recuerda que debes montar el sistema RAID creado:
Creamos el usuario, el grupo donde integramos al
usuario, compartimos una carpeta de este volumen creado y le damos los privilegios:
Habilitamos
el FTP y la compartimos:
Ahora probamos que funciona correctamente.
ftp://192.168.128.203
usuario: maria
pass: maria
Que podemos configurar en el FTP, …
Configuración
Nº de conexiones, Tiempo limite, acceso al root, FTP anonimo,
Podemos limitar un rango de puertos para el FTP, …
FTP con SSL
1º creamos un certificado
en su sección, y 2º volvemos a esta pestaña.
Deben estar picadas la 1ª y 3ª opción, aunque no se vea
explicitamente en la imagen:
Conectamos 2 nodos de forma segura.
La conexión sería: $ ssh usuario@host
Habilitar compresión significa que al conectarme a un Open Media Vault con una
conexión lenta, se comprime todo y se envía así y allí se descomprime. Así va
algo más rápido.
Puedes ver en tu maquina real que en $ nano /home/mjesus/.ssh/known_hosts se ha creado la conexión.
Encendemos una maquina virtual e instalamos el ssh:
$apt-get install ssh
El cliente ssh siempre está instalado en Linux, pero no el
servidor.
Nos vamos a:
$ nano /etc/ssh/sshd-config
•
Puerto 22 donde se
hace la escucha:
Lo veo con netstat -natup|grep
sshd vemos como el demonio
ssh está a la escucha en todas las interfaces en el puerto 22. Lo tengo
repetido para IPv4 e IPv6.
Si solo quiero hacer escuchas sobre una sola IP cuando tengo
varias tarjetas de red, configuro el ListenAddress para sola esa IP.
•
También saber que
usamos el Protocolo 2 porque el protocolo 1 posee agujeros de seguridad.
EJ:
Cambio la configuración de sshd-config: $ nano /etc/ssh/sshd-config
Reinicio el servicio ssh: $ service ssh restart
Y miro de nuevo el LISTEN: $ netstat -putan|grep sshd
Reinicio el servicio ssh: $ service ssh restart
Me conecto desde mi ordenador por ssh: $ ssh root@192.168.128.226
Ahora vamos a cambiar la clave publica del
servidor a ver que pasa, …
Me voy a mi PC y miro este fichero:
Veo que me he conectado mediante rsa.
En mi Servidor veo las claves publicas
generadas:
$ cd /etc/ssh
Verifico que corresponde al 1er certificado
de mi PC, ya que ambos certificados terminan igual.
Borro esta linea del PC.
Ahora intento conectarme y el servidor me
pregunta de nuevo si quiero conectarme.
** En windows usamos el PUTTY
En Linux es scp y en Windows es winscp.
El SCP es igual que CP pero seguro. Copiado
de archivos seguros.
scp
origen = /var/www/index.php
destino = @:
Si no pongo ubicación lo guarda por defecto
en el home del usuario que se conecta.
$ ssh -L
puerto_local:host_local:puerto_remoto usuario@host_remoto
Instalamos el APACHE en nuestro servidor: $apt-get apache2
Vamos a crear el tunel desde mi maquina
hacia el puerto 80 de la maquina 192.168.128.226
$ ssh -L 3000:127.0.0.1:80
root@192.168.128.226
1.
Nos
vamos a construir un certificados.
2.
Le
vamos a dar nuestra clave publica.
3.
Nos
conectarnos.
1.
Creo
las claves (certificados)
En mi maquina local:
$ ssh-keygen -t rsa → tipo de certificado rsa(si no pones nada te lo hace por defecto de este tipo)
$ ssh-keygen -t rsa → tipo de certificado rsa(si no pones nada te lo hace por defecto de este tipo)
Veo mis contraseñas:
$ cd /home/mjesus/.ssh/
$ ls -l
2.
Le
paso el .pub (publico)
Hay que pasarlo al servido a la ruta: /root/.ssh/authorized_keys
Posibilidad 1: $ scp id_rsa.pub
root@192.168.128.226:/root/.ssh
Posibilidad
2: ssh-copy-id
$ ssh-copy-id -i root@192.168.128.226
Me pide mi contraseña de la clave privada
cuando me intento conectar.
IMPORTANTE:
Siempre uso mi contraseña privada para
conectarme a todos los servidores, y así no tengo que saber las contraseñas
root de todos ellos, solo la mía privada.
También controlas quién se conecta a los
servidores, que usuarios.
Para usar la autentificación de claves
privadas y publicas, debemos usar:
RSAuthentication yes
PubkeyAuthentication
yes
AuthorizedKeysFile %h/.ssh/authorized_keys
Si quiero cambiar la ubicación de estos accesos
o el nombre del archivo que lo guarda, solo tengo que cambiar esta ruta o el
nombre del fichero.