Archivo del sitio

Debian: Cómo instalar un servidor web (Apache + PHP)

feather-small Distro: GNU/Linux Debian “Wheezy” (7.2)

Funciona en: Debian “Etch” (4.0) – Debian “Wheezy” (7.3)

La ventaja de tener un equipo con Debian es que tenemos una gran cantidad de servicios y aplicaciones que podemos instalar directo de los repositorios oficiales, de hecho, la versión “Estable” de Debian está pensada para ser utilizada como servidor. En este post, revisaremos los pasos a seguir para montar Apache (servidor web) y hacer que soporte php5.

Pasos a seguir

1.- Instalaremos el servidor web Apache (como root):

$ su
# aptitude install apache2

Podemos comprobar que el servicio está instalado correctamente si abrimos en el navegador nuestra dirección local: http://127.0.0.1 y vemos el siguiente mensaje:

itWorks

Desde la consola podemos revisar el status del demonio* [status], detenerlo [stop] o reiniciarlo [restart] (para detener o reiniciar un servicio debemos estar loggeados como root) a través de la ruta /etc/init.d, de la siguiente manera:

# /etc/init.d/apache2 status

Nos regresa:

Apache2 is running (pid 2411).

*Entiéndase como demonio, un daemon, o proceso que corre en 2do plano

2.- Una vez instalado Apache debemos cargar el módulo para que soporte php5. Para hacerlo ejecutamos:

# aptitude install libapache2-mod-php5

3.- Por default, al finalizar la instalación de Apache, nuestra carpeta /var/www tendrá permiso y grupo de root, lo cual no nos permitirá poder escribir nuestros archivos en esa ruta a menos que tengamos los permisos pertinentes (esto es, ningún usuario salvo root puede escribir en esa carpeta). Una alternativa que tenemos es utilizar el grupo www-data (al instalarse Apache, creará un usuario y grupo www-data), asignando a éste grupo los usuarios que queremos tengan permisos de escritura en /var/www.

Para hacerlo ejecutaremos en una consola lo siguiente:

1) Agregamos el usuario que queramos al grupo www-data

# usermod -a -G www-data tuNombreDeUsuario

Si quieres que el home del usuario sea /var/www puedes ejecutar:

# usermod -d /var/www tuNombreDeUsuario

2) Definimos que el grupo para /var/www sea www-data

# chgrp -R www-data /var/www

3) Cambiamos los permisos para que podamos escribir sobre el directorio y establecemos el bit setgid (SGID):

# chmod 775 -R /var/www
# chmod g+s /var/www

Nuestros permisos quedarían algo como:

# ls -al /var
drwxrwsr-x  3 root www-data 4096 May 28 08:49 www

3.- Algunos puntos importantes:

– El archivo de configuración de apache se encuentra en /etc/apache2/apache2.conf

– Podemos leer el manual de referencia ejecutando:

# man apache2

– Los archivos de nuestras páginas web, los podremos encontrar/guardar en el directorio: /var/www

– Si tenemos instalado MySQL y queremos que PHP soporte la extensión para conexiones con MySQL podemos ejecutar:

# aptitude install php5-mysql

SOLUCIÓN A POSIBLES PROBLEMAS

– Archivo de configuración principal:
/etc/apache2/apache2.conf
En ese archivo podemos hacer configuraciones globales, contiene un resumen de como podemos administrar nuestro apache, nos presenta la siguiente estructura de directorios:

# /etc/apache2/
# |-- apache2.conf
# | `-- ports.conf
# |-- mods-enabled
# | |-- *.load
# | `-- *.conf
# |-- conf.d
# | `-- *
# `-- sites-enabled

Y nos dice que para dar de alta nuevos módulos nos apoyemos de los comandos: a2enmod/a2dismod, a2ensite/a2dissite, a2enconf/a2disconf.

Veremos un ejemplo de como cargar un módulo en este post.

– Cambiar puerto de escucha:
En mi caso el servidor ya tenía nginx instalado por lo que al terminar de instalar Apache no pudo empezar a correr, por que no podía abrir el socket en el puerto 80. Para cambiar el puerto de escucha modificaremo el archivo:
/etc/apache2/ports.conf

