domingo, 19 de enero de 2014

Proyecto de Seguridad Informatica | Sexta parte y ultima parte, Community Enterprise Operating System


Community Enterprise Operating System

CentOS (Community ENTerprise Operating System) es una bifurcación a nivel binario de la distribución Linux Red Hat Enterprise Linux RHEL, compilado por voluntarios a partir del código fuente liberado por Red Hat.
Red Hat Enterprise Linux se compone de software libre y código abierto, pero se publica en formato binario digital (ISO) solamente a suscriptores pagados. Como es requerido, Red Hat libera todo el código fuente del producto de forma pública bajo los términos de la Licencia pública general de GNU y otras licencias. Los desarrolladores de CentOS usan ese código fuente para crear un producto final que es muy similar al Red Hat Enterprise Linux y está libremente disponible para ser bajado y usado por el público, pero no es mantenido ni asistido por Red Hat. Existen algunos Clones de Red Hat Enterprise Linux y CentOS es uno de ellos.

Instalación de CentOS Server

La instalación de CentOS como cualquier otro Linux es sumamente sencilla y no requiere mucha atención cuando se hace un ambiente desatendido, aun que es importante realizar validación cuando se hace para un ambiente distribuido por que la distribución de FS y de Inodes es muy importante para ambientes grandes o de gran cantidad de uso de datos, por ello para no realizar un documento con muchas hojas por las pantallas de la instalación no se colocara la instalación del sistema operativo.

Instalación de SSH en CentOS Linux


[root@UNID-L-SRV01 ssh]# yum -y install openssh-server openssh-clients
[root@UNID-L-SRV01 ssh]# chkconfig sshd on
[root@UNID-L-SRV01 ssh]# service sshd start

con ello ya tenemos nuestro servicio tanto para cliente como servidor de sesiones ssh
ahora vamos a validar que el puerto 22 (el puerto de comunicación y acceso de ssh) se encuentre listo.

[root@UNID-L-SRV01 ssh]#  netstat -tulpn | grep :22

Configuración de SSH accesos permitidos y restringidos


Ahora el siguiente paso es validar y configurar el Firewall de CentOS
[root@UNID-L-SRV01 ssh]# vi /etc/sysconfig/iptables
Con un respaldo previo del archivo iptable realizamos el siguiente cambio agregando la siguiente línea en el archivo

-A RH-Firewall-1-INPUT –M state –state NEW –m tcp –p tcp –dport 22 –j ACCEPT

Lo que le indicamos en esta línea es que será alcanzable el servicio de SSH por cualquier IP solicitando acceso al puerto 22

Restricción de acceso a IP mediante SSH

Si nuestra intención es restringir un segmento de red el cual no nos intereza que tenga acceso al servidor obviamente sin tener credenciales, colocamos una negación de servicios de SSH en el FW, esto lo realizamos agregando la siguiente línea en el archivo de configuración en la cual definimos que la ip 192.168.221.X no le mandara el banner de SSH ya que tiene restringido la respuesta del servicio esto significa que no podrá ni siquiera ver la opción de login estas IPs

-A RH-Firewall-1-INPUT -s 192.168.221.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT
Reiniciamos los servicios para que tomen efecto las configuraciones

[root@UNID-L-SRV01 ssh]# service iptables restart

Negar el login como root

Si iniciamos una sesión ssh como root al equipo remoto por default esta permitido lo cual es una mala practica, la buena practica para cualquier sysadmin de Linux es negar el acceso a root ya que es peligroso asi que primero validaremos si root puede hacer login remotamente

