| La Instalación Perfecta - Debian 4.0 "Etch" | | |
Autor: Falko Timme
Versión castellana no autorizada: Daniel Armando Rodriguez
Gracias a Marcelo Guazardo por el comentario sobre Postgrey
Última edición: 07/07/2007
Este tutorial muestra como configurar un servidor basado en Debian Etch (Debian 4.0) que ofrezca todos los servicios requeridos por proveedores de acceso y alojamiento: servidor web Apache (con soporte SSL), servidor de correo Postfix con SMTP-AUTH y TLS, servidor DNS BIND, servidor FTP Proftpd, servidor MySQL, Courier POP3/IMAP, Quota, Firewall, etc. Este documento ha sido escrito para la versión de 32 bits de Debian Etch, aunque también debería funcionar con la de 64 bits mediante unas pequeñas modificaciones.
Se utilizarán los siguientes programas:
- Servidor Web: Apache 2.2
- Servidor de Bases de Datos: MySQL 5.0
- Servidor de Correo: Postfix
- Servidor DNS: BIND9
- Servidor FTP: proftpd
- POP3/IMAP: se usará el formato Maildir para instalar luego Courier-POP3/Courier-IMAP.
- Webalizer para estadísticas del sitio web
Al finalizar debería tener un sistema de desempeño confiable, y si quisiera podría instalar un panel de control de alojamiento web gratuito como pr ejemplo ISPConfig.
Esta no es la única manera de configurar un sistema de estas características. Existen muchas formas de hacerlo pero esta es la que yo he seguido. No garantizo que esto funcione para usted.
1 Requerimientos
Para instalar el sistema necesitará:
- el CD Debian Etch Netinstall (la lista de réplicas esta disponible aquí: http://www.debian.org/CD/http-ftp/
- una conexión a internet rápida.
2 Nota Preliminar
En este tutorial uso el nombre de host servidor1.prueba.gov.ar con la dirección IP 192.168.0.100 y la puerta de enlace 192.168.0.1. Deberá reemplazar estos datos con los apropiados a su escenario.
3 Sistema Base
Inserte el CD Debian Etch Netinstall y arranque su sistema desde él. Presione ENTER:

La instalación comienza, en primer lugar debe escoger el idioma:

Luego seleccione su ubicación:

Elija una distribución de teclado:

El programa verifica el CD de instalación, su hardware y configura la red automáticamente si existe un servidor DHCP:


Ingrese el nombre de host. En este ejemplo, el sistema se llama servidor1.prueba.gov.ar, de modo que ingreso servidor1:

Ingrese el nombre de su dominio. En este ejemplo es prueba.gov.ar:

Ahora debe particionar su disco duro. Por simplicidad crearé una única partición (con el punto de montaje /) y una pequeña partición swap así que selecciono Guiado - usar todo el disco (por supuesto, el particionado depende totalmente de usted - si lo prefiere, puede crear más que una sola partición, también puede usar LVM):

Seleccione el disco que quiere particionar:

Luego escoja un esquema de particionado. Como se mencionó antes, elegí Todos los ficheros en una partición (recomendado para novatos) por simplicidad - la selección depende de sus preferencias:

Cuando este listo, seleccione Finalizar el particionado y escribir los cambios en el disco:

Seleccione Sí cuando se le pregunte ¿Desea escribir los cambios en los discos discos?:

Seguidamente, sus nuevas particiones serán creadas y rebirán formato:


Confirme la clave para evitar errores:

Cree una cuenta de usuario normal, por ejemplo el usuario Administrador con el nombre de usuario administrador (no utilice el nombre de usuario admin ya que en Debian Etch es un nombre reservado):




Ahora está siendo instalado el sistema base:

A continuación debe configurar apt. Puesto que está utilizando el CD Netinstall de Debian Etch que solamente contiene un mínimo grupo de paquetes, deberá utilizar una réplica en red:

Seleccione el país donde está ubicada la réplica en red que quiere usar (usualmente esto es el país don su sistema Debian Etch está situado):

Luego seleccione la réplica que quiere usar (ej. debian.logiclinux.com):

A menos que utilice un proxy HTTP, deje en blanco el siguiente campo y presione Continuar:

Ahora apt está actualizando su base de datos de paquetes:

Puede saltear la encuesta de uso de paquetes seleccionando No:

Necesitamos un servidor web, servidor DNS, servidor de correo y una base de datos MySQL, pero nunca selecciono alguno de ellos porque quiero tener control total sobre lo que se instala en mi sistema. Instalaremos los paquetes necesarios manualmente más adelante. Por ello seleccionamos Sistema estándar y presionamos Continuar:

Los paquetes requeridos están siendo instalados en el sistema:

Cuando se le pregunte: Instalar el cargador de arranque GRUB en el registro principal de arranque, seleccione Sí:

Tras lo cual será instalado el cargador de arranque GRUB:

La instalación del sistema base ha finalizado. Quite el CD Netinstall de Debian Etch de la unidad y presione Continuar para reiniciar el sistema:


En el próximo paso...
4 Instalar el Servidor SSH
Debian Etch no instala OpenSSH en forma predeterminada, debemos hacerlo ahora. Ejecute
apt-get install ssh openssh-server
5 Configurar la Red
El instalador de Debian Etch ha configurado nuestro sistema para que obtenga los parámetros de la red via DHCP, necesitamos cambiar eso ahora puesto que un servidor debería tener una dirección IP estática. Edite /etc/network/interfaces y ajústelo a sus necesidades (en esta configuración de ejemplo uso la dirección IP 192.168.0.100) (note que reemplacé allow-hotplug eth0 con auto eth0; de otro modo no será posible reiniciar la red y necesitaremos reiniciar el sistema completo):
vi /etc/network/interfaces
# This file describes the network interfaces available on your system |
Luego reinicie la red:
/etc/init.d/networking restart
Edite /etc/hosts. Haga que se vea así:
vi /etc/hosts
127.0.0.1 |
Ahora ejecute
echo servidor1.prueba.gov.ar > /etc/hostname
y reinicie el sistema:
shutdown -r now
Posteriormente, ejecute
hostname
hostname -f
Ambos deberían mostrar servidor1.prueba.gov.ar.
A partir de ahora puede usar un cliente SSH tal como PuTTY y conectarse desde su estación de trabajo a su servidor Debian Etch para seguir con los restantes pasos de este tutorial.
6 Edite /etc/apt/sources.list y Actualice su Instalación Linux
Edite /etc/apt/sources.list. Comente las lineas que refieren al CD. Debería ver algo similar a esto:
vi /etc/apt/sources.list
# |
Luego ejecute
apt-get update
para actualizar la base de datos de paquetes apt y
apt-get upgrade
para instalar las últimas actualizaciones (si hubiera alguna).
7 Instalar Algunos Programas
Ahora instalaremos unos pocos paquetes que serán necesarios más adelante. Ejecute
apt-get install binutils cpp fetchmail flex gcc libarchive-zip-perl libc6-dev libcompress-zlib-perl libdb4.3-dev libpcre3 libpopt-dev linux-kernel-headers lynx m4 make ncftp nmap openssl perl perl-modules unzip zip zlib1g-dev autoconf automake1.9 libtool bison autotools-dev g++
(Este comando debería ir en una sóla linea!)
8 Quota
(Si ha escogido un esquema de particionado diferente al que he utilizado deberá ajustar este capítulo de modo tal que quota sea aplicada en aquellas particiones donde usted la necesite.)
Para instalar quota, ejecute
apt-get install quota
Edite /etc/fstab. El mío se ve así (agregué ,usrquota,grpquota a la partición /dev/hda1 (punto de montaje /; el nombre de su dispositivo podría ser /dev/sda1 o similar)):
vi /etc/fstab
# /etc/fstab: static file system information. |
para habilitar quota, ejecute estos comandos:
touch /quota.user /quota.group
chmod 600 /quota.*
mount -o remount /
quotacheck -avugm
quotaon -avug
9 Servidor DNS
Ejecute
apt-get install bind9
Por razones de seguridad queremos ejecutar BIND enjaulado (chrooted) de modo que tendremos que seguir los siguientes pasos:
/etc/init.d/bind9 stop
Edite el archivo /etc/default/bind9 para que el demonio corra con el usuario sin privilegios bind, encerrado en /var/lib/named. Modifique la linea: OPTIONS="-u bind" para dejarla como OPTIONS="-u bind -t /var/lib/named":
vi /etc/default/bind9
OPTIONS="-u bind -t /var/lib/named" |
Cree los directorios necesarios en /var/lib:
mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
Luego mueva el directorio de configuración desde /etc a /var/lib/named/etc:
mv /etc/bind /var/lib/named/etc
Cree un enlace simbólico al nuevo directorio de configuración desde la atigua ubicación (para evitar problemas cuando bind sea actualizado en el futuro):
ln -s /var/lib/named/etc/bind /etc/bind
Cree los dispositivos null y random, y corrija los permisos de los directorios:
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind
Necesitamos modicar/etc/default/syslogd ya que aún podemos tener importantes mensajes (logs) en los registros del sistema. Modifique la linea: SYSLOGD="" para que se pueda leer: SYSLOGD="-a /var/lib/named/dev/log":
vi /etc/default/syslogd
# |
Reinicie el demonio de registro (logging):
/etc/init.d/sysklogd restart
Inicie BIND, y veriique si hay errores en /var/log/syslog:
/etc/init.d/bind9 start
10 MySQL
Para instalar MySQL, ejecutamos
apt-get install mysql-server mysql-client libmysqlclient15-dev
Queremos que MySQL escuche en todas las interfaces, no solo localhost, entonces editamos /etc/mysql/my.cnf y descomentamos la linea bind-address = 127.0.0.1:
vi /etc/mysql/my.cnf
[...] |
Luego reiniciamos MySQL:
/etc/init.d/mysql restart
Ahora chequeamos que está habilitado el servicio de red. Ejecute
netstat -tap
En la salida debería ver una linea como esta:
tcp 0 0 *:mysql *:* LISTEN 3281/mysqld
Ejecute
mysqladmin -u root password la_clave_del_super_usuario_sql
mysqladmin -h servidor1.prueba.gov.ar -u root password la_clave_del_super_usuario_sql
para establecer una clave para el usuario root (de otro modo cualquiera podrá acceder a su base de datos MySQL!).
11 Postfix con SMTP-AUTH y TLS
Para instalar Postfix con SMTP-AUTH y TLS siga los pasos siguientes:
apt-get install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail postgrey
Le serán hechas dos preguntas. Responda de acuerdo a lo siguiente:
General type of configuration? <-- Internet Site
Mail name? <-- servidor1.prueba.gov.ar
Luego ejecute
dpkg-reconfigure postfix
Nuvamente, algunas preguntas le serán hechas:
General type of configuration? <-- Internet Site
Where should mail for root go <-- [blank]
Mail name? <-- servidor1.prueba.gov.ar
Other destinations to accept mail for? (blank for none) <-- servidor1.prueba.gov.ar, localhost.prueba.gov.ar, localhost.localdomain, localhost
Force synchronous updates on mail queue? <-- No
Local networks? <-- 127.0.0.0/8
Use procmail for local delivery? <-- Yes
Mailbox size limit <-- 0
Local address extension character? <-- +
Internet protocols to use? <-- all
Luego, haga esto:
postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
Posteriormente creamos los certificados para TLS:
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
Luego configuramos Postfix para TLS:
postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'
postconf -e 'myhostname = servidor1.prueba.gov.ar'
El archivo /etc/postfix/main.cfdebería verse similar a esto:
cat /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version |
Reinicie Postfix:
/etc/init.d/postfix restart
La autenticación será hecha por saslauthd. Debemos modificar unas pocas cosas para que funcione adecuadamente. Ya que Postfix se ejecuta enjaulado (chrooted) en /var/spool/postfix debemos hacer lo siguiente:
mkdir -p /var/spool/postfix/var/run/saslauthd
Ahora tendremos que editar /etc/default/saslauthd para activar saslauthd. Coloque el parámetro START en sí y cambie la linea OPTIONS="-c" por OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r":
vi /etc/default/saslauthd
# |
Ahora inicie saslauthd:
/etc/init.d/saslauthd start
Para comprobar que SMTP-AUTH y TLS funcionana apropiadamente ejecute el siguiente comando:
telnet localhost 25
Luego de establecer la conexión con su servidor de correo Postfix ingrese
ehlo localhost
Si ve las lineas
250-STARTTLS
y
250-AUTH PLAIN LOGIN
todo está bien.
La salida en mi sistema se ve como esto:
servidor1:/etc/postfix/ssl# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 servidor1.prueba.gov.ar ESMTP Postfix (Debian/GNU)
ehlo localhost
250-servidor1.prueba.gov.ar
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.
Escriba
quit
para regresar a la linea de comandos.
12 Courier-IMAP/Courier-POP3
Ejecute esto para instalar Courier-IMAP/Courier-IMAP-SSL (para IMAPs en el puerto 993) y Courier-POP3/Courier-POP3-SSL (para POP3s en el puerto 995):
apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0
Dos preguntas le serán hechas:
Create directories for web-based administration ? <-- No
SSL certificate required <-- Ok
Si no quiere usar ISPConfig, configure Postfix para entregar mensajes de correo al Maildir* de los usuarios:
postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart
*Nota: No necesita hacer esto si planea usar ISPConfig en su sistema ya que ISPConfig hace los ajustes necesarios usando recetas procmail. Pero asegúrese de habilitar Maildir en Management -> Server -> Settings -> EMail en la interfaz web de ISPConfig.
13 Apache/PHP5
Ahora instalaremos Apache:
apt-get install apache2 apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert
A continuación instalaremos PHP5:
apt-get install libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php5-idn php-pear php5-imagick php5-imap php5-json php5-mcrypt php5-memcache php5-mhash php5-ming php5-mysql php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
La siguiente pregunta le será realizada:
Continue installing libc-client without Maildir support? <-- Yes
Seguidamente editamos /etc/apache2/mods-available/dir.conf:
vi /etc/apache2/mods-available/dir.conf
y cambiamos la linea DirectoryIndex line:
|
Edite /etc/apache2/ports.conf y agregue Listen 443:
vi /etc/apache2/ports.conf
Listen 80 |
Ahora necesitamos habilitar algunos módulos de Apache (SSL, rewrite, suexec e include):
a2enmod ssl
a2enmod rewrite
a2enmod suexec
a2enmod include
Recargue la configuración de Apache:
/etc/init.d/apache2 force-reload
13.1 Deshabilitar PHP Globalmente
(Si no planea instalar ISPConfig en este servidor, saltee esta sección!)
En ISPConfig configurará PHP por sitio web, puede especificar que sitio web puede ejecutar scripts PHP y cual no. Esto solamente puede funcionar si PHP es desabilitado globalmente ya que de otro modo todos los sitios web serían capaces de ejecutar scripts PHP, no importa que especifique en ISPConfig.
Para desabilitar PHP globalmente, editamos /etc/mime.types y comentamos las lineas application/x-httpd-php:
vi /etc/mime.types
[...] |
Edite /etc/apache2/mods-enabled/php5.conf y comente las siguientes lineas:
vi /etc/apache2/mods-enabled/php5.conf
|
Luego reinicie Apache:
/etc/init.d/apache2 restart
14 Proftpd
Para instalar Proftpd, ejecute
apt-get install proftpd ucf
Se le preguntará:
Run proftpd from inetd or standalone? <-- standalone
Luego abra /etc/proftpd/proftpd.conf y cambieUseIPv6 de on a off; caso contrario recibirá una advertencia como esta cuando inicie Proftpd:
- IPv6 getaddrinfo 'servidor1.prueba.gov.ar' error: Name or service not known
vi /etc/proftpd/proftpd.conf
[...] |
Por razones de seruridad puede tambien agregar las siguientes lineas a /etc/proftpd/proftpd.conf (gracias a Reinaldo Carvalho; mayor información puede ser encontrda en http://proftpd.org/localsite/Userguide/linked/userguide.html):
vi /etc/proftpd/proftpd.conf
[...] |
ISPConfig espera que la configuración se encuentre en /etc/proftpd.conf en lugar de /etc/proftpd/proftpd.conf, por lo tanto creamos un enlace simbólico (puede saltear este comando si no quiere instalar ISPConfig):
ln -s /etc/proftpd/proftpd.conf /etc/proftpd.conf
Luego reinicie Proftpd:
/etc/init.d/proftpd restart
15 Webalizer
Para instalar webalizer, basta con ejecutar
apt-get install webalizer
16 Synchronize the System Clock
Es una buena idea sincronizar el reloj del sistema con un servidor NTP (network time protocol) de internet. Simplemente ejecute
apt-get install ntp ntpdate
y la hora de su sistema estará siempre sincronizada.
17 Instalar algunos módulos Perl necesarios para SpamAssassin (incluido en ISPConfig)
Ejecute
apt-get install libhtml-parser-perl libdb-file-lock-perl libnet-dns-perl
18 ISPConfig
La configuración del servidor ha concluido, y si lo desea ahora puede instalar en él ISPConfig. Verifique el manual de instalación de ISPConfig: http://www.ispconfig.org/manual_installation.htm
18.1 Nota para SuExec
Si quiere ejecutar scripts CGI bajo suExec, debería especificar /var/www como el directorio inicial para los sitios web creados con ISPConfig ya que el suExec de Debian está compilado con /var/www como Doc_Root. Ejecute
/usr/lib/apache2/suexec -V
y la salida debería verse como esto:
servidor1:/etc/postfix/ssl# /usr/lib/apache2/suexec -V
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
A menos que instale ISPConfig en modo experto y cambie el raíz predeterminado del web (que es /var/www), será capaz de ejecutar scripts CGI bajo suExec con ISPConfig. La siguiente captura de pantalla fue tomada de una instalación ISPConfig en modo experto. Si quiere usar ISPConfig, no cambie el raíz predeterminado del sitio web:



No hay comentarios:
Publicar un comentario