Activar MySQL Log Slow Queries

Comprobamos que, efectivamente, tenemos el log de querys lentas desactivado.

# mysqladmin var -uusario -ppassword |grep log_slow

| log_slow_queries | OFF

Editamos de la siguiente forma el archivo de configuración de MySQL, normalmente ubicado en /etc/my.cnf


log-slow-queries=/var/log/mysql-slow-queries.log
long_query_time = 1
log-queries-not-using-indexes

log-slow-queries, establece el lugar físico del archivo de log
long_query_time, establece a partir de que cantidad de segundos se considera lenta una query
log-queries-not-using-indexes, también logueará las queries lentas que no utilizen índices

Creamos el fichero mysq-slow-queries y ajustamos permisos


# touch /var/log/mysql-slow-queries.log
# chown mysql.root/var/log/mysql-slow-queries.log

Y reiniciamos el servidor

# /etc/init.d/mysqld stop
# /etc/init.d/mysqld start

Cuando tengamos algo de información útil en el archivo, podemos atacar directamente a las consultas más lentas, filtrandolas por la cantidad de tiempo empleado usando mysqldumpslow

# mysqldumpslow -t 10 /var/log/mysql-slow-queries.log

Fuente:  r u b e n o r t i z .es

Controlar el ancho de banda en Apache con mod_cband en centos 5.2

Aqui os escribo  este tutorial de mod_cband que es un modulo de apache nos permite controlar el ancho de banda usado por los usuarios conectados al servidor, ya sea en forma individual o general.

Instalación:

Descargamos el modulo.
Pagina del proyecto: http://sourceforge.net/projects/cband/

# wget http://downloads.sourceforge.net/cband/mod-cband-0.9.6.1.tgz?modtime=1138205796&big_mirror=0

Descomprimimos las fuentes

# tar -xvf mod-cband-0.9.6.1.tgz

Instalando dependencias necesarias

# yum install http-devel

Compilando las fuentes

# ./configure
# make
# make install

Agregamos el modulo al apache en el archivo httpd.conf, por defecto se agrega automáticamente la linea al compilar, si no fuera el caso, agregar la siguiente linea

# vim /etc/httpd/conf/httpd.conf

LoadModule cband_module modules/mod_cband.so

También es necesario agregar

CBandScoreFlushPeriod 1
CBandRandomPulse On

Reiniciamos el apache

# /etc/init.d/httpd restart

Ahora a configurar los dominios virtuales del apache:

En mi caso lo tengo en /etc/httpd/conf.d/virtual.conf
Se puede dar el caso de tenerlo en el mimos httpd.conf

Configuraciones y Limitaciones por Sitio

CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 20kb/s 3 3

El parámetro CBandSpeed es una configuración Global para dicho Sitio, definimos que lo usuarios no podran sobrepasar los 1024Kbps, 10 respuestas por segundo y 30 conexiones abiertas.

El parámetro CbandRemoteSpeed es una configuración para cada usuario conectado en forma separada, definimos que el usuario en forma individual podra descargar a lo máximo 20Kb/s con 3 peticiones por segundo y 3 conexiones permitida.

Asi quedara nuestro virtual host

# vim /etc/httpd/conf.d/virtual.conf

«<«VirtualHost *:80″>»
DocumentRoot /var/www/html/miweb.com
ServerName miweb.com
ServerAlias www.miweb.com
ErrorLog logs/miweb.com_error.log
CustomLog logs/miweb.com_access.log combined
CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 50kb/s 3 3
LogLevel warn
«<«/VirtualHost»>»

Nota: por alguna razon al poner mayor o menor no sale, asi que agrege «>» y «<«. para para que funcione no deben ir las comillas doble. Mucho ojo con eso.

Reiniciamos el apache

# /etc/init.d/httpd restart

y probamos nuestra web…. recomendaciones, podemos cambiar las variables, reiniciar el apache y probar.

Otras opciones

Podemos limitar el trafico mensual con:

CBandLimit 100M

Podemos ver en Linea el trafico y conexiones, etc (estatus de cband) con:

Creamos la carpeta

# mkdir /var/www/scoreboard

Le damos permisos para el apache

