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
# service 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:
service 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