En la línea:

Listen 80

Cambiamos el 80 por el nuevo puerto que ocupamos (mi caso 30100). ports.conf nos recomienda hacer los cambios apropiados para VirtualHost en: /etc/apache2/sites-enabled/000-default.conf

Reiniciamos apache:

# /etc/init.d/apache2 restart

Error: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ‘ServerName’ directive globally to suppress this message

Para resolver este problema, nos vamos al directorio de archivos de configuración:

# cd /etc/apache2/conf-available

Creamos un nuevo archivo y lo daremos de alta como módulo:

# echo "ServerName localhost">servername.conf

Habilitamos el nuevo módulo:

# a2enconf servername.conf

Reiniciamos:

# /etc/init.d/apache2 restart

Como en el caso anterior, modificamos también el archivo /etc/apache2/sites-available/000-default.conf

Ejemplo de mi archivo /etc/apache2/sites-available/000-default.conf

<VirtualHost *:10000>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
ServerName localhost

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
</VirtualHost>



– Archivos de bitácora log (errores y acceso)

Se encontrarán en la ruta: /var/log/apache2

Solamente root puede acceder a éstos archivos, y son dos archivos los que nos interesan access.log y error.log

 

Enlaces de interés:

https://wiki.debian.org/Apache

http://www.rackspace.com/knowledge_center/article/how-to-add-linux-user-with-document-root-permissions

http://es.wikipedia.org/wiki/Chmod

Debian: Instalar Adobe Flash

Distro: GNU/Linux Debian “Wheezy” (7.2)

En Debian, al tener una instalación fresca, tendremos el navegador Iceweasel instalado por default. Iceweasel no es otra cosa si no un proyecto derivado de Mozilla Firefox pero que está más orientado a la filosofía Debian (se reemplazan, por decir marcas registradas de Mozilla por otras libres).

Sin embargo, habrá que considerar que el reproductor Flash no está instalado por default en Debian, por lo que si accedemos a algún sitio que tenga animaciones o componentes en Flash, tendremos problemas para visualizarlo. Si queremos instalar Flash, tendremos que apuntar en el repositorio al área de paquetes contrib.

Pasos a seguir

– Agregar a la lista de repositorios la liga a los componentes “contrib” (puesto que descargaremos drivers privativos), para hacerlo, tenemos que estar como root:

$ su

Y ejecutamos algún editor para manejar el archivo de sources.list:

# vim /etc/apt/sources.list

En nuestro archivo de sources.list, probablemente tengamos una línea como la siguiente:

deb http://ftp.mx.debian.org/debian/ wheezy main

Agregaremos lo siguiente después de main, para hacer referencia en el repositorio al área de archivos contrib y non-free (al usar vim, para insertar texto, tenemos que presionar en el teclado la letra “i”):

deb http://ftp.mx.debian.org/debian/ wheezy main contrib non-free

Si utilizamos vim, para guardar la modificación bastaría con teclear primero la tecla ESC, luego SHIFT+: (SHIFT+Dos puntos … como normalmente escribiríamos los dos puntos) y escribimos wq!, damos enter, mi lista de repositorios queda de la siguiente manera:

reposit

Nota: Si no contamos con el editor vim, tendríamos antes que instalarlo, ejecutando como root:

# aptitude install vim

Finalmente, para instalar el plugin de Adobe Flash ejecutamos en la terminal:

# aptitude update
# aptitude install flashplugin-nonfree

Y listo, al realizar la instalación (y según el acuerdo de licencia) se bajarán los archivos directamente de la página http://www.adobe.com (lo cual explicaría el por que es un paquete contrib). Con éso bastaría para instalar el plugin. Para comprobar que se instaló correctamente podemos abrir Iceweasel y en la barra de direcciones escribir: about:plugins

icew

Para actualizar el plugin podemos ejecutar:

# update-flashplugin-nonfree --install

Y listo, como podremos ver los pasos no son realmente muy complicados 🙂

Enlaces:

https://wiki.debian.org/es/FlashPlayer

http://packages.debian.org/wheezy/flashplugin-nonfree

Debian: Instalar y configurar Wireshark

drivemeca-wireshark-logoDistro: GNU/Linux Debian “Wheezy” (7.2)