# chown apache:apache /var/www/scoreboard

Y agregamos al virtual host

CBandScoreboard /var/www/scoreboard
CBandPeriod 4W

«<«Location /cband-status»>»
SetHandler cband-status
«<«/Location»>»
«<«Location /cband-status-me»>»
SetHandler cband-status-me
«<«/Location»>»

Todo lo anterior se agrega al dominio virtual, quedando asi:

«<«VirtualHost *:80″>»
DocumentRoot /var/www/html/miweb.com
ServerName miweb.com
ServerAlias www.miweb.com
ErrorLog logs/miweb.com_error.log
CustomLog logs/miweb.com_access.log combined
CBandLimit 1000M
CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 50kb/s 3 3
LogLevel warn
CBandScoreboard /var/www/scoreboard
CBandPeriod 4W
«<«Location /cband-status»>»
SetHandler cband-status
«<«/Location»>»
«<«Location /cband-status-me»>»
SetHandler cband-status-me
«<«/Location»>»
«<«/VirtualHost»>»

Nota: por alguna razon al poner mayor o menor no sale, asi que agrege «>» y «<«. para para que funcione no deben ir las comillas doble. Mucho ojo con eso.

Reiniciamos el apache

# /etc/init.d/httpd restart

De lo anterior limitamos el trafico mensual a 1GB
para ver las estadísticas:

http://miweb.com/cband-status o http://miweb.com/cband-status-me

A probar…
Suerte

Proteger subdominios en Plesk más SSL

Un pequeño detalle que hasta la fecha (y que me corrijan si me equivoco) que no ha solucionado la gente de Plesk, es el de poder proteger directorios fuera de la raíz principal del dominio creado, mediante la opción “Protected Directories”. Por ejemplo, queremos crear un subdominio en nuestro dominio principal.

Nombre de dominio: www.probando.com

Nombre de subdominio: subdominio.probando.com

Las raíces de uno y otro son:

www.probando.com /httpdocs o /httpsdocs

subdominio.probando.com /subdomains/subdominio/httpdocs o /subdomains/subdominio/httpdocs

El problema aquí es que Plesk (probado en la versión 8.3.0) no reconoce las raices de directorio que no sean /httpdocs o /httpsdocs. Por lo tanto, si creamos un subdominio, no podemos protegerlo “comodamente” al menos. Hay dos opciones. Si tenemos licencias para varios dominios, podemos crear un dominio nuevo, quitarle las www y asignarle el nombre de subdominio pero eso es un desperdicio de la licencia. La otra opción es crear el htaccess y htpasswd a pelo y es muy fácil. Pero como se que no me voy a acordar dentro de 1 año, lo pongo aquí y aquí se queda :D De paso, aprovecho para comentar como se puede utilizar los certificados que genera el propio panel de Plesk, que, a falta de uno comprado a otro proveedor ya nos pueden servir de algo.

No hace falta entrar por ssh, con un ftp lo podemos hacer todo. Listo los pasos desde cero.

  1. Domains->Nombredenuestrodominio->Certificates->Add New Certificate (configuramos los datos y clickamos en Self-Signed. Ya tenemos el certificado creado para ese dominio)
  2. Si queremos habilitar el certificado para el dominio principal: Domains->Nombredenuestrodominio->Setup (habilitamos el soporte SSL)
  3. Creamos el subdominio: Domains->Nombredenuestrodominio->Subdomains->Add Subdomain (habilitamos el soporte SSL)
  4. Automáticamente se crea una carpeta en /subdomains/<nombre>
  5. Ahora mismo tenemos creado un certificado para el dominio y hemos creado un subdominio. Vamos a proteger ese directorio. En este caso, que vamos a utilizar el protocolo https, necesitamos trabajar con la carpeta raíz del subdominio /subdomains/<nombre>/httpsdocs
  6. Utilizamos cualquier forma de generar un htaccess y su correspondiente htpasswd. Al final del post hay un link al respecto. Lo fundamental es saber la ruta completa hasta la carpeta que hace de DocumentRoot. Podemos mirarlo haciendo un archivo php y llamando a phpinfo()
  7. Cuando tengamos los archivos los subimos a /subdomains/<nombre>/httpsdocs. El nombre correcto de cada uno ha de ser .htaccess y .htpasswd. Si se desaparecen al subirlos por ftp, fuerza el ver archivos ocultos ;)
  8. Accede a https://subdominio.nombredetudomonio.com y prueba a entrar. Si no te coge la contraseña asegurate de que la raíz hasta el .htpasswd es correcta. Si no has querido soporte ssl será http://etc.etc.etc.

Ejemplo de htaccess:

AuthUserFile /var/www/vhosts/nombrededominio/subdomains/panel/httpsdocs/.htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected Area"
AuthType Basic
<limit GET POST>
require valid-user
</limit>

Ejemplo de htpasswd:

usuariovalido:jkldfZdlfjds890

Links:

Instalar TRAC en CentOS 5

//www.edgewall.org/gfx/trac_logo.png

Guía breve para instalación básica de TRAC. ¿Qué es TRAC? Yo lo definiría como un “documentador” :P pero la definición más técnica sería una wiki con sistema de seguimiento de errores para proyectos de desarrollo de software. Incorpora una interfaz para Subversion, una línea de tiempo que muestra los eventos actuales y pasados del proyecto en orden, etc. Más info en Trac.

Esta pequeña guía ha funcionado para CentOS 5.
Entorno a instalar

  • Apache 2 utilizando mod_dav_svn
  • Trac mediante Apache 2 con mod_python
  • Repositorios de SVN en /srv/svn, accesible por http://server/svn/proyecto
  • Proyectos de TRAC en /srv/trac, accesible por http://server/trac/proyecto

Requisitos

  • Python >= 2.3
  • Para sistemas RPM: python-devel 7 python-xml
  • setuptools
  • Base de datos: SQLite, PostgreSQL o MySQL (escogemos SQLite por recomendación de Trac Wiki)
  • ClearSilver: opcional para algunos plugins que lo requieren Si queremos control de versiones necesitamos Subversion (versions recommended: 1.2.4, 1.3.2 or 1.4.2)

1. Instalamos subversion y el mod de SVN para Apache

# yum install subversion mod_dav_svn

Si las siguientes dos líneas no están presentes, añadelas (revisar subversion.conf en conf.d, porque puede que estén ahí)

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

2. Instalamos el mod para python, algunos paquetes necesarios a posteriori y ClearSilver del repositorio de Dag

# yum install mod_python
# yum install neon neon-devel python-devel swig

# wget Dag.Wieers.com/ClearSilver
# rpm -i clearsilver-0.10.4-1.el5.rf.i386.rpm
# wget Python ClearSilver
# rpm -i python-clearsilver-0.10.4-1.el5.rf.i386.rpm

3.  Algo que no aparece en ninguna de las guías es la instalación de SetupTools. Nada más alejado de la realidad que yo quiera o pretenda entender que significa y que hace SetupTools. Sólo sé que es necesario para instalar luego el Trac. No sé si soy el único, pero cada vez que entro en esa web me dan ganas de suicidarme. En fin, cosas que tiene uno. Para instalar SetupTools hacemos:

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py

4. Instalar Trac

# wget http://ftp.edgewall.com/pub/trac/Trac-0.11.2.1.tar.gz
# tar xfz Trac-0.11.2.1.tar.gz
# cd Trac-0.11.2.1

# python ./setup.py install

Ahora nos pregunta una serie de cosas: nombre de nuestro proyecto, tipo de base de datos(por defecto y recomendación, lo dejamos en default que es SQLite), path hacia los repositorios, path al proyecto, etc.

Creamos nuestro repositorio de SVN

# svnadmin create –fs-type fsfs /srv/svn/proyecto

Inicializamos un proyecto de TRAC

# mkdir /srv/trac/
# trac-admin /srv/trac/proyecto initenv

El path para el repositorio es /srv/svn/proyecto
Damos permisos a Apache sobre los directorios que requerimos.

# chown -R apache.apache /srv/svn/
# chown -R apache.apache /srv/trac/

Le decimos a Apache donde está el repositorio de SVN, creando configuración adicional para Apache

