- Desde
- 24 Ago 2011
- Mensajes
- 252
Instalación y puesta en parcha de un servidor.
La instalación de un servidor para vuestra página (ya pueda ser un servidor dedicado o un VPS) es la mejor opción cuando el alojamiento compartido se queda pequeño y ante la administración de un servidor podemos tirarnos de los pelos (como es normal) por ello creo una guía que os va a servir muchísimo para orientaros precisamente en este tema.
¿Qué distribución instalo en mi VPS o servidor dedicado?
Básicamente todas son viables siguen siendo Linux (Sistema de ficheros + kernel (núcleo) la diferencia exponencial es la forma de configuración/mantenimiento y paquetes.
Vale pero...¿Cual es la que mejor se adaptará a mi?
CentOS es un clon de Red Hat (la distribución más antigua y con más excelencia) ya que la utiliza empresas muy importantes como Telefónica, Ono IBM, Sabadell, BBVA....Es algo compleja cuando quiere ponerse cabezona dicha distribución pero al fin y al cabo da un rendimiento inmejorable. (A diferencia de Red Hat, CentOS es gratuito y soportado por la comunidad)
Debian es una muy buena distribución que se ha confirmado que ninguna empresa estar por detrás en su desarrollo, es una de las distribuciones más estables hasta el día de hoy pero su actualización no es continuada si no que se publican nuevas versiones del sistema operativo cada bastantes años, esto no es un punto negativo para nada, eso es que en la versión que trae instalada viene por defecto un plus de estabilidad.
Ubuntu basado en Debian es una muy buena distribución que a diferencia de Debian, Ubuntu saca nuevas versiones cada 6 meses con el último software, por lo que Ubuntu digamos que tiene las últimas funcionalidades y mejoras (esta distribución es la más sencilla pero no por ello ineficaz) ya que hay muchísimas guías por internet y mucho soporte por Canonical (su empresa) y la comunidad.
Ya me he decidido o eso creo...¿Ahora que?
Ahora toca la instalación, por ahora deberás saber que Debian, Ubuntu y otros derivados sus paquetes de instalación terminan con la extensión .deb. Red Hat en cambio tiene otra extensión y es .rpm. Al fin y al cabo son paquetes de instalación para cada distribución nada más. (En Windows por ejemplo podríamos asemejarlo a .exe o .msi son los dos paquetes de instalación o ejecutables)
¿Qué distribución instalo en mi VPS o servidor dedicado?
Básicamente todas son viables siguen siendo Linux (Sistema de ficheros + kernel (núcleo) la diferencia exponencial es la forma de configuración/mantenimiento y paquetes.
Vale pero...¿Cual es la que mejor se adaptará a mi?
CentOS es un clon de Red Hat (la distribución más antigua y con más excelencia) ya que la utiliza empresas muy importantes como Telefónica, Ono IBM, Sabadell, BBVA....Es algo compleja cuando quiere ponerse cabezona dicha distribución pero al fin y al cabo da un rendimiento inmejorable. (A diferencia de Red Hat, CentOS es gratuito y soportado por la comunidad)
Debian es una muy buena distribución que se ha confirmado que ninguna empresa estar por detrás en su desarrollo, es una de las distribuciones más estables hasta el día de hoy pero su actualización no es continuada si no que se publican nuevas versiones del sistema operativo cada bastantes años, esto no es un punto negativo para nada, eso es que en la versión que trae instalada viene por defecto un plus de estabilidad.
Ubuntu basado en Debian es una muy buena distribución que a diferencia de Debian, Ubuntu saca nuevas versiones cada 6 meses con el último software, por lo que Ubuntu digamos que tiene las últimas funcionalidades y mejoras (esta distribución es la más sencilla pero no por ello ineficaz) ya que hay muchísimas guías por internet y mucho soporte por Canonical (su empresa) y la comunidad.
Ya me he decidido o eso creo...¿Ahora que?
Ahora toca la instalación, por ahora deberás saber que Debian, Ubuntu y otros derivados sus paquetes de instalación terminan con la extensión .deb. Red Hat en cambio tiene otra extensión y es .rpm. Al fin y al cabo son paquetes de instalación para cada distribución nada más. (En Windows por ejemplo podríamos asemejarlo a .exe o .msi son los dos paquetes de instalación o ejecutables)
Instalación de los paquetes necesarios
Para empezar con la instalación se requerirá mínimo las siguientes características:
- Un procesador (o vCore en caso de VPS) de un minimo de 800 Mhz
- 256 MB de RAM (Se recomienda minimo 1024 MB de RAM)
- 10 GB de disco duro
- Conexión a internet
A la vez que voy explicando la guía pondré en negrita para que sistema operativo es el que lo estoy dictando pondré RPM/DEB como deberéis haber leído lo que he escrito antes sabréis a que va referido cada paquete.
Actualización del sistema operativo:
Cuando termine de actualizar los repositorios, actualizar los nuevos paquetes y actualizar la versión ya estaremos listos para instalar todo.
Debian/Ubuntu:
Red Hat/CentOS:
Aquí si queréis instalar MySQL 5.5/PHP 5.3/Apache 2.2.20 tendréis que instalar un repositorio a parte para cuando sigáis la lista os instale las últimas versiones, para instalarlo
Instalación de Apache y librerías necesarias:
En este paso instalaremos apache con las librerías necesarias para el funcionamient ocorrecto de los servicios que queremos.
Debian/Ubuntu:
Red Hat/CentOS:
PD: Por defecto el servicio de apache en CentOS no se activa por defecto al reiniciar el sistema por lo que lo tenemos que activar con este comando.
Actualización del sistema operativo:
Cuando termine de actualizar los repositorios, actualizar los nuevos paquetes y actualizar la versión ya estaremos listos para instalar todo.
Debian/Ubuntu:
Insertar CODE, HTML o PHP:
sudo apt-get update
Insertar CODE, HTML o PHP:
sudo apt-get upgrade
Insertar CODE, HTML o PHP:
sudo apt-get dist-upgrade
Red Hat/CentOS:
Aquí si queréis instalar MySQL 5.5/PHP 5.3/Apache 2.2.20 tendréis que instalar un repositorio a parte para cuando sigáis la lista os instale las últimas versiones, para instalarlo
Insertar CODE, HTML o PHP:
rpm -Uvh http://download.powerstack.org/powerstack-release-0-2.noarch.rpm
Insertar CODE, HTML o PHP:
yum -y update
Insertar CODE, HTML o PHP:
yum -y upgrade
Insertar CODE, HTML o PHP:
yum -y distclean
Instalación de Apache y librerías necesarias:
En este paso instalaremos apache con las librerías necesarias para el funcionamient ocorrecto de los servicios que queremos.
Debian/Ubuntu:
Insertar CODE, HTML o PHP:
sudo apt-get install apache2 apache2-dev apache2-utils apache2.2-bin apache2.2-common libapache2-mod-auth-mysql libapache2-mod-php5 libapache2-mod-suphp
Red Hat/CentOS:
Insertar CODE, HTML o PHP:
yum -y install httpd openssl httpd-devel httpd-tools
PD: Por defecto el servicio de apache en CentOS no se activa por defecto al reiniciar el sistema por lo que lo tenemos que activar con este comando.
Insertar CODE, HTML o PHP:
service httpd start
Insertar CODE, HTML o PHP:
chkconfig httpd on
Creación de un usuario en el servidor que se localizará la carpeta en /home
Insertar CODE, HTML o PHP:
sudo adduser
Instalación de MySQL y librerías.
En este caso instalaremos el MySQL con sus librerías correspondientes y asignaremos una contraseña. En Ubuntu nada más instalarlo te pedirá que ingreses la contraseña en CentOS es manual.
Debian/Ubuntu:
Insertar CODE, HTML o PHP:
sudo apt-get install mysql-server mysql-client mysqltuner
Red Hat/CentOS:
Insertar CODE, HTML o PHP:
yum -y install mysql mysql-server mysqltuner
Para configurar la contraseña deberéis hacer lo siguente:
Insertar CODE, HTML o PHP:
mysqladmin -u root password vuestra_contraseña
Y activar el servicio que se active al reiniciar:
Insertar CODE, HTML o PHP:
service mysqld start
Insertar CODE, HTML o PHP:
chkconfig mysqld on
Instalación de phpmyadmin.
Este paso es bastante sencillo ya que es un simple comando instalaréis phpMyAdmin y configurado nada más hacerlo.
Debian/Ubuntu:
Insertar CODE, HTML o PHP:
sudo apt-get install phpmyadmin
(Os pedirá la configuración durante el proceso de instalación)
Red Hat/CentOS:
Insertar CODE, HTML o PHP:
yum -y install phpmyadmin
(Al ser un script en PHP este no ha de activarse nada más que instalarlo)
Instalación de PHP5 con las extensiones adecuadas.
Instalar PHP5 con las dependencias necesarias para vBulletin y otros scripts como por ejemplo XenForo...phpBB...etc.
Debian/Ubuntu:
Insertar CODE, HTML o PHP:
sudo apt-get install php5 php5-cgi php5-dev php5-mysql php5-xls php5-mycrypt php5-gd php5-xcache php5-xdebug
Red Hat/CentOS:
Insertar CODE, HTML o PHP:
yum -y install php php-cgi php-devel php-gd php-mysql php-xls php-mycrypt
La instalación de xCache en CentOS tiene que se manual dbembibre lo hizo muy bien aquí -> Instalar xCache.
Creación de un VirtualHost en Apache.
La creación de un VirtualHost en apache es tan simple como crear el directorio y configurarlo para que cuando se acceda por el dominio vaya a dicha localización. Deberéis seguir los siguientes pasos
Debian/Ubuntu:
- Creación de un usuario del sistema para la web
Insertar CODE, HTML o PHP:
sudo adduser nombre_de_usuario
- Entramos al directorio del usuario y creamos las carpetas raíces
Insertar CODE, HTML o PHP:
cd /home/nombre_de_usuario/
- Una vez dentro crearemos los directorios adecuados al mismo
Insertar CODE, HTML o PHP:
mkdir www
Insertar CODE, HTML o PHP:
mkdir subdominios
Insertar CODE, HTML o PHP:
mkdir logs
- No iremos a la carpeta de los virtualhost de apache que se localiza en
Insertar CODE, HTML o PHP:
cd /etc/apache2/sites-available
- Deberemos crear un VirtualHost por defecto
Insertar CODE, HTML o PHP:
sudo nano nombre_de_tu_web_principal
Insertar CODE, HTML o PHP:
<VirtualHost *:80>
ServerAdmin administracion@tu_dominio.com
ServerName www.tu_dominio.com
DocumentRoot /homenombre_de_usuario/www/
ErrorLog /home/nombre_de_usuario/logs/Error.log
TransferLog /home/nombre_de_usuario/logs/Transferencia.log
ServerAlias tu_dominio.com
</VirtualHost>
- Luego simplemente hacemos Control + o y se guardará el archivo automáticamente, posteriormente Control + X y se cerrará el editor.
- Activaremos el virtualhost con el siguiente comando
Insertar CODE, HTML o PHP:
sudo a2ensite nombre_de_tu_web_principal
- Recargamos apache para que adquiera la configuración base del nuevo VirtualHost
Insertar CODE, HTML o PHP:
service apache2 reload
- ¡Listo! ahora desde el navegador meteremos nuestra dirección http://tu_dominio.com y veréis como os sale Apache pero sin ningún archivo ya que la carpeta www está vacía.
Red Hat/CentOS:
- Creación de un usuario del sistema para la web
Insertar CODE, HTML o PHP:
adduser nombre_de_usuario
- Ponemos una contraseña al usuario del sistema para la web
Insertar CODE, HTML o PHP:
passwd nombre_de_usuario
- Entramos al directorio del usuario y creamos las carpetas raíces
Insertar CODE, HTML o PHP:
cd /home/nombre_de_usuario/
- Una vez dentro crearemos los directorios adecuados al mismo
Insertar CODE, HTML o PHP:
mkdir www
Insertar CODE, HTML o PHP:
mkdir subdominios
Insertar CODE, HTML o PHP:
mkdir logs
- No iremos a la carpeta de los virtualhost de apache que se localiza en
Insertar CODE, HTML o PHP:
cd /etc/httpd/conf/
- Deberemos editar el archivo httpd.conf y en el final poner el VirtualHost
Insertar CODE, HTML o PHP:
nano httpd.conf
Insertar CODE, HTML o PHP:
<VirtualHost *:80>
ServerAdmin administracion@tu_dominio.com
ServerName www.tu_dominio.com
DocumentRoot /homenombre_de_usuario/www/
ErrorLog /home/nombre_de_usuario/logs/Error.log
TransferLog /home/nombre_de_usuario/logs/Transferencia.log
ServerAlias tu_dominio.com
</VirtualHost>
- Luego simplemente hacemos Control + o y se guardará el archivo automáticamente, posteriormente Control + X y se cerrará el editor.
- Reiniciamos apache para que adquiera la configuración base del nuevo VirtualHost
Insertar CODE, HTML o PHP:
service apache2 restart
- ¡Listo! ahora desde el navegador meteremos nuestra dirección http://tu_dominio.com y veréis como os sale Apache pero sin ningún archivo ya que la carpeta www está vacía.
Si queréis crear subdominios es el mismo proceso pero a diferencia que en el VirtualHost en la parte DocumentRoot deberá ir a la carpeta /subdominios y en ServerName/ServerAlias el subdominio.
Instalación de un servidor FTP.
Todo alojamiento necesita su servidor FTP para subir los archivos necesarios para la instalación de los scripts entre otras cosas. En este caso instalaremos ProFTPD.
Debian/Ubuntu:
Red Hat/CentOS:
Activación del servicio tras la instalación.
Ahora iremos al directorio de configuración de ProFTPD para enjaular al usuario en su propio directorio y que no pueda ir de directorio en directorio.
Debemos descomentar la línea
y sustituirla por
Guardamos el archivo y reiniciamos el proceso
¡Servidor FTP listo para acceder, los datos de acceso serán la IP del VPS/servidor el usuario creado con Apache y la contraseña del mismo!
AVISO: Por dicho FTP no es accesible el usuario root.
Seguridad del servidor
Todo alojamiento necesita su servidor FTP para subir los archivos necesarios para la instalación de los scripts entre otras cosas. En este caso instalaremos ProFTPD.
Debian/Ubuntu:
Insertar CODE, HTML o PHP:
sudo apt-get install proftpd
Red Hat/CentOS:
Insertar CODE, HTML o PHP:
yum -y install proftpd
Activación del servicio tras la instalación.
Insertar CODE, HTML o PHP:
service proftpd start
Insertar CODE, HTML o PHP:
chkconfig proftpd on
Ahora iremos al directorio de configuración de ProFTPD para enjaular al usuario en su propio directorio y que no pueda ir de directorio en directorio.
Insertar CODE, HTML o PHP:
cd /etc/
Insertar CODE, HTML o PHP:
nano proftpd.conf
Debemos descomentar la línea
Insertar CODE, HTML o PHP:
DefaultRoot
Insertar CODE, HTML o PHP:
DefaultRoot ~ !adm
Guardamos el archivo y reiniciamos el proceso
Insertar CODE, HTML o PHP:
service proftpd restart
¡Servidor FTP listo para acceder, los datos de acceso serán la IP del VPS/servidor el usuario creado con Apache y la contraseña del mismo!
AVISO: Por dicho FTP no es accesible el usuario root.
Seguridad del servidor
- SSH
Miles de ataques son provistos por tener los puertos por defecto, la mejor forma en estos aspectos es cambiarlos por puertos que no sean ocupados por ningún proceso pero que nos lo inventemos nosotros, un proceso vulnerable en este por ejemplo es el SSH (el método de conexión al servidor)
Deberemos ir a la carpeta de SSH
Editar el archivo sshd_config
Cambiar el dato
a
Yo he puesto el 2222 como puedo poner 3982 que ningun proceso conocido utiliza dicho puerto, como queráis, guardáis el archivo y reiniciamos el demonio.
¡Ahora cuando nos conectemos no podremos con el 22 si no con el 2222!
Deberemos ir a la carpeta de SSH
Insertar CODE, HTML o PHP:
cd /etc/ssh/
Editar el archivo sshd_config
Insertar CODE, HTML o PHP:
nano sshd_config
Cambiar el dato
Insertar CODE, HTML o PHP:
#Port 22
Insertar CODE, HTML o PHP:
Port 2222
Yo he puesto el 2222 como puedo poner 3982 que ningun proceso conocido utiliza dicho puerto, como queráis, guardáis el archivo y reiniciamos el demonio.
Insertar CODE, HTML o PHP:
service sshd restart
¡Ahora cuando nos conectemos no podremos con el 22 si no con el 2222!
- Firewall
Cualquier servidor conectado a internet debe tener unas medidas de seguridad claves que son necesarias para que no ocurran mayores problemas/desgracias, en primera estancia instalaremos un Firewall muy potente llamado CSF+LPD. (Este proceso es genérico vale para cualquier OS)
Entramos en el directorio temporal:
Insertar CODE, HTML o PHP:
cd /tmp
Descargamos el programa.
Insertar CODE, HTML o PHP:
wget http://configserver.com/free/csf.tgz
Descomprimimos el archivo:
Insertar CODE, HTML o PHP:
tar xvzf csf.tgz
Entramos en el directorio e instalamos.
Insertar CODE, HTML o PHP:
cd csf
Insertar CODE, HTML o PHP:
sh install.sh
¡Ya estaría instalado! pero todavía no está activado ahora hay que configurarlo, para ello deberemos ir a
Insertar CODE, HTML o PHP:
cd /etc/csf/
Insertar CODE, HTML o PHP:
nano csf.conf
Buscamos la linea
Insertar CODE, HTML o PHP:
TESTING = "1"
Y la cambiamos a ya que cuando reiniciemos el proceso del Firewall se activará, por defecto vienen activados los puertos para web, y demás si quieres activar alguno más deberás editar el TCP_IN TCP_OUT UDP_IN UDP_OUT.
Insertar CODE, HTML o PHP:
TESTING = "0"
- OSSEC (Seguridad completamente adicional)
Hay gente que la seguridad juega un papel muy importante en sus vidas y por eso mismo estoy brindando esta gran herramienta de protección de seguridad de Trend Micro llamada OSSEC
Descargamos la aplicación en el directorio temporal.
Descomprimimos la aplicación.
Entramos en el directorio de la aplicación
Instalamos la aplicación, la aplicación actúa de la forma (siguiente, siguiente, siguiente) incluso está en español, para lanzar la instalación es tan fácil como.
El servicio de activará automáticamente tanto en Ubuntu/CentOs entre otros es una buena aplicación de seguridad, pero algo estricta con algunas operaciones por lo que si actua de forma rara ya sabéis por que, y aviso cuando os pide la intensidad de la seguridad, poner media baja no la pongáis extrema por que podréis tener problemas luego.
Llevo dos horas escribiendo la guía voy a darme un respiro y después me pondré con la optimización PHP/MySQL/Apache....
¡Espero que os haya gustado mi guía y si encontráis un error no dudéis en decirmelo...
Descargamos la aplicación en el directorio temporal.
Insertar CODE, HTML o PHP:
cd /tmp
Insertar CODE, HTML o PHP:
wget http://www.ossec.net/files/ossec-hids-2.6.tar.gz
Descomprimimos la aplicación.
Insertar CODE, HTML o PHP:
tar xvzf ossec-hids-2.6.tar.gz
Entramos en el directorio de la aplicación
Insertar CODE, HTML o PHP:
cd ossec-hids-2.6/
Instalamos la aplicación, la aplicación actúa de la forma (siguiente, siguiente, siguiente) incluso está en español, para lanzar la instalación es tan fácil como.
Insertar CODE, HTML o PHP:
sh install.sh
El servicio de activará automáticamente tanto en Ubuntu/CentOs entre otros es una buena aplicación de seguridad, pero algo estricta con algunas operaciones por lo que si actua de forma rara ya sabéis por que, y aviso cuando os pide la intensidad de la seguridad, poner media baja no la pongáis extrema por que podréis tener problemas luego.
Llevo dos horas escribiendo la guía voy a darme un respiro y después me pondré con la optimización PHP/MySQL/Apache....
¡Espero que os haya gustado mi guía y si encontráis un error no dudéis en decirmelo...
Un Saludo.
Adara.
Adara.