= LPIC2 2021 Sesión 10 (2021-03-04) == Documentación relacionada: * Manual Certificacion LPIC-2.pdf, pag XX * Material Practicas LPIC-2/LPIC-202/ * Presentaciones/2020/202/ * gdrive:%%//%% == Clase === Web Services * DOC: Material Practicas LPIC-2/LPIC-202/2-Web Services/Apache/Resumen Apache.txt * DOC: Material Practicas LPIC-2/LPIC-202/2-Web Services/Apache/1-Servidor Web Apache Basico.pdf * DOC: Material Practicas LPIC-2/LPIC-202/2-Web Services/Apache/4-Laboratorio Servidor Web Apache RHE7.pdf * Manual Certificacion LPIC-2.pdf, pag. 289 * centos trabajando con apache como debian: [[https://medium.com/@danielmayurilevano/c%C3%B3mo-configurar-hosts-virtuales-de-apache-en-centos-7-5a348a612286]] ==== apache: directivas básicas * DOC: Material Practicas LPIC-2/LPIC-202/2-Web Services/Apache/1-Servidor Web Apache Basico.pdf * **ServerRoot**: configuración * **Listen 80**: donde queremos que escuche (varios si queremos) * **Listen :** * **Include conf.modules.d/*.conf**: módulos * **User apache** * sin shell! * **Group apache** * **ServerAdmin ** * **ServerName :** * contenedores: * **Directory**: afecta a un directorio * **Files**: afecta a ficheros * **Location**: URIs * **AddDefaultCharset UTF-8** * ServerAdmin admin@server1.curso.esp DocumentRoot /var/www/html/intranet ServerName intranet.192.168.2.5.nip.io ServerAlias intranet DirectoryIndex index.html index.php Order Deny,Allow deny from all allow from 192.168.2.1 Order Deny,Allow deny from all allow from 192.168.0.9 Order Deny,Allow deny from all allow from 192.168.2.1 ErrorLog logs/intranet-error_log CustomLog logs/intranet-access_log common * Location * actua sobre las URI * Directory * actua sobre los directorios * módulo: mod_auth_basic * podríamos hacerlo con los 2 contenedores: * Directory: /var/www/html/intranet/privado * Location: /privado ServerAdmin admin@server1.curso.esp DocumentRoot /var/www/html/intranet ServerName intranet.192.168.2.5.nip.io ServerAlias intranet DirectoryIndex index.html index.php Order Deny,Allow deny from all allow from 192.168.2.1 Options -FollowSymLinks -Indexes ErrorLog logs/intranet-error_log CustomLog logs/intranet-access_log common * Directivas * Timeout * KeepAlive * MaxKeepAliveRequests * KeepAliveTimeout * Listen * Options * Directiva **Options**: La directiva Options indica varias posibles opciones de comportamiento y estas pueden ser aplicadas a un directorio concreto. Un claro ejemplo de aplicación de estas directiva se puede observar en el siguiente cuadro: * All: todas las opciones salvo MultiViews * ExecCGI: Se permite la ejecución de scripts CGI. * FollowSymLinks: el servidor seguirá los enlaces simbólicos. Tener esta opción activa aumenta el rendimiento ya que el servidor no comprueba si un fichero o directorio es un enlace simbólico y es más rápido, pero en algunos casos puede presentar problemas de inseguridad. * Includes: Se permiten incluir Server-side. * Indexes: Si una URL solicita un directorio y no existe DirectoryIndex (v.g., index.html) en ese directorio, el servidor devolverá una lista del contenido del directorio. * MultiViews: Se permite mostrar contenido negociado en función de diversos valores. * SymLinksIfOwnerMatch: Se sigue un enlace simbólico sólo si los propietarios del enlace y del destino coinciden. * Directiva **AllowOverride**: La directiva AllowOverride controla qué directivas se pueden situar el los ficheros .htaccess y estas pueden ser aplicadas igualmente a un directorio concreto: * AuthConfig: Permitir el uso de directivas de autorización (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc). * FileInfo: Permitir el uso de directivas de control de tipo de documentos (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, etc). * Indexes: Permitir el uso de directivas que controlan los índices de directorios (AddDescription, AddIcon, AddIconByEncoding,AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc). * Limit: Permitir el uso de directivas de acceso de hosts (Allow, Deny y Order). * Options: Permitir el uso de las opciones antes vistas en la directiva Options ServerAdmin admin@server1.curso.esp DocumentRoot /var/www/html/intranet ServerName intranet.192.168.2.5.nip.io ServerAlias intranet DirectoryIndex index.html index.php Order Deny,Allow deny from all allow from 192.168.2.1 Options -FollowSymLinks -Indexes AllowOverride AuthConfig Order allow,deny Allow from all ErrorLog logs/intranet-error_log CustomLog logs/intranet-access_log common AuthName "Solo usuarios autorizados" AuthType Basic require valid-user AuthUserFile /var/www/claves touch /var/www/claves chmod 600 /var/www/claves chown apache:apache /var/www/claves htpasswd /var/www/claves jueves4 # para borrar, htpasswd -D /var/www/claves * **mod_digest** deprecado, para Apache 2.2 ==== SSL cd /etc/httpd/conf # generamos la key openssl genrsa -out intranet.key 2048 # generamos el certificado openssl req -new -key intranet.key -out intranet.csr # lo enviamos a firmar a la una CA ;) openssl x509 -req -days 365 -in intranet.csr -signkey intranet.key -out intranet.crt # copiamos la configuración :80 y cambiamos por :443, añadiendo el certificado creado ServerAdmin admin@server1.curso.esp DocumentRoot /var/www/html/intranet ServerName intranet.192.168.2.5.nip.io ServerAlias intranet SSlEngine On SSLCertificateFile /etc/httpd/conf/intranet.crt SSLCertificateKeyFile /etc/httpd/conf/intranet.key DirectoryIndex index.html index.php Order Deny,Allow deny from all allow from 192.168.2.1 Options -FollowSymLinks -Indexes AllowOverride AuthConfig Order allow,deny Allow from all ErrorLog logs/intranet-error_log CustomLog logs/intranet-access_log common ServerAdmin admin@server1.curso.esp DocumentRoot /var/www/html/intranet ServerName intranet.192.168.2.5.nip.io Redirect / https://intranet.192.168.2.5.nip.io ServerAlias intranet ErrorLog logs/intranet-error_log CustomLog logs/intranet-access_log common * Digital Ocean * Cloudflare: versión gratuita, enmascara servidor, prevención DDoS * Modulos * **/etc/httpd/conf.modules.d** * LoadModule * desactivar modulos no usados ==== rsync * DOC: Material Practicas LPIC-2/LPIC-202/2-Web Services/Apache/Laboratorio Servidor Web Apache.pdf pag. 11 * montarlo como servidor * a través **xnitd**, muy viejuno * ''rsync -e ssh -avvz :'' * **%%--%%delete**: espejo ==== ldap NameVirtualHost 192.168.0.150:80 ServerAdmin berto@srweb1.curso.esp ServerName aplicaciones.curso.esp ServerAlias aplicaciones Options None Order deny,allow deny from all #Utilizamos el modulo de Apache mod_authnz_ldap Options Includes AuthBasicProvider ldap AuthType Basic AuthzLDAPAuthoritative off AuthName "Solo Usuarios Active Directory" AuthLDAPURL "ldap://192.168.0.254:389/ou=Informatica,DC=miempresa,DC=com?sAMAccountName" AuthLDAPBindDN "cn=Administrador,cn=users,dc=miempresa,dc=com" AuthLDAPBindPassword 000000 require valid-user Options None Order allow,deny allow from all Options None Order allow,deny allow from all ErrorLog logs/aplicaciones2-error_log CustomLog logs/aplicaciones2-access_log combined JkMountCopy on * **IPAServer.zip**, VMWare Player, LDAP === proxy : squid * DOC: Material Practicas LPIC-2/LPIC-202/2-Web Services/Squid/Laboratorio Squid.pdf * DOC: pag. 309 * http/https * filtrado * squid transparente * users -> router (tráfico http(s)) -> squid * protocolo WWCP * algoritmos de caché * LRU * LFUDA * ''yum install squid -y'' * **/etc/squid/squid.conf** * ojo con los espacios en el fichero de configuración * **http_port**: transparent (se muestra en destino la IP de la máquina y no el squid) * **cache_dir**: * **/var/log/squid/access.log** * **/var/log/squid/squid.out** * ''systemctl restart squid'' ==== restricciones * regular expression * **/etc/squid/expreg-denegada** * añadir al fichero de configuración: * ''acl url_regexp "/etc/squid/expreg-denegada'' * ''http_access deny '' (antes de permitir otras cosas) * restricciones, excepto algunas * **/etc/squid/inocentes** * añadir al fichero de configuración: * ''acl denegados url_regexp "/etc/squid/expreg-denegada'' * ''acl inocentes url_regexp "/etc/squid/inocentes'' * ''http_access deny denegados !inocentes'' (antes de permitir otras cosas) * destino de dominio: **dstdomain** * validación contra LDAP * en los logs aparece el nombre de usuario * **time**: * limitaciones horarias * listas * **blackweb-master** * **sarg**: generación de informes a partir de los logs de squid