unixpro:~ oposada$ ssh root@192.168.221.231
root@192.168.221.231's password:
[root@UNID-L-SRV01 ~]# hostname
UNID-L-SRV01.UNID.SI.MX
[root@UNID-L-SRV01 ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=root:system_r:unconfined_t:SystemLow-SystemHigh
[root@UNID-L-SRV01 ~]#

el login esta permitido, ahora pasaremos a negar el acceso a root
modificamos el archivo (con su previo respaldo)

[root@UNID-L-SRV01 ~]# vi /etc/ssh/sshd_config
ahora buscamos la línea que indica que root tiene permitido el login y cambiamos el =YES por =NO

# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
reiniciamos el servicio de SSHD
[root@UNID-L-SRV01 ~]# service sshd restart

Validamos las configuraciones aplicadas


unixpro:~ oposada$ ssh root@192.168.221.231
root@192.168.221.231's password:
Permission denied, please try again.
root@192.168.221.231's password:
Permission denied, please try again.
root@192.168.221.231's password:
Permission denied (publickey,gssapi-with-mic,password).
unixpro:~ oposada$

la configuración es la adecuada y funciona a la perfección.
Es importante NO negar el acceso ssh a otro usuario ya que la manera adecuada de administrar un sistema Linux es iniciar sesión mediante ssh con un usuario no root para autoría y desde ese usuario realizar un su – para poder usar root si se cuenta con los permisos y credenciales, validaremos a continuación ese acceso, para ello en la terminal ejecutamos las siguientes líneas.

unixpro:~ oposada$ ssh oposada@192.168.221.231
oposada@192.168.221.231's password:
Last login: Sat Dec  7 18:20:24 2013 from 192.168.221.1
[oposada@UNID-L-SRV01 ~]$ hostname
UNID-L-SRV01.UNID.SI.MX
[oposada@UNID-L-SRV01 ~]$ su -
Password:
[root@UNID-L-SRV01 ~]# hostname
UNID-L-SRV01.UNID.SI.MX
[root@UNID-L-SRV01 ~]#

Usar Banner de bienvenida al iniciar sesión en servidor Linux

En el directorio  “/etc/ssh/” creamos el archivo banner.txt en el cual vamos a colocar nuestro banner
Al termino guardamos y editamos el archivo
[root@UNID-L-SRV01 ssh]# vi /etc/ssh/sshd_config
colocamos la centena que mandara llamar el banner

# no default banner path
#Banner /some/path
Banner /etc/ssh/banner.tx



Reiniciamos el servicio sshd
[root@UNID-L-SRV01 ~]# service sshd restart

Y validamos accediendo de nuevo que nuestro banner esta activado.
Connection to 192.168.221.231 closed.
unixpro:~ oposada$ ssh 192.168.221.231
############## USTED ESTA ACCEDIENDO A UNID-L-SRV01.UNID.SI.MX #################

                                                                 #####
                                                                #######
                   #                                            ##O#O##
  ######    ###                                    #VVVVV#
    ##             #                                          ##  VVV  ##
    ##         ###    ### ####   ###    ###  ##### #####     #          ##
    ##        #  ##    ###    ##  ##     ##    ##   ##      #            ##
    ##       #   ##    ##     ##  ##     ##      ###        #            ###
    ##          ###    ##     ##  ##     ##      ###       QQ#           ##Q
    ##       # ###     ##     ##  ##     ##     ## ##    QQQQQQ#       #QQQQQQ
    ##      ## ### #   ##     ##  ###   ###    ##   ##   QQQQQQQ#     #QQQQQQQ
  ############  ###   ####   ####   #### ### ##### #####   QQQQQ#######QQQQQ

### CUALQUIER ACCESO ES MONITOREADO Y ES NOTIFICADO AL GRUPO DE ADMINISTRADORES ##
oposada@192.168.221.231's password:
Last login: Sat Dec  7 19:02:48 2013 from 192.168.221.1
[oposada@UNID-L-SRV01 ~]$

Nuestro banner esta correctamente configurado y funcionando

Instalación & Configuración de VSFTP en CentOS Linux


[root@UNID-L-SRV01 ~]# yum install vsftpd


[root@UNID-L-SRV01 ~]# service vsftpd start

las variantes de comandos para validar los estatus, reinicios, inicios o detener el servicio son los siguientes.

service vsftpd stop
service vsftpd restart
service vsftpd status

Los archivos de configuración del servicio vsftp están ubicados en la dirección /etc/vsftpd/vsftpd.conf

Validamos si el vsftpd tiene soporte para SSL

[root@UNID-L-SRV01 ~]# ldd /usr/sbin/vsftpd | grep libssl
            libssl.so.6 => /lib64/libssl.so.6 (0x00002b1177dbe000)

Realizamos un respaldo de archivo de configuración para contar con un roll back de realizar configuraciones erróneas del servicio

[root@UNID-L-SRV01 ~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

Editamos el archivo de configuración


[root@UNID-L-SRV01 ~]#  vi /etc/vsftpd/vsftpd.conf
Y en la línea numero 12 validamos que el acceso para login de usuario anonymous se encuentre denegado

[root@UNID-L-SRV01 vsftpd]# service vsftpd restart

[root@UNID-L-SRV01 vsftpd]# service vsftpd status
vsftpd (pid 31864) is running...

reiniciamos los servicios y validamos que el proceso se encuentre corriendo correctamente
Ahora validamos que el usuario anonymous esta restringido al FTP login

unixpro:~ oposada$ ftp 192.168.221.231
Connected to 192.168.221.231.
220 (vsFTPd 2.0.5)
Name (192.168.221.231:oposada): anonymous
331 Please specify the password.
Password:
530 Login incorrect.
ftp: Login failed
ftp>

Validamos si por un navegador web podemos realizar petición de acceso al FTP




El servicio de FTP funciona correctamente y es seguro al solicitar credenciales de acceso esto mediante un navegador web, ahora realizaremos el mismo ejercicio pero desde una terminal.

unixpro:~ oposada$ ftp 192.168.221.231
Connected to 192.168.221.231.
220 (vsFTPd 2.0.5)
Name (192.168.221.231:oposada): oposada
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
Remote directory: /home/oposada
ftp> ls -l
229 Entering Extended Passive Mode (|||43356|)
150 Here comes the directory listing.

Validación de servicio FTP de cliente Linux a Servidor CentOS



 
Se valida el acceso por ftp desde un cliente Ubuntu 13.10 el cual funciona correctamente.

Ahora validaremos el acceso al ftp desde un equipo Windows

Validación de Servicio de FTP de CentOS Server desde cliente Windows

 

 
El cual funciona correctamente solicitando credenciales de acceso previos al login


 Con ello se termina la sexta y ultima parte del proyecto de seguridad en servicios comunes de empresas como y alo notamos y validamos los servicios mas comunes en las compañias como lo son web, compartir archivos y escritorio remtoo o SSL en el caso de linux puden ser soportados en cualquier sistema operativo, no hay que casarnos con solo ventanitas o solo pinguinitos o solo manzanas, los sistemas son solo herramientas el uso de ellas es segun el maximo probecho del proyecto en el que estemos apoyando, siempre hay que penzar en seguridad, soporte y estabilidad asi como salvaguardar las leyes de seguridad informatica en cada proyecto (mismas expuestas y explicadas en los anteriores temas) en futuras ocaciones hablaremos de la seguridad de sistemas operativos y como realizar un adecuado Hardening a sistemas como windows server y Linux Red Hat Enterprise Edition, espero con lo poco que se de estos temas pueda ser de ayuda cuando tengan que realizar una infraestructura y no tengan ni idea de donde iniciar.

No hay comentarios.: