Apuntes instalación “Servidor con Debian Sarge”

He instalado Debian en una Sun Ultra10 con arquitectura Sparc. Mi idea es utilizar esta maquina como router+firewall.

Realizo la instalación de Debian 3.1r5 Sarge, únicamente instalo el sistema base. Mas tarde ya ire instalando los servicios que me hacen falta.

0) Configuro las interfaces de red en /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# Interfaz LAN (sun happy meal)
auto eth1
iface eth1 inet static
 address 192.168.0.1
 netmask 255.255.255.0
 network 192.168.0.0
 broadcast 192.168.0.255
 # dns-* options are implemented by the resolvconf package, if installed
 dns-nameservers 193.152.63.197
 dns-search net-wolf.esp
 # Se definen las rutas estaticas a otras intranets
 up "/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.2 metric 1"
 down "/sbin/route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.2 metric 1"
# Interfaz WAN (3com, conectada al cable-modem)
auto eth0
iface eth0 inet dhcp

Activo ipforwarding entre interfaces en /etc/network/options

ip_forward=yes

Y aplico reglas iptables necesarias para hacer NAT y cerrar puertos:

# Hacemos enmascaramiento de la red local
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
# Se permite el acceso Web desde el exterior, el resto se cierra
/sbin/iptables -A INPUT -p tcp -i eth0 -m state --state NEW,ESTABLISHED,RELATED --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -i eth0 -m state --state NEW,INVALID -j DROP

1) Instalo OpenSSH para poder administrar la maquina remotamente

# apt-get install ssh

Por seguridad desactivo el acceso por ssh para root en /etc/ssh/sshd_config
PermitRootLogin no

Desde la red local me gusta acceder a los servidores, sin tener que utilizar contraseñas. Así que voy a generar la llave publica de mi equipo y la registro en el servidor (la maquina que estoy instalando).

# ssh-keygen -t dsa
# scp id_dsa.pub ipservidor:/home/usuario/.ssh/authorized_keys

2) Configuro APT, el fichero sources /etc/apt/sources.list me queda con estas fuentes:

# vi /etc/apt/sources.list
~ deb <a href="http://security.debian.org/">http://security.debian.org/</a> stable/updates main contrib
~ deb <a href="http://ftp.es.debian.org/debian/">http://ftp.es.debian.org/debian/</a> stable main contrib

y actualizo

# apt-get update 
# apt-get upgrade

3) Actualizo el nucleo de Linux de la version 2.4.27-3-sparc64 a 2.6.8-3-sparc64

# apt-get install kernel-image-2.6.8-3-sparc64

tras reiniciar y comprobar que el nuevo kernel 2.6 funciona bien, desinstalo la imagen del 2.4

# apt-get remove kernel-image-2.4.27-3-sparc64

4) Instalando LAMP

# apt-get install apache2 apache2-doc lynx
# apt-get install mysql-server
# apt-get install php4 libapache2-mod-php4
# apt-get install php4-mysql

– Configuro apache /etc/apache2/apache2.conf, para que utilize ISO-8859-1 como juego de caracteres por defecto.

AddDefaultCharset ISO-8859-1

– Se configura apache para activar el uso de php. En /etc/apache2/apache2.conf se añade la siguiente linea:

AddType application/x-httpd-php .php

– se puede modificar el fichero /etc/apache2/sites-enabled/000-default
para desactivar la redireccion a /apache2-default/

– Se configura php para que utilize mysql, con la siguiente linea en /etc/php/apache2/php.ini:

extension=mysql.so

– establezco password para localhost de mysql

# mysqladmin -u root password 'newpassword'

5) Instalo servidor ftp vsftpd

# apt-get install vsftpd

Se configura en /etc/vsftpd.conf. Desactivo el acceso para el usuario anonimo y activo la jaula para usuarios locales:

ftpd_banner=Bienvenido al Servidor FTP
anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Si tenemos usuarios que solo utilizan el ftp, los configuramos en /etc/passwd con el shell /bin/false. Y añadimos este a la lista de shells del sistema

# echo "/bin/false" >> /etc/shells

ya que si no hacemos esto último, vsftd no permitira al acceso a dichos usuarios.

Si usamos usuario anonimo, el directorio por defecto es /home/ftp
6) Instalar dhcpd

# apt-get install dhcp

Y realizo la configuración para mi subred en /etc/dhcpd.conf. Sin olvidar definir en /etc/default/dhcp las interfaz por las que se serviran peticiones.

