Asegurando Linux

  • Uploaded by: Robin King
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Asegurando Linux as PDF for free.

More details

  • Words: 2,569
  • Pages: 14
Asegurando Linux Julián Rodríguez

Whitepaper

Asegurando Linux Protegiendo Nuestro Sistema

20 de Julio del 2008

Page 1

Asegurando Linux Julián Rodríguez

Eres libre de: Copiar, Distribuir y Comunicar públicamente la obra. Bajo las condiciones siguientes: Atribución. You must attribute this work to Julian Antonio Rodriguez Vergara (with link). No comercial. No puedes utilizar esta obra para fines comerciales. No Derivadas. No está permitido que alteres, transformes o generes una obra derivada a partir de esta obra.   

Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor Nada en esta licencia menoscaba o restringe los derechos morales del autor. Creative Commons

Page 2

Asegurando Linux Julián Rodríguez

Al instalar un sistema bajo entorno Unix lo primero que nos preocupa es la seguridad de nuestros datos, archivos, carpetas y documentos. En este documento vamos a explicar y detallar como asegurar nuestro sistema para prevenir ataques, y evitar las formas mas comunes de intrusión; el documento, comandos y ejemplos son probados bajo Slackware 12.0.0 , Kernel 2.6.21.5 y entorno de escritorio KDE.



Remover RPMs Innecesarios

Al manejar un sistema tenemos que obtener mayor provecho de las características del mismo por lo cual cualquier detalle que nos haga obtener mayor rendimiento puede ser muy importante por lo cual en este paso vamos a remover todos los rpm innecesarios. [root@root] ~# rpm -qa Un comando para eliminar rpms que ya no necesitamos en el sistema es el siguiente el cual les puede ayudar a liberar espacio en el disco duro y producir más rendimiento: [root@root] ~# rpm -e <paquete> Un problema que puede resultar a la hora de estar removiendo paquetes rpms es que no nos de autorización ya que el proceso aun esta corriendo por lo cual tenemos que ejecutar en consola lo siguiente: [root@root] ~# /etc/rc.d/init.d/service stop Si lo que queremos hacer es volver a poner nuestro servicio en ejecución tenemos que hacer lo mismo pero simplemente sustituyendo la palabra “stop” por “start” como en el siguiente ejemplo: [root@root] ~# /etc/rc.d/init.d/service start

Page 3

Asegurando Linux Julián Rodríguez 

Detectar Puertos a la escucha

Uno de los problemas mas comunes es detectar backdoors en nuestro sistema por lo cual podemos utilizar netstat para verificar que puertos se encuentran a la escucha, ya que con esto se pueden hacer conexiones reversas a otras maquinas; esto se hace para poder burlar la seguridad de los Firewall. [root@root] ~# netstat -tulp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:bootpc *:* 3210/dhcpcd

PID/Program name

Como ejemplo deje el output de mí maquina para que pudieran observar un ejemplo real; en el output anterior de nuestro sistema podemos ver que todo se encuentra en perfecto estado, pero si nuestro sistema estuviera con un puerto a la escucha, la respuesta del programa seria como la siguiente: [root@root] ~# netstat -tlup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:9666 *:* LISTEN 4791/nc udp 0 0 *:bootpc *:* 3210/dhcpcd

PID/Program name

En el ejemplo anterior vemos como existe un puerto a la escucha ( Transfer Control Protocol ) el cual es el puerto 9666 , la manera de detener este tipo de ataques silenciosos es primeramente matar el proceso para que no siga corriendo el backdoor; por lo cual ejecutaremos lo siguiente para obtener el PID y matar al programa en ejecución : [root@root] ~# ps aux | grep nc root 4922 0.0 0.0 1692 600 pts/2 S+ 12:22 0:00 nc -vv -l -p 9666 Ahora que ya tenemos el PID ( 4922 ) podemos matar el proceso con el siguiente comando : [root@root] ~# kill -9 4922 El parámetro -9 es un tipo de termino de proceso especial el cual no nos dará problemas para terminar el backdoor en nuestro sistema. ( Nota: El parámetro funciona cuando estas con el usuario root ).

Page 4

Asegurando Linux Julián Rodríguez

