|
Ver temas sin respuesta | Ver temas activos
Foros Linux » Administración del sistema » Seguridad
|
| Autor |
Mensaje |
ami0

Forista Nuevo
Registrado: Mié Oct 19, 2011 3:03 pm Mensajes: 16
|
 Publicado: Mié Oct 19, 2011 3:19 pm |
|
|
Hola:
Espero estar posteando en la zona correcta.
Soy administrador de un foro SMF (v 1.1.15)con no muchos conocimientos de linux, es largo de explicar cómo llegué aquí. Tenemos instalado Apache y MySQL. El caso es que desde hace semanas tenemos a un usuario que se entretiene tumbándonos el servidor cuando le apetece y estamos intentando saber qué hace para dejarlo frito.
Hace un par de horas ha vuelto a atacar, en principio creía que lo que hacía era hacer un flooding de conexiones para dejar tostado el servidor, pero me equivocaba, estas son el número de conexiones con el server tostado:
root:/etc# netstat -punta | wc -l 397 root
Haciendo un top veo que no tiene la CPU alta, ni está tirando de swap, ni procesos zombie...nada raro vamos. He visto que tenía 147 procesos de apache, no sé si es normal:
root:/var/log# ps -ef | grep apache | wc -l 147 root:
También he visto que hay muchos procesos abiertos de www-data, 131.
He lanzado un vmstat y ha salido esto:
root:/var/log# vmstat 5 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 80 0 521080 0 0 0 0 3 18 0 3 55 6 0 39 0 76 0 538068 0 0 0 0 10 0 0 2357 12 8 0 80 0 78 0 555760 0 0 0 0 0 0 0 1602 8 4 0 88 0 81 0 573800 0 0 0 0 14 0 0 843 18 12 0 69 8 73 0 583532 0 0 0 0 8 0 0 1719 16 12 0 72 0 81 0 582928 0 0 0 0 67 0 0 328 6 5 0 90 0 79 0 580512 0 0 0 0 2053 0 0 674 10 5 0 84 0 78 0 575196 0 0 0 0 5215 0 0 1257 9 5 0 86 0 75 0 565748 0 0 0 0 4150 0 0 1562 11 8 0 82 0 74 0 568000 0 0 0 0 2985 0 0 1624 12 9 0 79 0 72 0 577404 0 0 0 0 9376 0 0 1641 8 7 0 85 0 70 0 597376 0 0 0 0 2045 0 0 998 8 5 0 87 1 79 0 596256 0 0 0 0 42 0 0 340 24 4 0 72 ^C root:
No sé si esos valores son correctos o no. He mirado en el dmesg, messages, syslog, mysql, mysqlerr, en el log del apache...pero no he visto nada raro.
Siempre que se tumba el servidor sale el ya típico mensaje al que estamos empezando a acostumbrarnos, "Sorry, SMF was unable to connect to the database. This may be caused by the server being busy. Please try again later. "
Alguien sabe cómo investigar el tipo de ataque que hace?, qué comandos mirar?, cómo saber si tira la base de datos o vete a saber?. Al rato el foro vuelve a la normalidad, pero, como os digo, lo tira de nuevo a los 5 minutos con una facilidad pasmosa.
Cualquier ayuda para pillarlo será bien recibida (pago en carne opcional).
Gracias!!
|
|
|
|
 |
mcun

Moderador
Registrado: Dom Abr 18, 2010 4:30 pm Mensajes: 2790 Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
|
 Publicado: Mié Oct 19, 2011 7:41 pm |
|
|
Primero : por que estas seguro de que es un ataque ? bien podría ser un problema de hardware o un script mal echo ..
Segundo: de que tipo de ataque estas hablando ? osea que tipo de ataque crees que esta sufriendo el servidor.
Tercero: el servidor es compartido ?
www-data, 131 procesos es una suma irrisoria osea que si esa es la máxima cantidad de conexiones que registran los log no creo que sea por allí el ataque lo mismo de netstat -punta | wc -l yo en este momento tengo 4 en el localhost y no tengo mas que una pagina abierta
_________________ ... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..
Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM Debian| ArchLinux |Linux User #508809
|
|
|
|
 |