7) Instalar webmin y algunos de sus modulos adicionales

# apt-get install webmin webmin-core logcheck
# apt-get install webmin-mysql webmin-dhcpd

8) Instalo el cliente no-ip. Para que actualize automáticamente, mi nombre de dominio, cuando mi ip publica cambie (con ono suele ser a las 2 semanas).

# apt-get no-ip

y configuro con mi cuenta en no-ip con el siguiente comando

# no-ip -C

9) Instalar las X.
Voy a realizar una instalación de las X mínima, ya que la máquina va a hacer de servidor y solo las voy a utilizar en casos muy puntuales.
– Instalar el servidor de las XFree86 (por defecto en sarge)

# apt-get install x-window-system-core

– Lo siguiente sería instalar el display manager (tenemos varias opciones xdm, gdm, kdm). Aunque en mi caso no instalo ninguno ya que arranco a mano.
– Instalar un windows manager (fluxbox, icewm, …) o un entorno de escritorio (gnome, kde, …), yo elijo fluxbox.

# apt-get install fluxbox

10) Instalar VNC

# apt-get install vncserver

y para configurarlo se modifica /etc/vnc.conf, para ajustar por ejemplo la resolució con la opción $geometry=”800×600″;

Uso:
vncserver //inicia vnc
vncserver -kill :1 //para vnc

Documentación:
http://www.debian-administration.org/articles/135

Apendice I) Exportar e Importar BDD en Mysql
Exportarmos la base de datos indicada a un archivo comprimido con:

# mysqldump --quick nombre_bdd | gzip > nombre_bdd.gz

Si se va a importar a un servidor donde la BDD no existia previamente hacemos:

# mysqladmin -u root -p create nombre_bdd
# gunzip < nombre_bdd.gz | mysql -u root -p nombre_bdd
# mysql -u root -p
mysql> show databases ;
mysql> grant all on nombre_bdd.* to <a href="mailto:usuario_bdd@localhost">usuario_bdd@localhost</a> identified by 'password' ;

Apendice II) Acceso a MySQL desde otras IP
Si para una bd mysql queremos permitir el acceso desde otra ip que no sea localhost, simplemente deberemos conceder permisos a un usuario tanto para localhost como para la ip del cliente.

mysql> grant all on nombre_bdd.* to <a href="mailto:usuario_bdd@localhost">usuario_bdd@localhost</a> identified by 'password' ;
mysql> grant all on nombre_bdd.* to <a href="mailto:usuario_bdd@ipcliente">usuario_bdd@ipcliente</a> identified by 'password' ;

Y editar /etc/mysql/my.cnf , poniendo la ip del servidor en la red.

#bind-address           = 127.0.0.1
bind-address            = 192.168.1.1

si queremos que escuche en mas de una IP, nos tocara poner 0.0.0.0, ya que mysql no permite poner mas de una bind-address.

Apendice III) Reconfigurar locales

#dpkg-reconfigure locales
Generating locales (this might take a while)...
  es_ES.UTF-8... done
  en_GB.ISO-8859-1... done
  en_GB.ISO-8859-15... done
  en_GB.UTF-8... done
  en_US.ISO-8859-1... done
  en_US.ISO-8859-15... done
  en_US.UTF-8... done
  es_ES.ISO-8859-1... done
  <a href="mailto:es_ES.ISO-8859-15@euro">es_ES.ISO-8859-15@euro</a>... done
Generation complete.

con el anterior comando podemos seleccionar las locales que queremos generar y seleccionar cual se utilizará por defecto. Es muy importante configurar bién las locales, por ejemplo para aplicaciones web en php, si no se tiene las locales españolas no mostraran las fechas en español, etc.

Apendice IV) Permitir que el servidor envie correos a cuentas de Internet.
Necexitamos tener instalado exim4 y mailx, la instalación por defecto de debian ya lo instala. Si no fuese el caso:

# apt-get install exim4 mailx

Lo importante es que, por defecto, exim4 esta configurado para la entrega solo en local. Si queremos enviar correos al exterior debemos configurarlo. Para ello lo mas sencillo es mediante:

# dpkg-reconfigure exim4-config

donde cambiaremos la entrega solo en local, por envio al exterior directo mediante SMTP (internet site; mail is sent and received directly using SMTP).

Podemos probar si funciona mediante:

/usr/bin/mail -s "CORREO PRUEBA" "<a href="mailto:nombreusuario@correo.com">nombreusuario@correo.com</a>" < mensaje.txt -v

Advertisements