Wireshark es un analizador de protocolos muy importante, nos permite hacer el análisis de las tramas que corren por nuestra red, pero no solo nos permitirá ver el tráfico en vivo (o guardar las tramas para posterior análisis), si no que nos permitirá generar estadísticas, e inclusive, podreemos reensamblar flujos TCP, es una herramienta muy útil (y clásica) para administradores de red, al grado que hoy en día incluso existen libros completos y certificaciones del uso de la misma (Wireshark Certified Network Analyst).

Página Oficial: https://wireshark.org/

Pasos a seguir

Para instalar Wireshark en nuestro Debian, lo podremos hacer desde la terminal ya que el programa está disponible en los repositorios de Wheezy:

# su
# aptitude update
# aptitude install wireshark

Ok, ahora cabe hacer un señalamiento … cuando corremos Wireshark, es necesario tener permisos de administrador (root) para poder realizar la captura de paquetes, lo cual se logra al establecer nuestra la NIC (tarjeta de red, puede ser ethernet o wifi) en modo promiscuo. Podemos correr Wireshark desde la consola (aunque también se crea un enlace en eel menú de Aplicaciones > Internet):

# wireshark

Al correrlo por primera vez, es probable que nos encontremos con el siguiente error:

Running as user “root” and group “root”. This could be dangerous. If you’re running Wireshark this way in order to perform live capture, you may want to be aware that there is a better way documented at /usr/share/doc/wireshark-common/README.Debian

La razón es que correr un programa tan grande como lo es Wireshark, con permisos de root, no es una buena práctica y no es seguro. La solución la podemos encontrar si revisamos el manual al que nos enlaza el mensaje de error:

# pager /usr/share/doc/wireshark-common/README.Debian

La herramienta Wireshark en sí no es la que se encarga de hacer la captura de paquetes, lo hace a través de un programa aparte llamado dumpcap, el cual es un programa más ligero que Wireshark en sí.

———————

Método 1:

Entonces, la mejor práctica sería manejar permisos separados. Podemos ajustar ésta configuración ejecutando lo siguiente desde la terminal y como root:

# dpkg-reconfigure wireshark-common

Nos aparecerá un mensaje como el siguiente:

conf_paquetes

Seleccionamos <Sí> y tecleamos Enter, al hacer ésto se habrá creado el grupo de usuarios “wireshark”, el cual le brinda permisos de root a dumpcap, finalmente solo bastaría con asignar los usuarios que queramos puedan ejecutar Wireshark con éstos privilegios, para hacerlo desde la terminal ejecutamos:

# adduser wireshark nombreDeUsuario

ó

# usermod -a -G wireshark nombreDeUsuario

———————

Método 2:

Si queremos hacerlo un poco más manual (al final viene un enlace donde se analiza incluso un tercer método), podemos asignar los permisos y crear el grupo nosotros mismos, la idea es dar a dumpcap los permisos de root. Podemos hacer lo siguiente desde la terminal:

# groupadd wireshark

# usermod -a -G wireshark nombreDeUsuario

# chgrp wireshark /usr/bin/dumpcap

# chmod 4750 /usr/bin/dumpcap

Referencia: https://blog.wireshark.org/2010/02/running-wireshark-as-you/

———————

Una vez hechas éstas configuraciones, podemos correrlo como usuario normal ejecutando:

$ wireshark

Y listo, nuestro Wireshark ya está listo para utilizarse. Si queremos conocer nuestras interfaces de red, podemos ejecutar:

# ifconfig

Podríamos pasarle parámetros a Wireshark, por decir -i nos permitiría seleccionar la interfaz (tarjeta) que se utilizará para escuchar el tráfico, -k le indica a Wireshark que comience el escaneo inmediatamente y -f nos ayudaría a manejar filtros para el tráfico, digamos por decir, que queremos arrancar Wireshark en la interfaz wlan0 escuchando solamente el tráfico HTTP:

$ wireshark -i wlan0 -k -f "tcp port http"

wShar
Wireshark es una herramienta muy poderosa, en próximos posts espero escribir más sobre el uso de la misma. Por ahora dejaré el post hasta aquí 🙂