ami0

Forista Nuevo
Registrado: Mié Oct 19, 2011 3:03 pm Mensajes: 16
|
 Publicado: Mié Oct 19, 2011 11:56 pm |
|
|
Gracias por contestar mcun. Sabemos que es un ataque porque el personaje, a través del chat del foro, avisa siempre de su "proeza", segundos más tarde el foro cae.
No tenemos ni idea de qué tipo de ataque realiza, creía que era un SYN Flood, pero el netstat lo desmiente. Imagino que en alguna parte del servidor ha de dejar una "huella" de lo que pasa, pero no sé dónde mirarlo. A lo mejor está petando el MySQL con unas SELECT malformadas, o tira el apache de alguna forma, estamos muy perdidos.
El servidor es dedicado.
Saludos
|
|
|
|
 |
mcun

Moderador
Registrado: Dom Abr 18, 2010 4:30 pm Mensajes: 2790 Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
|
 Publicado: Jue Oct 20, 2011 6:54 am |
|
|
revisa los accesos al servidor corre un roottkit me parece que el ataque es desde dentro, chequea las aplicaciones que están corriendo
_________________ ... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..
Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM Debian| ArchLinux |Linux User #508809
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Jue Oct 20, 2011 7:03 am |
|
ami0 escribió: . A lo mejor está petando el MySQL con unas SELECT malformadas, o tira el apache de alguna forma, estamos muy perdidos.
¿Y por qué debería tener acceso al servidor MySQL? ¿No tienen bloqueado ese puerto?
|
|
|
|
 |
ami0

Forista Nuevo
Registrado: Mié Oct 19, 2011 3:03 pm Mensajes: 16
|
 Publicado: Jue Oct 20, 2011 8:01 am |
|
|
mcun, cómo puedo hacer eso?, siento la ignorancia.
neurus, sólo hago suposiciones desde los pocos conocimientos que tengo del tema, pueden ser totalmente desacertadas.
Por lo que he visto, el puerto del MySQL está abierto:
root:~# netstat -punta | grep 330 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 15230/mysqld
Debería estar cerrado el puerto?.
Saludos.
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Jue Oct 20, 2011 8:13 am |
|
|
Claro que debería estar cerrado. Sería muy extraño que ustedes hicieran peticiones SQL desde consola. Las peticiones se hacen, casi siempre, a través de php, ejecutándose en el servidor (para MySQL, es una petición desde localhost, por lo que no hace falta tener abierto el puerto al exterior).
Mira los logs que cuelgan de /var/log/mysql/ ; tal vez encuentres algo. Pero en cualquier caso, cierra ese puerto.
|
|
|
|
 |
mcun

Moderador
Registrado: Dom Abr 18, 2010 4:30 pm Mensajes: 2790 Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)
|
 Publicado: Jue Oct 20, 2011 8:17 am |
|
Citar: mcun, cómo puedo hacer eso?, siento la ignorancia. pues buscando información para salir de la ignorancia rootkitlas aplicaciones pues revisa el código los directorios que no haya un directorio oculto o código ofuscado etc...
_________________ ... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..
Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM Debian| ArchLinux |Linux User #508809
|
|
|
|
 |
ami0

Forista Nuevo
Registrado: Mié Oct 19, 2011 3:03 pm Mensajes: 16
|
 Publicado: Jue Oct 20, 2011 9:25 am |
|
|
Hacemos un backup diario de la base de datos desde un PC de un administrador, vamos a ver cómo se pondrían las reglas oportunas para bloquear todas las conexiones hacia ese puerto, excepto la IP de este PC. No hay nada en los ficheros de log de mysql, todos están vacíos..
Lo sé mcun, no soy de los que preguntan y esperan a que les contesten. Tengo los ojos secos de buscar documentación, bugs de seguridad, comandos útiles...
Saludos y gracias por toda la ayuda.
|
|
|
|
 |
neurus

Forista Distinguido
Registrado: Sab Oct 09, 2004 11:00 pm Mensajes: 1299
|
 Publicado: Jue Oct 20, 2011 9:35 am |
