El "LAMP Stack" de aptosid

El acrónimo LAMP se refiere a un conjunto de programas de software libre comúnmente utilizado para hacer funcionar sitios web dinámicos o servidores:
Linux: el sistema operativo
Apache: el servidor web
MySQL: un sistema para manejar bases de datos (el servidor de la base de datos)
Perl, PHP, y/o Python: lenguajes de scripts

ADVERTENCIA: Nunca use su PC de escritorio personal como servidor! Use un PC dedicado como servidor de páginas web, y no haga nada más en él!

Usos de un servidor:
a) un servidor de prueba de uso local para diseñadores de páginas web sin estar conectado a internet, que es a lo que está dedicada esta página;
b) un servidor privado, de acceso restringido y conectado a internet;
c) un servidor privado difundiendo información en internet
d) un servidor web comercial, lo cual está fuera del alcance de este manual.

Requerimientos mínimos

256MB de RAM como mínimo. Cualquier cantidad menor que este mínimo causará muchos problemas porque para la ejecución como servidor con Mysql se requiere mucho RAM para funcionar correctamente. Mysql genera errores del tipo, "no puedo conectar a mysql.sock" si no tiene suficiente memoria interna en el servidor.

Los paquetes que necesitará instalar son:

apache2
apache2-utils
apache2-mpm-prefork
php5
php5-common
mysql-server
mysql-common
libapache2-mod-php5
php5-mysql
phpmyadmin

ADVERTENCIA:

apt-get remove --purge splashy

Porque el splashy siempre corrompe el mysql

El archivo de configuración de Apache está ubicado en: /etc/apache2/apache2.conf y su directorio web es: /var/www

Para verificar si php está instalado y funcionando correctamente, bastará crear un test.php en el directorio /var/www con la función phpinfo() exactamente como se muestra abajo.

mcedit /var/www/test.php

# test.php
<?  phpinfo(); ?>

Ahora, escriba en la barra de direcciones de un navegador:

http://localhost/test.php
ó
http://yourip:80/test.php

Esto debe mostrar toda la configuración de php y la configuración preseleccionada.

Puede editar los valores necesarios o configurar dominios virtuales utilizando el archivo de configuración de apache.

Si desea comprobar la instalación, escriba lo siguiente en su navegador

http://su_dirección_ip/apache2-default/

Debe mostrar un mensaje de bienvenida que indica que su instalación está correcta.

El directorio de documentos preseleccionado para el apache2 es /var/www Cámbielo por:

mkdir /home/myself/www
ln -s /home/myself/www /var/www

Con los comandos arriba indicados puede editar su página web desde su /home/<directorio> como usuario normal.

Clientes FTP

Use SSH y lea cuidadosamente el capítulo de SSH; además, aptosid tiene otro cliente FTP incorporado en Konqueror, el cual permite subir archivos al servidor.

Activación de buenos protocolos de seguridad para Servidores Web

Firewalls (Muros de fuego)

Sin un firewall (muro de fuego), no existe absolutamente ninguna seguridad para el servidor. Recuerde bloquear TODO hasta que necesite usarlo; después, bloquearlo de nuevo!.

21 (ftp)
22 (SSH)
25 110 (email)
443 (SSL http or https)
993 (imap ssl)
995 (pop3 ssl)
80 (http)
y cualquier otro puerto!

Proteger los archivos del servidor por preselección.

Un aspecto de Apache que frecuentemente no está bien entendido es la característica de acceso preseleccionada "default access". Esto quiere decir que, a menos que lo cambie, el servidor puede encontrar un archivo a través de las reglas normales de mapeo de URL, y entonces puede enviarlo a clientes.

Por ejemplo, considere el siguiente ejemplo:

 1. # cd /; ln -s / public_html
 2. Accessing http://localhost/~root/

Esto permite que los clientes puedan moverse por todo el sistema de archivos completo del servidor! Para evitar esto, agregue el siguiente bloqueo en el archivo de configuración del servidor:

<Directory />
   Order Deny,Allow
   Deny from all
</Directory>

Así se denegará el acceso a direcciones dentro del sistema de archivos. Puede agregar bloqueos a los directorios apropiados para permitir acceso solamente a las áreas de desee. Por ejemplo,

