Manual de administración de servidores Linux http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 1 de 37 Manual de administración de servidores Linux Introducción: Manual de administración de servidores Linux En el Manual de administración de servidores Linux encontrarás diversas guías que te ayudarán a acceder a servidores para su actualización y configuración, la instalación de paquetes y todo tipo de tareas administrativas. No pretende ser una guía exhaustiva para aprender a administrar servidores, pues estamos hablando de toda una profesión que requeriría años de formación y mucha práctica. En lugar de ello nuestro objetivo en este manual es ofrecer una serie de talleres, principalmente prácticos, que te ayudarán paso por paso a realizar toda una gama de tareas de administración de servidores habituales en el entorno web. Encuentras este manual online en: http://desarrolloweb.com/manuales/administracion-servidores-linux.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 2 de 37 Manual de administración de servidores Linux Autores del manual Las siguientes personas han participado como autores escribiendo artículos de este manual. Miguel Angel Alvarez Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo. Vicente García Desarrollador web y apasionado de Internet. Ignacio Alba Formador y técnico microinformático, apasionado por las nuevas tecnologías y del software libre. Más de 18 años trabajando como administrador de sistemas e impartiendo cursos en empresas e instituciones. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 3 de 37 Manual de administración de servidores Linux Guía para el acceso por SSH y comandos básicos con servidores Linux Esta es una lista de comandos de Linux que vengo usando habitualmente, para el acceso por SSH a un servidor web y la realización de pequeñas tareas de administración. No soy un administrador de sistemas, ni mucho menos... sin embargo en el día a día toda semana me toca entrar en diversos servidores y realizar distintos tipos de operativas para su gestión. Generalmente me limito a hacer tareas sencillas y pido ayuda a administradores de sistemas de verdad para que realicen su trabajo en la instalación de servidores y la seguridad. No obstante, es muy importante conocer los comandos más básicos para poder acceder a un servidor y hacer el deploy de aplicaciones, o estar atento de la marcha de diversos servicios, reiniciarlos, etc. Dicho esto, aclaro que los comandos que vamos a ver son sencillos y útiles para las tareas más básicas que un desarrollador puede realizar. También hay que avisar que suelo usar servidores con Debian o Ubuntu, que es una distribución derivada y por lo tanto es muy similar. Acceso a un servidor por SSH Comenzaremos viendo el acceso a un servidor por SSH, un comando que te conecta con el servidor remoto y te permite trabajar con él desde la línea de comandos. El comando es "ssh" y sigue de la dirección IP, o dominio, del servidor que deseas acceder. ssh dominio.example.com http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 4 de 37 Manual de administración de servidores Linux Lo que ocurre con este comando a secas es que te conecta con el nombre de usuario que tienes en tu máquina local, por lo que generalmente necesitas indicarle un nombre de usuario en concreto: ssh [email protected] El usuario puede ser "root" o bien cualquier otro. Una vez dentro del servidor puedes escalar tu usuario a root con: sudo su Muchos comandos como los que veremos a continuación para el mantenimiento del servidor, necesitan que estés logueado con permisos de "root". Mantenimiento del servidor Ahora vamos a ver algunos comandos esenciales para mantener el servidor al día. Si administras o usas un servidor, una de las cosas más importantes que debes hacer es mantenerlo actualizado. Muchas de los updates que se publican en el software libre de tu servidor (ya sea el propio sistema operativo o los programas que tengas instalados) son muchas veces actualizaciones de seguridad, por lo que es importante instalarlas todas. Cuando entras en el servidor generalmente te informa sobre las actualizaciones disponibles, y cuántas de ellas son relativas a la seguridad: Actualizar los programas En Ubuntu o Debian se usa el comando "apt-get" para instalar las actualizaciones. Generalmente haces lo siguiente primero: apt-get update Con eso consigues actualizar los repositorios, para que tu servidor sepa realmente lo que tiene http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 5 de 37 Manual de administración de servidores Linux que descargarse de nuevo. Seguidamente ejecutas el comando: apt-get upgrade Este segundo comando sirve para instalar las actualizaciones disponibles para tu sistema, tanto el propio sistema operativo como los programas que tengas instalados mediante los repositorios. Nota: apt-get funciona para las distribuciones basadas en Debian (Ubuntu, Mint, el propio Debian…) otras distros como CentOS usan el comando "yum". Supongo que habrá más gestores de paquetes pero no los he usado. A veces, a pesar de hacer un apt-upgrade se quedan algunos paquetes sin instalar. Entonces usas: sudo apt-get dist-upgrade Instalar nuevos programas vía repositorios En Linux es importante instalar los programas vía los repositorios del propio sistema, esto te asegura que te enteres cuando haya actualizaciones, y éstas se puedan instalar de manera sencilla. Es normal que cuando entras en un servidor por primera vez no dispongas de algunos comandos básicos que sueles usar, como el que lanza el editor Vim, o Nano, Git, etc. En ese caso debes simplemente instalar estos programas usando los repositorios, con el mismo aptget (o el gestor de paquetes que se use en tu sistema). Por ejemplo, instalar vim se consigue con: apt-get vim Apagados o reinicios A veces necesitas reiniciar la máquina, o apagarla. También es sencillo via ssh. Reinicia la máquina. Realiza el apagado y arranca de nuevo la máquina. Importante porque algunas actualizaciones requieren el reinicio del servidor. reboot http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 6 de 37 Manual de administración de servidores Linux Ojo con el comando shutdown, que te puede apagar el servidor y no te lo vuelve a arrancar. Quizás tengas que entrar en el manager de tu servidor, en la página web del proveedor donde lo gestiones, para volverlo a arrancar shutdown -h now Esta es otra alternativa para reinicio de la máquina. Como un reboot. shutdown -r now Cuando se reinicia la máquina generalmente se saldrá de tu conexión ssh y tendrás que volver a conectarte pasado un minuto o dos, usando el comando ssh de nuevo. Mantenimiento de servicios habituales Muchas de las veces que ocurre un problema en el servidor se soluciona reiniciando los servicios, ya sea Apache, MySQL, Nginx. Obviamente, si algo más grave está ocurriendo ésto no te salvará, pero afortunadamente un reinicio de los servicios es suficiente. Servicio Nginx Si usas Nginx puedes reiniciar el servicio con: systemctl restart nginx Nota: Recuerda usar "sudo systemctl start nginx" o bien asegurarte de ser root o haber escalado a superusuario. Asi mismo, para reiniciar también podrías hacer primero un comando stop y luego uno start. Para ver el status del servidor: systemctl status nginx Si eso no te funciona, como alternativa prueba: service nginx restart Servicio de Apache Si usas Apache, entonces podrás reiniciar el servicio con este comando: (recuerda usar sudo o http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 7 de 37 Manual de administración de servidores Linux ser superusuario). /etc/init.d/apache2 restart Otra alternativa que podría servirte es: service apache2 restart De la misma manera, puedes hacer primero un "stop" y luego un "start", que sería el equivalente a un "restart". Servicio MySQL Otro de los servicios que se puede trabar y hacer que tu web funcione de repente muy lenta es MySQL. En estos casos también un reinicio suele ser "mano de santo". /etc/init.d/mysqld restart O bien: /etc/init.d/mysql restart Como alternativa: service mysqld start Conclusión Con esto acabamos con la lista básica de comandos para acceso a un servidor y su mantenimiento, para las acciones más sencillas que puedas llegar a necesitar. Haremos otras recopilaciones de comandos en el futuro que estamos seguros que te resultarán también de mucha utilidad. Puedes consultar todo en el Manual de Introducción a Linux. Este artículo es obra de Miguel Angel Alvarez Fue publicado por primera vez en 25/01/2017 Disponible online en http://desarrolloweb.com/articulos/guia-acceso-ssh-comandosbasicos-linux.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 8 de 37 Manual de administración de servidores Linux Crear llaves SSH Las llaves SSH nos permiten conectar de manera más segura con servidores remotos por línea de comandos. Explicamos el proceso para crear llaves SSH en local y usarlas al hacer login en servidores remotos. El proceso de creación de llaves es bastante sencillo en Linux y un poco más farragoso en Windows, pues se tiene que usar un software en particular. De todos modos, es bastante rápido. Vamos a resumirlo con algunas notas extra para poder aclarar posibles dudas. Para conocimiento general, la llave SSH está compuesta por dos ficheros, uno con la llave pública y otro con la llave privada. La llave pública es la que tenemos que usar cuando sea necesario, colocándola en el lugar adecuado cuando se solicite. Sin embargo, la llave privada es algo que debe quedar a buen recaudo y tener cuidado de que no sea accesible por otras personas. Llave pública y privada tienen el mismo nombre de archivo, aunque la llave pública tendrá extensión ".pub", por lo que la podremos distinguir fácilmente. Una llave SSH se puede usar varias veces, de modo que podrías configurarlas para el acceso a diversos servidores. Tampoco hay problema por crear varias llaves SSH en tu sistema si fuera necesario. Cada una tendría ese juego de par "llave pública / llave privada". Crear la llave SSH en Linux / Mac Para hacer esta tarea usamos un comando de sistema: ssh-keygen. Este comando se encarga del proceso de creación de los archivos de la llave. Al ejecutarlo sin parámetros crea una llave de tipo "RSA". ssh-keygen http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 9 de 37 Manual de administración de servidores Linux Podemos especificar el tipo de la llave con el parámetro -t. De modo que aquí estaríamos creando también una llave RSA. ssh-keygen -t rsa Podemos especificar el número de bits en la clave que se va a generar. Para llaves "rsa" el valor predeterminado es de 2048 bit, que es suficiente en la mayoría de los casos. El valor mínimo sería 1024 bits. Por medio de la opción -b lo podemos configurar. Esto creará una llave de 4096 bit: ssh-keygen -t rsa -b 4096 Como puedes ver en las anteriores imágenes, una vez iniciado este comando nos va a solicitar dos cosas: La localización donde almacenar la clave y el nombre del archivo. La clave para poder usar esta llave ssh. Ruta y nombre del archivo para almacenar la llave Esta parte la puedes configurar a tu gusto. Realmente, cuando se arranca el comando sshkeygen ya te sugiere una carpeta donde se suelen almacenar las llaves ssh y un nombre de archivo. En la mayoría de los casos es solamente aceptar la propuesta. Nota: La carpeta donde se guardan las llaves se llama ".ssh" y por tanto es una carpeta oculta, por comenzar por ".". Como puedes observar la carpeta .ssh la sitúan de manera predeterminada en la carpeta de tu usuario. Generalmente aceptarás tanto la carpeta como el nombre del archivo de la llave ssh. Pero de todos modos lo puedes variar si lo deseas. Solamente acuérdate del nombre de tu llave a la hora de configurar los sistemas, o a la hora de usarla para loguearte en el servidor remoto. La clave asociada a la llave La llave ssh se puede asociar a una clave creada por ti mismo, de modo que cuando alguien use la llave ssh tendrá que indicar además la clave asociada. Esta clave es interesante porque le agrega un nivel extra de seguridad a tu llave SSH, de modo que si alguien la consigue, seguiría sin poder usar la llave si desconoce tu clave. Si no pones clave, la dejas en blanco, simplemente no te preguntará nada cuando se vaya a usar la llave ssh. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 10 de 37 Manual de administración de servidores Linux En resumen, poner clave a esta llave es una decisión tuya. Solo que si te decides por crear esa clave, guárdala bien para que no se te pierda, porque entonces no podrías usar la llave SSH. Usar la llave SSH Para usar la llave simplemente tienes que localizar la carpeta donde se generó la llave y encontrar el archivo con el nombre de la llave que finaliza por .pub. A la hora de crear ciertos servicios de alojamiento, o algunos servicios de Git, te solicitarán tu llave. Tendrás que abrir el .pub, copiar su contenido y pegarlo donde se te solicite. Para el ejemplo de SSH, una vez configurada tu clave desde el panel de control de tu proveedor de alojamiento o proveedor cloud, tendrás que indicar el nombre de tu clave para poder hacer el login. Lo consigues con un comando como este: ssh -i ~/.ssh/nombre_mi_clave [email protected] Con el anterior comando usarás tu llave SSH llamada "nombre_mi_clave", que está en la carpeta "~/.ssh/", para conectarte a tu servidor con IP 255.255.0.1 y con el nombre de usuario "user". Si configuraste una clave para esta llave, el terminal te solicitará que la introduzcas antes de proceder a realizar el login. Crear la llave ssh desde Windows Un programa popular para hacer SSH en Windows es Putty. Cuando lo instalas viene otro software que nos permite crear claves, llamado Putty Key Generator, bastante sencillo de usar. Lo encuentras desde el botón de Wondows, buscando luego por Putty, como "PuTTYgen". Ya dentro de PuTTYgen, para generar tu llave puedes configurar el tipo y seleccionar el número de bits en la parte de abajo. Generalmente será "RSA" y el valor predeterminado de bits es de 2048. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 11 de 37 Manual de administración de servidores Linux Luego tienes que pulsar el botón "Generate" para comenzar la generación de la clave. En este momento te pedirá que muevas el puntero del ratón sobre la ventana de Puttygen para ir creando una secuencia aleatoria. Una vez generada la clave te aparecerá la llave pública en la pantalla. Puedes copiar y pegar su contenido y llevártelo a cualquier sitio donde necesites configurar esta llave SSH. También puedes encontrar un botón para salvar tu llave pública en un archivo, en cualquier lugar de tu disco duro. También tendrás que guardar tu llave privada. Hay otro botón justamente para ello. Simplemente acuérdate donde has dejado cada archivo. Con esto has terminado todo tu trabajo con PuttyGen. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 12 de 37 Manual de administración de servidores Linux Usar la llave privada Para acceder a los sitios donde tengas configurada la llave pública generada en el paso anterior tienes que usar tu llave privada. Esto lo hacemos dentro de Putty, el programa que conecta por SSH. En Putty, en la ventana de configuración es donde debes indicar la llave privada que vas a usar para conectar por SSH. Nota: La ventana de configuración es la que te aparece al iniciar Putty. Inicialmente te permite colocar la IP del servidor al que te quieres conectar, o el nombre del dominio del servidor. Para configurar nuestra clave tenemos que acceder a la configuración "Connection / SSH / Auth". Allí verás un botón que te permite buscar la llave privada del disco duro, para agregarla a tu inicio de sesión SSH. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 13 de 37 Manual de administración de servidores Linux Eso es todo! has podido crear tu llave SSH en local y usarla para el acceso a un servidor remoto. Esperamos que esta información te haya resultado de utilidad! Este artículo es obra de Miguel Angel Alvarez Fue publicado por primera vez en 20/06/2018 Disponible online en http://desarrolloweb.com/articulos/crear-llaves-ssh.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 14 de 37 Manual de administración de servidores Linux Configuración de un servidor web Apache en CentOS Con este artículo aprenderemos cómo instalar y configurar un servidor con Apache, MySQL, PHP y FTP sobre CentOS 6.5. Cuando contratamos un servidor a nuestro proveedor de servicios, podemos elegir el sistema operativo, la distribución y la configuración inicial. En nuestro caso optaremos por un servidor Linux con una distribución de la última versión de CentOS, configuración mínima y 64 bits. Una vez que el servidor este disponible podremos acceder por SSH. Nada mas conectar podremos empezar con la siguiente configuración: 1) Cambiamos el nombre de nuestra máquina Podemos hacerlo editando el fichero “/etc/hosts”. Al final de la línea que empiece por 127.0.0.1 añadimos el nombre que queramos, quedando de la siguiente manera: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 minombre También habrá que hacerlo en el fichero “/etc/sysconfig/network”, cambiando el valor de la variable “HOSTNAME”. En este caso el fichero queda de la siguiente manera: NETWORKING=yes HOSTNAME=minombre 2) Actualizamos el sistema con el siguiente comando http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 15 de 37 Manual de administración de servidores Linux #yum update Si queremos que al instalar los grupos, que veremos mas adelante, se instalen también los paquetes opcionales, añadiremos entonces en el fichero "/etc/yum.conf" la siguiente línea: group_package_types=mandatory,default,optional 3) Instalamos las herramientas de desarrollo, como el paquete de compiladores GCC, make, las fuentes del kernel y Perl #yum install gcc make kernel-devel perl Esto instala los mínimos paquetes para desarrollo. Si queremos instalar todos ellos, podremos hacerlo ejecutando el siguiente comando: #yum groupinstall “Development tools”. Si antes de instalarlos queremos sólo ver los paquetes que contiene el grupo de desarrollo, ejecutamos la siguiente línea: #yum groupinfo "Development tools" 4) Instalamos PHP Con el siguiente comando instalamos todo lo necesario: #yum groupinstall "PHP Support” Puede que nos falte alguna cosa, así que podemos correr la siguiente línea para completar la instalación de PHP: #yum install php-mbstring php-devel php-mcrypt zlib zlib-devel zlib-static Seguidamente, podemos configurar la zona horaria predeterminada usada por las funciones "date" y "time", para ello en el fichero "/ etc/php.ini" añadimos la siguiente línea: date.timezone = "Europe/Madrid" 5) Instalamos y configuramos el servidor Apache http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 16 de 37 Manual de administración de servidores Linux #yum groupinstall “Web Server”. Como hemos dicho, si antes de instalar queremos ver todos los paquetes que contiene este grupo, haríamos "groupinfo" en lugar de "groupinstall". Podemos completar la instalación del servidor Apache instalando las librerías de desarrollo: #yum install httpd-devel Para ver la versión de Apache instalada, ejecutamos: #httpd -v El fichero principal de configuración se encuentra en "/etc/httpd/conf/httpd.conf", y el resto de ficheros de configuración en "/etc/httpd/conf.d". Hay que decir que cualquier fichero con extensión .conf que coloquemos en el directorio "/etc/httpd/conf.d" será procesado por el servidor Apache. Tener en cuenta que los procesa por orden alfabético. Si hacemos un cambio en alguno de estos ficheros o añadimos uno nuevo, hay que recargar para que el servidor recoja los cambios y para ello hacemos: #service httpd reload Ahora daremos un nombre al servidor. Aunque no es necesario hacer esto, sí es recomendable para que no aparezcan problemas en los arranques. Para esto nos aseguramos de que en el fichero de configuración httpd.conf tengamos la siguiente línea: ServerName localhost También es recomendable eliminar la página de prueba que nos instala el servidor. Para ello editamos el fichero /etc/httpd/conf.d/welcome.conf y comentamos todas las líneas, quedando de la siguiente manera: #<LocationMatch "^/+[[--body--]]quot;> #Options -Indexes #ErrorDocument 403 /error/noindex.html #</LocationMatch> Si queremos utilizar servidores virtuales (virtual hosts) y tener los ficheros organizados, podemos crearnos un fichero llamado por ejemplo "vhosts.conf" que contenga nuestros virtual hosts y colocar el fichero en "/etc/httpd/conf.d". El fichero quedaría con un contenido http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 17 de 37 Manual de administración de servidores Linux parecido al siguiente: NameVirtualHost [IP]:80 <VirtualHost [IP]:80> ServerName www.midominio.com ServerAlias www.midominio.com midominio.com DocumentRoot /var/www/html/midominio.com/www CustomLog /etc/httpd/logs/midominio.com.access_log combined ErrorLog /etc/httpd/logs/midominio.com.error_log </virtualhost> Sustituir [IP] por tu IP pública y “midominio” por el dominio que quieras dar servicio. Ahora podemos arrancar el servidor Apache de la siguiente manera: #service httpd start Si queremos que el servicio se inicie al arrancar nuestra máquina, podemos habilitarlo con: #chkconfig httpd on Si en los servidores DNS de "midominio" tenemos las entradas correspondientes apuntadas correctamente a nuestra IP, ya podríamos verlo a través de un navegador entrando en http://www.midominio.com En la segunda parte de este artículo terminaremos de configurar nuestro servidor instalando el servidor MySQL y el servidor de FTP. Este artículo es obra de Vicente García Fue publicado por primera vez en 13/01/2014 Disponible online en http://desarrolloweb.com/articulos/configuracion-servidor-webcentos.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 18 de 37 Manual de administración de servidores Linux Servidor MySQL y el servidor de FTP en CentOS **En el <a href='http://www.desarrolloweb.com/articulos/configuracion-servidor-webcentos.html'> artículo anterior</a> vimos cómo configurar nuestra máquina e instalar PHP y Apache. En esta ocasión instalamos MySQL y el servidor de FTP. ** 1) Instalación de MySQL Tal y como hicimos con Apache, instalamos MySQL de manera similar, es decir: #yum groupinstall “MySQL Database server” Esto instalará el paquete mysql-server necesario para ejecutar el servidor de base de datos. A continuación instalamos las herramientas del cliente MySQL con: #yum groupinstall “MySQL Database client” A continuación editamos el fichero de configuración de MySQL que podemos localizar en “/etc/my.cnf”. Por cierto, el editor que suelo utilizar en el terminal es “nano”. No es tan potente como Vim o Emacs pero para ediciones sencillas, como en estos casos, es más que suficiente y su uso es muy simple: al editar cualquier fichero podemos ver en las dos líneas de abajo la ayuda. Por tanto, hacemos: http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 19 de 37 Manual de administración de servidores Linux #nano /etc/my.cnf El contenido de my.cnf podría ser algo tan sencillo como esto: [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid Otros ficheros con configuraciones diferentes podemos encontrarlos en “/usr/share/doc/mysql-server-x.x.x” (sustituir x.x.x por nuestra versión de MySQL). Aquí podremos encontrar ejemplos de configuraciones para sistemas muy grandes (my-huge.cnf), pequeños (my-small.cnf), etc. Lo siguiente que debemos hacer es ponerle la clave al usuario root de MySQL, así como eliminar la base de datos “test” y el usuario anónimo que se instalan por defecto. Para ello arrancamos el servicio con: #service mysqld start A continuación ejecutamos la siguiente línea: #/usr/bin/mysql_secure_installation Después de contestar a una serie de preguntas que nos hace, ya tendremos nuestro servidor MySQL instalado y ejecutándose. Es recomendable poner que se inicie al arrancar nuestra máquina Linux, para ello basta con hacer: #chkconfig mysqld on Si queremos ver la información de los servicios del sistema y comprobar que los que hemos instalado hasta ahora se inician al arrancar la máquina, podemos hacerlo ejecutando: #chkconfig --list En este punto podremos ver los servicios httpd y mysqld configurados en los niveles 2, 3, 4 y 5. 2) Instalamos el servidor FTP http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 20 de 37 Manual de administración de servidores Linux Actualmente existen varios servidores de FTP que podemos instalar en nuestro sistema. En nuestro caso hemos optado por instalar ProFTPD, ya que es bastante estable y seguro. Lo primero es asegurarnos de que no tenemos ya instalado otro servidor FTP, como pudiera ser vsftpd; en tal caso habría que eliminarlo con: #yum remove vsftpd Si queremos instalar proftpd con yum debemos habilitar EPEL, que es un repositorio con paquetes adicionales. Lo habilitamos de la siguiente manera: #rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm A continuación basta con instalar proftpd: #yum install proftpd Seguidamente lo configuramos editando el fichero “/etc/proftpd.conf”. Algunas líneas útiles que deberíamos agregar al fichero de configuración y que no vienen en la instalación por defecto son: #Para que no muestre los directorios superiores DefaultRoot ~ #Para ocultar . y .. ListOptions "" strict #Permite continuar descargas incompletas AllowRetrieveRestart on #Permite continuar subidas incompletas AllowStoreRestart on Arrancamos el servicio: #service proftpd start Lo habilitamos para que se inicie al arrancar la máquina: #chkconfig proftpd on En este punto ya tendríamos el servidor listo para empezar a funcionar, pero antes de nada lo recomendable es asegurarlo. Aquí hay algunas cosas que hacer, pero para no alargar demasiado el artículo comento un par de puntos importantes para hacer ya mismo: Si contamos con un firewall lo ideal es utilizarlo y cerrar todos los puertos excepto los que vayamos a utilizar: 80(http), 443(https), 20, 21(ftp), 22(ssh),… Si accedemos a nuestra máquina por ssh podemos añadir una regla a las iptables para restringir el acceso por IP, lo mismo para el ftp (sustituimos las Xs por nuestra IP): http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 21 de 37 Manual de administración de servidores Linux #/sbin/iptables --flush #/sbin/iptables -A INPUT -s XXX.XXX.XXX.XXX -p tcp --dport 20:21 -j ACCEPT #/sbin/iptables -A INPUT -s XXX.XXX.XXX.XXX -p tcp --dport 22 -j ACCEPT #/sbin/iptables -A INPUT -p tcp --dport 20:21 -j DROP #/sbin/iptables -A INPUT -p tcp --dport 22 -j DROP #/etc/rc.d/init.d/iptables save Esta segunda parte del artículo completa lo que sería la instalación y configuración de nuestro servidor web. Sé que se puede profundizar mucho mas en cada uno de estos puntos, pero el objetivo era hacer una guía breve y sencilla para poder comenzar a trabajar con el servidor. Este artículo es obra de Vicente García Fue publicado por primera vez en 21/01/2014 Disponible online en http://desarrolloweb.com/articulos/servidor-mysql-ftp-centos.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 22 de 37 Manual de administración de servidores Linux Instalar un certificado SSL gratuito con Lets Encrypt Guía para Instalar un certificado SSL gratuito de Lets Encrypt sobre un sitio web con el servidor Apache y sistema operativo Linux con Debian. Google está haciendo una campaña muy fuerte, desde hace años, para que todos los administradores de webs mudemos de http para https. Es sin duda una buena idea, pero tradicionalmente tener un servidor por https era una complicación, por diversos motivos. Entre ellos la propia instalación de los certificados o el pago periódico a entidades de certificación para mantenerlos. Afortunadamente gracias a Let's Encrypt esta situación ha pasado a la historia. Actualmente no existen desventajas o complicaciones por las que no puedas hacerte en unos minutos con tu propio certificado SSL y configurarlo en tu servidor. Además completamente gratuito, gracias a la entidad certificadora Let's Encrypt, que ofrece la posibilidad de generar los certificados automáticamente por nosotros mismos, sin la necesidad de depender de nadie más. Todos los interesados, dedicando un poco de tiempo, podemos hacer las tareas necesarias para migrar a https. Solo necesitas acceso a tu servidor por línea de comandos mediante SSH. Deben existir decenas o cientos de configuraciones. Yo voy a explicar cómo lo he hecho yo en un servidor Linux Debian con Apache, para DesarrolloWeb.com. Nota: Aunque para hacer esto no necesitas ser administrador de sistemas (Yo mismo no soy sysadmin), alguna cosa doy por sabida. Básicamente se trata de entrar por SSH y realizar los comandos básicos. Instalar certbot en tu servidor http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 23 de 37 Manual de administración de servidores Linux El primer paso consiste en instalar certbot en tu servidor. Esto es fácil porque en la propia página de certbot explican cómo hacerlo para una gran cantidad de configuraciones posibles. Entra en https://certbot.eff.org/ y elige tu configuración Debian 8 (jessie) Si estás trabajando con Debian 8 usarás el comando: sudo apt-get install python-certbot-apache -t jessie-backports Lo que pasa es que antes debes agregar los repositorios jessie-backports. Es una acción adicional que tendrás que procesar, si no la has hecho antes con algún otro software. El tema de activar los repositorios jessie-backports está explicado en https://backports.debian.org/Instructions/ pero básicamente se trata de añadir una línea a un archivo. Entra en la carpeta "/etc/apt/sources.list.d" y tienes que crear un archivo con extensión .list, algo como "jessie-backports.list". Dentro colocas el código: deb http://ftp.debian.org/debian jessie-backports main Debian 7 (wheezy) http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 24 de 37 Manual de administración de servidores Linux Para la versión anterior de Debian el procedimiento es un poco diferente. Tienes que obtener una copia del ejecutable certbot-auto como este comando: wget https://dl.eff.org/certbot-auto Luego le agregas permisos de ejecución. chmod a+x certbot-auto Ejecutar certbot para generar los certificados Si te fijas, para Debian 8 y para Debian 7 al instalar certbot obtendrás dos resultados distintos: En el caso de Debian 8, donde sí existe certbot como paquete para el sistema, habrás instalado el comando "certbot". Como todo comando, simplemente lo escribes en la consola y listo. En el caso de Debian 7, donde no existe cerbot en los repositorios, entonces te has descargado el ejecutable "certbot-auto". Para ejecutarlo tienes que escribir la ruta a donde has descargado ese ejecutable: "./ruta/a/certbot-auto Sea el caso que sea no habrá mucha diferencia de cómo vas a generar los certificados, pero el comando es ligeramente distinto. Enseguida veremos las diferencias. Instalación y configuración de Apache automática El programa certbot, o certbot-auto en el caso de Debian 7, puede hacer todas las configuraciones de manera automática, en el caso que estés usando Apache. Simplemente se lo indicas como opción en el comando. Para Debian 8 ejecutas: certbot --apache Para Debian 7 ejecutas (suponiendo que estés situado en la misma carpeta donde está el ejecutable certbot-auto): ./certbot-auto --apache En mi caso esta configuración automática no me funcionó, así que si te ocurre a ti también, no queda otra que pasar al plan "b", la configuración manual. Generación de los certificados y configuración manual http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 25 de 37 Manual de administración de servidores Linux El comando certbot, o certbot-auto, también puede generar los certificados y dejarlos en una carpeta de tu sistema, con lo que consigues tu objetivo igualmente. Lo que pasa es que luego tendrás que configurar a mano el virtual host de Apache. Veremos este proceso ahora. En principio simplemente tienes que agregar al comando la opción "certonly" y entrarás en un asistente para recabar información de tu sistema y los dominios que quieras configurar. Pero también puedes hacer un comando más complejo con el que puedes generar las distintas opciones de una manera detallada, con lo que te ahorras el asistente. Para Debian 8 harías algo como esto: certbot certonly --webroot -w /var/www/desarrolloweb.com/docs/ -d www.desarrolloweb.com -d desarrolloweb.com Básicamente estamos indicando la ruta del directorio raíz de publicación (document root) y luego los dominios que deben asociarse al certificado. en mi caso se puede acceder al dominio con las "www" y sin ellas, por eso se colocan dos dominios. Para Debian 7 la cosa es casi idéntica, solo que usas certbot-auto y su path. ./certbot-auto certonly --webroot -w /var/www/desarrolloweb.com/httpdocs/ -d www.desarrolloweb.com -d desarrolloweb.com Al procesar ese comando debes encontrar una salida que comprueba los dominios y te va informando del proceso. Algo como esto: Al generar los certificados verás un mensaje de felicitaciones, en el que encontrarás la ruta donde se han almacenado en tu sistema. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 26 de 37 Manual de administración de servidores Linux La carpeta donde están los certificados será algo como esto: "/etc/letsencrypt/live/www.desarrolloweb.com/". Recuérdala porque luego la vamos a necesitar. Configurar Apache Ahora toca configurar Apache, editando el archivo de los host virtuales (virtualhost). Nota: Teóricamente, si te funcionó la configuración automática para Apache, no tendrías necesidad de hacer este paso. La carpeta de los VHost está en: cd /etc/apache2/sites-available/ Una vez allí tendrías que localizar la configuración del Virtual Host para el dominio al que le has generado el certificado. Usa tu editor preferido de consola, para mi es "Vim", pero muchos prefieren "Nano" por ser más sencillo. vim desarrollowebcom Encontrarás la configuración para el Host virtual en el puerto 80. Se trata de copiar y pegar esa configuración y crearla para el puerto 443 que es el de HTTPS. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 27 de 37 Manual de administración de servidores Linux Buscas: <VirtualHost *:80> Copias y pegas todo lo que hay entre esa etiqueta y su cierre, y editas el puerto. <VirtualHost *:443> Para la parte del SSL tienes que meter las siguientes instrucciones adicionales: SSLEngine on SSLCertificateFile /etc/letsencrypt/live/www.desarrolloweb.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.desarrolloweb.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.desarrolloweb.com/chain.pem En ese código es donde tienes que colocar las rutas a la carpeta adecuada de tu servidor donde se han generado los certificados. Obviamente no vas a colocar nuestro nombre de dominio ;) Además, para el virtualhost del puerto 80 querrás generalmente agregarle estra otra instrucción, que permite que todo el tráfico generado para HTTP se redirija a HTTPS. Redirect permanent / https://desarrolloweb.com/ Con eso ya está todo, pero tenemos que reiniciar Apache. Para asegurarte de no romper nada antes ejecutarás el comando: apache2ctl -t Las cosas que pueden funcionar mal en este punto son fáciles de identificar con la salida de este comando. Una de ellas es que tengas soporte para SSL en el servidor. El correspondiente módulo de Apache lo instalas con: sudo a2enmod ssl Además, si hay algún error en la ruta de los certificados te lo advertirá. Simplemente ten cuidado de copiar y pegar bien las rutas que encontraste al generar el certificado con certbot. En el momento que te diga "Syntax OK" puedes reiniciar Apache. En mi caso lo hago con el comando: /etc/init.d/apache2 restart http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 28 de 37 Manual de administración de servidores Linux Acceder por https:// a tu sitio y resolver problemas adicionales Si todo ha ido bien podrás acceder ya a tu dominio por https:// y ver el ansiado mensaje de "Es seguro". Pero si no es así, no desesperes, quizás tengas que solucionar alguna cosa de tu código. Básicamente lo que nos pasa a nosotros en muchas páginas es que estamos accediendo a recursos por http en lugar de https. Nota: Tu sitio HTTPS debe acceder a todo contenido externo también por HTTPS, si usas http para acceder a scripts, imágenes, fonts, etc. Entonces Chrome te alertará y no verás el mensaje correspondiente de sitio seguro. En caso que no obtengas el aviso de sitio seguro abre la consola de desarrolladores para ver los errores que encuentras. Puede que veas algo como esto: Solo tienes que resolver las rutas que están dando problemas por tener acceso a recursos no seguros. Seguramente después de resolver eso puedas dar por finalizada la tarea con éxito. Solo te queda configurar las renovaciones automáticas del certificado, pero eso te lo contaré en un artículo en breve. Es una tarea importante, dado que el certificado dura tan solo 3 meses. Este artículo es obra de Miguel Angel Alvarez Fue publicado por primera vez en 13/02/2017 Disponible online en http://desarrolloweb.com/articulos/instalar-certificado-ssl-letsencrypt.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 29 de 37 Manual de administración de servidores Linux Instalar SSL con Lets Encrypt en Ubuntu con Apache Crear y configurar los certificados SSL de Lets Encrypt, de manera gratuita, para tener tu servidor Apache sobre Ubuntu con el dominio disponible bajo https://. El objetivo de este artículo es configurar un servidor Linux en el que tenemos Apache para que sirva las páginas de un dominio con SSL, es decir, https:// en lugar de http://. Realmente este proceso es una variación del que hemos realizado en otra ocasión, pero en aquella vez para un sistema Linux con Debian. Hay unos mínimos cambios que vamos a comentar y nos apoyaremos en el artículo anterior para complementar el presente. Todo lo haremos con la entidad certificadora Let’s Encrypt, que nos proporciona los certificados SSL de manera gratuita y en un proceso que resulta muy sencillo de realizar, incluso con pocos conocimientos de administración de sistemas. Te ayudaremos en este artículo. Instalar Certbot Lo primero que vamos a tener que hacer es instalar el programa Certbot para Ubuntu, que se encarga de realizar las tareas de creación del certificado en el servidor. Tenemos la versión 16.04 de Ubuntu en el servidor y los pasos los encuentras en este artículo y también en la documentación oficial en el sitio web: https://certbot.eff.org/ El software que necesitamos está en los repositorios oficiales, lo instalamos con este comando: apt-get install python-letsencrypt-apache http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 30 de 37 Manual de administración de servidores Linux Nota: Ya sabes, tendrás que conectar con el servidor por SSH como usuario root. Si no lo eres, tendrás que colocar "sudo" delante del comando para que funcione. Esto nos instala el comando "letsencrypt" en el sistema, que usaremos a continuación para los siguientes pasos de este tutorial. Instalación de los certificados y configuración de Apache automática En la ayuda de Certbot, en el sitio web mencionado antes, se encuentra un comando que realiza la instalación de los certificados y la configuración automática. A decir verdad en este caso ni lo he probado, porque prefiro ir paso por paso realizando las configuraciones en Apache de manera manual. Por si te animas a probarlo, el comando es: letsencrypt --apache Instalación del certificado y configuración de Apache manual Entonces vamos a solicitar a Let's Encrypt que realice la creación de los certificados y luego nosotros configuraremos Apache de manera manual. Los pasos serán los siguientes para crear el certificado. Primero tienes que detener Apache, si es que estuviera funcionando. service apache2 stop Ahora ejecutamos el comando para la creación del certificado. Será algo como esto: letsencrypt certonly --standalone -d example.com Algo muy típico es que quieras usar el mismo certificado para varios subdominios, por ejemplo example.com y www.example.com. letsencrypt certonly --standalone -d example.com -d www.example.com Nota: Para tu información en el anterior comando "certonly" crea el certificado solamente, en vez de configurar el servidor web. Por su parte --standalone crea un servidor automáticamente en tu sistema, temporalmente mientras se crea el certificado, para realizar autenticación con Let's Encrypt. La opción -d como has visto, sirve para indicar el dominio o dominios del certificado, que debe de estar instalado en el servidor. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 31 de 37 Manual de administración de servidores Linux Ejecutando el comando nos saldrá una especie de asistente interactivo de línea de comandos que nos pedirá nuestro email para notificaciones de renovación y que aceptemos las condiciones del servicio. Al terminar el proceso verás una información importante, que es la ruta donde se encuentran los certificados que acaba de crear. Una vez terminado podrías tranquilamente volver a activar Apache: service apache2 start Configurar Apache para SSL Aquí tenemos que hacer una serie de pasos que consisten en activar en Apache el servicio de SSL, algo que se hace desde la configuración del Virtual Host. Tendrás que entrar en la carpeta "/etc/apache2/sites-enabled" y encontrar el archivo de configuración de tu Virtual Host para editarlo. Generalmente tiene el nombre de tu dominio, algo como "example.com.conf". vim example.com.conf Nota: Obivamente, puedes usar cualquie editor de texto, quizás es más sencillo el editor "nano" para las personas que empiezan. Ahora tienes que duplicar todo el contenido del Virtual Host que tienes para el puerto 80, colocando el mismo código, pero cambiando 80 por el 443. Es decir, localizas la etiqueta: <VirtualHost *:80> Y el final de la etiqueta: </VirtualHost> Y copias esa etiqueta y todo su contenido, cambiando la etiqueta de inicio por esta otra: <VirtualHost *:443> http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 32 de 37 Manual de administración de servidores Linux Ahora le tienes que agregar las líneas necesarias para indicar dónde está el certificado que acabas de generar en el paso anterior. El código será algo como este: SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem Tendrás que colocar tu nombre de dominio y estar atento que las rutas sean las correctas. Viste las rutas en el final de la creación del certificado, como salida del comando "letsencrypt". Otras cosas que podrías necesitar Esto es lo básico para conseguir configurar el SSL sobre Apache. Luego podrías reiniciar el propio Apache para que los cambios se apliquen. Sin embargo hay otras cosas que podrías necesitar. No voy a extenderme mucho sobre estas cosas, porque ya las explicamos en el artículo sobre la instalación de un certificado Let's Encrypt en un servidor Debian. Solo lo voy a enumerar, recomendando accede al anterior artículo para más información. Si te sale el error "Invalid command 'SSLEngine'" entonces es que no tienes activado el módulo Apache para SSL. Tienes que activarlo con "a2enmod ssl" Podrías redirigir todo el tráfico de http (normal) a https (seguro) mediante una configuración en el virtual host para el puerto 80. Para ello agregas simplemente la línea "Redirect permanent / https://example.com/" en la pare del puerto "VirtualHost *:80" El comando "apache2ctl -t" te puede ayudar para detectar posibles errores de sintaxis en la configuración del archivo de virtualhost, es muy apropiado ejecutarlo antes de reiniciar Apache, así nos aseguramos que cuando realicemos ese reinicio todo funcionará correctamente. Teniendo en cuenta esas consideraciones creo que estás en el momento adecuado de reiniciar Apache: service apache2 restart Y por último acceder a tu dominio por https:// para comprobar si el certificado está correctamente instalado. Si te da algún error quizás tengas que abrir la consola de desarrolladores para ver si el propio navegador te ayuda a indentificarlo. A veces en la programación de tu sitio estás invocando todavía archivos de scripts con http:// (sin la "s") y por ello no te sale el mensaje de "Servidor seguro". Eso también lo hemos detallado en el artículo de Configuración de SSL para Debian. Suerte en el proceso! seguro que te va bien y en pocos minutos tienes configurado tu dominio con SSL y disponible por https://, en tu servidor Ubuntu. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 33 de 37 Manual de administración de servidores Linux Este artículo es obra de Miguel Angel Alvarez Fue publicado por primera vez en 14/03/2017 Disponible online en http://desarrolloweb.com/articulos/instalar-ssl-letsencryptubuntu-apache.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 34 de 37 Manual de administración de servidores Linux Videotutorial de VirtualBox completo y detallado En este artículo encontrarás una clase completa de VirtualBox. Un videotutorial con el que aprender a manejar el sistema de virtualización y configurar máquinas virtuales a tus necesidades. VirtualBox es una estupenda herramienta que te ofrece multitud de soluciones ante problemas comunes en el ámbito de la informática. La usan administradores de sistemas, pero también desarrolladores, puesto que es la mejor manera de disponer de entornos de desarrollo que se adaptan al lugar donde van a estar en producción las aplicaciones. Además es la mejor manera que existe de probar aplicaciones en diferentes plataformas y sistemas operativos, sin la necesidad de tener más ordenadores que el habitual de trabajo. Si te interesa sacar el mejor partido a la herramienta, aprendiendo a configurar máquinas virtuales con multitud de opciones útiles, al final de este artículo encontrarás un tutorial completo y detallado de VirtualBox. En la clase, de prácticamente dos horas de duración, aprenderás a usar VirtualBox, la herramienta de virtualización más popular, usada en multitud de parcelas del desarrollo, sistemas e informática general. Qué es VirtualBox VirtualBox es un software dedicado a virtualizar sistemas operativos, esto es, permitir que un sistema operativo invitado se ejecute dentro de otro sistema operativo anfitrión. Es multiplataforma, por lo que lo puedes usar desde cualquier máquina. Por supuesto permite virtualizar cualquier otro sistema operativo que se encuentre disponible para instalar sobre ordenadores personales. Dentro del mundo de la virtualización esta herramienta es la más usada, aunque no la única. En estos momentos es desarrollada por Oracle y se ofrece con diferentes licencias, incluida una GPL de código abierto, que no tenemos que pagar por usar. Al estar disponible en múltiples plataformas, es la mejor opción para virtualizar desde Windows, Linux o Mac OS X. Puedes http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 35 de 37 Manual de administración de servidores Linux descargar este programa desde la página web de VirtualBox. En la práctica es un programa que permite tener otros sistemas operativos corriendo en la misma máquina, usado por ejemplo para ejecutar un Windows dentro de un Linux, o para disponer de diversas versiones de Windows en las que probar software. También es una excelente opción cuando se está aprendiendo sistemas, ya que nos permite realizar todo tipo de configuraciones y pruebas, sin temor a romper nada en el sistema operativo que usamos diariamente para trabajar. Por este motivo, usaremos VirtualBox para instalar un sistema operativo Linux, con el que disponer de un entorno cerrado sobre el que aprender de manera segura en el Curso de GNU/Linux de EscuelaIT. Así pues, podemos usar VirtualBox para tener un Linux con el que practicar y hacer todo tipo de tareas y configuraciones sin miedo ni límite. Podremos instalar nuestra distribución de Linux preferida sobre cualquier sistema operativo del que dispongamos, por lo que es indiferente si el estudiante trabaja con Windows, Mac OS X o si su ordenador corre bajo Linux. Además, gracias a las instantáneas, o snapshots, que se explicarán en esta clase de VirtualBox, podremos pasar a estados anteriores del sistema en pocos segundos. Contenido que encontrarás en el videotutorial de VirtualBox En esta clase aprenderemos a usar VirtualBox desde cero, y llegaremos a ver diversos trucos que nos ayudarán a sacar el mejor partido del programa y ser más productivos en varios sentidos. Comenzaremos por la instalación, explicando diversas informaciones importantes que todos deberían conocer antes de comenzar a virtualizar, incluidas algunas configuraciones importantes para facilitar el trabajo del día a día. Se prestará bastante atención a las configuraciones de las máquinas virtuales, como CPU, GPU, discos, etc. Resultará también muy útil para las personas que tengan dudas sobre cuáles son las mejores configuraciones de red, cómo crear adaptadores y configurarlos dependiendo de las necesidades que tengamos al crear las máquinas virtuales. Explicaremos cómo disponer del Extension Pack y las Guest Additions, con las que turbinar nuestros sistemas operativos invitados y facilitar diversas acciones, como la interacción con el sistema host y la posibilidad de compartir espacio en disco, unidades de disco, etc. Veremos la interfaz de VirtualBox (GUI) y aprenderemos a crear máquinas virtuales, así como a conseguir imágenes de sistemas operativos ya listas, para ahorrarnos si deseamos los pasos necesarios para una instalación desde cero. Además explicaremos una herramienta sumamente útil como es la toma de instantáneas, con la que podemos recuperar el sistema a cualquier estado pasado, cuando queremos y prácticamente en segundos. Esto es algo muy útil, no solo para poder usar el sistema con garantías y sin miedo, cuando estás aprendiendo en el curso, como profesionalmente cuando trabajas con máquinas virtuales en cualquier ambiente de virtualización. A continuación puedes asistir al vídeo de VirtualBox y disfrutar con esta clase gratuita, que da inicio al Curso de Linux. http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 36 de 37 Manual de administración de servidores Linux Para ver este vídeo es necesario visitar el artículo original en: http://desarrolloweb.com/articulos/videotutorial-virtualbox.html Este artículo es obra de Ignacio Alba Fue publicado por primera vez en 22/09/2017 Disponible online en http://desarrolloweb.com/articulos/videotutorial-virtualbox.html http://desarrolloweb.com/manuales/administracion-servidores-linux.html Página 37 de 37