|
|
Los logs no pueden estar vacíos. Probablemente, estés intentando verlos como usuario, y necesitas permisos de root para ver el contenido de los logs. Si el SMF está conectado a la base de datos (de poco serviría si no lo estuviese), esos logs tienen que ser bastante largos.
Mira qué tamaño tienen, y te darás cuenta de que no están vacíos.
|
|
|
|
 |
ami0

Forista Nuevo
Registrado: Mié Oct 19, 2011 3:03 pm Mensajes: 16
|
 Publicado: Jue Oct 20, 2011 9:40 am |
|
|
Yo entro como root al servidor, esto es lo que saca el ls:
root:/var/log/mysql# ls -ltrah total 64K -rw-r----- 1 mysql adm 20 Oct 13 03:20 mysql.log.7.gz -rw-r----- 1 mysql adm 20 Oct 13 03:20 mysql-slow.log.7.gz -rw-r----- 1 mysql adm 20 Oct 14 03:20 mysql.log.6.gz -rw-r----- 1 mysql adm 20 Oct 14 03:20 mysql-slow.log.6.gz -rw-r----- 1 mysql adm 20 Oct 15 03:23 mysql.log.5.gz -rw-r----- 1 mysql adm 20 Oct 15 03:23 mysql-slow.log.5.gz -rw-r----- 1 mysql adm 20 Oct 16 03:20 mysql.log.4.gz -rw-r----- 1 mysql adm 20 Oct 16 03:20 mysql-slow.log.4.gz -rw-r----- 1 mysql adm 20 Oct 17 03:20 mysql.log.3.gz -rw-r----- 1 mysql adm 20 Oct 17 03:20 mysql-slow.log.3.gz -rw-r----- 1 mysql adm 20 Oct 18 03:20 mysql.log.2.gz -rw-r----- 1 mysql adm 20 Oct 18 03:20 mysql-slow.log.2.gz -rw-r----- 1 mysql adm 20 Oct 19 03:20 mysql.log.1.gz -rw-r----- 1 mysql adm 20 Oct 19 03:20 mysql-slow.log.1.gz -rw-r----- 1 mysql adm 0 Oct 20 03:20 mysql.log -rw-r----- 1 mysql adm 0 Oct 20 03:20 mysql-slow.log drwxr-xr-x 11 root root 4.0K Oct 20 03:20 .. drwxr-s--- 2 mysql adm 4.0K Oct 20 03:20 .
root:/var/log/mysql# more mysql.log root:/var/log/mysql#
Acabamos de modificar el IPTABLES para que sólo el servidor que hace los backups de la base de datos tenga acceso al puerto 3306, el resto capado. Comprobado que hace drop.
|
|
|
|
 |
hmg79

Forista Legendario
Registrado: Lun Mar 31, 2008 12:00 am Mensajes: 1550
|
 Publicado: Jue Oct 20, 2011 11:15 am |
|
|
Podes pasar la dirección del servidor?
|
|
|
|
 |
ami0

Forista Nuevo
Registrado: Mié Oct 19, 2011 3:03 pm Mensajes: 16
|
 Publicado: Jue Oct 20, 2011 11:38 am |
|
|
La IP del server es 80.231.171.40.
Otra cosilla, hemos visto que la versión actual del apache2 tiene vulnerabilidades serias de seguridad (2.2.9). He lanzado un apt-get upgrade apache2, ha actualizado y reemplazado 44 paquetes pero aún así seguimos teniendo la misma versión.
Me he bajado la 2.2.21 y dejado en el server, pero me acojona lanzar el Install directamente por problemas de dependencias que pueden surgir. Se puede lanzar o he de hacer algo antes del upgrade a mano?.
|
|
|
|
 |
calex78

Ganador CSEL 2008
Registrado: Mar May 11, 2004 11:00 pm Mensajes: 3961 Ubicación: México.
|
 Publicado: Jue Oct 20, 2011 12:13 pm |