Otra forma de obtener información sobre los puertos que se encuentran abiertos en nuestra maquina es correr un escáner como Nmap, esta herramienta es desarrollada por Insecure. Usted puede ejecutar un escaneo simple para detectar puertos a la escucha, citare un ejemplo de como puede ser el resultado: [root@root] ~# nmap xxx.xxx.xxx.xxx Starting Nmap 4.60 ( http://nmap.org ) at 2008-7-20 12:36 MDT Interesting ports on localhost (xxx.xxx.xxx.xxx): Not shown: 1714 closed ports PORT STATE SERVICE 5555/tcp open freeciv Nmap done: 1 IP address (1 host up) scanned in 0.194 seconds Aquí se puede detectar que nuestro sistema tiene el puerto abierto 5555, para verificar si realmente esta en uso podemos averiguar información sobre este puerto, en este caso freeciv es un video juego para computadora el cual nuestro sistema obviamente no contiene por lo cual podemos deducir fácilmente que nuestro sistema esta comprometido con una puerta trasera para el atacante.

Page 5

Asegurando Linux Julián Rodríguez



Detectando Rootkits

Un rootkit es un conjunto de programas que un atacante infiltra a nuestro sistema para seguir obteniendo permisos root, mantener el control del sistema y tener todo bajo control. Esto afecta archivos, procesos y llamadas al sistema por lo cual puede ser bastante complicado detectar un rootkit en nuestro sistema pero para esto tenemos herramientas como RkHunter (1.3.2). Descarga: http://sourceforge.net/projects/rkhunter/ [root@root] ~# tar -xzvf rkhunter-1.3.2.tar.gz [root@root] ~# cd rkhunter-1.3.2 [root@root] ~# ./installer.sh Después de haber ejecutado la instalación de nuestra herramienta para detectar rootkits podemos hacer varias cosas pero lo primero que realizaremos será un simple escaneo a nuestro sistema para que nos informe cuales son las partes mas sensibles del mismo y si realmente existe un rootkit. [root@root] ~# rkhunter -c El parámetro que utilizamos ( -c ) significa “check local system” por lo cual el output de nuestro programa será algo largo quizá con “Warnings” o sin ellos pero hay que prestar atención a cuales son los puntos que nos marca como vulnerables. Existe una manera de hacer escaneos diarios a nuestro sistema y recibir los resultados a nuestro e-mail por lo cual podemos estar monitoreando una red de sistemas desde otro lugar por lo cual puede ser bastante cómodo para un administrador. [root@root] ~# nano /etc/crondaily/rkhunter.sh Después de que nano abra el archivo rkhunter.sh agregamos las siguientes líneas: [root@root] ~# #!/bin/bash (/usr/local/bin/rkhunter -c --cronjob 2>&1 | mail -s “Reporte diario de RkHunter" [email protected]) Aquí simplemente guardamos nuestro archivo correctamente y a partir de ese momento podremos recibir nuestros resultados del escaneo que realice RkHunter en nuestro sistema.

Page 6

Asegurando Linux Julián Rodríguez



Firewall para Linux

Mantener control sobre los servicios que presta nuestro sistema es algo muy importante pero también hay que mantener un régimen dentro de los protocolos que se utilizan para evitar intrusiones y proteger la información sensible que estemos manejando por lo cual un Firewall es indispensable. [root@root] ~# wget http://prdownloads.sourcefoge.net/firestarter/firestarter-1.0.3.tar.gz?download [root@root] ~# tar -xzvf firestarter-1.0.3.tar.gz [root@root] ~# cd firestarter-1.0.3 [root@root] ~# ./configure sysconfdir=/etc [root@root] ~# make [root@root] ~# make install Para esto simplemente con ejecutar en modo consola el programa comenzara su interfaz grafica y comenzara a trabajar en nuestro sistema pero lo recomendable es que comience junto con el sistema por lo cual para agregarlo al startup es muy fácil dentro de algunos desktops como Gnome pero en este caso pondré la manera de realizarlo dentro de KDE. [root@root] ~# ln -s /usr/bin/firestarter ~/.kde/Autostart/firestarterlink Espero que este pequeño tip les funcione para mantener su sistema muy bien protegido desde el comienzo de este, al igual que con otras aplicaciones de seguridad como el RkHunter que antes se hablo de el.

Page 7

Asegurando Linux Julián Rodríguez



Asegurando SSH

Que significa SSH ? Significa Secure Shell el cual permite a un usuario conectarse a la maquina remotamente para mantener control de ella bajo entornos seguros. Pero confiar en los parámetros por defecto es un gran error por lo cual nosotros vamos a personalizar la configuración y hacerlo realmente seguro. Muchos servicios que se manejan en la red como telenet, rlogin, rsh no son muy seguros por lo cual es recomendable utilizar ssh ya que nos brinda mas seguridad para realizar conexiones. El problema de esto son las configuraciones por defecto por lo cual comenzaremos a cambiar las siguiente cosas, el archivo de configuración se encuentra en /etc/ssh/sshd_config. [root@root] ~# nano /etc/ssh/sshd_config Cambiamos los parametros a lo siguiente :

