Lo que tenemos clasificado como ‘Pirateo’
Baneando direcciones IPs en Apache bajo Windows
sin comentarios, by the moment porfaplis, deja uno que "é grati"
Hoy os presento un caso raro y de aquellos cansinos, un cliente con un servidor web ya con añitos, corriendo Windows 2003 Server parcheado hasta la médula, un día se enlentece que da miedo, este servidor recibe ciertos bots que sniffan literalmente todo su contenido, que no es pequeño llegando a generar con ello tráficos mensuales más allá de los 20 gigas. La mitad de los cuales se lo reparten entre bots snifadores y los spiders indexadores de la red, léase GoogleBot, Yahoo Crawler, Microsoft Search y sucedáneos rusos.
Casi siempre todo funciona bien, el servidor es robusto y responde sin muchas preocupaciones pero el problema llega cuando uno de estos robots se vuelve loco. Seguramente esta locura es producida por algún cambio en alguna variable que fuerza el número de escaneados diarios que realiza el bot, de esa forma el humano “snifante” prueba con diversos valores subiendo a veces sin saberlo la cantidad de peticiones por minuto de forma exponencial, el no ve las repercusiones en el servidor de origen, probablemente se dice, que bien ahora así tengo el contenido nuevo tan pronto como se publica, si soy el primero posiciono mejor, lo voy a dejar así. Y sin saberlo está haciendo un ataque DDOS o de denegación de servicio.
En este caso concreto es tal el consumo que en hora punta de tráfico las peticiones se enletecen hasta más allá de los 3 segundos por página peticionada.
Lo primero es detectar que algo paso, esto por suerte te lo dicen los clientes del servicio web en cuestión con emails técnicos del tipo:
“La web va lenta”, “La web va como el c…”
Recibido el tercer email de este tipo y tras comprobar que no es un problema de la conexión del cliente hacia la red, que también reportan, toca averiguar que está pasando.
1. Vemos el estado de saturación de la máquina. En Windows con el Administrador de Tareas.
2. Lo primero es ver que tal estamos de RAM, que consumo tenemos.
3. Luego vemos el espacio en disco que nos queda
4. El consumo de CPU
5. Ahora vamos a ver con ese mismo administrador de tareas que “programas” son los que más consumen
Si es MYSQL y la RAM va cargada tocará ampliar RAM, al igual de que si es disco.
Si es APACHE y la CPU va saturada, pues tocará ver cuantas peticiones y de quien son recibe el servidor web.
Para conocer cuantas peticiones recibe nuestro server hay muchas cosas y programas, pero en este caso no hay ningún sistema estadístico instalado, bueno si, Google Analytics, el cual pinta y colorea los datos que da gusto, pero a nivel técnico no nos sirve pues estamos buscando excesos y errores y me da a mi que Analytics los obvia, a saber porque con la todopoderosa y sus manías, que ya me cansan.
Aunque no tengamos nada instalado en server siempre nos podemos bajar los archivos de log del Apache para analizarlos en casita, con nuestra maquinita.
Ten en cuenta que estos archivos pueden ser gigantes, depende de como esté configurado el server, los hay con rotaciones y sin, pero puedes encontrartes con archivos de 2Gb. en servidores de alto tráfico, lidia con ellos si puedes. Lo mejor es rotarlos manualmente en el momento de máximo tráfico o ataque.
Para ello, detén el servicio de Apache, renombra los access.log y error.log y vuelve a iniciarlo, dejarás a tu cliente sin servicio un minuto escaso. Aguanta un ratito con el ataque, un par de horas a lo sumo, y vuelve a hacer lo mismo, de esa forma tendrás una muestra sanguínea del ataque o del momento de saturación del server y trabajarás única y exclusivamente con esos datos, localizando más rápidamente si existen direcciones IPs que un consumo excesivo de datos.
De Windows a Ubuntu y tiro porque me toca
Una vez muevas ese log a una carpeta accesible por FTP o HTTP faltará bajártela para analizarla en tu flamante workstation Ubuntu, que mola más que un OS X… al menos más que un Snow Leopard, pues falta ver si este próximo lunes día 6 de Junio lo que nos maravilla OS X Lion de la mano de Steve Jobs, palabra de AppleFun arrepentido venido a Ubuntu.
Analizando los archivos .log de Apache
Para analizarlo en nuestro Ubuntu vamos a usar Webzilla, para instalártela:
sudo apt-get install webalizer
Luego la configuramos con un:
sudo gedit /etc/webalizer/webalizer.conf
Aquí en principio sólo falta tocar el lugar, ruta y archivo donde está el access.log
LogFile /var/www/logs-para-analizar/access.log
OutputDir /var/www/webalizer
Incremental yes
Grabamos y ejecutamos el Webalizer con un complejísimo, es broma:
sudo webalizer
Unos segunditos y tachán, apunta tu navegador a:
http://localhost/webalizer
Selecciona el mes actual, y en la siguiente pantalla la opción “Clientes” aquí verás las IPs que han visitado más la página durante el ataque o la bajada de rendimiento del server, busca las más abultadas que vamos a revisarlas.
Ahora nos faltará saber el Quién es quién de cada IP
¿Quién es quién?
Para eso podemos usar varias opciones, entre ella una via web:
http://whois.domaintools.com/67.195.112.52
Donde 67.195.112.52 es la IP sobre la que quieres conocer información y la otra es usar las herramientas de red del sistema que incorpora Ubuntu.
Con ellas puedes realizar un WHOIS, un LOOKUP , etc.
Si entras en “Explorar los puertos”, cosa que tarda un rato podrás también detectar si detrás hay un servidor web, un servidor FTP, o un emule abierto. Datos que te permitirán determinar con algo más de certeza si se trata de una empresa o un usuario.
También puedes rastrear la ruta para más o menos ver de donde es el país de origen, si este por ejemplo es de Ukrania o de la conchinchina probablemente se trate de un buscador en el que no te importe perder posicionamiento.
Cuidadín cuidadín con los GoogleBots y familia
Pues eso, asegúrate que de todas esas IPs no te apuntes ninguna que sea de un buscador conocido en el que te quieras posicionar, pues si la anotas y luego la baneamos perderás el posicionamiento en ese buscador pues tu Apache no le dejará entrar.
Ya tenemos las IPs localizadas y correctamente anotadas, ahora vamos a banearlas
Baneando IPs en Apache bajo Windows
Bueno esto a decir verdad es más o menos igual en Windows que en Linux que un radiocassette donde sea capaz de correr Apache.
Busca el fichero de configuración de Apache httpd.conf
En la sección Directory
Introduce al final, justo antes del cierre de la directiva </Directory> y una en cada línea la siguiente instrucción:
deny from TU-NO-PASAS
por ejemplo si quisiéramos banear a Yahoo, NO lo hagas!
deny from 67.195.112.52
Graba el fichero y reinicia Apache, en Windows desde “Accesorios -> Herramientas del Sistema -> Servicios -> Apache” botón de la derecha reiniciar.
Listas negras de IPs malignas
También de paso y por el mismo precio que nos ponemos a banear, una práctica aceptable sería el banear sistemáticamente aquellas IPs que se han detectado en el mundo recientemente como IPs malignas.
Yo he sacado una lista desde:
http://isc.sans.org/ipsascii.html
y desde:
http://isc.sans.org/sources.html
Baneando que es gerundio.
Copyright del creador en una web
sin comentarios, by the moment porfaplis, deja uno que "é grati"
Bueno, esto es algo que publico como solución a un pequeño agravio que he tenido hoy y que he solucionado de un plumazo, nunca mejor dicho. Se trata del típico caso del cliente, que voy a anonimizar pues no viene a cuento, que no quiere ver el copyright del creador que ha montado su página web o aplicación web.
Os pongo en antecedentes sobre el cliente, tengo un cliente, buen pagador y mejor persona , pero relajado en exceso, en su empresa cuenta con varios cambios de personal que han incidido en explicar y reexplicar ya ha demasiadas personas como se deben hacer las cosas, tanto se ha relajado que ya estamos fuera de garantías, aún así me viene constantemente con cambios, algunos ridículos como el que os presento en este email y revisiones de un proyecto transcurridos más de 11 meses de la entrega, vaya, con tanto cambio y relajación que ya va colmando el vaso, la jarra y la cisterna, por buena fe se le presta servicio aún a sabiendas de que se están columpiando estudiaré una limitación seria en el tiempo una tarifa plana para evitar esas sensaciones de agobio.
Bueno, tras esa primera descarga hoy la cosa ha ido de la siguiente manera tras el email de un cliente en el que me invitaba, no de muy buenas formas sino de forma imperativa, todo hay que decirlo, a quitar los enlaces de una tienda virtual creada bajo ecoommerce.com hacia mi página web, es decir la página del creador de la aplicación.
Mi respuesta ha sido la siguiente:
Esto es así, no se puede modificar.
Escueta y la verdad crispada, para que ocultarlo. El me ha preguntado que ¿cómo es eso de que no se puede modificar? a lo que le he dado la siguiente respuesta
Pues eso, el programa que monta la web tiene una marca y en este caso tiene enlaces a su creador, el cliente puede eliminar, con sus medios, si así lo desea la marca, al igual que puedes eliminar con triquiñuelas el logo de arranque de Windows o arrancar el escudo de la marca de un vehículo, o la marca de un televisor.
Su respuesta a este email ha sido un : ok, no tenía importancia… hablando se entiende la gente, lo sabemos todos, pero ¿hace falta tener todas y cada una de nuestras acciones más aún cuando se trata de defender nuestros trabajos y con ello crecer?
¿La conclusión? Vosotros mismos, la mía pues para empezar creo la Categoría de “Gestión de clientes” en este blog, y ya os iré explicando
Bloquear muchos intentos fallidos de acceso a servidor
sin comentarios, by the moment porfaplis, deja uno que "é grati"
Vamos a proteger nuestros servidores basados en Debian y Ubuntu con dos aplicaciones Fail2Ban y DenyHost ambas son unas aplicaciones ideales para proteger servidores puest te permite bloquear determinados ataques cuando estos fallan con la clave al intentar acceder a tu servidor, vaya el típico ataque de denegación de servicio.
Protegiendo Apache, FTP y los servidores de correo con Fail2Ban
Funciona de una forma muy sencilla, Fail2Ban lee los archivos de log de accesos por password o los errores del fichero de errores de apache error_log vetando a través del Firewall aquellas IPs que fallan muchas veces
Para instalarlo, desde Ubuntu o Debian:
sudo apt-get install fail2ban
Para configurarlo lanza un editor como nano o cualquier otro que tengas instalado
sudo nano /etc/fail2ban.conf
Tienes instrucciones sobre la configuración del mismo en:
http://www.fail2ban.org/wiki/index.php/HOWTO_fail2ban_spanish
Enlace: http://www.fail2ban.org/wiki/index.php/FAQ_spanish
Protegiendo el servicio de SSH
Ahora le toca el turno a DenyHosts cuya página web es: http://denyhosts.sourceforge.net/ para instalarlo nuevamente desde un terminal tipeamos:
sudo apt-get install denyhosts
DenyHost únicamente nos protegerá el servidor SSH, que ya es mucho. Nosotros lo hemos probado y rotundamente funciona sin tener que tocar nada de configuración, la gran ventaja es que además de analizar los logs con los intentos de conexión además accede de forma automática a listas de IPs atacantes desconocidas que se hallan en el servidor principal de DenyHost.
Si quieres modificar su configuración puedes hacerlo con un:
nano /etc/denyhosts.conf
Una de las opciones que te aconsejamos es la de sincronizar de forma automática y cada hora con el servidor de DenyHosts, para ello deberás descomentar una línea en ese archivo de configuración:
Recuerda que toda esta instalación y configuración se debe hacer como superusuario
Si la lías parda y te autobaneas
Si te sucede como a mi que durante las pruebas me autobaneé “sin querer queriendo” y al intentar acceder el servidorcito chulo como ninguno te escupe un:
ssh_exchange_identification: Connection closed by remote host
Tienes que cambiar de IP, acceder, para el servicio denyhosts y borrar la IP baneada del archivo /etc/hosts.deny yo lo hice desde el móvil, pues tengo un router con IP fija puxx, que va bien para casi nada, en cambio en el mobilette donde al tener una conexión 3G con una IP diferente me pude conectar, usé el programa ConnectBot de Android, que no me lo había mirado mucho y la verdad lo he visto un poco flu, pues para empezar no se como se maneja el cursor, si alguno de vosotros conoce algún otro software para conectarse a SSH desde Android please, que nos deje un comentario a todos.