|
ami0 escribió: Gracias por contestar mcun. Sabemos que es un ataque porque el personaje, a través del chat del foro, avisa siempre de su "proeza", segundos más tarde el foro cae.
No tenemos ni idea de qué tipo de ataque realiza, creía que era un SYN Flood, pero el netstat lo desmiente. Imagino que en alguna parte del servidor ha de dejar una "huella" de lo que pasa, pero no sé dónde mirarlo. A lo mejor está petando el MySQL con unas SELECT malformadas, o tira el apache de alguna forma, estamos muy perdidos.
El servidor es dedicado.
Saludos si se conecta el tipo a tu foro, hay forma de averiguar su direccion ip y tratar de bloquear sus accesos al servidor, si s eprotege por un proxy instala un plugin antiproxy a tu foro. te recomiendo esta lectura para proteger accesos por fuerza bruta a tu servidor www.forat.info/2008/03/28/como-proteger ... rza-bruta/es importante para ello ubiques la ip o con conjunto de ipos que te estan atacando. compara la ip de quien anuncia en tu foro con la sips de los logs del sistema. usa el comando tail -f /var/log/apache2/access.log para ver ello en vivo al momento del ataque. igualmente revisa los accesos erroneos al servidor, si te esta atacando con un DDos puede estar utilizando multiples maquinas zombies, muchas de ellas no s epodran conectar. usa el comando tail -f /var/log/apache2/error.log para verificar eso. Recomendacion documentate mas, como admin y responsable de un servidor debes hacerlo. Saludos
_________________ Twitter @calex78 Linux User #394644 Ubuntu 11.10
|
|
|
|
 |
ami0

Forista Nuevo
Registrado: Mié Oct 19, 2011 3:03 pm Mensajes: 16
|
 Publicado: Jue Oct 20, 2011 3:41 pm |