# vim /etc/httpd/conf.d/subversion.conf

<Location /svn/proyecto>
DAV svn
SVNPath /srv/svn/
AuthType Basic
AuthName “Repositorio de SVN”
AuthzSVNAccessFile /srv/svn/svn-acl-conf
AuthUserFile /srv/svn/.htpasswd
Require valid-user
</Location>

Creamos un fichero .htpasswd, donde añadimos los usuarios y su password con acceso al repositorio

# touch /srv/svn/proyecto.htpasswd
# htpasswd -m /srv/svn/proyecto.htpasswd

Creamos una Lista de Control de Acceso (ACL) para el repositorio

# vim /srv/svn/svn-acl-conf

Y añadimos las siguientes directivas

[proyecto:/]
= rw

Le decimos a Apache donde está el TRAC, añadiendo otro archivo de configuración

# vim /etc/httpd/conf.d/trac.conf

<Location /trac/proyecto>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /srv/trac/proyecto
PythonOption TracUriRoot /trac/proyecto
<Location>

<Location /trac/proyecto/login>
AuthType Basic
AuthName “trac”
AuthUserFile /srv/trac/proyecto.htpasswd
Require valid-user
<Location>

Añadimos un usuario de TRAC

# touch /srv/trac/proyecto.htpasswd
# htpasswd -m /srv/trac/proyecto.htpasswd usuario

Le damos permisos de admin

# trac-admin /srv/trac/ permission add TRAC_ADMIN

Reiniciamos Apache

# service httpd restart

NOTA1: el WebAdmin Plugin no hace falta en la versión 0.11, ya viene por defecto. Sólo hay que dar permisos de TRAC_ADMIN por consola a un usuario y la pestaña de “Admin” aparecerá.

Links

Hacker`s Black Book

//img90.imageshack.us/img90/2322/ellibronegrodelhackerblrs3.png
Hacker`s black book

Fascinante obra digital equivalente a más de 1.000 páginas escritas.

Recorrido completo y profundo por el Mundo Hacker: su esencia, sus procedimientos y métodos, herramientas, programas y utilidades, con amplias explicaciones.

Los mejores escritos hacker en idioma Español.

Cómo defender su PC de “Ataques” externos, virus, troyanos, escaneo de puertos, aplicaciones perniciosas.

Cuatro discos llenos de información, utilidades, vínculos a páginas Web.

Contenido:
Disco 1:

  • PRÓLOGO por “El Hacker Negro”
  • Medidas de Seguridad para su sistema de cómputo
  • INTRODUCCIÓN: El Hacker –Manual
  • Todo sobre la IP
  • Crackeando Webs
  • Qué es el “Sniffin”
  • Hackeando vía TELNET
  • Qué es el “Spoofing”
  • Cómo se hacen los VIRUS

Disco 2:

  • Amenazas en la Red
  • INGENIERÍA INVERSA
  • Agujeros de seguridad informática
  • Entrar en Pc’s con recursos compartidos
  • Guía del CRACKER: manejo de ensamblador
  • Apodérate de ICQ
  • Cifrado de información
  • Cómo sacar la IP en IRC
  • Cómo liberarse de un virus TROYANO
  • Manual del IRC
  • Manual del Back Oriffice
  • Navegando anónimamente bajo Proxys
  • Crackeando sistemas
  • Identificación como Root

Disco 3: (Utilidades)

  • Descifrador de passwords PWL
  • Descifrador de asteriscos en passwords
  • Descifrando passwords del CMOS
  • Encripta tus archivos (programa Crypto)
  • Gran número de seriales de programas comerciales
  • Guía ligera del Hacker
  • IP AGENT
  • Lista completa de puertos de un sistema
  • OPTOUT2000: Detector de Intrusos (instálalo en tu sistema para comenzar-es Freeware).
  • Usa la “fuerza bruta” para adivinar claves en archivos ZIP

Disco 4: (Utilidades)

  • BIOS CRACKER: encuentra passwords de BIOS (por ejemplo, en portátiles)
  • Elimina los 30 días de los programas shareware
  • Monitorea tu Acceso Telefónico a Redes

Descripcion.