<Directory /usr/users/*/public_html>
    Order Deny,Allow
    Allow from all
</Directory>
<Directory /usr/local/httpd>
    Order Deny,Allow
    Allow from all
 </Directory>

Ponga atención en particular a las interacciones entre las directivas de <Location> y <Directory>; por ejemplo: aunque el <Directory /> rehuse el acceso, una directiva <Location /> puede permitirlo.

También sea prudente si juega con la directiva, 'UserDir'; fijándola a algo así como"./" tendrá el mismo efecto, para el usuario root, que el primer ejemplo antes citado. Si está utilizando Apache 1.3 ó posterior, recomendamos fervientemente que incluya las siguientes líneas en el archivo de configuración de su servidor:

UserDir disabled root

SSL

Ejecute el script “apache2-ssl-certificate”

# apache2-ssl-certificate

La siguiente pantalla será desplegada para que entre la información requerida.

Creando certificado auto-firmado
reemplazarlo con uno firmado por una autoridad de certificación (CA)
entre el Nombre del Servidor en el Common Name prompt:
Si desea que el certificado venza después de x días
lance este programa con "-days x"
-----
Generando un clave RSA de 1024 bit
--------
escribiendo nueva clave privada en '/etc/apache2/ssl/apache.pem'
--------
Información será pedida que será
incorporada a su petición de certificado.
-----------
Lo que va a entrar se llama Distinguished Name (Nombre Distinguido)
o DN. Hay unos cuantos campos, pero algunos puede dejarse en blanco;
para otros hay un valor preseleccionado.
----------
Si entra un '.', el campo será dejado en blanco.
País (código de 2 letras) [GB]:

Estado o Provincia (nombre completo) [Algún-Estado]:

Localidad (p.e., ciudad) []:

Organización (p.e., compañía; recomendado) []:

Unidad Organizacional (p.e., sección) []:

Nombre del servidor (p.e., ssl.domain.tld --Requerido!!!) []:

Dirección de correo electrónico []:

Ejecute el script “a2enmod ssl” así:

 # a2enmod ssl

Esto generará automáticamente un enlace simbólico entre mods- disponibles y mods -activados

Haga una copia del archivo '/etc/apache2/sites-available/default' en /etc/apache2/sites-available/ - llámelo 'ssl'

# cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

Haga un enlace simbólico a esta nueva configuración para este fin.

# ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/
(ó)
# a2ensite ssl

Si desea cambiar cualquiera de las configuraciones básicas en /etc/apache2/apache2.conf y si desea cambiar la raíz preseleccionada de documento, cambie el archivo /etc/apache2/sites-available/default y vuelva a arrancar el servidor apache.

Para rearrancar el servidor Apache, use la siguiente orden

# /etc/init.d/apache2 restart

Ahora necesita cambiar la dirección del puerto usado en /etc/apache2/ports.conf que fue preseleccionado a escuchar a través del puerto 80, y ahora estamos instalando SSL, el cual necesita cambiar al puerto 443 para escuchar.

 Listen 443

Editar la configuración en /etc/apache2/sites-available/ssl (o el nombre que le haya dado a su nuevo sitio ssl) y cambie el puerto 80 en el nombre del sitio a 443.

Agregue estas dos líneas en alguna parte del archivo /etc/apache2/apache2.conf.

  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/apache.pem

Edite el archivo SSLCertificateFile en /etc/apache2/ssl/apache.pem, y agregue la ubicación del archivo de certificados y la clave del certificado. A continuación hay un ejemplo:

SSLCertificateFile /etc/apache2/ssl/online.test.net.crt
SSLCertificateKeyFile /etc/apache2/ssl/online.test.net.key

Fije ServerSignature en off [apagado], siga estos paso para editar el archivo de configuración /etc/apache2/apache2.conf y agregue estas dos líneas:

 ServerSignature Off
 ServerTokens ProductOnly

Si desea permitir tipos de archivos de índices diferentes, verifique la existencia de la siguiente línea en /etc/apache2/apache2.conf:

 DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.shtml

Vuelva a arrancar el servidor apache:

 /etc/init.d/apache2 restart

Debe tener un servidor "sandbox" para pruebas, en caso de que desee conectar a internet con él, NO LO HAGA, use otro que esté dedicado completamente a ser un servidor de páginas web!

Fuentes de información:

http://www.mysql-apache-php.com

http://httpd.apache.org/docs/1.3/misc/security_tips.html

http://www.debianhelp.co.uk/webserver.htm

Content last revised 14/08/2010 0100 UTC