Archivo diario: 22/07/2016

SELinux firewall – configuracion básica

Que es SELinux ?

SELinux.fwSecurity-Enhanced Linux (SELinux) es un módulo de seguridad para el kernel Linux que proporciona el mecanismo para soportar políticas de seguridad para el control de acceso, incluyendo controles de acceso obligatorios como los del Departamento de Defensa de Estados Unidos.

 

Chequeamos el estado de SElinux

# sestatus

Modos de SELinux

Para empezar debemos entender que  SELinux puede tener tres posibles modos. y no todos pueden estar activos al mismo tiempo; sino uno solo; para lo cual debemos ir pensando en como dejaremos el firewall en Centos Unicamente, los posibles modos son:

  • Enforcing
  • Permissive
  • Disabled

El modo enforcing (hacer cumplir) de SELinux sera muy «fuerte»  como politioca en el sistema Linux el mismo que NO autoriza acceso a los usuarios y los procesos seran detenidos o denegados. Las denegaciones de acceso también se escriben en los archivos de registro correspondientes.

El modo Permissive (permisivo) es como un estado de semi-habilitado. si en SELinux se aplica  la política en modo permisivo,  lo que no se niega el acceso. Sin embargo, cualquier violación de alguna política se registra en los registros de auditoría ose los logs. Es una buena manera de probar SELinux antes de aplicarla.

El modo Disabled (deshabilitado) se explica cuando el sistema no va a ejecutarse con seguridad mejorada.

Chequemos el estado de los modos del SELinux

Podemos ejecutar el comando getenforce para comprobar el modo actual de SELinux.

# getenforce

Actualmente SELinux debe estar desactivado, por lo que la salida sería algo como esto:

Disabled

o

Permissive

Segun el caso

Tambien podemos ejecutar el comando sestatus:

# sestatus

selinux2.fw

Donde el SELinux como salida nos mostrará disabled:

SELinux status:        disabled

Configuracion de SELinux

La configuracion principal de SELinux se encuentra en el siguiente archivo /etc/selinux/config. Para mirar el contenido podemos ejecutar el siguiente comando

cat /etc/selinux/config

Y la salida sera similar a esta:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Hay dos directivas en este archivo. La directiva SELINUX  indica el modo de SELinux y puede tener tres valores posibles como hemos comentado antes.

La directiva SELINUXTYPE determina la política que se utilizará. El valor por defecto está en target. Con una política específica, SELinux permite personalizar y afinar los permisos de control de acceso. El otro valor posible es «MLS» (seguridad multinivel), un modo avanzado de protección. aunque para usar MLS, es necesario instalar un paquete adicional.

Activar y Desactivar SELinux

Activar SELinux es bastante simple; pero a diferencia de su desactivación, se debe hacer en un proceso de dos pasos. Suponemos que SELinux está activo en este momento, y que ha configurado e instalado todos los paquetes de SELinux.

Como primer paso, necesitamos editar el archivo /etc/sysconfig/selinux y cambiar la directiva SELINUX a modo permissive.

# vi /etc/sysconfig/selinux
...
SELINUX=permissive
...

Ahora reiniciamos el sistema:

# reboot

Finalmente y para aclarar.- Todo loq ue hemos hecho lo hicimos a traves de la consola o terminal debido a que nuestra version de Centos 7 instalada es «ligera» por lo tanto no contiene más que los servicios basicos, no contiene el modo de escriotorio grafico ni otro servicio adicional. En posteriores post ire mostrando como instalar servidores Web, FTP, Mail, de bases de datos, etc.

Sin embargo es posible si se ha instalado Centos en modmo gráfico (con GUI KDE o Gnome) acceder al SELinux en ese modo, naturalmente sera mas sencillo otorgar permisos y demás creando sus propias politicas.

selinux3.fw

Instalar Sevidor FTP bajo Centos / Debian

Qué es un servidor FTP ?

La definición técnica seria:

