jueves, 27 de diciembre de 2012

Servidor FTP en Ubuntu

Instalando VSFTPD
La instalación de VSFTPD es relativamente sencilla , solo debemos teclear en un terminal el siguiente comando.

sudo apt-get install vsftpd

Configuración del fichero vsftpd.conf

La configuración de vsftpd.conf es el  primer paso que debemos realizar cuando instalamos este servicio de vsftpd, antes que nada debemos realizar una copia de respaldo de este archivo para ello utilizaremos el siguiente comando.



una vez realizada nuestra copia de respaldo procederemos a editar el archivo vsftpd.conf  el que se encuentra en la siguiente ruta  /etc/vsftpd.conf Para llevar a cabo la configuración de este archivo recomiendo usar el editor de textos NANO. en consola anotamos lo siguiente.





en la imagen anterior se presentaran las diferentes opciones que pueden ser habilitadas o negadas en el fichero de configuración vsftpd.conf .  


la  siguiente  configuración corresponde a usuarios enjaulados.


# Para que se ejecute vsftpd en modo independiente. No se puede utilizar en conjunto con listen_ipv6
listen=YES
# No permitimos que se conecten usuarios anónimos.
anonymous_enable=NO
# Permitimos que los usuario locales se puedan conectar.
local_enable=YES
# Permitimos poder hacer modificaciones.
write_enable=YES
# Muestra un mensaje cada vez que un usuario entra en un directorio.
dirmessage_enable=YES
# Vsftpd registra las conexiones y la información de transferencia, por defecto en /var/log/vsftpd.log
xferlog_enable=YES
# Se puede reemplazar el archivo de registro donde va, si quieres. El valor por defecto se muestra A continuación.
xferlog_file=/var/log/vsftpd.log
# Se permite que el servidor vsftpd abra el puerto 20, para ponerse a la escucha de peticiones.
connect_from_port_20=YES
# Mensaje de bienvenida al conectarse mediante un cliente ftp
ftpd_banner=Bienvenidos al Servidor FTP UBUNTU.
# Permitimos a los usuarios locales que puedan estar en su propio directorio.
chroot_local_user=YES
# Con esta opción los usuarios locales que se encuentren en el fichero indicado por chroot_list_file estarán enjaulados en su directorio.
chroot_list_enable=YES
# Especifica el fichero que contiene los usuarios a que pueden moverse en el servidor FTP incluso estando enjaulados.
chroot_list_file=/etc/vsftpd.chroot_list
# Esta opcion especifica el nombre de un directorio vacio. También el directorio no tiene que tener privilegios para el usuario de ftp. Este es un directorio usado como una jaula segura chroot y aveces no requiere de aceso al sistema de ficheros los usuarios en esta lista pueden
secure_chroot_dir=/var/run/vsftpd
# Especifica el nombre de PAM (Pluggable Authentication Modules) para vsftpd
pam_service_name=vsftpd
# Esta opción especifica la localización del certificado RSA para usar conexiones SSL. Esta opción viene por defecto.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
# Esta opción especifica la localización de la clave privada para las conexiones SSL.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
Umask por defecto para los usuarios locales es 077. Es posible que desee cambiar esto a 022,
si los usuarios esperan que (022 es utilizado por la mayoría de otros ftpd)
local_umask=022
# Si se activa, vsftpd mostrará los listados de directorios con el tiempo
# En su zona horaria local. El valor predeterminado es mostrar GMT. la
# Veces devueltos por el comando FTP MDTM también se ven afectados por esta
# Opción.
use_localtime=YES
##########################################################
Iniciar , detener o reiniciar el servidor FTP
Para iniciar el servidor FTP por primera vez solo deberemos teclear en terminal cualquiera de los siguientes 2 comandos.

sudo  /etc/init.d/vsftpd restart    

sudo service vsftpd restart




Creación del Grupo FTP
los usuarios que deseemos utilizar para nuestro Servidor FTP deben estar anexados en el mismo grupo para una mejor seguridad.

con el siguiente comando creamos el grupo ftp.

Creamos una shell fantasma para que no puedan entrar a la consola del servidor.

Abrimos la lista de shells del sistema.

Agregamos nuestra shell fantasma al final del fichero.

Creación de usuarios FTP
Lo primero es crearle una carpeta de usuario. Puedes hacerlo donde tú quieras, pero yo suelo meterlos a todos en una sub-carpeta dentro de la siguiente ruta /srv/ftp. para ello debemos crear la carpeta que identifique al usuario ftp.
en mi caso creare la carpeta del usuario john 