PermitRootLogin no UsePrivilegeSeparation yes # Esto nos ayudara a mantener control dentro de los comandos que corren. Protocol 2 # Limitando el protocolo a la version 2. AllowTcpFowarding no # Si no lo necesitan. X11Fowarding no # Si no lo necesitan. StrictModes yes # Si algún tipo de autentificación falla no dejara que el usuario se logee de nuevo. IgnoreRhosts yes # Métodos principales para la autentificación. HostbasedAuthentification no RhostRSAAuthentification no #Subsystem sftp /usr/lib/misc/sftp-server # La almohadilla para quitar este servicio. 



















Después de haber cambiado estos parámetros por defecto podrán confiar mas en que su servicio SSH estará mas seguro simplemente para ver los cambios en ejecución tienen que volver a comenzar el proceso por lo cual simplemente ejecutan en su consola lo siguiente : [root@root] ~# /etc/init.d/sshd restart

Page 8

Asegurando Linux Julián Rodríguez



IDS – Intrusion Detection System

El mantener un IDS dentro de nuestro sistema es muy importante. Esto puede ser usado para detectar movimientos dentro del sistema que puedan comprometer los datos que estamos protegiendo ya sea malware ( virus, troyanos, worms ) o ataques directamente al sistema; un IDS tiene diferentes componentes que lo constituyen como censores que genera eventos de seguridad para proteger el sistema, una consola para monitorear eventos, alertas y tener el control de los censores del IDS y un motor central que es lo importante del IDS que maneja a los censores y la consola. Descargando snort ( No hacen falta explicaciones los comandos son muy básicos, puede que algunos nombres de los folders no concuerden por lo cual deben de estar atentos en este tipo de detalles. ) : [root@root] ~# cd /user/home/ [root@root] ~# mkdir .snortids [root@root] ~# cd .snortids [root@root] ~# wget http://www.snort.org/dl/current/snort-2.8.2.1.tar.gz [root@root] ~# tar -xzvf http://www.snort.org/dl/current/snort-2.8.2.1.tar.gz [root@root] ~# rm snort-2.8.2.1.tar.gz [root@root] ~# wget http://www.snort.org/pub-bin/downloads.cgi/Download/sub_rules/snortrules-snapshot-2.8_s.tar.gz [root@root] ~# mv snortrules-snapshot-2.8_s.tar.gz /usr/home/.snotids/snort-2.8.2.1 [root@root] ~# cd snort-2.8.2.1 [root@root] ~# tar -xvzf snortrules-pr-2.8.tar.gz [root@root] ~# rm snortrules-pr-2.8.tar.gz Ahora la base de nuestro Snort esta funcionando, simplemente instalamos. [root@root] ~# ./configure --enable-dynamicplugin [root@root] ~# make [root@root] ~# make install

Page 9

Asegurando Linux Julián Rodríguez

Ya que termino la instalación es hora de hacer algunos cambios en el snort.conf y terminar de crear algunos folders para que se guarden correctamente los logs de Snort ( IDS ). [root@root] ~# mkdir /etc/snort [root@root] ~# mkdir /etc/snort/rules [root@root] ~# mkdir /var/log/snort Ahora vamos al proceso de los logs y algunas modificaciones mas. [root@root] ~# cd snort-2.8.x.x [root@root] ~# cd rules [root@root] ~# cp * /etc/snort/rules [root@root] ~# cd ../etc [root@root] ~# cp * /etc/snort Ahora que hicimos estos cambios es hora de que cambiemos los parámetros de snort.conf: [root@root] ~# cd /etc/snort [root@root] ~# nano snort.conf Y los cambios que tenemos que realizar son los siguientes : "var HOME_NET any" -> "var HOME_NET xxx.xxx.xxx.xxx/xx" "var EXTERNAL_NET any" -> "var EXTERNAL_NET !$HOME_NET" "var RULE_PATH ../rules" -> "var RULE_PATH /etc/snort/rules" Ahora simplemente para correrlo ponemos el siguiente comando: [root@root] ~# snort –u snort –c /etc/snort/snort.conf Esto pueden agregarlo a algún .sh y después agregan la ejecución del archivo a el startup con esto su snort estará trabajando desde que inicie el sistema al igual que con Firestarter ( Firewall ).

Page 10

Asegurando Linux Julián Rodríguez



Permisos de Folders

