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
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
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
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
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 ~]#
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>
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.
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
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.