FTP (siglas en inglés de File Transfer Protocol, ‘Protocolo de Transferencia de Archivos’) en informática, es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP (Transmission Control Protocol), basado en la arquitectura cliente-servidor.

FTP tiene sus orígenes en 1971, y aunque ha evolucionado con el paso de los años, es uno de los protocolos más antiguos que todavía están en uso. Hoy en día se usa principalmente en redes corporativas y la red más grande que existe: Internet.

El funcionamiento es sencillo. Una persona desde su computador invoca un programa cliente FTP para conectar con otro computador, que a su vez tiene instalado el programa servidor FTP. Una vez establecida la conexión y debidamente autenticado el usuario con su contraseña, se pueden empezar a intercambiar archivos de todo tipo.

Aunque no estés familiarizado o no conoces FTP, es más que probable que lo hayas usado alguna vez. Muchos de los enlaces de descarga que usas en Internet, son URLs que apuntan a un computador que está actuando como un servidor FTP: tu navegador automáticamente hace la conexión y descarga lo correspondiente.

En otras palabras cada ves que bajas archivos de la internet, interviene de por medio un servidor FTP, por ello creo pertinente mostrar como instarlo.

Existen varias versiones de servidores FTP tanto libres como de pago (prefiero los libres por sus niveles de seguridad), siendo estos:

Tipos de FTP

  • FTP Anónimo: Cualquiera puede descargar un archivo sin identificarse.
  • FTP Autenticado: Hay que conectarse al servidor utilizando un nombre y una contraseña.
  • FTP Embebido: Es el que se realiza desde las Páginas Web, a través de navegadores. Es una opción dentro del FTP Anónimo.

Aqui algunos de los servidores conocidos la mayoría lamentablemente de pago y para guindous:

Pero es de mi interés el uso de aplicaciones libres y fácil de usar por ello instalaremos uno de esas hermosas y ligeras aplicaciones desarrolladas desde hace mucho, muy maduras y confiables para Linux, mencionare los mas utilizados:

  • pureftpd
  • proftpd
  • vsftpd

Veamos algunas características:

Pure-FTPd es un servidor FTP libre con un fuerte enfoque en la seguridad. Puede ser compilado y ejecutado en una variedad de sistemas operativos tipo Unix incluyendo Linux, OpenBSD, NetBSD, FreeBSD, DragonFly BSD, Solaris, Tru64, Darwin, Irix y HP-UX. También ha sido portado a Android.

ProFTPd es un servidor FTP. Se promociona desde su página web como estable y seguro, cuando se configura correctamente. El servidor ProFTPd se promociona a sí mismo como un «Software servidor FTP altamente configurable con licencia GPL» («Highly configurable GPL-licensed FTP server software«).

Los promotores dicen que ProFTPd está bien documentado, y la mayoría de configuraciones serán muy parecidas a aquellas que aparecen en las configuraciones de ejemplo. ProFTPd usa un único fichero de configuración «/etc/proftpd.conf«, ademas es factible de funcionar sobre IPv6

VsFTPd es el «very secure ftp daemon» (demonio ftp muy seguro) , un pequeño pero eficiente servidor FTP.

Aún cuando vsftpd quizás no ofrezca el nivel de personalización que otros servidores FTP disponibles globalmente tienen, vsftpd ofrece suficientes opciones para satisfacer la mayoría de las necesidades de un administrador. El hecho de que no está sobrecargado de funcionalidades limita los errores de configuración y de programación.

Toda la configuración de vsftpd es manejada por su archivo de configuración:

/etc/vsftpd/vsftpd.conf

Cada directriz está en su propia línea dentro del archivo.

Y precisamente debido a su simplicidad, confiabilidad es el que enseñare a instalar.

Empecemos.!

EN CENTOS

En primero lugar recordemos que el Servidor sea este bajo Centos o Debian deben estar preparados y configurados en sus puesrtos de red (tarjeta) con la IP estática (no necesariamentre publica) asi como su gateway y si lo usara desde afuera el DNS; hecho esto vamos a instalar desde la consola el demonio FTP:

# yum install vsftpd

Una ves que toda la aplicacion se haya descargado e instalado simplemente debemos iniciarlo con el siguiente comando en Centos

# service vsftpd start

o

# systemctl start vsftpd.service

Lo puedes «apagarar» con

# service vsftpd stop

o

# systemctl stop vsftpd.service

y para reinciarlo con

# service vsftpd restart

o

# systemctl restart vsftpd.service

Y para que se autoejecute cuando encienda el sistema (de otro modo no arrancara cuando apague y encienda el server)

# systemctl enable vsftpd.service

Y si deseas quitarlo para que no arranque:

# systemctl disable vsftpd.service

NOTA: En Debian los comandos de instalacion son:

# apt-get install vsftpd

el resto de comandos son los mismos o similares mira más abajo.

Ahora probemos nuestro FTP Server

La primera prueba sera a traves del acceso web; es decir usando un navegador para acceder a los servicios, para ello indicamos en la URL la direccion IP, pero anteponiendo o indicando el protocolo de acceso al ftp, asi:

ftp://192.168.1.111

y veremos esto:

Cambiar la carpeta del acceso anónimo

La carpeta por defecto del acceso anónimo al FTP es /var/ftp, sin embargo puede interesar cambiarla.

Para ello hay que dirigirse editando el fichero  en /etc/vsftpd/vsftpd.conf  y añadir al final la siguiente opción, teniendo que poner de forma obligatoria la ruta absoluta:

anon_root=/home/rutaperonalizada

En /rutapersonalizada se pone la ruta que se crea conveniente, siempre y cuando no coincida con otra que resulta crítica para el sistema, siendo conveniente crear una a través de mkdir, dentro de la carpeta /home o /mnt, que no suelen contener nada crítico a nivel de sistema en su interior.

Cambiada ya la ruta del acceso anónimo, en teoría reiniciando el servicio ya se tendrían que aplicar los cambios, sin embargo si al acceder al FTP vemos que no nos da permiso, es porque nos hemos topado con la segunda gran “barrera” de los sistemas basados en tecnologías Red Hat que es el SeLinux en otro tutorial veremos como desactivarlo o dejar que sea mas «permisivo».

Listo nuestro server esta funcionando..! obviamente la conexión ha sido «anónima» por ello no ha solicitado clave algún (si vas a colocar archivos que no quieres que otras personas los bajen,para eso se debe asegurar el servidor FTP – no es parte de este manual). Ahora intentaremos conectarnos con un cliente FTP, para lo cual recomiendo uses el filezillaFTP, siendo una aplicación multiplataforma y fácil de usar.

Listo ahora puedes empezar a compartir archivos en tu servidor FTP..!!! 😉

Configurar usuarios locales en el servidor

Para poder usar usuarios locales en el servidor, con su correspondiente contraseña, hay que tener los usuarios locales permitidos en vsftpd.conf, con la opción local_enable=YES. Si teníamos esta opción en NO anteriormente, hay que reiniciar el servicio para que los cambios surtan efecto.

Ahora queda crear el usuario, que no tiene ningún misterio para aquellos que acostumbran a crearlos desde la consola de comandos, ya que el proceso cambia poco:

# useradd -g ftp -d /home/usuario usuario

Descomponemos la línea de comando:

  • useradd: Indica que queremos añadir un nuevo usuario.
  • -g: Indica el grupo al que va a pertenecer el usuario, en este caso ftp.
  • -d: Es el directorio del usuario, su home, en este caso /home/usuario.
  • usuario: Es el nombre del usuario.

El usuario ya está creado, sin embargo hay que asignarle una contraseña, para lo cual se utiliza el clásico passwd:

# passwd usuario

Para mayor información respecto de la creación de usuarios y otros comandos relacionados sigue este link.