|
Muchas gracias por las recomendaciones calex78, creemos que el ataque es o bien al MySQL o al Apache, no un ataque de SYN Flood o fuerza bruta, ya que cuando éste se produce el resto de webs que no tiene esos paquetes cargan perfectamente. Gracias a neurus nos hemos dado cuenta de que teníamos abierto el MySQL a todos, eso ya está solucionado. Ahora falta actualizar el Apache a la última versión e instalar mod_evasive. Te comento que en el fichero access.log del apache2 aparecen estas líneas constantemente: 66.71.247.134 - - [20/Oct/2011:21:23:14 +0200] "GET /mods/index.php?mod=977 HTTP/1.0" 404 287 "-" "Opera/9.21 (PHP/SMF/Aeva; U; fr)" 66.71.247.135 - - [20/Oct/2011:21:23:14 +0200] "GET /mods/index.php?mod=977 HTTP/1.1" 404 287 "-" "-Esas 2 IPs son las de simplemachines.org. En el archivo no aparece otro mensaje que no sean esos dos: root:/var/log/apache2# grep -v 66.71.247.* access.log root:/var/log/apache2#A raíz de esto, veo que el foro tiene muchas conexiones abiertas a los servidores de simplemachines: root:netstat -plan|grep :80 | awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -n 672 66.71.247.134No sé si serán normales tantas conexiones. Y, por supuesto, te doy toda la razón, he de documentarme más. Gracias de nuevo. Editado -- Jue Oct 20, 2011 10:40 pm --Buenas Estaba echando un ojo al fichero /var/log/apache2/error.log cuando veo que sale esto: [Thu Oct 20 23:09:36 2011] [error] server reached MaxClients setting, consider raising the MaxClients setting [Thu Oct 20 23:09:52 2011] [error] [client 84.20.17.184] File does not exist: /var/www/vhosts/default/htdocs/prueba.txtY luego empiezan a salir muchísimos mensajes cada segundo de este tipo: [Thu Oct 20 23:10:12 2011] [error] [client 66.71.247.135] File does not exist: /var/www/modsLa 66.71.247.135 es simplemachines.org, no sé porqué salen taaaantos mensajes. Y por último también he visto este tipo de mensaje: [Thu Oct 20 22:53:39 2011] [error] [client 85.60.92.94] request failed: error reading the headersLa config del apache2.conf es esta: <IfModule mpm_prefork_module> StartServers 15 MinSpareServers 5 MaxSpareServers 20 MaxClients 175 MaxRequestsPerChild 4000 </IfModule>Y los siguientes campos Timeout 1 MaxKeepAliveRequests 500 KeepAliveTimeout 2Decidme si veis algo raro en los parámetros del apache2.conf. Y encima el mamón anuncia que será implacable y atacará una y otra vez la web Editado -- Jue Oct 20, 2011 10:41 pm --Abro otro post distinto para que no sea uno y muy grande. En el momento del ataque, las conexiones abiertas, ordenadas por ip y número de conexiones son estas: root:/var/log/apache2# netstat -plan|grep :80 | awk {'print $5'}|cut -d: -f 1 1 0.0.0.0 1 118.98.31.4 1 14.98.51.8 1 151.52.95.131 1 151.56.135.248 1 174.142.104.58 1 186.61.26.98 1 188.27.4.114 1 189.19.62.51 1 190.107.37.223 1 190.134.53.61 1 190.219.244.163 1 2.136.63.211 1 2.225.131.219 1 2.36.170.63 1 200.111.20.158 1 200.124.249.25 1 200.69.112.18 1 201.195.217.218 1 203.89.28.101 1 207.46.194.74 1 208.69.40.100 1 208.93.153.70 1 211.53.208.28 1 212.7.202.36 1 218.28.111.46 1 220.181.108.90 1 46.182.120.192 1 50.19.160.30 1 62.83.227.207 1 64.15.158.134 1 64.191.24.22 1 78.139.162.231 1 79.144.69.233 1 80.58.220.161 1 81.47.142.38 1 81.61.2.250 1 83.60.132.58 1 84.121.209.67 1 84.126.55.254 1 85.25.100.8 1 85.56.8.58 1 85.93.2.63 1 87.219.250.79 1 87.220.125.137 1 87.221.189.239 1 88.191.133.78 1 88.7.242.242 1 88.8.246.184 1 91.198.61.11 1 94.228.13.75 1 95.39.174.189 2 189.152.193.244 2 189.195.25.208 2 190.129.169.65 2 190.21.241.194 2 190.230.218.235 2 190.69.53.6 2 200.47.83.166 2 200.8.47.124 2 206.188.81.39 2 217.127.58.126 2 66.50.239.141 2 83.42.222.139 2 87.221.65.204 2 90.170.65.225 2 94.34.163.182 3 186.46.80.190 3 187.195.82.178 3 188.85.56.89 3 189.162.212.216 3 190.18.52.82 3 190.233.226.224 3 83.44.199.104 3 87.219.60.38 3 95.17.97.31 4 187.176.116.237 4 190.136.160.48 4 190.254.241.131 4 67.195.113.223 4 74.177.189.74 4 79.148.91.45 4 85.152.177.68 4 87.218.55.128 5 148.213.234.232 5 189.217.41.97 5 190.222.18.249 5 213.37.9.229 6 186.178.107.247 6 186.81.190.41 6 189.139.11.176 6 190.17.192.170 6 79.144.56.147 6 83.49.143.76 6 84.152.159.191 6 85.84.194.178 6 95.20.2.133 7 190.127.38.109 7 87.221.240.149 8 190.135.24.163 8 190.71.230.12 8 201.200.122.234 8 213.37.180.173 8 79.146.71.105 9 190.240.223.9 10 186.13.159.250 10 190.97.77.21 10 95.22.174.104 14 186.58.80.72 15 187.135.121.109 16 187.159.153.71 18 83.53.30.229 19 95.19.77.168 20 95.22.204.119 24 81.44.164.230 25 188.76.144.231 27 186.69.249.72 39 62.36.44.251 84 66.71.247.134 442 66.71.247.135 root:/var/log/apache2#ese número de conexiones se puede considerar como ddos?.
|
|
|
|
 |
|
|
|
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados
No puede abrir nuevos temas en este Foro No puede responder a temas en este Foro No puede editar sus mensajes en este Foro No puede borrar sus mensajes en este Foro No puede enviar adjuntos en este Foro
|
|