6. Administrando servicios (II) 6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. 6.8. 6.9. Paquetes necesarios mínimos Archivos de configuración importantes Apache: Servidor web. MySQL: Servidor de BB.DD. VSFTP: Transferencia de archivos.. SAMBA: Compartición de archivos e impresoras. SSH: Acceso remoto. Caso práctico 1: Montaje de un portal LAMP Caso práctico 2: Montaje de un sistema de mensajería 6.1 Paquetes necesarios mínimos Apache apache2 libapache2-mod-php5 PHP php5 php5-mysql MySQL mysql-server mysql-client FTP vsftpd SAMBA samba Acceso remoto ssh Instalación y desinstalación de paquetes apt get install paquetes apt get remove paquetes Inicio, reinicio y parada de servicios manual /etc/init.d/servicio start restart stop o invoke rc.d servicio start restart stop 1
Habilitamos inicio automático de servicio en el encendido update rc.d servicio defaults De forma más detallada: update rc.d servicio start 50 2 3 4 5. stop 50 0 1 6. Respetar espacios en blanco y puntos Prioridad: 50 (De 0 a 99) Niveles multiusuario: 2345 Niveles apagado, monousuario y reinicio: 0 1 6 Deshabilitamos inicio automático de servicio en el encendido update rc.d f servicio remove 2
6.2 Archivos de configuración importantes. /etc/network/interfaces (sólo distribuciones Debian) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address netmask gateway network broadcast 192.168.1.100 255.255.255.0 192.168.1.1 192.168.1.0 192.168.1.255 auto eth1 iface eth1 inet dhcp auto eth2 iface eth2 inet dhcp wireless_essid wireless_key default 01020304050607080910111213 /etc/resolv.conf nameserver nameserver 80.58.0.33 80.58.32.97 /etc/hosts 127.0.0.1 192.168.1.2 192.168.1.3 192.168.1.4 localhost gea apolo athenea 3
6.3 Apache: Servidor web 6.3.1 Introducción Herramientas de Apache2 apache2ctl (Interface de control del servidor a2ensite / a2dissite (Habilitar/deshabilitar sitios virtuales) a2enmod / a2dismod (Habilitar/deshabilitar módulos) Algunos módulos para Apache2 libapache2-mod-php5 libapache2-mod-fastcgi libapache2-mod-python libapache2-mod-perl2 Algunas extensiones de PHP Bases de datos php5-mysql php5-odbc php5-pgsql php5-sybase php5-adodb Internet Multimedia php5-imap php5-gd php5-ldap php5-imagick php5-snmp php5-exactimage php5-geoip php5-ffmpeg php5-idn php5-curl 4
6.3.2 Archivos de configuración /etc/apache2/envvars export APACHE_RUN_USERwww-data export APACHE_RUN_GROUPwww-data /etc/apache2/apache2.conf ### Configuración general ServerRoot "/etc/apache2" ServerName "localhost" User ${APACHE_RUN_USER} Group ${APACHE_RUN_GROUP} AccessFileName.htaccess Alias /error/ "/usr/share/apache2/error/" ErrorDocument 404 /error/no-encontrado.html ### Configuraciones de usuario (vacio) Include /etc/apache2/httpd.conf ### Puertos Include /etc/apache2/ports.conf ### charset, security,... Include /etc/apache2/conf.d/ ### Módulos Include /etc/apache2/mods-enabled/*.load Include /etc/apache2/mods-enabled/*.conf ### Sitios virtuales Include /etc/apache2/sites-enabled/ /etc/apache2/ports.conf NameVirtualHost *:80 Listen 80 <IfModule mod_ssl.c> # SSL name based virtual hosts are not yet supported, therefore no # NameVirtualHost statement here Listen 443 </IfModule> /etc/apache2/conf.d/charset # AddDefaultCharset UTF-8 5
/etc/apache2/mods-enabled/dir.load LoadModule dir_module /usr/lib/apache2/modules/mod_dir.so /etc/apache2/mods-enabled/dir.conf <IfModule mod_dir.c> DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm </IfModule> /etc/apache2/mods-enabled/php5.load LoadModule php5_module /usr/lib/apache2/modules/libphp5.so /etc/apache2/mods-enabled/php5.conf <IfModule mod_php5.c> AddType application/x-httpd-php.php.phtml.php3 AddType application/x-httpd-php-source.phps </IfModule> /etc/apache2/sites-enabled/default <VirtualHost *:80> DocumentRoot /var/www/ <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None # AllowOverride AuthConfig Order allow,deny allow from all </Directory> </VirtualHost> /etc/apache2/sites-enabled/ejemplo NameVirtualHost *:80 <VirtualHost *:80> ServerName DocumentRoot www.ejemplo.com /var/www/ejemplo <Directory /var/www/ejemplo> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost> 6
.htaccess AuthType Basic AuthName "Acceso Protegido" AuthUserFile /var/www/passwd/.htpasswd # AuthGroupFile /dev/null Require User analista # Require Group admins touch.htpasswd htpasswd.htpasswd analista 6.4 MySQL: Servidor de bases de datos 6.4.1 Archivo de configuración /etc/mysql/my.cnf [mysqld] port datadir tmpdir language 3306 /var/lib/mysql /tmp /usr/share/mysql/spanish # Para evitar que alguien se conecte a la base de datos desde otro ordenador. # La primera forma está anticuada. La segunda es la aconsejable. skip-networking bind-address 127.0.0.1 7
6.5 VSFTP: Transferencia de archivos 6.5.1 Archivo de configuración /etc/vsftpd.conf # Opciones básicas listenyes connect_from_port_20yes write_enableyes # Activamos funciones de registro (log) xferlog_enableyes # Permitimos usuarios locales pero no anónimos local_enableyes local_umask0003 anonymous_enableno anon_umask0333 # Permitimos la creación de jaulas (chroot) e indicamos lista de usuarios # que NO pueden conectarse chroot_local_useryes chroot_list_file/etc/ftpusers # Opciones de transferencia max_clients5 #número máximo clientes simultáneos max_per_ip4 #máximo conexiones por ip local_max_rate102400 #ancho de banda por usuario local 100 KB/s anon_max_rate102400 #ancho banda por usuario anónimo 100 KB/s 8
6.6 SAMBA: Compartición de archivos e impresoras 6.6.1 Archivo de configuración /etc/samba/smb.conf [global] interfaces 192.168.4.100/24 192.168.0.4/28 workgroup netbios name server string WORKGROUP PC Servidor con Samba load printers printing printcap name yes cups cups security # Otros valores guest ok encrypt passwords name resolve order : share user, domain, server, ads yes true lmhosts host wins bcast [printers] path browseable printable # Escritura mediante create mode # Otros valores : /var/spool/samba yes yes SPOOL 0777 0775, 0755, 0750, 0700, 0555, 0550,... [pub] path browseable writeable create mode directory mode /pub yes yes 0777 0777 ### Sinónimos ### # # create mask # directory mask # read only no # public create mode directory mode writeable yes guest ok 9
6.7 SSH: Acceso remoto 6.7.1 Archivo de configuración /etc/ssh/sshd_config Port 22 HostKey /etc/ssh/ssh_host_key HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key PermitRootLogin yes RSAAuthentication yes PermitEmptyPasswords no 10
6.8 Caso práctico 1: Montaje de un portal LAMP Sobre una base LAMP (Linux+Apache+MySQL+PHP) vamos a instalar un SGC o Sistema Gestor de Contenidos (en inglés CMS: Content Management System) Existen muchos CMS de diversos tipos. La mayoría funcionan con PHP y MySQL. Existen casos en los que no es necesario soporte MySQL ni cualquier otro tipo de base de datos: suelen ser CMS ligeros y simples. Asimismo también existen CMS que trabajan con otros lenguajes distintos a PHP, como son python, perl o ruby, aunque suelen ser CMS minoritarios. Algunos CMS famosos son: Portales Wikis Joomla Mediawiki Drupal Dokuwiki Xoops Tikiwiki SPIP Foros Portales educativos (elearning) phpbb Moodle mybb ATutor pmachine Portales comerciales (ecommerce) Otros oscommerce Gallery (Galería de imágenes) Magento phpfreechat (Chat) Zen Cart EyeOS (S.O. basado en web) Blogs Wordpress LifeType dotclear Todos los CMS nombrados anteriormente son CMS libres. Los pasos a seguir para la instalación de cualquier CMS son básicamente los mismos. A modo de ejemplo vamos a instalar un foro phpbb. En concreto el paquete de instalación es phpbb-3.0.5_full_es.zip. 11
Pasos: 1. Crear una base de datos para el CMS. mysql u root p create database phpbb; grant all privileges on phpbb.* to phpbb@localhost identified by 'phpbb'; quit Usuario de B.D. Clave de B.D. Base de datos 2. Descomprimir paquete de instalación del CMS y subirlo a servidor web. unzip phpbb 3.0.5_Full_Es.zip d /var/www 3. Dar permisos a Apache para que pueda escribir sobre ciertos archivos. Nosotros, por motivos de comodidad, lo haremos sobre todos los archivos aunque esto puede comprometer la seguridad. usuario:grupo chown R www data:www data /var/www/phpbb3 4. Si estamos trabajando en local, accedemos a http://localhost/phpbb3 y seguimos los pasos de instalación. 12
Damos los datos acerca de la base de datos creada anteriormente. Damos los datos del futuro administrador. 13
5. Una vez instalado, algunos CMS exigen borrar o renombrar el directorio de instalación, en este caso /var/www/phpbb3/install rm rf /var/www/phpbb3/install 6. Ya podemos entrar como admin para administrar el sitio. En el caso de este CMS, el administrador debe entrar primero en el foro y luego entrar en el Panel de Administración. 14
15
6.9 Caso práctico 2: Montaje de un sistema de mensajería Dentro de una empresa u organización puede resultar interesante disponer de un servicio de mensajería interno dentro de la Intranet. Tradicionalmente esto se ha llevado a cabo mediante aplicaciones como WinPopup o LinPopup, en Windows y Linux respectivamente. Sin embargo estas aplicaciones se hallan algo limitadas en cuanto a funcionalidad. Una alternativa más completa es instalar dentro de la Intranet un servidor de mensajería y que los usuarios hagan uso de él para los mensajes enviados y recibidos dentro de la empresa. Para tal fin he escogido Openfire. Openfire es un servidor de mensajería desarrollado por la empresa Jive Software con lenguaje Java (lo que le permite ser multiplataforma, soportando actualmente Windows, Linux y Mac) y liberado con licencia GPL. Se puede obtener de forma gratuita desde www.igniterealtime.org/downloads/index.jsp#openfire En un equipo se instala el servidor Openfire, y en los equipos clientes se instala el cliente Spark. Los usuarios hacen uso de Spark para conectarse al servidor de mensajería indicado anteriormente. Si queremos ahorrarnos el trabajo de instalar en cada equipo el cliente Spark, podemos usar SparkWeb que nos proporciona acceso a través de web (es necesario tener instalado previamente un servidor web). 16
Los motivos más importantes para su elección, además de los ya nombrados, son: utiliza el protocolo XMPP es sencillo de instalar, utilizar y administrar permite registro y administración de usuarios permite compartir y transferir archivos permite conferencias y mensajes de broadcast permite auditar mensajes y obtener estadísticas permite interaccionar con MSN, Google Talk, Yahoo messenger, AIM, ICQ es extensible mediante plugins gratuitos A continuación se muestran algunas imágenes referentes a este sistema de mensajería. 6.9.1 Servidor Una vez hayamos instalado el servidor Openfire, podremos acceder a la consola de administración en el puerto 9090 (http) o 9091 (https). En este caso el propio servidor Openfire atiende las peticiones por lo que no es necesario tener instalado un servidor web. 17
Dentro de la consola de administración tenemos en la parte superior varias pestañas y subpestañas. Por último en la parte izquierda tenemos las opciones finales. En las capturas de pantalla siguientes se muestran: Pestaña Sesiones Servidor Subpestaña Sesiones activas Puertas de enlace 18 Opción Sesiones de clientes Preferencias
6.9.2 Clientes Para poder hacer uso del sistema de mensajería, los usuarios deben conectarse al servidor Openfire mediante un programa cliente (Spark, mostrado a la izquierda) o mediante web (SparkWeb, mostrado abajo). En las imágenes nos conectamos a 127.0.0.1 o localhost puesto que las pruebas se han hecho en local (en el propio equipo). Sparkweb funciona sobre un servidor web, por lo que deberemos tener instalado uno (p. ej. Apache). No es necesario PHP ni MySQL. Los navegadores de los clientes sí deben tener instalado el plugin de Flash pues Sparkweb hace uso de esta tecnología. 19
A continuación se muestra el funcionamiento del sistema de mensajería en KDE. En la parte izquierda hacemos uso de SparkWeb, mientras que en la parte derecha tenemos el cliente Spark (ventana de contactos y ventana de mensajes). 20