anexamente le asignare la seguridad 555 a la carpeta john y creare 3 sub-carpetas para que el usuario pueda guardar sus archivos.


a continuación creamos el usuario:



Explicación:
-g ftp => el usuario pertenece al grupo ftp
-d /srv/ftp/john => el directorio principal del usuario es /srv/ftp/john
-c “john red” => el nombre completo del usuario 
john => la última palabra será el nombre de usuario
Ahora le asignamos una contraseña:

le asignamos la shell fantasma:

Y finalmente le asignamos los permisos de usuario y grupo a las sub-carpetas creadas anteriormente.


con esta configuración estamos en condiciones para acceder en forma local o externa a nuestro servidor FTP.

ahora realizaremos pruebas desde un pc conectado a la red de nuestro servidor ftp, desde un pc con windows7 abrimos una consola y nos conectamos  colocando los siguientes datos. 

ftp (la ip de nuestro servidor)
nombre de usuario en nuestro caso john, contraseña de usuario
y si tenemos éxito dirá login successful.
como dato anexo vsftpd por políticas de seguridad no deja escribir en la raíz de la carpeta ftp, es por esta razón que debemos crear sub-carpetas como las que realizamos anteriormente, si ud no asigna seguridad 555 a la carpeta de usuario (en mi caso john o raíz) al momento de conectarnos al servidor FTP nos arrojara el siguiente mensaje.

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()". y si logran ingresar , al crear una carpeta  arrojara el error 550  operation failed". esto debido a que vsftpd no deja escribir en la raiz.
si ingresamos a cualquiera de nuestras sub-carpetas podremos realizar lo que deseamos en este caso ingrese a la sub-carpeta mp3 y cree la carpeta musica




como mencione denante esta configuración es de enjaulamiento en la siguiente imagen queda demostrado tratare de salir de la carpeta john pero automáticamente me vuelve a mi perfil.


miércoles, 19 de diciembre de 2012

Streaming de Audio con Icecast2 y Mixxx en Ubuntu

Instalación de icecast2

Instalamos icecast2 y herramientas vorbis para manejo de formatos de audio libres (ogg). Nos vamos a una terminal y tecleamos el siguiente comando.
sudo apt-get install icecast2 vorbis-tools

















Configuración de icecast2

Icecast2 viene con los archivos de configuración ubicados en /etc/icecast2. Debemos configurar las password para las fuentes y para el administrador, así como el nombre del servidor, editando el archivo /etc/icecast2/icecast.xml

sudo nano /etc/icecast2/icecast.xml

















♦ buscamos la sección <authentication> y configuramos los siguientes parámetros.





Definí la contraseña soporte123  para los 3 usuarios esta puede ser diferente la coloque solo a modo de ejemplo.









♦ Buscamos la sección <hostname> Indicamos el nombre del servidor que vamos a utilizar. Si emitimos desde nuestro equipo en local ponemos localhost o la ip asignada por el dhcp.
♦ Buscamos la sección <listen-socket> Indicamos el puerto desde el que emitimos. Si emitimos desde nuestro equipo en local podemos dejar el 8000.






una vez modificado guardamos y salimos.









Nos vamos a una terminal y editamos el archivo /etc/default/icecast2 poniendo la variable ENABLE a TRUE que por defecto viene inhabilitada.
Sudo nano /etc/default/icecast2
































Icecast2 viene con un servicio montado en /etc/init.d/icecast2 (el cual acabamos de habilitar), ahora lo activamos.

sudo /etc/init.d/icecast2 start






En consola nos mostrará
Starting icecast2









Ahora nos vamos a la barra de direcciones del navegador web y tecleamos http://localhost:8000 si todo fue correcto veremos la página de icecast2

Firewall básico con Shorewall en CentOS



Red a Implementar.

A continuación vamos a configurar un Firewall básico con Shorewall, este es una herramienta que nos facilita la configuración de Iptables. La instalación se realizará en una máquina virtual usando VirtualBox con sistema operativo CentOS, la idea es que entendamos un nivel básico de configuración y funcionamiento de Shorewall, sus principales archivos de configuración, entre otras características.


************************************************************************************************
Detalles Técnicos.

1 Servidor CentOS con 2 Tarjetas de Red (eth0/eth1).
  Segmentos de Red
         LAN Externa (Net)
         Network                0.0.0.0/0
Eth0 (CentOS)       DHCP (Asignada en forma Automática).