Uno de los mayores problemas que se puede presentar en un sistema que no ha recibido ningún tipo de mantenimiento son las configuraciones por defecto y uno de ellos puede ser que los folders que contienen mucha importancia deberían de tener determinados tipos de permisos. Aquí dejare un tabla que tal vez les pueda ayudar para cambiar permisos y mantener todo en orden en caso de una intrusión. Estas son solo pequeñas trabas que hacen que el atacante se de por vencido si es que no tiene mucha experiencia manejando sistemas. /bin/ /boot/ /dev/ /dev/audio* /dev/dsp* /etc/ /etc/conf.modules /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.weekly/ /etc/crontab /etc/dhcpcd/ /etc/dhcpcd/* /etc/esd.conf /etc/ftpaccess /etc/ftpconversions /etc/ftpgroups /etc/ftphosts /etc/ftpusers /etc/gettydefs /etc/hosts.allow /etc/hosts.deny /etc/hosts.equiv /etc/inetd.conf /etc/rc.d/init.d/ /etc/rc.d/init.d/syslog /etc/inittab /etc/ld.so.conf /etc/lilo.conf /etc/modules.conf

root.root root.root root.root root.audio root.audio root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.audio root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm root.adm

711 700 711 600 600 711 640 750 750 750 750 640 750 640 640 640 640 640 640 640 640 640 640 640 640 750 740 640 640 600 640

Page 11

Asegurando Linux Julián Rodríguez

/etc/motd /etc/printcap /etc/profile /etc/rc.d/ /etc/securetty /etc/sendmail.cf /etc/shutdown.allow /etc/ssh_config /etc/ssh_host_key /etc/ssh_host_key.pub /etc/sshd_config /etc/syslog.conf /etc/updatedb.conf /home/ /home/* /lib/ /mnt/ /root/ /sbin/ /tmp/ /usr/ /usr/* /usr/X11R6/ /usr/bin/ /usr/bin/* /usr/sbin/ /usr/sbin/* /var/ /var/log/ /var/log/* /var/spool/mail/

root.adm root.lp root.root root.adm root.adm root.adm root.root root.root root.adm root.adm root.adm root.adm root.adm root.adm current root.adm root.adm root.root root.adm root.root root.adm root.adm root.xgrp root.adm root.root root.adm root.root root.root root.root root.root root.mail

644 640 644 640 640 640 600 644 640 644 640 640 640 751 700 751 750 700 751 1777 751 751 751 751 755 751 755 755 711 600 771

Algunos de los grupos en la lista que se presento puede que no existan en tu sistema por lo cual deberías crearlos para mantener tu sistema mas seguro y evitar problemas.

Page 12

Asegurando Linux Julián Rodríguez



Asegurando PAM

PAM son las iniciales de Pluggable Authentication Modules. La mayoría de las distribuciones linux corren PAM por lo cual es muy importante darle su debido mantenimiento. Los módulos de PAM se encuentran en las siguientes rutas : - /etc/pam.d/ - /etc/security/ - /etc/pam.d/ Muchos de los ataques mas recientes ( '08 ) y que están en su apogeo son los ataques Ddos, la denegación de servicio es un ataque común cuando un atacante simplemente lo que quiere es que el sistema no siga funcionando ya que por determinadas circunstancias no tiene los medios para realizar una intrusión. Así que aseguremos nuestro PAM para evitar ataques tan molestos como la denegación de servicio, abramos el archivo limits.conf con nano o algún otro editor : [root@root] ~# nano /etc/security/limits.conf Lo que nos mostrara nuestra consola será lo siguiente ( Elimine parte del output porque en este caso puede resultar innecesario ) : # ... #* #* #@student #@faculty #@faculty #ftp #@student

soft hard hard soft hard hard -

core rss nproc nproc nproc nproc maxlogins

0 10000 20 20 50 0 4

# End of file

Los parametros que tenemos agregar son los siguientes : # Limit user processes * soft nproc 100 * hard nproc 150

Con esto vamos a restringir acceso a aquellos usuarios que pasen de nuestro limite que en este caso son 40 MB. # limits size of any one of users' files" /etc/security/limits.conf *

hard

40000

Page 13

Asegurando Linux Julián Rodríguez

Conclusión Este documento es una pequeña guía que muestra algunos tips o métodos para asegurar nuestro sistema de ataques y detalles que hacen que nuestro sistema este bien asegurado junto con que nuestra información permanecerá en total privacidad. Créditos Autor: Julián Antonio Rodríguez Vergara Website: http://www.julianrdz.uni.cc Contacto: [email protected]

Page 14

Related Documents

Asegurando Linux
June 2020 3
Linux
April 2020 29
Linux
July 2020 24
Linux
October 2019 55
Linux
June 2020 17
Linux
December 2019 39

More Documents from ""