Ahora queda indicarle a SeLinux que permita a los usuarios locales acceder su home a través del FTP:

# setsebool -P ftp_home_dir on

Ahora solo queda abrir el cliente, poner la IP del servidor, el usuario y la contraseña y ya tendría que permitir el acceso, pudiendo subir contenidos, ya que se ha iniciado sesión con el usuario que es el propietario de la sub-carpeta.

Hacer que un usuario local y el acceso anónimo compartan carpeta

El acceso anónimo, tal y como lo hemos mostrado, se muestra un poco corto, difícil de darle utilidad, al menos que se configure el acceso anónimo al FTP desde un computador de escritorio en producción, en el cual se puede copiar y pegar los contenidos al directorio a golpe de ratón. Sin embargo si quien tiene que suministrar los contenidos no usa su desktop como servidor de FTP, sino un ordenador aparte, empieza a ser complicado poder compartir contenidos, ya que el usuario local y el acceso anónimo no pueden compartir carpeta debido a que SeLinux lo impide.

Para poder compartir una carpeta de usuario con el acceso anónimo en primer lugar hay que ir al fichero vsftpd.conf y en la opción anon_root poner la ruta absoluta del directorio del usuario local, siguiendo  con este ejemplo:

anon_root=/home/usuario

Después hay que reiniciar el servicio y, además, indicar a SeLinux que permita acceso total en el servicio de FTP a través de la siguiente línea de comando:

setsebool allow_ftpd_full_access on

Después hay que dar permisos a los usuarios ajenos al propietario para que puedan ver los contenidos de su carpeta, ya que por defecto los sistemas de tecnología Red Hat utilizan una umask de 077 en la creación de las carpetas de usuario, así que solo el propietario tiene permisos sobre su carpeta personal. Para arreglar esto hay que otorgarle permisos de lectura y ejecución a los demás con chmod:

# chmod -R 755 /home/usuario

EN DEBIAN

Para instalar el servidor VSFTPD:

 apt-get install vsftpd

El fichero de configuración del servidor se encuentra en:

 # /etc/vsftpd.conf

Si se activa el acceso anónimo el directorio por defecto está en:

# /srv/ftp

Por defecto está configurado para que los usuarios anónimos sólo puedan descargarse ficheros de ese directorio.

Notas para la configuración de Acceso Anónimo al servidor FTP para la conexión de usuarios anónimos

Si queremos permitir que los usuarios anónimos puedan subir archivos al servidor tendremos que tener en cuenta que:

El usuario ftp no debe ser propietario del directorio dónde se suban los ficheros.

El usuario ftp no debe ser miembro del grupo propietario del directorio dónde se suban los ficheros.

El directorio anónimo debe tener los permisos de escritura correspondientes para OTROS.

En Debian el directorio raíz por defecto del servidor FTP, está situado en: /srv/ftp

Y dispone de los siguientes permisos ( para ver usa el comando ls -l ):

Si se desea configurar un directorio raíz diferente para el servidor anónimo se usa:

anon_root=/directorio

Por lo tanto si queremos crear un directorio anónimo para escritura el TRUCO está en: crear una carpeta por ejemplo llamada pub dentro de /srv/ftp

 # mkdir /srv/ftp/pub

Comprobar que propietario y grupo esté root por ejemplo

# chown root.root /srv/ftp/pub

Y que tenga permisos de RWX en otros para esa carpeta.

# chmod 757 /srv/ftp/pub

No es necesario modificar el anon_root ya que por defecto está puesto a /srv/ftp
Si queremos que los ficheros que subamos tengan unos permisos por defecto deberemos utilizar la opción chown_upload_mode Por defecto está puesta a:
-rw——- (0600)
Ejemplo:
# chown_upload_mode=0666

Esto es todo! ya nuestro server FTP estará funcionando..!

Categorias

Tutoriales

julio 2016
L M X J V S D
 123
45678910
11121314151617
18192021222324
25262728293031