LAN Interno (Loc)
Network                192.168.2.0/24
Eth1 (CentOS)      192.168.2.10/24 (Estático).
PC (Linux)             192.168.2.27/24 (Estático).
PC (Windows)       192.168.2.26/24 (Estático).
        
1 Switch (asignado en forma Interna Por Virtual Box),
2 PCS con Distintos S.O (Linux/Windows).
************************************************************************************************
Configuración Previa del Servidor Virtual CentOS
Activamos y Configuramos nuestras 2 tarjetas de red en la maquina virtual, la primera tarjeta quedara definida como puente o bridge (eth0/DHCP).
La segunda tarjeta de red de nuestra maquina virtual quedara como tarjeta de red interna (eth1/estático). 

************************************************************************************************
Configuración de CentOS y Shorewall
 Una vez configurada e inicializada nuestra maquina virtual procederemos a descargar el Paquete RPM desde la página oficial de Shorewall (www.shorewall.net).

















Descargado El Paquete RPM de la página oficial procederemos su descompresión con el siguiente comando en consola.

Rpm –ivh shorewall-4.4.12.1.RPM














************************************************************************************************
Finalizada su instalación nos dirigimos a la siguiente ruta /etc/shorewallverificamos si están todos los archivos de configuración indispensable para  que funcione firewall Shorewall (6).
  1. shorewall.conf: archivo de configuración general.
  2. zones: Donde declararemos las zonas y su tipo.
  3. interfaces: Donde le asignaremos las interfaces a las zonas.
  4. policy: Donde declaremos las políticas.
  5. rules: Donde declararemos las reglas.
  6. masq: Enmascaramiento de la tarjeta de red.
************************************************************************************************
Abrimos con el editor de textos preferido el archivo /etc/shorewall/shorewall.conf  y modificamos los siguientes parámetros y guardamos:

STARTUP_ENABLED=Yes

STARTUP_ENABLED
Se utiliza para activar Shorewall. De modo predefinido está desactivado, solo se necesita cambiar No por Yes.
************************************************************************************************
IP_FORWARDING=On
ADD_IP_ALIASES =No
CLAMPMSS=Yes

















IP_FORWARDING.
Se encarga de la retransmisión de los paquetes que se reciben por una interfaz física y de retransmitirlos por otra interfaz hacia otro nodo.

ADD_IP_ALIASES.
Este parámetro determina si Shorewall agrega automáticamente la dirección externa.

CLAMPMSS.
Se utiliza en conexiones tipo PPP (PPTP o PPPoE) y sirve para limitar el MSS (acrónimo de Maximum Segment Size que significa Máximo Tamaño de Segmento). Cambiando el valor No por Yes, Shorewall calculará el MSS más apropiado para la conexión. Si  es osado, puede también especificarse un número en paquetes SYN. La recomendación es establecer Yes si se cuenta con un enlace tipo PPP.
************************************************************************************************
Editamos el archivo /etc/shorewall/zones, y aquí declararemos las zonas como dije anteriormente, en nuestro caso tenemos dos interfaces de red, que son eth0 y eth1, la eth0 se conecta a internet (le llamaremos net), y la eth1 están conectadas las otras máquinas de la red interna (la llamaremos loc), por lo tanto en nuestro caso el archivo se vería así:


















#ZONE   TYPE            OPTIONS         IN                      OUT
#                                    OPTIONS                 OPTIONS
fw           firewall
net         ipv4
loc         ipv4

Aquí ya hemos agregado las dos zonas, y por defecto tenemos la zona fw, la cual es nuestro firewall, o sea nuestra máquina, guardamos y salimos.
************************************************************************************************
Editamos el archivo /etc/shorewall/interfaces, en este le asignaremos las interfaces a las zonas creadas previamente, el archivo de configuración se vería así:



















#ZONE   INTERFACE       BROADCAST       OPTIONS
net           eth0                          detect                      dhcp
loc            eth1                         detect

Aquí le asignamos las interfaces a las zonas, y en BROADCAST escribimos detect, para que detecte automáticamente el broadcast. Anexamente se pueden utilizar las siguientes opciones complementarias para protección de ataques.

tcpflags.
Esta opción causa que el Shorewall haga verificaciones de sanidad en los encabezados de los paquetes TCP que arriban a la interfase. Esto incluye combinaciones usados por los escaners de puertos.

blacklist.
Implementa listas negras de IP que no queremos que pasen por la interfaz.

