Este howto es para todos aquellos que quieran servir páginas web desde su casa, ya sea publicando directamente en el servidor o instalando
algún portal en php como wordpress o joomla.
El primer paso es dar de alta un dominio de segundo nivel en www.dyndns.com o alguna página similar. Hay que tener en cuenta que las ip’s asignadas a los usuarios caseros suelen ser
dinámicas, por lo que deberemos estar pendientes de que la ip que damos de alta en dyndns sea la correcta, y si nos la cambia nuestro ISP, deberemos cambiarla en dyndns.
Con el nombre de dominio que hemos obtenido en dyndns (en el presente ejemplo server1.example.com), procedemos a nombrar nuestra debian, respecto a nuestra ip externa (la que no es 127.0.0.1).
$ nano /etc/hosts
127.0.0.1 192.168.0.100 server1.example.com server1
# The following lines are desirable for IPv6 ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts |
$ nano /etc/hostname
server1 |
$ /bin/hostname -F /etc/hostname
$ shutdown -r now
Cuando conectamos un ordenador directamente a Internet le exponemos a muy diversos peligros. El primero es el de todos los puertos abiertos, es decir, multitud de caminos por los que un hacker puede hacerse con el control de nuestra máquina. En mi caso, tengo un firewall externo, la airport extreme. Si no es vuestro caso, os recomiendo instalar iptables.
El siguiente consejo es cambiar la configuración del servidor ssh, si os es necesario acceder a la shell desde fuera de casa. Si no es así cerrar el puerto 22. Para tener un servidor ssh medianamente seguro, lo mejor es desactivar el acceso del root y darle permisos a un usuario para ejecutar sus tareas. Primero configuraremos sudo al modo ubuntu, y después editaremos la configuración de ssh.
Instalar sudo
$ apt-get install sudo
dar permisos de root a un usuario
Si no le tenemos creado, lo creamos
$ adduser user1
le damos permisos de root desde sudo
$ visudo
añadimos la línea
user1
ALL=(ALL) ALL
Asegurar ssh.
Vamos a cambiar el puerto por defecto de ssh, desactivar el acceso del root y establecer los usuarios que podrán acceder.
$ nano /etc/ssh/sshd_config
– Buscamos
Port 22 – y lo cambiamos por un numero diferente (12345) para ponerselo más difícil a los hackers
– Cambiamos:
PermitRootLogin no
X11Forwarding no
UsePAM no
– y añadimos estas líneas al final:
UseDNS no
AllowUsers user1
Para reiniciar ssh
$ /etc/init.d/ssh reload
Salimos e iniciamos una sesión ssh con el nuevo usuario
* desde OSX o Linux:
ssh -p 12345 user1@123.45.6.78
* Desde Windows:
putty user1@123.45.6.78 1234
Si deseais configurar postfix como servidor de correo, visitar el enlace: http://www.howtoforge.com/perfect_setup_debian_etch_p5 ejecutando antes desde ssh “$ sudo su”
para actuar como root.
Instalar apache con php5
$ sudo apt-get install apache2 php5 libapache2-mod-php5 php5-common php5-dev php5-mysql php5-tidy php5-xmlrpc php5-xsl php5-cgi php5-mcrypt php5-curl php5-gd php5-memcache php5-mhash php5-pspell php5-snmp libmagick9-dev php5-cli
Y testeamos php generando un archivo de prueba
$ nano /var/www/test.php
con el contenido
<?php phpinfo()?> |
Visitamos con el navegador http://midominio/test.php
Solucionar problemas con imagick:
sudo aptitude -y install make php-pear |
sudo pecl install imagick |
(y presionamos <ENTER> )
Ajustamos php.ini:
$ sudo nano /etc/php5/cgi/php.ini
Aumentamos la memoria para WordPress :
Buscamos la línea:
memory_limit = 16M y la cambiamos a memory_limit = 48M
Y al final del archivo añadimos la siguiente línea:
extension=imagick.so
Instalar MySQL y asegurarlo
$ sudo apt-get install mysql-server mysql-client php5-mysql libmysqlclient15-dev
Para asegurarlo
$ mysql_secure_installation
Instalar phpmyadmin
$ sudo apt-get install phpmyadmin
Editamos el
archivo de configuración de apache
$ sudo nano /etc/apache2/apache2.conf
Y añadimos la siguiente línea
Include /etc/phpmyadmin/apache.conf |
Reiniciamos apache
$ sudo /etc/init.d/apache2 restart
Ahora deberíamos ver la página de
phpmyadmin en http://midominio/phpmyadmin
Introducimos root y password_root
Instalar webmin
Descargar la ulrima version para
debian desde www.webmin.com
$ wget http://heanet.dl.sourceforge.net/sourceforge/webadmin/webmin_1.430_all.deb
instalamos programas necesarios
$ apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl
instalamos webmin
$ dpkg –i webmin_1.430_all.deb
Podemos acceder a webmin desde
https://midominio/webmin:10000/
Instalar vsftp con autenticación ssl y enjaulado de usuarios.
$ sudo apt-get install vsftpd
Sacamos copia de seguridad del archivo de configuración
$ sudo cp /etc/vsftpd.conf
/etc/vsftpd.conf.original
Editamos /etc/vsftpd.conf y
cambiamos las siguientes líneas
# No anonymous login anonymous_enable=NO # Let local users login . If you connect from the internet local_enable=YES # Write permissions write_enable=YES # formazos el formato ascii en subidas ybajadas ascii_upload_enable=YES ascii_download_enable=YES # 1. All users are jailed by default: chroot_local_user=YES chroot_list_enable=NO ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES # Filezilla uses port 21 if you don’t set any port # in Servertype «FTPES – FTP over explicit # Port 990 is the default used for FTPS protocol. # Uncomment it if you want/have to use port 990. #listen_port=990 # Show # Useful force_dot_files=YES
# Hide the hide_ids=YES
# max_per_ip=2
# Maximum max_clients=20 |
Aplicamos la nueva configuración
$ sudo /etc/init.d/vsftpd restart