norfc1918.
La interfaz no recibirá ningún paquete cuya fuente este en los rangos reservados por el RFC 1918.

routefilter.
Activa el sistema de antispoofing del kernel en la interfaz.

dropunclean.
Bloquea paquetes inválidos o manipulados deliberadamente.
************************************************************************************************
Editamos el archivo /etc/shorewall/policy, como su nombre lo indica aquí declararemos las políticas de seguridad, para nuestro caso lo definimos de la siguiente forma:


















#SOURCE      DEST             POLICY         LOG     LIMIT:          CONNLIMIT:
loc                   net                   ACCEPT
net                   all                     DROP                        info
all                     all                    REJECT                     info

Aquí hemos definido 3 políticas,
  •      Acepta todas las conexiones desde la zona loc a la zona net  la cual es el Internet.
  •      Deniega todas las conexiones desde la net hacia cualquiera.
  •      Niega cualquier conexión a cualquier lugar.
************************************************************************************************
Con esto ya tendremos nuestro pequeña red bien segura, pero no podremos hacer nada, ya que solamente tenemos acceso a la red desde el firewall, todo está bloqueado, por eso necesitaremos editar el archivo rules(reglas), para agregar reglas en las cuales definiremos lo que vamos a aceptar, editamos el archivo de configuración /etc/shorewall/rules.

Agregaremos debajo de la línea SECTION NEW las reglas que queramos por ejemplo las siguiente permitirá la conexión al puerto 22 (SSH), 80, 8080, desde Internet (net) a nuestro firewall.
       
    #ACTION SOURCE          DEST PROTO   DEST    SOURCE          ORIGINAL        RATE    
      
     #SECTION ESTABLISHED
     #SECTION RELATED
       SECTION NEW
        ACCEPT net               fw icmp 8
        ACCEPT net               fw tcp 22
        ACCEPT net              fw tcp 53
        ACCEPT net              fw udp 53
************************************************************************************************
   Para finalizar vamos a enmascarar, y para ello utilizaremos el fichero /etc/shorewall/masq, en este definiremos el enmascaramiento para la red local (Interfaz eth1, zona loc), la cual sale por medio de la interfaz eth0 (Zona net).



















    #INTERFACE   SUBNET   ADDRESS   PROTO   PORT(S)   IPSEC
         eth0                    eth1
************************************************************************************************
Solo basta reiniciar el servicio de shorewall con el comando service shorewall restart, pero antes debemos detener el servicio IPTABLES para que funcione en forma correcta.






















     Anexamente con el comando shorewall se puede utilizar un sin numero de opciones, donde puedes ver en tiempo real el estatus de log y trafico de un segmento a otro, algunos comandos son:
    shorewall show log (Muestra los últimos 20 mensajes de netfilter)
    shorewall logwatch (Verifica los logs a un tiempo determinado)
    shorewall dump (Nos da un amplio reporte de los problemas encontrados por  

    Shorewall).
































************************************************************************************************
Ahora Comprobaremos la buena configuración del Firewall Shorewall instalando otra máquina virtual la cual será un Windows XP la que debe apuntar a la red LAN Interna.



















Asignamos la ip a la tarjeta de red según el segmento que corresponda, la cual pertenecerá a la red interna 192.168.2.0/24.




















Desde la máquina virtual con Windows XP, tratamos de hacer ping 192.168. 2.10 a nuestro servidor Shorewall, el cual no nos dará respuesta ya que así se encuentra configurado, independiente que este dentro del mismo segmento de redes.



















Verificamos la conectividad a Internet Explorer y este debiera cargar la página de inicio con esto completaríamos exitosamente la prueba de nuestro firewall.



















************************************************************************************************
Comprobación del Firewall Shorewall instalando máquina virtual con Linux Ubuntu al igual que la maquina virtual anterior debemos configurar la tarjeta de red en LAN Interna.

















Una vez cargada la maquina virtual  comenzaremos a configurar una IP estática Correspondiente al segmento 192.168.2.0/24



















Para ello seleccionamos las siguientes opciones:
Conexiones de red
Editamos conexión cableada
Ajustes de  ipv4
Método[manual]




















En Dirección pichamos Añadir.
Ingresamos la dirección IP
Mascara de Red
Puerta de Enlace
 Servidores DNS
Guardamos y salimos



















La Última prueba es verificar la conectividad a internet, seleccionamos firefox y si este nos resuelve la página de inicio eso significa que nuestro firewall está operando en forma satisfactoria.






Seguidores