From 5b44e350435b50c25f5d858c6fabb4ad22d050ad Mon Sep 17 00:00:00 2001 From: blainett Date: Tue, 26 Jul 2005 07:04:35 +0000 Subject: [PATCH] Actualizacion manual 26-07-2005 git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@1002 594d385d-05f5-0310-b6e9-bd551577e9d8 --- doc/guide/admin/es/manual_gosa_es.tex | 32 +- .../admin/es/manual_gosa_es_apache.copia.tex | 691 ++++++++++++++++++ .../admin/es/manual_gosa_es_certificates.tex | 178 ++--- doc/guide/admin/es/manual_gosa_es_dns.tex | 305 +++++++- .../admin/es/manual_gosa_es_fileserver.tex | 10 + .../admin/es/manual_gosa_es_kerberos.tex | 590 ++++++++++++++- doc/guide/admin/es/manual_gosa_es_ldap.tex | 84 ++- doc/guide/admin/es/manual_gosa_es_mail.tex | 328 ++++++++- doc/guide/admin/es/manual_gosa_es_otros.tex | 27 + doc/guide/admin/es/referencias_gosa.bib | 65 ++ 10 files changed, 2207 insertions(+), 103 deletions(-) create mode 100644 doc/guide/admin/es/manual_gosa_es_apache.copia.tex create mode 100644 doc/guide/admin/es/manual_gosa_es_otros.tex diff --git a/doc/guide/admin/es/manual_gosa_es.tex b/doc/guide/admin/es/manual_gosa_es.tex index a69b644eb..01f609c35 100644 --- a/doc/guide/admin/es/manual_gosa_es.tex +++ b/doc/guide/admin/es/manual_gosa_es.tex @@ -12,7 +12,7 @@ \usepackage{anysize} \usepackage{float} \usepackage{longtable} -\usepackage{verbatim} +\usepackage{fancyvrb} \author{Alejandro Escanero Blanco} \title{Administración de Sistemas con GOsa } @@ -33,6 +33,35 @@ \renewcommand{\abstractname}{Resumen} \renewcommand{\tablename}{Tabla} +\CustomVerbatimEnvironment% + {rbox}{Verbatim}{frame=single,fontsize=\small,fontfamily=helvetica,label=Cuadro,framesep=2mm,xleftmargin=2mm,xrightmargin=2mm,rulecolor=\color{blue}} + +\newcommand{\bbox}{ +\vspace{0.5cm} +\noindent \begin{tabular}{|l|}\hline +} +\newcommand{\ebox}{ +\hline \end{tabular} +\vspace{0.5cm} +} + +\newcommand{\cbbox}{ +\vspace{0.5cm} +\noindent \begin{tabular}{|l|}\hline +} +\newcommand{\cebox}{ +\hline \end{tabular} +\vspace{0.5cm} +} + +\newcommand{\hlink}[1]{ +\htmladdnormallink{#1}{#1} +} + +\newcommand{\jump}{ +\vspace{0.5cm} +} + \maketitle \newpage \tableofcontents @@ -80,6 +109,7 @@ If you have questions, please visit the following url: http://www.gnu.org/licens \include{manual_gosa_es_vpn} \include{manual_gosa_es_ftp} \include{manual_gosa_es_im} +\include{manual_gosa_es_otros} \chapter{Los Servidores} \label{servidores} diff --git a/doc/guide/admin/es/manual_gosa_es_apache.copia.tex b/doc/guide/admin/es/manual_gosa_es_apache.copia.tex new file mode 100644 index 000000000..5e2adb20d --- /dev/null +++ b/doc/guide/admin/es/manual_gosa_es_apache.copia.tex @@ -0,0 +1,691 @@ +\chapter{Apache y PHP} +\section{Introducción a Apache} + +GOsa es una aplicación escrita en el lenguaje de programación PHP y pensada para uso atraves de páginas web. + +Aunque todo el mundo conoce lo que es una página web, no viene de menos repasar algunos puntos: + +\begin{description} +\item[WWW] +La World Wide Web (Red alrededor del mundo) es el motor de lo que conocemos como internet, es un espacio de información donde cara recurso está identificado por su URI (Identificador de Recurso Universal / Universal Resource Identifier), este define el protocolo necesario para acceder a la información, el equipo que la posee y donde está colocada. + +La WWW es la gran revolución de nuestra epoca, es una fuente enorme de información. Y como tal todas las aplicaciones están siendo orientadas a ella. GOsa usa WWW por una sencilla razón, distribuye el programa, una aplicación orientada a internet es capaz de ser usada desde cualquier lugar y practicamente en cualquier momento. GOsa no necesita estar siendo ejecutado en la misma maquina que lo tiene, mas +aun cada uno de los servidores que controla pueden estar en maquinas diferentes y en remotos lugares. + +\item[HTTP] +\htmladdnormallink{HTTP}{http://www.w3.org/Protocols/}\cite{2616} es el acrónimo de Protocolo de Transferencia de Texto / HyperText Transfer Protocol, cuyo proposito mas importante es la publicación y recepción de "páginas Web". + +Es un protocolo de nivel de aplicación ideado para sistemas distribuidos de información hipermedia. Ha estado siendo usada para la WWW desde 1990, la versión actual es HTTP/1.1. + +El funcionamiento práctico se puede reducir a un cliente que realiza una petición y a un servidor que gestiona esa petición y realiza una respuesta. + +\item[HTML] +Si la petición del cliente y la respuesta del servidor son correctas, la respuesta del servidor contendra algun tipo de hipermedia, el mas habitual es \htmladdnormallink{HTML}{http://www.w3.org/TR/1998/REC-html40-19980424/} (Lenguaje de markas de hipertexto / HyperText Markup Language), un lenguaje pensado para la publicación con contenidos y para una facil navegación por ellos. Es un protocolo en constante desarrollo, la versión actual es HTML4.01 y en publicación XHTML2.0 +\end{description} + +\htmladdnormallink{APACHE}{http://httpd.apache.org/} es el servidor HTTP mas utilizado que \htmladdnormallink{existe}{http://news.netcraft.com/archives/web_server_survey.html}, seguro, eficiente y extensible. + +En este manual nos centraremos en este servidor, ya que es el mas usado y tiene una licencia calificada de opensource. + +Mas información sobre este servidor en \htmladdnormallink{http://httpd.apache.org/docs-2.0/}{http://httpd.apache.org/docs-2.0/} + +\section{Introducción a PHP} + +PHP (PHP: Hypertext Preprocessor), es un lenguaje de interpretado alto nivel, especialmente pensado para el diseño de páginas webs. Su sintaxis es una mezcla de C, Perl y Java. Es embebido en las páginas HTML y es ejecutado por el servidor HTTP. + +PHP está ampliamente extendido y tiene un numerosisimo grupo de desarrolladores, una \htmladdnormallink{extensa documentación}{http://www.php.net/docs.php} y numerosos sitios webs con documentación y ejemplos. + +\section{Instalación} +\subsection{Descargando e Instalando Apache} +\label{down_apache} +Al igual que en el capítulo anterior, Apache está en practicamente todas las distribuciones, aunque veremos su instalación desde las fuentes. Nos vamos a centrar por ahora en las versiones mas avanzadas de apache, la serie 2.0.XX considerada estable. + +Se recomienda instalar los mismos paquetes que se necesitan para openLDAP\ref{down_ldap}. + +Se puede descargar de: \htmladdnormallink{http://httpd.apache.org/download.cgi}{http://httpd.apache.org/download.cgi}, la versión que vamos a descargar en /usr/src es la httpd-2.0.XX.tar.gz + +\begin{itemize} +\item[Generales] +\begin{tabular}{ll} +--enable-so & $\rightarrow$ Soporte de Objetos Dinamicos Compartios (DSO)\\ +--with-program-name=apache2 & \\ +--with-dbm=db42 & $\rightarrow$ Versión de la Berkeley DB que vamos a usar\\ +--with-external-pcre=/usr & \\ +--enable-logio & $\rightarrow$ Registro de entrada y salida\\ +--with-ldap=yes & \\ +--with-ldap-include=/usr/include & \\ +--with-ldap-lib=/usr/lib & \\ +\end{tabular} + +\item[Soporte suexec] +\begin{tabular}{ll} +--with-suexec-caller=www-data & \\ +--with-suexec-bin=/usr/lib/apache2/suexec2 & \\ +--with-suexec-docroot=/var/www & \\ +--with-suexec-userdir=public\_html & \\ +--with-suexec-logfile=/var/log/apache2/suexec.log & \\ +\end{tabular} + +\item[Módulos] +\begin{tabular}{ll} +--enable-userdir=shared & $\rightarrow$ mod\_userdir, módulo para directorios de usuario\\ +--enable-ssl=shared & $\rightarrow$ mod\_ssl, módulo de conectividad segura SSL\\ +--enable-deflate=shared & $\rightarrow$ mod\_deflate, módulo para comprimir la información enviada\\ +--enable-ldap=shared & $\rightarrow$ mod\_ldap\_userdir, módulo para caché y conexiones ldap\\ +--enable-auth-ldap=shared & $\rightarrow$ mod\_ldap, módulo de autentificación en ldap\\ +--enable-speling=shared & $\rightarrow$ mod\_speling, módulo para la corrección de fallos en URL\\ +--enable-include=shared & $\rightarrow$ mod\_include, módulo para la inclusión de otras configuraciones\\ +--enable-rewrite=shared & $\rightarrow$ mod\_rewrite, permite la manipulación de URL\\ +--enable-cgid=shared & $\rightarrow$ CGI script\\ +--enable-vhost-alias=shared & $\rightarrow$ módulo de alias de dominios virtuales\\ +--enable-info=shared & $\rightarrow$ Información del servidor\\ +--enable-suexec=shared & $\rightarrow$ Cambia el usuario y el grupo de los procesos\\ +--enable-unique-id=shared & $\rightarrow$ Identificador único por petición\\ +--enable-usertrack=shared & $\rightarrow$ Seguimiento de la sesión de usuario\\ +--enable-expires=shared & $\rightarrow$ Módulo para el envio de la cabecera de expiración\\ +--enable-cern-meta=shared & $\rightarrow$ Ficheros meta tipo CERN\\ +--enable-mime-magic=shared & $\rightarrow$ Determina automaticamente el tipo MIME\\ +--enable-headers=shared & $\rightarrow$ Control cabeceras HTTP\\ +--enable-auth-anon=shared & $\rightarrow$ Acceso a usuarios anonimos\\ +--enable-proxy=shared & $\rightarrow$ Permite el uso de Apache como proxy\\ +--enable-dav=shared & $\rightarrow$ Capaz de manejar el protocolo WebDav\\ +--enable-dav-fs=shared & $\rightarrow$ Proveedor DAV para el sistema de archivos\\ +--enable-auth-dbm=shared & $\rightarrow$ Autentificación basada en base de datos DBM\\ +--enable-cgi=shared & $\rightarrow$ Permite CGI scripts\\ +--enable-asis=shared & $\rightarrow$ Tipos de archivos como son\\ +--enable-imap=shared & $\rightarrow$ Mapas de imagenes en el lado de servidor\\ +--enable-ext-filter=shared & $\rightarrow$ Módulo para filtros externos\\ +--enable-authn-dbm=shared & \\ +--enable-authn-anon=shared & \\ +--enable-authz-dbm=shared & \\ +--enable-auth-digest=shared & $\rightarrow$ Colección de autentificaciones segun RFC2617\\ +--enable-actions=shared & $\rightarrow$ Activa acciones segun peticiones\\ +--enable-file-cache=shared & $\rightarrow$ Cache de archivos\\ +--enable-cache=shared & $\rightarrow$ Cache dinamicos de archivos\\ +--enable-disk-cache=shared & $\rightarrow$ Cache de disco\\ +--enable-mem-cache=shared & $\rightarrow$ Cache de memoria\\ +\end{tabular} +\end{itemize} + +Una vez configurado, hacemos make y make install. + +\subsection{Instalando PHP sobre Apache} + +Se puede descargar de \htmladdnormallink{http://www.php.net/downloads.php}{http://www.php.net/downloads.php} siendo la versión necesaria a la fecha de este manual para utilizar GOsa la 4.3.XX, ya que las versiones 5.0.XX aún no están soportadas. Las descargaremos en /usr/src. + +Para poder compilar los módulos necesarios ademas de necesitar las librerias de desarrollo de la seccion Servidores\ref{servidores}, ademas de las mismas que para openLDAP\ref{down_ldap} y Apache\ref{down_apache} necesitaremos alguna libreria mas: + +\begin{itemize} +\item[libbz2] +La podemos descargar de \htmladdnormallink{http://sources.redhat.com/bzip2/}{http://sources.redhat.com/bzip2/} para módulo de compresión BZ2. +\item[e2fsprogs] +Se puede descargar de \htmladdnormallink{http://e2fsprogs.sourceforge.net}{http://e2fsprogs.sourceforge.net} para acceso al sistema de archivos. +\item[expat] +Se descarga de \htmladdnormallink{http://expat.sourceforge.net/}{http://expat.sourceforge.net/}, es un parser XML. +\item[zziplib] +Bajarla de \htmladdnormallink{http://zziplib.sourceforge.net/}{http://zziplib.sourceforge.net/}, acceso a archivos ZIP. +\item[zlib] +Desde \htmladdnormallink{http://www.gzip.org/zlib/}{http://www.gzip.org/zlib/} para compresión GZ. +\item[file] +Desde \htmladdnormallink{http://www.darwinsys.com/freeware/file.html}{http://www.darwinsys.com/freeware/file.html} control de archivos. +\item[sed] +De \htmladdnormallink{http://www.gnu.org/software/sed/sed.html}{http://www.gnu.org/software/sed/sed.html}, una de las herramientas mas potentes para manipulación de texto. +\item[libcurl] +Potente heramienta para manejar archivos remotos, la bajaremos de \htmladdnormallink{http://curl.haxx.se/}{http://curl.haxx.se/} . +\item[gettext] +Herramienta GNU para soporte de varios idiomas, la descaramos de \htmladdnormallink{http://www.gnu.org/software/gettext/gettext.html}{http://www.gnu.org/software/gettext/gettext.html} . +\item[libgd] +Para la manipulación y creación de imagenes desde: \htmladdnormallink{http://www.boutell.com/gd/}{http://www.boutell.com/gd/} . +\item[libjpeg] +Manipulación imagenes JPEG de \htmladdnormallink{http://www.ijg.org/}{http://www.ijg.org/} . +\item[libpng] +Manipulación imagenes PNG de \htmladdnormallink{http://www.libpng.org/pub/png/libpng.html}{http://www.libpng.org/pub/png/libpng.html} . +\item[mcal] +Libreria para el acceso a Calendarios remotos, se baja de \htmladdnormallink{http://mcal.chek.com/}{http://mcal.chek.com/} . +\item[libmysql] +Soporte para la famosisima base de datos, es imprescindible para php, se baja de \htmladdnormallink{http://www.mysql.com/}{http://www.mysql.com/} +\end{itemize} + +Una configuración recomendada sera: + + +\begin{itemize} +\item[Apache2] +\begin{tabular}{ll} +--prefix=/usr --with-apxs2=/usr/bin/apxs2 & \\ +--with-config-file-path=/etc/php4/apache2 & \\ +\end{tabular} + +\item[Opciones de compilación] +\begin{tabular}{ll} +--enable-memory-limit & Compilado con límite de memoria\\ +--disable-debug & Compilar sin simbolos de debug\\ +--disable-static & Sin librerias estáticas\\ +--with-pic & Usar objetos PIC y no PIC\\ +--with-layout=GNU & \\ +--enable-sysvsem & Soporte sysvmsg \\ +--enable-sysvshm & Soporte semáforos System V \\ +--enable-sysvmsg & Soporte memoria compartida System V \\ +--disable-rpath & Desactiva poder pasar rutas a librerias adiciones al binario\\ +--without-mm & Desactivar el soporte de sessiones por memoria\\ +\end{tabular} + +\item[De sesión] +\begin{tabular}{ll} +--enable-track-vars & \\ +--enable-trans-sid & \\ +\end{tabular} + +\item[Soporte] +\begin{tabular}{ll} +--enable-sockets & Soporte de sockets\\ +--with-mime-magic=/usr/share/misc/file/magic.mime & \\ +--with-exec-dir=/usr/lib/php4/libexec & \\ +\end{tabular} + +\item[pear] +\begin{tabular}{ll} +--with-pear=/usr/share/php & Donde vamos a instalar PEAR\\ +\end{tabular} + +\item[funciones] +\begin{tabular}{ll} +--enable-ctype & Soporte funciones de control de caracteres \\ +--with-iconv & Soporte funciones iconv\\ +--with-bz2 & Soporte Compresión BZ2\\ +--with-regex=php & Tipo de libreria de expresiones regulares\\ +--enable-calendar & Funciones para conversión de calendario\\ +--enable-bcmath & Soporte de matematicas de precisión arbitraria\\ +--with-db4 & DBA: Soporte Berkeley DB versión 4\\ +--enable-exif & Soporte funciones exif, para lectura metadata JPG y TIFF\\ +--enable-ftp & Soporte funciones FTP \\ +--with-gettext & Soporte Localización\\ +--enable-mbstring & \\ +--with-pcre-regex=/usr & \\ +--enable-shmop & Funciones de memoria compartida\\ +--disable-xml --with-expat-dir=/usr & Usa el xml de expat en vez del que viene con php\\ +--with-xmlrpc & \\ +--with-zlib & \\ +--with-zlib-dir=/usr & \\ +--with-imap=shared,/usr & Soporte imap generico\\ +--with-kerberos=/usr & Imap con autentificación kerberos\\ +--with-imap-ssl & Imap con acceso seguro SSL\\ +--with-openssl=/usr & \\ +--with-zip=/usr & \\ +--enable-dbx & Capa de abstracción a base de datos\\ +\end{tabular} + +\item[módulos externos] +\begin{tabular}{ll} +--with-curl=shared,/usr & Manejo remote de archivos\\ +--with-dom=shared,/usr --with-dom-xslt=shared,/usr --with-dom-exslt=shared,/usr & Con xmlrpc ya integrado\\ +--with-gd=shared,/usr --enable-gd-native-ttf & Soporte de manejo de graficos\\ +--with-jpeg-dir=shared,/usr & Soporte GD para jpeg\\ +--with-png-dir=shared,/usr & Soporte GD para png\\ +--with-ldap=shared,/usr & Soporte para ldap\\ +--with-mcal=shared,/usr & Soporte de calendarios\\ +--with-mhash=shared,/usr & Módulo para encriptaciones varias\\ +--with-mysql=shared,/usr & Soporte de base de datos Mysql\\ +\end{tabular} +% --with-crack[=DIR] Include crack support. +% --with-cyrus[=DIR] Include Cyrus IMAP support +% --with-mcrypt[=DIR] Include mcrypt support. +% --with-qtdom Include QtDOM support (requires Qt >= 2.2.0). +% --with-recode[=DIR] Include recode support. + + +\end{itemize} + +\section{Configuración Apache2} + +La configuración de apache se guardara en el directorio /etc/apache2 en los siguientes ficheros y directorios: +\begin{itemize} +\item[Fichero apache2.conf] +\item[Fichero ports.conf] +\item[Directorio conf.d] +\item[Directorios mods-available y mods-enabled] +\item[Directorios sites-available y sites-enabled] +\item[Directorio ssl] +\end{itemize} + +\subsection{Seguridad} + +La seguridad es uno de los puntos mas importantes al configurar un servidor apache, necesitaremos un entorno seguro donde no permitir que los usuarios manipulen y accedan a codigo o programas. + +La formas de conseguir esto es usando encriptacion, con lo que buscamos que los usuarios y el servidor se comuniquen de forma que nadie mas pueda acceder a los datos. Esto se consigue con encriptación. + +La otra manera de asegurar el sistema es que si existe algún fallo en el sistema o en el código, y un intruso intenta ejecutar codigo, este se vea incapacitado, ya que existen poderosas limitaciones, como no permitir que ejecute comandos, lea el codigo de otros script, no pueda modificar nada y tenga un usuario con muy limitados recursos. + +\subsubsection{Certificados SSL} + +\noindent Existe amplia documentación sobre encriptación y concretamente sobre SSL, un sistema de encriptación con clave publica y privada.\\ +\\ +\noindent Como el paquete openSSL ya lo tenemos instalado a partir de los pasos anteriores, debemos crear los certificados que usaremos en nuestro servidor web.\\ +\\ +\noindent Supongamos que guardamos el certificado en /etc/apache2/ssl/gosa.pem\\ +\\ +\#>FILE=/ect/apache2/ssl/gosa.pem\\ +\#>export RANDFILE=/dev/random\\ +\#>openssl req -new -x509 -nodes -out \$FILE -keyout /etc/apache2/ssl/apache.pem\\ +\#>chmod 600 \$FILE\\ +\#>ln -sf \$FILE /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < \$FILE`.0\\ +\\ +\noindent Con esto hemos creado un certificado que nos permite el acceso SSL a nuestras páginas.\\ +\\ +\noindent Si lo que queremos es una configuración que nos permita no solo que el tráfico esté ecriptado, sino que ademas el cliente garantice que es un usuario válido, debemos provocar que el servidor pida una certificación de cliente. \\ +\\ +\noindent En este caso segiremos un procedimiento mas largo, primero la creación de una certificación de CA:\\ +\\ +\#>CAFILE=/ect/apache2/ssl/gosa.ca\\ +\#>KEY=/etc/apache2/ssl/gosa.key\\ +\#>REQFILE=/etc/apache2/ssl/gosa.req\\ +\#>CERTFILE=/ect/apache2/ssl/gosa.cert\\ +\#>DAYS=365\\ +\#>export RANDFILE=/dev/random\\ +\#>openssl req -x509 -keyout \$CAKEY -out \$CAFILE \$DAYS\\ +\\ +\noindent Despues de varias cuestiones tendremos una CA, ahora hacemos un requerimiento a la CA creada:\\ +\\ +\#>openssl req -new -keyout \$REQFILE -out \$REQFILE \$DAYS\\ +\\ +\noindent Firmamos el nuevo certificado:\\ +\\ +\#>openssl ca -policy policy\_anything -out \$CERFILE -infiles \$REQFILE\\ +\\ +\noindent Y creamos un pkcs12 para configurar la certificación en los clientes:\\ +\\ +\#>openssl pkcs12 -export -inkey \$KEY -in \$CERTFILE -out certificado\_cliente.pkcs12\\ +\\ +\noindent Este certificado se puede instalar en el cliente, y en el servidor web mediante la configuración explicada en el siguiente punto, nos dara la seguridad de que solo accederán aquellos clientes que nosotros deseamos y que su comunicación sera estrictamente confidencial.\\ + +\subsubsection{Configurando mod-SSL} + + +\noindent El módulo SSL viene de serie con apache2, esto simplificara nuestro trabajo. Para saber si está ya configurado:\\ +\\ +\#> if [ -h /etc/apache2/mods-enabled/ssl.load ]; then echo "módulo instalado";else echo "módulo no instalado"; fi\\ +\\ +\noindent Para activarlo haremos lo siguiente:\\ +\\ +\#>ln -s /etc/apache2/mods-available/ssl.conf /etc/apache2/mods-enabled/ssl.conf\\ +\#>ln -s /etc/apache2/mods-available/ssl.load /etc/apache2/mods-enabled/ssl.load\\ +\\ +\noindent Esto configurará el módulo en apache2 y se podra utilizar despues de recargar el servidor con:\\ +\\ +\#>/etc/init.d/apache2 restart\\ +\\ +\\ +\noindent Para el caso de querer solo una configuración para comunicación encriptada, creamos dos configuraciones en /etc/apache2/sites-available/, una sera gosa, y la otra gosa-ssl:\\ +\\ +\noindent NameVirtual *:443\\ +\\ +\indent ServerName gosa.chaosdimension.org\\ +\\ +\indent alias /gosa /usr/share/gosa/html\\ +\\ +\indent DocumentRoot /var/www/gosa.chaosdimension.org\\ +\indent CustomLog /var/log/apache/gosa.log combined\\ +\indent ErrorLog /var/log/apache/gosa.log\\ +\\ +\indent SSLEngine On\\ +\indent SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ +\indent SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ +\indent SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ +\indent SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ +\indent SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ +\indent SSLCACertificatePath /etc/apache2/ssl/\\ +\indent SSLLogLevel error\\ +\indent SSLLog /var/log/apache2/ssl-gosa.log\\ +\\ +\\ +\\ +\noindent Para una comunicación encriptada en la cual verificamos el certificado del cliente: +\\ +\noindent NameVirtual *:443\\ +\\ +\indent ServerName gosa.chaosdimension.org\\ +\\ +\indent alias /gosa /usr/share/gosa/html\\ +\\ +\indent DocumentRoot /var/www/gosa.chaosdimension.org\\ +\indent CustomLog /var/log/apache/gosa.log combined\\ +\indent ErrorLog /var/log/apache/gosa.log\\ +\\ +\indent SSLEngine On\\ +\indent SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ +\indent SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ +\indent SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ +\indent SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ +\indent SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ +\indent SSLCACertificatePath /etc/apache2/ssl/\\ +\indent SSLLogLevel error\\ +\indent SSLLog /var/log/apache2/ssl-gosa.log\\ +\\ +\indent \\ +\indent \indent SSLVerifyClient require\\ +\indent \indent SSLVerifyDepth 1\\ +\indent \\ + + +\subsubsection{Configurando suphp} +\noindent +Suphp es un módulo para apache y php que permite ejecutar procesos de php con un usuario diferente del que usa apache para ejecutar las páginas html y php. + +Consta de dos partes, una es un modulo para apache que "captura" las peticiones de páginas php, comprueba el usuario del archivo, su grupo, y envia la información a la otra parte, que es un ejecutable suid-root que lanza php4-cgi con el usuario que le ha sido indicado, este devuelve el resultado al módulo del apache. + +La idea es minimizar el daño que se provocaria al ser explotado un posible fallo del sistema, de esta manera el usuario entraria en el sistema con una cuenta no habilitada, sin permisos de ejecución y sin posiblidad de acceso a otro código o sitios web. + +Suphp se puede descargar de \htmladdnormallink{http://www.suphp.org/Home.html}{http://www.suphp.org/Home.html}, descomprimiendo el paquete en /usr/src y compilando con las siguientes opciones: +\\ +\#>./configure --prefix=/usr \textbackslash \\ +\indent --with-apxs=/usr/bin/apxs2 \textbackslash \\ +\indent --with-apache-user=www-data \textbackslash \\ +\indent --with-php=/usr/lib/cgi-bin/php4 \textbackslash \\ +\indent --sbindir=/usr/lib/suphp \textbackslash \\ +\indent --with-logfile=/var/log/suphp/suphp.log \textbackslash \\ +\indent -with-setid-mode \textbackslash \\ +\indent --disable-checkpath \\ +\\ +\noindent Por supuesto necesitaremos tener compilado php para cgi, esto significa volver a compilar php, pero quitando la configuración para apache2 y añadiendo:\\ +\\ +\indent --prefix=/usr --enable-force-cgi-redirect --enable-fastcgi \textbackslash\\ +\indent --with-config-file-path=/etc/php4/cgi\\ + + +\noindent Para configurarlo en apache haremos igual que para ssl, primero comprobamos si está configurado:\\ +\\ +\#> if [ -h /etc/apache2/mods-enabled/suphp.load ]; then echo "módulo instalado";else echo "módulo no instalado"; fi\\ +\\ +\noindent Para activarlo haremos lo siguiente:\\ +\\ +\#>ln -s /etc/apache2/mods-available/suphp.conf /etc/apache2/mods-enabled/suphp.conf\\ +\#>ln -s /etc/apache2/mods-available/suphp.load /etc/apache2/mods-enabled/suphp.load\\ +\\ +\noindent Esto configurará el módulo en apache2 y se podra utilizar despues de recargar el servidor con:\\ +\\ +\#>/etc/init.d/apache2 restart\\ +\\ + +\noindent La configuración del sitio seguro con suphp incluido quedaria así:\\ +\\ +\noindent NameVirtual *:443\\ +\\ +\indent ServerName gosa.chaosdimension.org\\ +\\ +\indent DocumentRoot /usr/share/gosa/html\\ +\indent alias /gosa /usr/share/gosa/html\\ +\indent CustomLog /var/log/apache/gosa.log combined\\ +\indent ErrorLog /var/log/apache/gosa.log\\ +\\ +\indent suPHP\_Engine on\\ +\\ +\indent SSLEngine On\\ +\indent SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ +\indent SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ +\indent SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ +\indent SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ +\indent SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ +\indent SSLCACertificatePath /etc/apache2/ssl/\\ +\indent SSLLogLevel error\\ +\indent SSLLog /var/log/apache2/ssl-gosa.log\\ +\\ +\indent \\ +\indent \indent SSLVerifyClient require\\ +\indent \indent SSLVerifyDepth 1\\ +\indent \\ + + + +\noindent Debemos decidir que usuario vamos a usar, en este caso voy a crear uno llamado gosa, que me sirva para el fin indicado anteriormente:\\ +\\ +\indent \#>useradd -d /usr/share/gosa/html gosa\\ +\indent \#>passwd -l gosa\\ +\indent \#>cd /usr/share/gosa\\ +\indent \#>find /usr/share/gosa -name "*.php" -exec chown gosa {} ";"\\ +\indent \#>find /usr/share/gosa -name "*.php" -exec chmod 600 {} ";"\\ + + +\section{Configuración Php4} + +La configuración para mod\_php se guardará en el sitio que hallamos puesto en la partes anteriores. En nuestro caso es /etc/php4/apache2. + +El archivo de configuración siempre es php.ini y en el configuramos los módulos. + +Una configuración básica sera como esta: + +; Engine\\ +\indent engine = On ; Activa PHP\\ +\indent short\_open\_tag = On ; Permite usar \\ +\indent precision = 14 ; Número de digitos significantes mosrados en números en coma flotante\\ +\indent output\_buffering = Off ; Solo permitimos que envie cabecera antes de enviar el contenido.\\ +\indent implicit\_flush = Off ; No forzamos a php a que limpie el buffer de salida despues de cada bloque.\\ +\\ +; Safe Mode\\ +\indent \label{sm} safe\_mode = Off ; No queremos el modo seguro\\ +\indent \label{smed} safe\_mode\_exec\_dir = ; Directorio donde se ejecutara PHP\\ +\indent \label{smid} safe\_mode\_include\_dir = Directorios donde hara la busqueda PHP de librerias\\ +\indent \label{smaev} safe\_mode\_allowed\_env\_vars = PHP\_ ; Solo se permite a los usuarios\\ +\indent \indent \indent ;a crear variables del sistema que empiezen por PHP\_\\ +\indent \label{smpev} safe\_mode\_protected\_env\_vars = LD\_LIBRARY\_PATH ; Lista de variables del sistema que\\ +\indent \indent \indent ; no pueden ser cambiadas por razones de seguridad\\ +\indent \label{df} disable\_functions = ; Funciones que serán desactivadas por razones de seguridad\\ +\indent \label{auf} allow\_url\_fopen = Yes ; Permitimos que se abran archivos desde PHP\\ +\indent \label{ob} open\_basedir = ;\\ +\\ +; Colores para el modo de sintasis coloreada.\\ +\indent highlight.string = \#DD0000\\ +\indent highlight.comment = \#FF8000\\ +\indent highlight.keyword = \#007700\\ +\indent highlight.bg = \#FFFFFF\\ +\indent highlight.default = \#0000BB\\ +\indent highlight.html = \#000000\\ +\\ +; Misc\\ +\indent \label{ep}expose\_php = On ; Indica en el mensaje del servidor web si está instalado o no.\\ +\\ +; Resource Limits ;\\ +\indent max\_execution\_time = 30 ; Tiempo máximo de ejcución del script.\\ +\indent memory\_limit = 16M ; La cantidad máxima permitida de memoria que puede consumir un script.\\ +\\ +; Error handling and logging ;\\ +\indent error\_reporting = E\_ALL; Indicamos que muestre todos los errores y avisos.\\ +\indent display\_errors = Off ; Que no los imprima en pantalla.\\ +\indent display\_startup\_errors = Off ; Que no muestre los errore de arranque de PHP.\\ +\indent log\_errors = On ; Que envíe los errores a un fichero.\\ +\indent track\_errors = On ; Que guarde el último error/aviso para \$php\_errormsg (boolean)\\ +\indent error\_log = /var/log/php/php4.log ; Fichero que guardará los errores\\ +\indent warn\_plus\_overloading = Off ; No avisamos si se usa el operador + con cadenas de texto\\ +\\ +; Data Handling ;\\ +\indent variables\_order = "EGPCS" ; Esta directiva describe el orden en el cual\\ +\indent ;se registrarán las variables de PHP (Siendo G=GET, P=POST, C=Cookie,\\ +\indent ; E=Sistema, S=Propias de PHP, todas es indicado como EGPCS)\\ +\indent \label{rg} register\_globals = Off ; No queremos que se registren las EGPCS como globales.\\ +\indent register\_argc\_argv = Off ; No declaramos ARGV y ARGC para su uso en scripts.\\ +\indent post\_max\_size = 8M ; Tamaño máximo de un envio POST que aceptará PHP.\\ + +; Magic quotes\\ +\indent \label{mqq}magic\_quotes\_gpc = On ; Comillas añadidas para gpc(información GET/POST/Cookie)\\ +\indent magic\_quotes\_runtime= Off ; Comillas añadidas para información generada por el sistema, \\ +\indent ;por ejemplo desde SQL, exec(), etc.\\ +\indent magic\_quotes\_sybase = Off ; Usar comillas añadidas al estilo de Sybase \\ +\indent ;(escapa ' con '' en lugar de \textbackslash ')\\ +\\ +; Tipo de archivo por defecto de PHP y codificación por defecto.\\ +\indent default\_mimetype = "text/html"\\ +\indent default\_charset = "iso-8859-1"\\ +\\ +; Rutas y directorios ;\\ +\indent \label{ip} include\_path = . ;\\ +\indent doc\_root = ; Raiz de lsa paginas php, mejor dejarlo en blanco.\\ +\indent user\_dir = ; Donde php ejecuta el script, tambien mejor en blanco.\\ +\indent ;extension\_dir = /usr/lib/php4/apache ; ¿Donde estan los módulos?\\ +\indent enable\_dl = Off ; Permitir o no la carga dinamica de módulos con la funciñon dl().\\ +\\ +; Subir ficheros al servidor;\\ +\indent file\_uploads = On ; Permitir el subir archivos al servidor.\\ +\indent upload\_max\_filesize = 2M ; Tamaño máximo de los archivos que vamos a subir.\\ +\\ +; Extensiones dinamicas ;\\ +\indent extension=gd.so ; Graficos\\ +\indent extension=mysql.so ; Mysql\\ +\indent extension=ldap.so ; Ldap\\ +\indent extension=mhash.so ; Mhash\\ +\indent extension=imap.so ; Imap\\ +\indent extension=kadm5.so ; Kerberos\\ +\indent extension=cups.so ; Cupsys\\ +\\ +; Log del sistema\\ + +[Syslog]\\ +\indent define\_syslog\_variables = Off ; Desactivamos la definición de variables de syslog.\\ +\\ +; funciones de correo\\ + +[mail function]\\ +\indent ;sendmail\_path = ;En sistemas Unix, donde esta hubicado sendmail (por defecto es 'sendmail -t -i')\\ +\\ +; depuración\\ + +[Debugger]\\ +\indent debugger.host = localhost ; Donde está el depurador.\\ +\indent debugger.port = 7869 ; En que puerto escucha.\\ +\indent debugger.enabled = False ; En principio suponemos que no hay depurados.\\ +\\ +;Opciones SQL\\ + +[SQL]\\ +\indent sql.safe\_mode = Off ; Modo seguro de sql, en principio estará desactivado.\\ +\\ +; Opciones Mysql\\ + +[MySQL]\\ +\indent mysql.allow\_persistent = Off ; Desactivaremos los enlaces persistentes por razones de seguridad.\\ +\indent mysql.max\_persistent = -1 ; Numero de conexiones persistentes, no se usa por haberlas desactivado.\\ +\indent mysql.max\_links = -1 ; Numero máximo de conexiones, -1 es sin limite.\\ +\indent mysql.default\_port = 3306; Puerto por defecto del mysql.\\ +\indent mysql.default\_socket = ; Nombre de socket que se usaran para conexiones locales MySQL.\\ +\indent ;Si está vacio se usara el que tengamos en la configuración de la compilación del PHP.\\ +\indent mysql.default\_host = ; No configuramos host por defecto.\\ +\indent mysql.default\_user = ; No configuramos usuario por defecto.\\ +\indent mysql.default\_password = ; No configuramos una contraseña por defecto.\\ +\\ +; Control de sesiones\\ + +[Session]\\ +\indent session.save\_handler = files ; Guardamos la información de sesión en ficheros.\\ +\indent \label{ss} session.save\_path = /var/lib/php4 ; Donde se van ha guardar los ficheros de sesión.\\ +\indent session.use\_cookies = 1 ; Usaremos cookies para el seguimiento de sesión.\\ +\indent session.name = PHPSESSID ; Nombre de la sesión que será usado en el nombre de la cookie.\\ +\indent session.auto\_start = 0 ; No iniciamos sesión automaticamente.\\ +\indent session.cookie\_lifetime = 0 ; Tiempo de vida de una cookie de sesión o 0 si esperamos a que cierre el navegador.\\ +\indent session.cookie\_path = / ; La ruta para que es válida la cookie.\\ +\indent session.cookie\_domain = ; El dominio para el cual es válida la cookie.\\ +\indent session.serialize\_handler = php ; Manipulador usado para serializar los datos.\\ +\indent session.gc\_probability = 1 ; Probabilidad en porcentaje de que el recolector de basure se active en cada sesión.\\ +\indent session.gc\_maxlifetime = 1440 ; Despues de este tiempo en segundos, la información guardada\\ +\indent ; será vista como basura para el recolector de basura.\\ +\indent session.referer\_check = ; Comprueba los Referer HTTP para invalidar URLs externas conteniendo ids\\ +\indent session.entropy\_length = 0 ; Número de bytes a leer del fichero de entropía.\\ +\indent session.entropy\_file = ; El fichero que generará la entropía.\\ +\indent session.cache\_limiter = nocache ; Aspecto de cache HTTP, sin cache.\\ +\indent session.cache\_expire = 180 ; Tiempo de expiración del documento.\\ +\indent session.use\_trans\_sid = 0 ; Usar sid transportable si está activado en la compilación\\ +\\ +; FIN\\ + + +\subsection{Seguridad} + +Php es un poderoso lenguaje de script, permite a su usuario tener bastante control sobre el sistema y a atacantes maliciosos muchas opciones de alcanzar su objetivo. + +Un administrador de sistemas no debe suponer que un sistema es completamente seguro con solo tener las actualizaciones de seguridad instaladas, un sistema que muesta código al exterior no es seguro, aunque el resultado sea HTML, se expone a ataques de formas muy diversas y a fallos de seguridad desconocidos. + +Limitar al máximo el acceso que permite php es entonces una necesidad. + +\subsection{Configurando safe php} + +PHP tiene un modo llamado \htmladdnormallink{safe-mode}{http://www.php.net/manual/en/features.safe-mode.php} que permite una mayor seguridad, una configuración para Safe mode recomendada es: + +\indent \ref{mqq} magic\_quotes\_qpc = On\\ +\indent \ref{auf} allow\_url\_fopen = No\\ +\indent \ref{rg} register\_globals = Off\\ +\indent \ref{sm} safe\_mode = On\\ +\indent \ref{smid} safe\_mode\_include\_dir = "/usr/share/gosa:/var/spool/gosa"\\ +\indent \ref{smed} safe\_mode\_exec\_dir = "/usr/lib/gosa"\\ +\indent \ref{smaev} safe\_mode\_allowed\_env\_vars = PHP\_,LANG\\ +\indent \ref{ob} open\_basedir = "/etc/gosa:/var/spool/gosa:/var/cache/gosa:/usr/share/gosa:/tmp"\\ +\indent \ref{ip} include\_path = ".:/usr/share/php:/usr/share/gosa:/var/spool/gosa:/usr/share/gosa/safe\_bin"\\ +\indent \ref{df} disable\_functions = system, shell\_exec, passthru, phpinfo, show\_source\\ + + +En el caso de que vayamos a usar SuPHP, debemos dar los siguientes permisos al directorio /var/lib/php4: + +\#>chmod 1777 /var/lib/php4 + +Ya que cada usuario que ejecute PHP guardara la sesión con ese usuario. + + +\section{Módulos de PHP necesarios} + +En esta sección se explicaran los pasos para conseguir compilar y usar los módulos necesarios o importantes para GOsa, se recomenienda instalar todos los módulos, incluso los que no son necesarios. + +\subsection{ldap.so} + +MÓDULO NECESARIO + +\indent Este módulo no necesita ninguna configuración especial para funcionar. + +\indent Solo se conoce un problema: No puede conectarse PHP+Apache con un servidor LDAP que pida Certificado válido. Con lo cual la comunicación será segura, ya que se puede usar SSL, pero no estará garantizada. + +\subsection{mysql.so} + +MÓDULO OPCIONAL + +\indent Este módulo no necesita ninguna configuración especial para funcionar. + +\indent Sirve para albergar configuraciones del plugin imap - sieve. + +\subsection{imap.so} + +MÓDULO OPCIONAL + +\indent El módulo instalado al compilar PHP funcionara, pero tendra una importante carencia, la función getacl que da control sobre las carpetas, asi que necesitaremos un parche y una serie de pasos para compilar el módulo para su uso en GOsa. + +Nos bajamos el parche de \htmladdnormallink{php4-imap-getacl.patch}{ftp://ftp.gonicus.de/gosa/contrib/php4-imap-getacl.patch} y lo ponemos en /usr/src, como tenemos las fuentes de PHP en /usr/src, ejecutamos los siguientes comandos: + +\#>cd /usr/src/php4.3-XXX/extensions/imap +\#>make clear +\#>patch -p1 phpize +\#>./configure +\#>make +\#>make install + +Esto configurara e instalara correctamente el módulo. + +\subsection{gd.so} + +MÓDULO OPCIONAL + +\indent Este módulo no necesita ninguna configuración especial para funcionar. + +\indent El módulo es usado para el manejo de gráficos, tambien usado por el sistema de plantillas smarty. + +\subsection{cups} + +MÓDULO OPCIONAL + +\indent Para utilizar el módulo Cups para la selección de la impresora en Posix, debemos debemos descargar el módulo + + + + +\subsection{krb} + +MÓDULO OPCIONAL + +\indent Este módulo no necesita ninguna configuración especial para funcionar. + + diff --git a/doc/guide/admin/es/manual_gosa_es_certificates.tex b/doc/guide/admin/es/manual_gosa_es_certificates.tex index 2370a3136..534ef08d6 100644 --- a/doc/guide/admin/es/manual_gosa_es_certificates.tex +++ b/doc/guide/admin/es/manual_gosa_es_certificates.tex @@ -7,90 +7,96 @@ Una formas de conseguir esto es usando encriptaci La otra manera de asegurar el sistema es que si existe algún fallo en el sistema o en el código, y un intruso intenta ejecutar codigo, este se vea incapacitado, ya que existen poderosas limitaciones, como no permitir que ejecute comandos, lea el codigo de otros script, no pueda modificar nada y tenga un usuario con muy limitados recursos. \subsection{ Certificados SSL} +\label{down_ssl} +\noindent Necesitaremos \textbf{openSSL}, existe en todas las distribuciones y tiene documentación en su pagina web\cite{ssldoc}. -\noindent Existe amplia documentación sobre encriptación y concretamente sobre SSL, un sistema de encriptación con clave publica y privada.\\ -\\ -\noindent Como el paquete openSSL ya lo tenemos instalado a partir de los pasos anteriores, debemos crear los certificados que usaremos en nuestro servidor web.\\ -\\ -\noindent Supongamos que guardamos el certificado en /etc/apache2/ssl/gosa.pem\\ -\\ -\begin{tabular}{|l|}\hline -\#>FILE=/ect/apache2/ssl/gosa.pem\\ -\#>export RANDFILE=/dev/random\\ -\#>openssl req -new -x509 -nodes -out \$FILE -keyout /etc/apache2/ssl/apache.pem\\ -\#>chmod 600 \$FILE\\ -\#>ln -sf \$FILE /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < \$FILE`.0\\ -\hline \end{tabular} -\vspace{0.5cm} -\\ -\noindent Con esto hemos creado un certificado que nos permite el acceso SSL a nuestras páginas.\\ -\\ -\noindent Si lo que queremos es una configuración que nos permita no solo que el tráfico esté encriptado, sino que además el cliente garantice que es un usuario válido, debemos provocar que el servidor pida una certificación de cliente. \\ -\\ -\noindent En este caso seguiremos un procedimiento mas largo, primero la creación de una certificación de CA:\\ -\\ -\begin{tabular}{|l|}\hline -\#>CAFILE=gosa.ca\\ -\#>KEY=gosa.key\\ -\#>REQFILE=gosa.req\\ -\#>CERTFILE=gosa.cert\\ -\#>DAYS=2048\\ -\#>OUTDIR=.\\ -\#>export RANDFILE=/dev/random\\ -\#>openssl req -new -x509 -keyout \$KEY -out \$CAFILE -days \$DAYS\\ -\hline \end{tabular} -\vspace{0.5cm} -\\ -\noindent Después de varias cuestiones tendremos una CA, ahora hacemos un requerimiento para un nuevo certificado:\\ -\\ -\begin{tabular}{|l|}\hline -\#>DAYS=365\\ -\#>openssl req -new -keyout \$REQFILE -out \$REQFILE -days\$DAYS\\ -\hline \end{tabular} -\vspace{0.5cm} -\\ -\noindent Creamos una configuración para usar la CA con openssl y la guardamos en openssl.cnf:\\ -\\ -\begin{tabular}{|l|}\hline -\verb|HOME = .|\\ -\verb|RANDFILE = $ENV::HOME/.rnd|\\ -\verb|[ ca ]|\\ -\verb|default_ca = CA_default|\\ -\verb|[ CA_default ]|\\ -\verb|dir = .|\\ -\verb|database = index.txt|\\ -\verb|serial = serial|\\ -\verb|default_days = 365|\\ -\verb|default_crl_days= 30|\\ -\verb|default_md = md5|\\ -\verb|preserve = no|\\ -\verb|policy = policy_anything|\\ -\verb|[ policy_anything ]|\\ -\verb|countryName = optional|\\ -\verb|stateOrProvinceName = optional|\\ -\verb|localityName = optional|\\ -\verb|organizationName = optional|\\ -\verb|organizationalUnitName = optional|\\ -\verb|commonName = supplied|\\ -\verb|emailAddress = optional|\\ -\hline \end{tabular} -\vspace{0.5cm} -\\ -\noindent Firmamos el nuevo certificado:\\ -\\ -\begin{tabular}{|l|}\hline -\#>\verb|touch index.txt|\\ -\#>\verb|touch index.txt.attr|\\ -\#>\verb|echo "01" >serial|\\ -\#>\verb|openssl ca -config openssl.cnf -policy policy_anything \|\\\verb|-keyfile $KEY -cert $CAFILE -outdir . -out $CERFILE -infiles $REQFILE|\\ -\hline \end{tabular} -\vspace{0.5cm} -\\ -\noindent Y creamos un pkcs12 para configurar la certificación en los clientes:\\ -\\ -\begin{tabular}{|l|}\hline -\#>openssl pkcs12 -export -inkey \$KEY -in \$CERTFILE -out certificado\_cliente.pkcs12\\ -\hline \end{tabular} -\vspace{0.5cm} -\\ -\noindent Este certificado se puede instalar en el cliente, y en el servidor mediante la configuración explicada en cada uno, esto nos dará la seguridad de que su comunicación será estrictamente confidencial.\\ +\noindent Las fuentes se pueden descargar de \hlink{http://www.openssl.org/source/} + +\noindent Existe amplia documentación sobre encriptación y concretamente sobre SSL, un sistema de encriptación con clave publica y privada. + +\noindent Como el paquete openSSL ya lo tenemos instalado a partir de los pasos anteriores, debemos crear los certificados que usaremos en nuestro servidor web. + +\noindent Supongamos que guardamos el certificado en /etc/apache2/ssl/gosa.pem + +\jump +\begin{rbox}[label=Pem Certificate] +# FILE=/ect/apache2/ssl/gosa.pem +# export RANDFILE=/dev/random +# openssl req -new -x509 -nodes -out $FILE -keyout /etc/apache2/ssl/apache.pem +# chmod 600 $FILE +# ln -sf $FILE /etc/apache2/ssl/`/usr/bin/openssl x509 -noout -hash < $FILE`.0 +\end{rbox} +\jump + + +\noindent Con esto hemos creado un certificado que nos permite el acceso SSL a nuestras páginas. + +\noindent Si lo que queremos es una configuración que nos permita no solo que el tráfico esté encriptado, sino que además el cliente garantice que es un usuario válido, debemos provocar que el servidor pida una certificación de cliente. +\newpage +\noindent En este caso seguiremos un procedimiento mas largo, primero la creación de una certificación de CA: +\jump +\begin{rbox} +# CAFILE=gosa.ca +# KEY=gosa.key +# REQFILE=gosa.req +# CERTFILE=gosa.cert +# DAYS=2048 +# OUTDIR=. +# export RANDFILE=/dev/random +# openssl req -new -x509 -keyout $KEY -out $CAFILE -days $DAYS +\end{rbox} +\jump + +Después de varias cuestiones tendremos una CA, ahora hacemos un requerimiento para un nuevo certificado: +\jump +\begin{rbox} +# >DAYS=365 +# >openssl req -new -keyout $REQFILE -out $REQFILE -days$DAYS +\end{rbox} +\jump + +Creamos una configuración para usar la CA con openssl y la guardamos en openssl.cnf: +\jump +\begin{rbox} +HOME = . +RANDFILE = $ENV::HOME/.rnd +[ ca ] +default_ca = CA_default +[ CA_default ] +dir = . +database = index.txt +serial = serial +default_days = 365 +default_crl_days= 30 +default_md = md5 +preserve = no +policy = policy_anything +[ policy_anything ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional +\end{rbox} +\jump + +Firmamos el nuevo certificado: +\jump +\begin{rbox} +# touch index.txt +# touch index.txt.attr +# echo "01" >serial +# openssl ca -config openssl.cnf -policy policy_anything \ + -keyfile $KEY -cert $CAFILE -outdir . -out $CERFILE -infiles $REQFILE +\end{rbox} +\jump + +Y creamos un pkcs12 para configurar la certificación en los clientes: +\jump +\begin{rbox} +# openssl pkcs12 -export -inkey $KEY -in $CERTFILE -out certificado_cliente.pkcs12 +\end{rbox} +\jump +Este certificado se puede instalar en el cliente, y en el servidor mediante la configuración explicada en cada uno, esto nos dará la seguridad de que su comunicación será estrictamente confidencial.\\ diff --git a/doc/guide/admin/es/manual_gosa_es_dns.tex b/doc/guide/admin/es/manual_gosa_es_dns.tex index 66f313e48..de7195d5a 100644 --- a/doc/guide/admin/es/manual_gosa_es_dns.tex +++ b/doc/guide/admin/es/manual_gosa_es_dns.tex @@ -1 +1,304 @@ -\chapter{Servidores de Dominios de Nombres - DNS} \ No newline at end of file +\chapter{Servidores de Configuración dinámica de Equipos - DHCP} +\section{El protocolo DHCP} + +DHCP (Dynamic Host Configuration Protocol / Protocolo de configuración dinámica de equipos) es usado ampliamente y tiene numerosas posibilidades, como la asignación dinámicas de direcciones IP. + +DHCP aparece como un protocolo estandar en Octubre de 1993 (RFC 2131). + +\subsection{Asignación de IPs} + +\begin{itemize} +\item[Manual] La asignación se hace de forma manual, de tal modo que para cada MAC se le asigna una ip fija. +\item[Automático] Se asigna un rango de ips que serán dadas a los clientes. Estas serán asignadas de tal forma que los clientes mantengan su IP. +\item[Dinámico] Se asigna un rango de ips que serán dadas a los clientes. Estas serán asigandas de forma dinámica, de tal manera que al arrancar la maquina el servidor le asignara una IP y esta puede ser diferente cada vez que arranque. +\end{itemize} + +\subsection{Análisis del Protocolo} + +El protocolo utilizara los puertos 67/UDP para el lado de servidor y 68/UDP para el lado de cliente. + +\begin{itemize} +\item[DISCOVER] El cliente lanza un broadcast a 255.255.255.255 buscando un servidor DHCP, tambien hace peticiones indicando su ultima IP. +\item[OFFER] El servidor determina la configuración del cliente con entre otras cosas, la dirección MAC del cliente. +\item[REQUEST] El cliente pide la configuración al servidor, indicando la IP que este le ha configurado. +\item[ACKNOWLEDGE] El servidor lanza un broadcast para que los otros clientes vean lo que ha sucedido. +\end{itemize} + + +\section{Instalación} + +Se descarga de \hlink{ftp://ftp.isc.org/isc/} y lo descomprimimos en /usr/src/dhcp-3.X.X, hacemos entonces los siguiente: +\jump +\begin{rbox} +# cd /usr/src/dhcp-3.X.X +# ./configure +# make +# make install +\end{rbox} +\jump + +\section{Configuración Básica} + +Al comenzar leera la configuración desde el archivo /etc/dhcp3/dhcp.conf, una configuración básica puede ser: +\jump +\begin{rbox} +# Intentara hacer una actualización automatica de dns (muy util para los windows 2k). +ddns-update-style interim; +ddns-hostname chaosdimension.org +ddns-domainname chaosdimension.org + +# opciones de dominio y dns +option domain-name "chaosdimension.org"; +option domain-name-servers ns1.chaosdimension.org, ns2.chaosdimension.org; + +# Tiempos que se tendra una ip +default-lease-time 600; +max-lease-time 7200; + +# Fichero donde se guardan las peticiones +# Muy interesante para actualizaciones dinamicas +lease-file-name /var/lib/dhcp/dhcpd.leases + +# Si este es el unico servidor DHCP en la red +# se debe activar esta opción +#authoritative; + +# Donde ira el registro de eventos +# En /etc/syslog.conf habra que poner algo como: +# log.local7 /var/log/dhcp3d.log +log-facility local7; + +# Configuración de la subred y las IPs +subnet mysubnet.0 netmask 255.255.255.128 { + range mysubnet.1 mysubnet.127; + option broadcast-address mysubnet.128; + option routers gw1.chaosdimension.org, gw2.chaosdimension.org; + option domain-name-servers ns1.chaosdimension.org, ns2.chaosdimension.org; + option domain-name "chaosdimension.org"; + default-lease-time 600; + max-lease-time 7200; +} + +# Si lo que queremos es una configuración por equipos el sistema es: +host cliente1 { + hardware ethernet MAC.cliente1; +# filename "vmunix.passacaglia"; Muy interesante para subir archivos por tftp + fixed-address cliente1.chaosdimension.org; + server-name "chaosdimension.org"; +} + +\end{rbox} +\jump + +\chapter{Servidores de Dominios de Nombres - DNS} +\section{El servicio de Dominio de Nombres} +\section{El servidor Bind 9} + +Bind 9 es el servidor de nombres mas extendido por internet, aunque tenga la competencia de nuevos servidores como pdns(\hlink{http://www.powerdns.com/}) o djbdns(\hlink{http://cr.yp.to/djbdns.html}). + +Tiene gran cantidad de documentación en el sitio web del ISC: \hlink{http://www.isc.org/index.pl?/sw/bind/bind9.php} , en especial muy interesante la guia del administrador de bind 9 en \hlink{http://www.nominum.com/content/documents/bind9arm.pdf}. + +\section{Instalación} + +Se descarga de \hlink{ftp://ftp.isc.org/isc/} + +\section{Configuración Básica} + +El archivo con la configuración de los dominios es /etc/bind/named.conf y la configuración que vamos a poner de ejemplo es bastante básica: + +\jump +\begin{rbox}[label=named.conf] +// Clave para actualizaciones tipo dyndns +include "/etc/bind/dyndns-keyfile"; + +// Listas de acceso + +acl local{ + myipnetwork/24; + localhost/32; + }; + +acl slaves{ + ip.slave.dns1/32; + ip.slave.dns2/32; +// Ad Infinitun ... + }; + +acl dhcp3{ + ip.server.dhcp3/32; + }; + + +// Controlando el registro de eventos +logging { + category lame-servers { null; }; + category cname { null; }; +}; + +// El dominio raiz, este archivo contiene la lista de servidores raices, se +// puede actualizar con el comando dig: +zone "." { + type hint; + file "/etc/bind/db.root"; +}; + +// Sera siempre el dominio autorizado para localhost + +zone "localhost" { + type master; + file "/etc/bind/db.local"; +}; + +zone "127.in-addr.arpa" { + type master; + file "/etc/bind/db.127"; +}; + +zone "0.in-addr.arpa" { + type master; + file "/etc/bind/db.0"; +}; + +zone "255.in-addr.arpa" { + type master; + file "/etc/bind/db.255"; +}; + +zone "chaosdimension.org" { +// Estamos en el servidor maestro + type master; +// LIsta de acceso al dominio +// Quienes pueden preguntar + allow-query {local; }; +// Quienes pueden hacer transferencias (esclavos) + allow-transfer {slaves;}; +// Quienes pueden hacer modificaciones de información + allow-update {dhcp3;}; +// Notificaremos los cambios + notify yes; + file "/etc/bind/dominios/chaosdimension.org.dns"; +}; +\end{rbox} +\jump +\begin{rbox}[label=/etc/bind/dyndns-keyfile] + key getip { + algorithm hmac-md5; + secret "7YUVBA4v/5I="; + }; +\end{rbox} +\jump +\begin{rbox}[label=dominios/chaosdimension.org.dns] +$TTL 86400 +; +; Zone file for chaosdimension.org +; +; The full zone file +; +@ IN SOA chaosdimension.org hostmaster.chaosdimension.org. ( + 2005060901 ; serial, todays date + todays serial ## + 8H ; refresh, seconds + 2H ; retry, seconds + 2W ; expire, seconds + 1D ) ; minimum, seconds +; + NS ns1.chaosdimension.org. ; Inet Address of name server + NS ns2.chaosdimension.org. + MX 10 mx.chaosdimension.org. ; Primary Mail Exchanger +; + +$ORIGIN chaosdimension.org. +sistemas IN A 192.168.0.155 +ldap IN A 192.168.1.1 + +server1 IN A 192.168.1.2 +server2 IN A 192.168.1.3 +server3 IN A 192.168.1.4 + + +krb IN A 192.168.1.1 +kdc IN A 192.168.1.1 +kadmin IN A 192.168.1.1 +kpasswd IN A 192.168.1.1 + +ns1 IN A 192.168.1.1 +ns2 IN A 192.168.1.2 + +@ IN A 192.168.1.1 + +\end{rbox} +\jump + + +\section{Una configuración avanzada} + +\subsection{DHCP-ddns} + +Si queremos actualización automatica desde los servidores DHCP, tendremos que cambiar cosas en nuestra configuración, entre otras cosas muy importantes permisos, en la configuración anterior se indica la lista de acceso dhcp3 para el acceso de actualización (update) desde el servidor DHCP. + +\subsection{SDB} + +SDB (BIND 9 Simplified Database Interface / Interface simplificado a la base de datos de Bind 9) es una base de datos en memoria de los contenidos de la configuración de bind9, este sistema es expansible a otros sistemas de bases de datos, con los cuales se puede manipular la información en Bind 9. + +\subsection{DYNDNS} + +DYNDNS es un protocolo de actualización de zonas DNS, usado tambien en bind 8 proporciona un sistema ideal para la actualización de servidores DNS sin tener que usar SDB, la actualización se realizara a traves del comando nsupdate, se necesita una clave para las actualizaciones que sera usada por este comando. + +En la configuración hemos añadido un archivo que contine la clave de configuración, desde nsupdate podremos usar la misma clave y conseguir las actualizaciones, tenemos añadir o borrar direcciones: + +\jump +\begin{rbox}[label=Añadiendo registro DNS] +# echo "update add nombre.chaosdimension.org 300 A dirección.ip"|/usr/sbin/nsupdate -k /home/keys/keys:getip. +\end{rbox} +\jump +\begin{rbox}[label=Eliminando registro DNS] +# echo "update delete nombre.chaosdimension.org"|/usr/sbin/nsupdate -k /home/keys/keys:getip. +\end{rbox} +\jump + +\subsection{DNSSEC} + +En el ejemplo anterior vemos un uso de dnssec, una infraestructura para la seguridad de bind, en este caso sencillo explicaremos la creacion tanto de dyndns-keyfile como la generacion de las claves que habra debajo del directorio /home/keys/keys, primero vamos al directorio y ejecutamos: +\jump +\begin{rbox} +# dnssec-keygen -a HMAC-MD5 -b 64 -n zone getip +Kgetip.+157+19720 +\end{rbox} +\jump + +Tendremos ahora dos archivo es ese directorio: Kgetip.+157+05353.key y Kgetip.+157+05353.private, del primero cogeremos la clave: +\jump +\begin{rbox} +# cat Kgetip.+157+05353.key +getip. IN KEY 256 3 157 7YUVBA4v/5I= +\end{rbox} +\jump + +El valor \verb|7YUVBA4v/5I=| es que pondremos en el archivo dyndns-keyfile descrito anteriormente. + + +\subsection{Usando ldap2dns para sustituir al servidor Bind} + +\section{El servidor Pdns} + +\subsection{Usando Pdns-ldap como servidor de dominio} + + +\section{Configurar el dns para los dominios y servidores Kerberos} + +\label{dns_kerberos} +\subsection{Bind9} + +\jump +\begin{rbox} +_kerberos IN TXT "CHAOSDIMENSION.ORG" +_kerberos._tcp IN SRV 0 0 88 krb.chaosdimension.org. +_kerberos._udp IN SRV 0 0 88 krb.chaosdimension.org. +_kerberos-master._udp IN SRV 0 0 88 krb.chaosdimension.org. +_kerberos-adm._tcp IN SRV 0 0 749 krb.chaosdimension.org. +_kpasswd._udp IN SRV 0 0 464 krb.chaosdimension.org. + +_ldap._tcp.chaosdimension.org IN SRV 0 0 389 ldap.chaosdimension.org +\end{rbox} +\jump + +\subsection{Pdns} diff --git a/doc/guide/admin/es/manual_gosa_es_fileserver.tex b/doc/guide/admin/es/manual_gosa_es_fileserver.tex index 410751c11..9f05473c6 100644 --- a/doc/guide/admin/es/manual_gosa_es_fileserver.tex +++ b/doc/guide/admin/es/manual_gosa_es_fileserver.tex @@ -1 +1,11 @@ \chapter{Servidores de archivos - Samba} +\section{Introducción} +\section{Protocolos} +\subsection{NETBIOS} +\subsection{CIFS} +\section{Instalación} +\subsection{Varios Servidores en una unica maquina} +\section{Configuración} +\section{Perfiles Movibles} +\section{} +\section{} diff --git a/doc/guide/admin/es/manual_gosa_es_kerberos.tex b/doc/guide/admin/es/manual_gosa_es_kerberos.tex index 91b5d0ae5..cc59a5654 100644 --- a/doc/guide/admin/es/manual_gosa_es_kerberos.tex +++ b/doc/guide/admin/es/manual_gosa_es_kerberos.tex @@ -1,3 +1,187 @@ +\chapter{Servidor Horario de Red} +\section{El protocolo NTP} + +NTP(Network Time Protocol) es el protocolo estandar de sincronización de la hora en equipos de una misma red. + +El servidor devuelve la Hora UTC (Horario de Greenwich u horario universal), con lo cual hay que modificar este horario para los paises en que estemos y su uso horario. + +Amplia documentación puede ser encontrada en \hlink{http://www.ntp.org/} y servidores ntp públicos en \hlink{http://pool.ntp.bitic.net/} y \hlink{http://www.eecis.udel.edu/~mills/ntp/servers.html}. + +Sigue los siguientes RFC: RFC 778, RFC 891, RFC 956, RFC 958, y RFC 1305. + +El servidor NTP y el cliente correspondiente serán necesarios para su utilización con Kerberos, ya que este protocolo de autentificación necesita gran precisión horaria. + + +\section{NTP-server} + +\subsection{Instalación} + +Es el servidor oficial, que puede ser descargado de \hlink{http://ntp.isc.org/bin/view/Main/SoftwareDownloads}, una vez descargado y descomprimido en /usr/src/ntp-4.X.X haremos: + +\jump +\begin{rbox} +# cd build-refclock && ../configure --prefix=/usr \ + --enable-all-clocks --enable-parse-clocks --enable-SHM \ + --disable-debugging --sysconfdir=/var/lib/ntp \ + --cache-file=../config.cache --disable-errorcache \ + --enable-linuxcaps +# make +# make install +\end{rbox} +\jump + +\subsection{Configuración} + +La configuración se guarda en /etc/ntp.conf y esta es una configuración básica: + +\jump +\begin{rbox} +# Donde guardamos los registros. +logfile /var/log/ntpd + +# Indica la dirección del archivo de frecuencia. +driftfile /var/lib/ntp/ntp.drift + +# Directorio donde se volcarán estadísticas +statsdir /var/log/ntpstats/ + +# Mas de estadísticas +statistics loopstats peerstats clockstats +filegen loopstats file loopstats type day enable +filegen peerstats file peerstats type day enable +filegen clockstats file clockstats type day enable + +# Usaremos pool.ntp.org ya que redirecciona a gran cantidad +# de servidores ntp publicos +server pool.ntp.org + +# Restricciones de acceso +restrict your.lan kod notrap nomodify nopeer noquery +restrict 127.0.0.1 nomodify +restric default ignore + +# Para proveer de hora a la subred +broadcast your.subnet.255 + +\end{rbox} +\jump + +ntp-server soporta muchos mas parámetros de configuración como autentificación, certificados, monitorización, etc. Que se salen de las necesidades de este manual. + +\section{Chrony} + +\subsection{Instalación} + +Chrony es otro servidor horario mas ligero que el anterior y tambien ampliamente utilizado, lo descargaremos de \hlink{http://chrony.sunsite.dk/download.php} y como hacemos con todos los paquetes lo ponemos en /usr/src: + +\jump +\begin{rbox} +# cd /usr/src/chrony- +# ./configure --prefix='/usr' +# make +# make install +\end{rbox} +\jump + +Mas documentación la encontraremos en \hlink{http://chrony.sunsite.dk/guide/chrony.html} . + +\subsection{Configuración} + +El archivo de configuración básico es /etc/chrony/chrony.conf y sería como: + +\jump +\begin{rbox} +# See www.pool.ntp.org for an explanation of these servers. Please +# consider joining the project if possible. If you can't or don't want to +# use these servers I suggest that you try your ISP's nameservers. We mark +# the servers 'offline' so that chronyd won't try to connect when the link +# is down. Scripts in /etc/ppp/ip-up.d and /etc/ppp/ip-down.d use chronyc +# commands to switch it on when the link comes up and off when it goes +# down. If you have an always-on connection such as cable omit the +# 'offline' directive and chronyd will default to online. + +# Configuración para pool.net.org, al igual que en ntp-server, en este caso +# usaremos tres intentos por si nuestra primera petición da con un servidor offline. + +server pool.ntp.org minpoll 8 +server pool.ntp.org minpoll 8 +server pool.ntp.org minpoll 8 + +# Clave del administrador, + +keyfile /etc/chrony/chrony.keys + +# Clave para el ejecutable (la primera del anterior) + +commandkey 1 + +# Fichero de frecuencias + +driftfile /var/lib/chrony/chrony.drift + +# Registro del servidor + +log tracking measurements statistics +logdir /var/log/chrony + +# Stop bad estimates upsetting machine clock. + +maxupdateskew 100.0 + +# Volcar las mediciones al cerrar el servidor + +dumponexit + +# Y donde: + +dumpdir /var/lib/chrony + +# Let computer be a server when it is unsynchronised. + +local stratum 10 + +# Clientes permitidos + +allow your.subnet + +# Envia un registro si tiene que actualizar hora de mas de x segs: + +logchange 0.5 + +# Idem pero enviando un correo +# if chronyd applies a correction exceeding a particular threshold to the +# system clock. + +mailonchange root@your.domain 0.5 + +\end{rbox} +\jump + +\section{ntpdate} + +\subsection{Instalación y Funcionamiento} + +ntpdate es un cliente que viene con ntp-server, se instalara al mismo tiempo que ntp-server, su funcionamiento básico es muy sencillo, aunque soporte autentificación, en este caso supondremos que el cliente se ejecuta en la maquina a traves de un sistema periódico (cron): + +\jump +\begin{rbox} +# /usr/sbin/ntpdate your.ntp.server +\end{rbox} +\jump + +\section{¿Cómo uso pool.ntp.org?} +El fichero de frecuencias deberia quedar así: + +\jump +\begin{rbox} +server pool.ntp.org +server pool.ntp.org +server pool.ntp.org +\end{rbox} +\jump + +¿Sencillo, no? + \chapter{Servicios de seguridad - Kerberos} \section{Seguridad e identificación} @@ -6,6 +190,15 @@ Esto es solo un pequeño resumen, para mas documentación vease Criptografía y Seguridad en Computadores\cite{cripto1} en español. +Los rfc mas interesantes son: + +\jump +\begin{itemize} +\item The Kerberos Network Authentication Service (V5),\cite{1510} +\item Encryption and Checksum Specifications for Kerberos 5,\cite{3961} +\item Advanced Encryption Standard (AES) Encryption for Kerberos 5,\cite{3961} +\end{itemize} + \subsection{Caso 1: Las contraseñas van en texto plano} Están ahí, todo aquel que vea el tráfico de la red las verá. Solo es factible si se están usando canales que se consideren seguros (SSL,ipsec,etc). @@ -49,17 +242,22 @@ El hombre de enmedio (man in the middle) es un sistema que esta entre el cliente \begin{enumerate} \item El protocolo supone que la red es insegura y que hay sistemas intermedios que pueden escuchar. \item Los usuarios y servicios (principales) deben autentificarse ante un tercero, el servidor kerberos, el cual es aceptado como autentico. -\item Usa cifrado simetrico y asimetrico convirtiendo el conjunto en una red segura. +\item Usa cifrado simetrico convirtiendo el conjunto en una red segura. \end{enumerate} \section{El protocolo Kerberos} \subsection{El servidor Kerberos} -El servidor kerberos no sirve un unico servicio, sino tres: \\ -AS = Servidor de autentificación.\\ -TGS = Servidor de Tickets.\\ -SS = Servidor de servicios.\\ + +El servidor kerberos no sirve un unico servicio, sino tres: + +\jump +\begin{itemize} +\item AS = Servidor de autentificación. +\item TGS = Servidor de Tickets. +\item SS = Servidor de servicios. +\end{itemize} \subsection{Clientes y Servidores} @@ -93,31 +291,403 @@ Mensaje I: La marca horaria del Autentificador mas 1, codificado usando la clave \section{MIT Kerberos} +El Intituto de Tecnologias de Massachusetts (MIT, Massachusetts Institute of Technology) junto con DEC e IBM comenzaron el proyecto Athena para computación distribuida. Parte de este proyecto es el protocolo de autentificación Kerberos. El proyecto comenzo su funcionamiento en 1983. + +La versión 4 del protocolo salio en 1980 para el proyecto Athena, y en 1993 salio la versión 5\cite{1510} que superaba las limitaciones y problemas de su predecesor. + +MIT Kerberos es distribuido libremente bajo licencia tipo BSD. + + \subsection{Instalación} +\label{down_kerberos_mit} + +Antes de nada, nos bajaremos una librería de las que depende MIT kerberos: + +\jump +\begin{itemize} +\item[e2fsprogs] +Se puede descargar de \htmladdnormallink{http://e2fsprogs.sourceforge.net}{http://e2fsprogs.sourceforge.net} para acceso al sistema de archivos y para las librerías libss y libcomerr2. +\end{itemize} +\jump + +Las fuentes de MIT Kerberos se pueden descargar de \htmladdnormallink{MIT Kerberos V}{http://web.mit.edu/kerberos/www}, como haremos con todas las fuentes las descomprimiremos en /usr/src y entraremos en /usr/src/krb5-1.X.X y jecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure_krb5.sh} con las siguientes opciones: + +\jump +\begin{tabular}{|ll|}\hline +--prefix=/usr & $\rightarrow$ Donde vamos a instalarlo\\ +--mandir=/usr/share/man & $\rightarrow$ Donde van los manuales\\ +--localstatedir=/etc & \\ +--enable-shared & $\rightarrow$ Librerias dinamicas, necesarias\\ +& $\rightarrow$ para compilar otros programas\\ +--with-system-et & $\rightarrow$ Usara la libreria estandar de errores\\ +& $\rightarrow$ , libcomerr2, para com\_err.so y compile\_et\\ +--with-system-ss & Necesario para que use libss2, una libreria\\ +& $\rightarrow$ para la entrada de linea de comandos.\\ +--without-tcl & $\rightarrow$ No compilamos el soporte tcl.\\ +--enable-dns-for-kdc & $\rightarrow$ Busquedas dns para el kdc\\ +\hline \end{tabular} +\jump + +Una vez configurado, hacemos: + +\jump +\begin{tabular}{|l|}\hline +\#make \&\& make install\\ +\hline \end{tabular} +\jump \subsection{Configuración y funcionamiento} -\subsection{Repliación - kprop} +\subsubsection{Iniciar un dominio} +Antes de iniciar un dominio debemos estar seguros de que la configuración DNS es correcta \ref{dns_kerberos}. + + +El dominio que vamos a crear es CHAOSDIMENSION.ORG, para ello una vez instalado el programa haremos: + +\subsubsection{Añadir usuarios y servicios} + +\subsection{Replicación - kprop} \subsection{Ventajas y desventajas} + + \section{El servidor Heimdal Kerberos} +Por culpa de las regulaciones de exportación de los Estados Unidos que prohibian la salida del código del MIT Kerberos porque usaba el algoritmo de encriptación DES con logitud de clave de 56 bit. Se comenzo una implementación nueva en KTH, suecia: Heimdal. + +En el 2000 se elimino las restricciones a la exportación y se pudo mejorar la compatibilidad entre ambos servidores. + +Aunque GOsa puede usar cualquiera de las dos versiones de Heimdal, desde este manual se recomienda Heimdal, ya que es thread safe (no tiene problemas con los hilos), tiene mejor rendimiento y es el servidor kerberos elegido por el grupo de desarrollo de Samba para su proxima versión 4. + \subsection{Instalación} +\label{down_kerberos_heimdal} + +Antes de nada, nos bajaremos una librería de las que depende Heimdal kerberos: +\begin{itemize} +\item[readline] +Se puede descargar de \htmladdnormallink{http://cnswww.cns.cwru.edu/~chet/readline/rltop.html}{http://cnswww.cns.cwru.edu/~chet/readline/rltop.html}. Es una librería que controla el acceso a la linea de comandos. +\end{itemize} + + +\noindent Heimdal Kerberos se puede descargar de \htmladdnormallink{Heimdal Kerberos}{http://www.pdc.kth.se/heimdal}, las descomprimiremos en /usr/src y entraremos en /usr/src/heimdal-0.6.X. + +Ejecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure_heimdal.sh} con las siguientes opciones: + +\jump +\begin{tabular}{|ll|}\hline +--prefix=/usr & $\rightarrow$ Donde vamos a instalarlo\\ +--mandir=/usr/share/man & $\rightarrow$ Donde van los manuales\\ +--infodir=/usr/share/info & $\rightarrow$ Donde van los info\\ +--libexecdir=/usr/sbin & $\rightarrow$ Donde van los ejecutables de aministrador\\ +--with-roken=/usr & $\rightarrow$ Donde van las librerias roken\\ +--enable-shared & $\rightarrow$ Librerias dinamicas, necesarias\\ +& $\rightarrow$ para compilar otros programas\\ +--with-krb4 & $\rightarrow$ Compilar con la versión antigua del protocolo\\ +--with-openldap & $\rightarrow$ Soporte openldap \ref{down_ldap}\\ +\hline \end{tabular} +\jump + +Una vez configurado, hacemos: + +\jump +\bbox +\#make \&\& make install\\ +\ebox +\jump \subsection{Configuración y funcionamiento} -\subsection{Repliación - hprop} +La configuración de Heimdal Kerberos se guarda principalmente en estos archivos:\\ +\begin{tabular}{|l|l|}\hline +/etc/krb5.conf & Configuración de los dominios Kerberos y de otros parametros.\\ + & \\ +/var/lib/heimdal-kdc/kdc.conf & Configuración de los parametros del servidor kdc.\\ +& \\ +/var/lib/heimdal-kdc/kadmind.acl & Configuración de acceso de usuarios y servicios\\ + & a la base de datos de Kerberos desde acceso remoto al administrador.\\ +& \\ +/var/lib/heimdal-kdc/m-key & Clave secreta del servidor Kerberos.\\ +& \\ +/etc/krb5.keytab & Aqui se guardaran las claves de maquinas y servicios.\\ +& \\ +\hline \end{tabular} +\jump + +Los ejecutables que normalmente vamos a usar son:\\ +\begin{tabular}{|l|l|}\hline +kadmin & Aplicación para la administración de los dominios y de los keytab.\\ + & Para usarlo en modo local se usara -l.\\ +& \\ +ktutil & Utilidad mas específica para los keytab.\\ +& \\ +kinit & Aplicación para iniciar tickets, sirve para probar el servidor.\\ +& \\ +kpasswd & Utilidad para cambiar las contraseñas de usuarios.\\ +& \\ +\hline \end{tabular} +\jump + +\subsubsection{Iniciar un dominio} +Antes de iniciar un dominio debemos estar seguros de que la configuración DNS es correcta \ref{dns_kerberos}. + +\label{heimdal_conf} + +El dominio que vamos a crear es CHAOSDIMENSION.ORG, para ello una vez instalado y antes de iniciar heimdal editaremos /etc/krb5.conf: + +\jump +\begin{center} +\begin{tabular}{|l|l|}\hline +\verb|[libdefaults]| & $\rightarrow$ Valores por defecto de los dominios\\ +\verb| default_realm = CHAOSDIMENSION.ORG| & $\rightarrow$ Dominio por defecto \\ +& del servidor si no se pide el dominio\\ +\verb| kdc_timesync = true| & $\rightarrow$ Intenta compensar la diferencias de \\ +& tiempos entre clientes y servidores\\ +\verb| clockskew = 60| & $\rightarrow$ Máxima diferencia de segundos cuando se \\ +& comparan tiempos\\ +\verb| dns_lookup_kdc = true| & $\rightarrow$ Usar DNS SRV para busquedas \\ +& servidores KDC.\\ +\verb| dns_lookup_realm = true| & $\rightarrow$ Usar DNS TXT para relacionar \\ +& dominios DNS \\ +& con dominios Kerberos.\\ +\verb| max_retries = 1| & $\rightarrow$ Numero de intentos en la autentificación.\\ +\verb| krb4_get_tickets = false| & $\rightarrow$ No Aceptamos tickets de Kerberos v4.\\ +& \\ +\verb|[realms]| & $\rightarrow$ Definimos los dominios\\ +\verb| CHAOSDIMENSION.ORG = {| & $\rightarrow$ \\ +\verb| kdc = kdc.chaosdimension.org| & $\rightarrow$ Donde está el KDC.\\ +\verb| admin_server = kadmin.chaosdimension.org| & $\rightarrow$ Dondé estará el Kadmind.\\ +\verb| kpasswd_server = kpasswd.chaosdimension.org| & $\rightarrow$ Donde está el kpasswd.\\ +\verb| }| & \\ +& \\ +\verb|[domain_realm]| & $\rightarrow$ Mapeo de Dominios.\\ +\verb| .chaosdimension.org = CHAOSDIMENSION.ORG| & \\ +\verb| chaosdimension.org = CHAOSDIMENSION.ORG| & \\ + & \\ +\verb|[logging]| & $\rightarrow$ Configuración de registro\\ +\verb| kdc = FILE:/var/lib/heimdal-kdc/kdc.log| & \\ +\verb| hpropd = FILE:/var/lib/heimdal-kdc/hpropd.log| & \\ +\verb| ipropd = FILE:/var/lib/heimdal-kdc/ipropd.log| & \\ +\verb| kpasswdd = FILE:/var/lib/heimdal-kdc/kpasswdd.log| & \\ +\verb| kadmind = FILE:/var/lib/heimdal-kdc/kadmind.log| & \\ +\verb| default = FILE:/var/log/heimdal-kdc.log| & \\ +\hline \end{tabular} +\end{center} +\jump + +Esta es la configuración mínima para hacer funcionar Heimdal Kerberos, la configuración para GOsa es la indicada en heimdal sobre ldap \ref{heimdal_ldap}, ya que es la que permite mayor control y una replicación mas comoda. + + +El siguiente paso es crear la clave privada del servidor, para ello ejecutaremos el comando kstah: + +\bbox +\verb|\#kstash|\\ +\verb|Master key: |\\ +\verb|Verifying password - Master key: |\\ +\ebox + + +Iniciamos el dominio CHAOSDIMENSION.ORG: + +\bbox +\verb|# kadmin -l|\\ +\verb| kadmin> init CHAOSDIMENSION.ORG|\\ +\verb| Realm max ticket life [unlimited]:|\\ +\verb| Realm max renewable ticket life [unlimited]:|\\ +\ebox + +\subsubsection{Añadir usuarios y servicios} + +Añadir un usuario es sencillo, hacer en la consola de administración (kadmin -l): + +\bbox +\verb| kadmin> add usuario|\\ +\verb| Max ticket life [unlimited]:|\\ +\verb| Max renewable life [unlimited]:|\\ +\verb| Attributes []:|\\ +\verb| Password:|\\ +\verb| Verifying password - Password:|\\ +\ebox + +Para comprobar si funciona: + +\bbox +\verb|# kinit usuario@CHAOSDIMENSION.ORG|\\ +\verb|# klist|\\ +\ebox + + + +Para añadir un servicio necesitamos añadirlo como si fuera un usuario, en este caso la clave sera un valor al azar, ya que no necesita identificarse ante el servidor y por otro lado hay que guardar los datos en el keytab. + +Por ejemplo para configurar el servicio ldap tenemos: + +\bbox +\verb|# kadmin -l|\\ +\verb| kadmin> add --random-key ldap/my.host.name|\\ +\verb| Max ticket life [unlimited]:|\\ +\verb| Max renewable life [unlimited]:|\\ +\verb| Attributes []:|\\ +\verb| Password:|\\ +\verb| Verifying password - Password:|\\ +\ebox + +Si queremos aceptar todos los servicios de ese servidor tenemos: + +\bbox +\verb|# kadmin -l|\\ +\verb| kadmin> add --random-key host/my.host.name|\\ +\verb| Max ticket life [unlimited]:|\\ +\verb| Max renewable life [unlimited]:|\\ +\verb| Attributes []:|\\ +\verb| Password:|\\ +\verb| Verifying password - Password:|\\ +\ebox + +Guardamos entonces el servicio en el keytab. + +\bbox +\verb|# kadmin -l|\\ +\verb| kadmin> ext host/my.host.name|\\ +\verb| kadmin> exit|\\ +\verb|# ktutil list|\\ +\verb| Version Type Principal|\\ +\verb| 1 des-cbc-md5 host/my.host.name@CHAOSDIMENSION.ORG|\\ +\verb| 1 des-cbc-md4 host/my.host.name@CHAOSDIMENSION.ORG|\\ +\verb| 1 des-cbc-crc host/my.host.name@CHAOSDIMENSION.ORG|\\ +\verb| 1 des3-cbc-sha1 host/my.host.name@CHAOSDIMENSION.ORG|\\ +\ebox + +\subsubsection{Administración Remota} + +Para poder administrar de forma remota (lease que no este ejecutandose en la maquina donde estamos o que no seamos root de la maquina donde se está administrando). usaremos kadmin sin la opción -l, en el servidor kerberos debemos tener configurado el usuario de administración remota con los permisos que nosotros querramos. Esto se debe dejar claro en kadmind.acl, por ejemplo si queremos que el usuario admin desde la maquina admin.remote.host pueda tener todos los permisos en el dominio CHAOSDIMENSION.ORG: + +\bbox +\verb|admin@CHAOSDIMENSION.ORG all *@CHAOSDIMENSION.ORG|\\ +\verb|admin@CHAOSDIMENSION.ORG all */*@CHAOSDIMENSION.ORG|\\ +\ebox + + + +\subsection{Replicación - hprop} + +Hprop es el servicio de replicación que trae Heimdal Kerberos de serie. No es incremental, se basa en un dump de la base de datos y en la copia de este a los otros servidores. + +El servidor hpropd se ejecuta en los esclavos, y el cliente hprop se ejecuta a intervalos regulares en el servidor, cuando hprop es ejecutado intenta una conexión con el puerto 754/TCP del servidor, coge la base de datos del dominio y la envia en un formato que permite al servidor convertirla en la nueva base de datos del cliente. + +El servidor maestro debe tener configurado el usuario kadmin/hprop, ya que se crea al inicializar el dominio, si no es asi, haremos: + +\bbox +\verb|# kadmin -l|\\ +\verb| kadmin> add --random-key kadmin/hprop@CHAOSDIMENSION.ORG|\\ +\verb| Max ticket life [unlimited]:|\\ +\verb| Max renewable life [unlimited]:|\\ +\verb| Attributes []:|\\ +\ebox + +Necesitaremos un usuario administrador, en nuestro caso lo llamaremos admin y le daremos permisos para que tenga administración remota: -\subsection{Repliación incremental - iprop} +\bbox +\verb| kadmin> add admin@CHAOSDIMENSION.ORG|\\ +\verb| Max ticket life [unlimited]:|\\ +\verb| Max renewable life [unlimited]:|\\ +\verb| Attributes []:|\\ +\verb| Password:|\\ +\verb| Verifying password - Password:|\\ +\ebox + +Editamos el archivo kadmind.acl y añadimos el usuario administrador: + +\bbox +\verb| admin@CHAOSDIMENSION.ORG all */*@CHAOSDIMENSION.ORG|\\ +\ebox + +Tanto en el maestro como en los servidores esclavos, con la configuración dns apuntando como servidor de dominio al servidor maestro, haremos: + +\bbox +\verb|# ktutil get -p admin@CHAOSDIMENSION.ORG hprop/esclavo.hostname@CHAOSDIMENSION|\\ +\verb|admin@CHAOSDIMENSION's Password:|\\ +\ebox + +Para hacer una replica del maestro, simplemente ejecutaremos hpropd en el esclavo y en el servidor ejecutaremos: + +\bbox +\verb|# hprop --source=heimdal --v5-realm=CHAOSDIMENSION.ORG --encrypt \|\\ +\verb| --master-key=/var/lib/heimdal-kdc/m-key esclavo.hostname|\\ +\ebox + +Para comprobar que la replicación esta bien hecha haremos en el esclavo: + +\bbox +\verb|# kadmin -l list *|\\ +\ebox + + +La replicación debe ser controlada desde el maestro, normalmente se ejecutara cada cierto tiempo dependiendo del tamaño de la base de datos. En el esclavo lo normal es que hpropd se ejecute a traves de inetd, aunque puede ejecutarse como demonio. + +\subsection{Replicación incremental - iprop} + +Iprop es un servicio de replica incremental de la base de datos de Heimdal Kerberos, su idea es sencilla, es un log se van grabando las transacciones de la base de datos, cuando un cliente iprop se conecta se le envian las transacciones que este no haya ejecutado anteriormente. + +Necesitaremos un usuario administrador, en nuestro caso lo llamaremos admin y le daremos permisos para que tenga administración remota: + +\bbox +\verb| kadmin> add admin@CHAOSDIMENSION.ORG|\\ +\verb| Max ticket life [unlimited]:|\\ +\verb| Max renewable life [unlimited]:|\\ +\verb| Attributes []:|\\ +\verb| Password:|\\ +\verb| Verifying password - Password:|\\ +\ebox + +Editamos el archivo kadmind.acl y añadimos el usuario administrador: + +\bbox +\verb| admin@CHAOSDIMENSION.ORG all */*@CHAOSDIMENSION.ORG|\\ +\ebox + +Tanto en el maestro como en los servidores esclavos, con la configuración dns apuntando como servidor de dominio al servidor maestro, haremos: + +\bbox +\verb|# ktutil get -p admin@CHAOSDIMENSION.ORG iprop/esclavo.hostname@CHAOSDIMENSION|\\ +\verb|admin@CHAOSDIMENSION's Password:|\\ +\ebox + +Para hacer una replica del maestro, simplemente ejecutaremos \verb| #iprop-master &| en el servidor y en los servidor escalvos ejecutaremos: + +\bbox +\verb|# iprop-slave maestro.hostname &|\\ +\ebox + +Para comprobar que la replicación esta bien hecha haremos en el esclavo: + +\bbox +\verb|# kadmin -l list *|\\ +\ebox + +Esta replicación es incremental lo que significa que cada cambio en el servidor maestro es enviado automaticamente a los esclavos. \subsection{Heimdal sobre ldap} +Vease en \ref{heimdal_ldap} + \subsection{Ventajas y desventajas} -\section{La configuración de SASL} +Heimdal es un desarrollo con mucho futuro, mas aun cuando ha sido elegido como la implementación que llevara el futuro samba4, es thread safe lo que significa menor probabilidad de fallos y mejor rendimiento para aplicaciones que tiren directamente de el, como openLdap o samba4. -\subsection{Modulos para kerberos} +La replicacion iprop da numerosos problemas de estabilidad, asi que no es muy recomendada para replicación. + +No tiene soporte de politicas de contraseñas, aunque se puede usar cracklib para la seguridad de las contraseñas, esto tiene que añadirse mediante un parche o a traves de aplicaciones externas. \section{La configuración de clientes MS Windows} + + +\section{SASL} +\label{down_sasl} + +\subsection{La configuración de SASL} + +\subsection{Modulos para kerberos} + + diff --git a/doc/guide/admin/es/manual_gosa_es_ldap.tex b/doc/guide/admin/es/manual_gosa_es_ldap.tex index d3e10cd60..4b88a9e99 100644 --- a/doc/guide/admin/es/manual_gosa_es_ldap.tex +++ b/doc/guide/admin/es/manual_gosa_es_ldap.tex @@ -85,11 +85,9 @@ Las mayor \label{down_ldap} Aunque realmente no son necesarios, hay varios paquetes que deberían ser instalados antes de openLDAP ya que seguramente los necesitaremos. -El primero de ellos es \textbf{openSSL}, también existe en todas las distribuciones y tiene documentación en su pagina web\cite{ssldoc}. +El primero de ellos es \textbf{openSSL} \ref{down_ssl}. -Las fuentes se pueden descargar de \htmladdnormallink{http://www.openssl.org/source/}{http://www.openssl.org/source/} - -El segundo es Servicios \textbf{Kerberos v5}, del cual existen dos implementaciones, una es \htmladdnormallink{MIT Kerberos V}{http://web.mit.edu/kerberos/www} y la otra es \htmladdnormallink{Heimdal Kerberos}{http://www.pdc.kth.se/heimdal}, ambas tienen buena documentación y están ampliamente soportadas por todas las distribuciones. +El segundo es Servicios es \textbf{Kerberos v5} \ref{down_kerberos_mit} \ref{down_kerberos_heimdal}. También será interesante tener instaladas las librerías \textbf{Cyrus SASL} (Capa simple de seguridad y autentificación de Cyrus / Cyrus's Simple Authentication and Security Layer).\\Que se pueden conseguir en \htmladdnormallink{http://asg.web.cmu.edu/sasl/}{http://asg.web.cmu.edu/sasl/sasl-library.html}, Cyrus SASL hace uso de openSSL y Kerberos/GSSAPI para autentificación. @@ -1057,3 +1055,81 @@ objectClass: top\\ EOF\\ \hline \end{longtable} \end{center} + +\section{Modificaciones para Kerberos} +\subsection{Configurando Sasl y Openldap} + + +\section{Configurar Heimdal Kerberos sobre OpenLdap} +\label{heimdal_ldap} + +¿Porque debemos meter la base de datos de heimdal en ldap? + +La explicación es sencilla, replicación, ldap tiene sistemas de replicación y de acceso a datos mucho mas modernos y utiles que los de hprop o iprop. + +Por otro lado al estar los datos en ldap, GOsa no tiene mas que escribirlos o modificarlos directamente, permitiendo crear dominios Kerberos desde ldap o añadir/quitar usuarios/servicios. + +\subsection{Configurar Heimdal} + +La instalación \ref{down_kerberos_heimdal} y la configuración \ref{heimdal_conf} en la misma, pero vamos a añadir al archivo de configuración un nuevo bloque: + +\vspace{0.5cm} +\begin{center} +\begin{tabular}{|l|l|}\hline +\verb| [kdc]| & $\rightarrow$ Configuración de base de datos del KDC.\\ +\verb| database = {| & $\rightarrow$ Definiciones de la base de datos.\\ +\verb| realm=CHAOSDIMENSION.ORG| & $\rightarrow$ Que dominio tendremos bajo ese DN\\ +\verb| dbname = ldap:ou=people,dc=chaosdimension,dc=org| & $\rightarrow$ El DN bajo el cual se va a guardar la\\ +& base de datos, debemos elegir la que convenga segun nuestra configuración GOsa.\\ +\verb| acl_file=/var/lib/heimdal-kdc/kadmind.acl| & $\rightarrow$ Fichero con los permisos de acceso a esa base de datos.\\ +\verb| mkey_file = /var/lib/heimdal-kdc/m-key| & $\rightarrow$ Clave maestra de esa base de datos.\\ +\verb| }| & $\rightarrow$ \\ +\hline \end{tabular} +\end{center} +\vspace{0.5cm} + +\subsection{Configurar OpenLdap} + +La configuración de openLDAP tiene cuatro partes:\\ +La primera es que heimdal solo accede al servidor openLDAP de forma local, via ldapi://, esto tendra que ser activado en el inicio de openLDAP.\\ +La segunda es que tenemos que añadir el esquema para kerberos, lo podemos descargar de \htmladdnormallink{http://www.stanford.edu/services/directory/openldap/configuration/krb5-kdc.schema}{http://www.stanford.edu/services/directory/openldap/configuration/krb5-kdc.schema} y debemos colocarlo en /etc/ldap/schemas.\\ +La tercera parte son los cambios necesarios en slapd.conf:\\ +\vspace{0.5cm} +\begin{center} +\begin{tabular}{|l|l|}\hline +... & $\rightarrow$ En la carga de esquemas\\ +\verb|include /etc/ldap/schema/krb5-kdc.schema| & \\ +... & $\rightarrow$ Configuración SSL/TLS\\ +\verb|TLSCertificateFile /etc/ldap/ssl/ldap.crt| & \\ +\verb|TLSCertificateKeyFile /etc/ldap/ssl/ldap.key| & \\ +\verb|TLSCACertificateFile /etc/ldap/ssl/gosa.ca| & \\ +... & $\rightarrow$ Configuración Sasl\\ +\verb|sasl-host ldap.chaosdimension.og| & \\ +\verb|sasl-keytab /etc/krb5.keytab.ldap| & \\ +\verb|sasl-realm CHAOSDIMENSION.ORG| & \\ +\verb|sasl-secprops noanonymous| & \\ + & \\ +\verb|sasl-regexp "uidNumber=0\\\+gidNumber=.*,cn=peercred,cn=external,cn=auth"| & \\ +\verb| "krb5PrincipalName=kadmin/admin@CHAOSDIMENSION.ORG,ou=people,dc=chaosdimension,dc=org"| & \\ +\verb|sasl-regexp uid=(.+),cn=gssapi,cn=auth uid=$1,ou=people,dc=chaosdimension,dc=org| & \\ +... & $\rightarrow$ Configuracion Kerberos:\\ +\verb|srvtab /etc/krb5.keytab.ldap| & \\ +... & $\rightarrow$ El las listas de acceso de la base de datos:\\ +\verb|access to dn=""| & \\ +\verb| by * read| & \\ + & \\ +\verb|access to dn.base="cn=Subschema"| & \\ +\verb| by * read| & \\ + & \\ +\verb|access to attr=supportedSASLMechanisms,subschemaSubentry| & \\ +\verb| by anonymous read| & \\ +\verb| by * read| & \\ + & \\ +\verb|access to dn.regex="(.*,)?ou=chlgrupo,dc=chlgrupo,dc=com"| & \\ +\verb| by dn="krb5PrincipalName=kadmin/admin@CHAOSDIMENSION.ORG,ou=people,dc=chaosdimension,dc=org" =wrscx| & \\ +\hline \end{tabular} +\end{center} +\vspace{0.5cm} + + + diff --git a/doc/guide/admin/es/manual_gosa_es_mail.tex b/doc/guide/admin/es/manual_gosa_es_mail.tex index b1aa4d7d1..961bf30b9 100644 --- a/doc/guide/admin/es/manual_gosa_es_mail.tex +++ b/doc/guide/admin/es/manual_gosa_es_mail.tex @@ -1,3 +1,329 @@ \chapter{Servidores de Correo Electrónico} + +Un E-mail (Correo Electrónico es un sistema de composición, envio y recepción de mensajes sobre sistemas de comunicación electrónica. +El Correo Electrónico comenzo en 1965 como una forma de enviar mensajes entre maquinas de un mismo sistema, pero no fue hasta la aprición de ARPANET cuando se hizo realmente popular. + +En 1980 el IETF desarrollo el procolo SMTP (Simple Mail Transfer Protocol) que se ha convertido en el protocolo dominante para el envio de correo. + +\section{Funcionamiento del Correo Electrónico} + +Tenemos dos usuarios A y B, con sus dos maquinas HA y HB, dos servidores de correo a.org y b.org con cuentas de correo a@a.org y b@b.org. + + +\begin{enumerate} +\item A compone un nuevo mensaje en su MUA (Mail User Agent / Agente de Correo Electrónico) e indica en el mensaje en un campo denominado TO: la dirección de correo electrónico de B que sera b@b.org.\\ +Al enviar el mensaje, el MUA lo formateara y lo enviara al servidor MTA (Mail Transfer Agent / Agente de Envio de Correo Electrónico) de A a traves de SMTP (smtp.a.org), este servidor estará configurado en el MUA de A. +\item La dirección de B es b@b.org, que está formada por dos partes, una antes de la "@" que es el nombre de usuario y otra despues que es el servidor de correo del usuario, por lo tanto el servidor SMTP de A(smtp.a.org) buscara a traves de los DNS el campo MX (Mail Exchange / Intercambiador de Correo Electrónico). +\item El servidor DNS le devolvera la dirección MX de b.org (en nuestro ejemplo sera mx.b.org). +\item El servidor smtp.a.org enviara el mensaje mx.b.org usando SMTP y mx.b.org lo guardara en la carpeta del usuario. +\item El usuario B quiere ver su correo y tendra dos formas de verlo: +\begin{enumerate} +\item Descargarlo, el usuario B utiliza un MUA que se descarga el correo en su maquina y utilizara el protocolo POP3 para ello. +\item Acceder sin descargarlo, el usuario B accede a su correo y lo lee, pero no los descarga en su maquina, usara entonces el protocolo IMAP4 para ello. +\end{enumerate} +\end{enumerate} + +\section{SMTP Servers} + +SMTP (Simple Mail Transfer Protocol / Protocolo simple de transferencia de correo electrónico) es el protocolo estandar de envío de correo electrónico a través de Internet.\\ +SMTP usa el para las comunicaciones el puerto TCP 25.\\ +Para encontar el servidor SMTP de un dominio se hace una buscada dns del campo MX de ese dominio.\\ +RFC relacionados con SMTP: RFC 2821 \cite{2821}, RFC 2822 \cite{2822}, RFC 1869 \cite{1869}, RFC 1891 \cite{1891}, RFC 2554 \cite{2554} + + +\subsection{El problema del SPAM} +El SPAM (Recepción de mensajes no solicitados) es el gran problema del correo electrónico, mas del 50 por ciento del correo es correo basura. Para ello se están desarrollando técnicas como smtp-auth y el uso de paquetes especializados en la detección de estes \ref{spam}. + +\subsection{SMTP-AUTH} + +Es una extensión al protocolo SMTP para que estos soporten autentificación, de esta manera el usuario que quiere enviar correo debe tener un usuario y contraseña en el servidor, asi queda registrado y se comprueba su identidad. + +La idea original es que los servidores SMTP no estén en open-relay (Abiertos al publico) de tal manera que solo se puedan enviar correo desde redes controladas y que cada usuario sea identificado, así los servidores con smtp-auth no pueden ser utilizados por sistemas externos para el envio de SPAM. + +\subsection{Comandos SMTP Básicos} + +\begin{itemize} +\item[HELO] Identifica el servidor SMTP que envia al que recibe. +\item[MAIL] Comienza una transferencia de Correo Electrónico a uno o mas recipientes.\\ Indica quien envía el mensaje. +\item[RCPT] Identifica al usuario que va ha recibir el Correo Electrónico. +\item[DATA] La siguientes lineas serán el contenido del correo electrónico. +\item[SEND] Envia el correo electrónico a una o mas estacones. +\item[RSET] Termina una transferencia. +\item[VRFY] Pregunta al SMTP receptor si el usuario ha sido identificado. +\item[EXPN] Pregunta al receptor si la lista de correo ha sido identificada. +\item[QUIT] Cierra la conexión. +\end{itemize} + +\subsection{Codigos de Error SMTP mas usuales} + +Codigos de Error: +\begin{itemize} +\item[421] Service not available. Esto ocurre normalmente cuando el servidor remoto está caido. +\item[450] Mailbox unavailable. Suele ocurrir cuando no se tiene acceso a la carpeta de correo del recipiente o esta esta bloqueada por otra aplicación. +\item[451] Requested action aborted. Ocurre cuando existe un problema en la ejecución del SMTP. +\item[452] Requested action not taken. Tambien ocurre cuando hay problemas con la carpeta de correo del recipiento o está llena. +\item[500] Syntax error, command unrecognized. El servidor SMTP no soporta este comando. +\item[501] Syntax error in parameters. Soporta el comando, pero los argumentos no son correctos. +\item[502] Command not implemented. Un caso parecido a 500. +\item[503] Bad sequence of commands. La secuencias de comando no es correcta. +\item[550] mailbox unavailable. Como 450. +\item[554] Transaction failed. La transferencia no ha sido valida. +\end{itemize} + +Codigo de Estado: +\begin{itemize} +\item[211] System status. Estado del sistema. +\item[214] Help message. Ayuda del sistema. +\item[220] Service ready. El servidor esta preparado para aceptar correo. +\item[221] Service closing transmission channel. El servidor cierra la conexión. +\item[250] Requested mail action okay. El comando pedido al servidor, se ha ejecutado correctamente. +\item[354] Start mail input; end with . . Indica que se puede enviar el contenido del mensaje, este debe terminar en un linea que contenga solo un ".". +\end{itemize} + + \section{Postfix} -\section{Cyrus-IMAP} \ No newline at end of file + +Postfix en un servidor SMTP opensource desarrollado originalmente por Wietse Venema en los laboratorios de IBM.\\ +Es el recomendado para su uso con GOsa, entre otras cosas por sus caracteristicas tecnicas en el acceso ldap. + +\subsection{Instalación} + +Postfix se puede descargar de \hlink{http://www.postfix.org/download.html}, existe abundante documentación tanto en su página web en \hlink{http://www.postfix.org/documentation.html}, como en el wiki: \hlink{http://postfixwiki.org/index.php?title=Main\_Page}. + +Postfix soporta una gran cantidad de extensiones, con las cuales gestionar los usuarios y los dominios. Existe incluso un howto que le permite usar qmail.schema para convertir sistemas basados en qmail-ldap a postfix y viceversa en \hlink{http://gentoo-wiki.com/HOWTO\_Postfix-LDAP\_virtual\_users\_with\_qmail\_schema}. + +En este manual nos concentraremos en su extensión ldap, para ello necesitaremos tener instalado el servidor ldap \ref{down_ldap}, openSSL \ref{down_ssl} y SaSL \ref{down_sasl}. Descargamos y descomprimimos postfix-2.2.X.tgz en /usr/src, y ejecutamos: + +\bbox +\verb|# make makefiles CCARGS="-DMAX_DYNAMIC_MAPS -DHAS_PCRE -DHAS_LDAP -DHAS_SSL \ |\\ +\verb| -I/usr/include/openssl -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_TLS" |\\ +\verb|# make install|\\ +\ebox + +En la instalación de ejemplo no se ha ejecutado make install y se han seguido las directrices del paquete debian, estas son: + +\bbox +\verb|# install lib/*.1 /usr/lib|\\ +\verb|# for i in /usr/lib/*.1; do ln -sf ${i##*/} ${i%.*.*}; done|\\ +\verb|# install lib/dict_ldap.so /usr/lib/postfix|\\ +\verb|# install lib/dict_pcre.so /usr/lib/postfix|\\ +\verb|# install lib/dict_tcp.so /usr/lib/postfix|\\ +\verb|# install libexec/[a-z]* /usr/lib/postfix|\\ +\verb|# install bin/[a-z]* /usr/sbin|\\ +\verb|# install auxiliary/qshape/qshape.pl /usr/sbin/qshape|\\ +\verb|# install -m 0444 HISTORY /usr/share/doc/postfix/changelog|\\ +\verb|# ln -s ../sbin/rmail /usr/bin/rmail|\\ +\verb|# ln -s ../sbin/sendmail /usr/bin/newaliases|\\ +\verb|# ln -s ../sbin/sendmail /usr/bin/mailq|\\ +\verb|# ln -s ../sbin/sendmail /usr/lib/sendmail|\\ +\verb|# install -m 0755 conf/postfix-script conf/post-install /etc/postfix|\\ +\verb|# install -m 0644 conf/postfix-files /etc/postfix|\\ +\verb|# install -m 0644 conf/main.cf /usr/share/postfix/main.cf.dist|\\ +\verb|# install -m 0644 conf/master.cf /usr/share/postfix/master.cf.dist|\\ +\verb|# install man/man1/*.1 /usr/share/man/man1|\\ +\verb|# install man/man5/*.5 /usr/share/man/man5|\\ +\verb|# for f in man/man8/*.8; do \|\\ +\verb| install ${f} /usr/share/${f}postfix; \|\\ +\verb|done|\\ +\verb|# install rmail/rmail.8 /usr/share/man/man8|\\ +\verb|# gzip -9 /usr/share/man/man8/*.8postfix|\\ +\verb|# ln -sf bounce.8postfix.gz /usr/share/man/man8/trace.8postfix.gz|\\ +\verb|# ln -sf bounce.8postfix.gz /usr/share/man/man8/defer.8postfix.gz|\\ +\ebox + +\subsection{Configuración} + +Antes de poder utilizar postfix debemos configurarlo, su configuración está guardada en /etc/postfix, y los puntos importantes de esta son: + +\subsubsection{main.cf} + +Es la configuración principal de postfix y se indican numerosos parametros de funcionamiento (Gracias a Cajus Pollmeier por la configuración): + +\cbbox +\verb|# Configuración principal de POSTFIX|\\ +\\ +\verb|# Configuración específica para debian|\\ +\verb|command_directory = /usr/sbin|\\ +\verb|daemon_directory = /usr/libexec/postfix|\\ +\verb|program_directory = /usr/libexec/postfix|\\ +\verb|# Que muestra el servidor en un HELO|\\ +\verb|smtpd_banner = $myhostname ESMTP $mail_name|\\ +\verb|setgid_group = postdrop|\\ +\verb|biff = no|\\ +\verb|append_dot_mydomain = no|\\ +\\ +\verb|# Seguridad|\\ +\verb|disable_vrfy_command = yes|\\ +\verb|smtpd_sasl_auth_enable = yes|\\ +\verb|smtpd_sasl_local_domain = $myhostname|\\ +\verb|smtpd_tls_auth_only = no|\\ +\verb|#smtpd_sasl_security_options = noplaintext|\\ +\verb|smtpd_use_tls = yes|\\ +\verb|smtpd_tls_cert_file = /etc/postfix/cert.pem|\\ +\verb|smtpd_tls_key_file = /etc/postfix/key.pem|\\ +\verb|smtpd_tls_CAfile = /etc/postfix/CAcert.pem|\\ +\\ +\verb|# Fix Microsoft mail clients|\\ +\verb|broken_sasl_auth_clients = yes|\\ +\\ +\verb|# Cuotas por defecto|\\ +\verb|mail_size_limit = 10240000|\\ +\verb|message_size_limit = 10240000|\\ +\verb|header_size_limit = 10240|\\ +\verb|bounce_size_limit = 500000|\\ +\\ +\verb|# Colas por defecto|\\ +\verb|virtualsource_server_host = 10.3.66.11|\\ +\verb|virtualsource_search_base = dc=gonicus,dc=de|\\ +\verb#virtualsource_query_filter = (&(|(mail=%s)(gosaMailAlternateAddress=%s))(objectClass=gosaAccount))#\\ +\verb|virtualsource_result_attribute = uid,gosaMailForwardingAddress|\\ +\\ +\verb|# Carpetas compartidas|\\ +\verb|sharedsource_server_host = 10.3.66.11|\\ +\verb|sharedsource_search_base = dc=gonicus,dc=de|\\ +\verb#sharedsource_query_filter = (&(|(mail=%s)(gosaMailAlternateAddress=%s))(objectClass=posixGroup))#\\ +\verb|sharedsource_result_attribute = gosaSharedFolderTarget,gosaMailForwardingAddress|\\ +\\ +\verb|# Access Lists for Non Local Delivery|\\ +\verb|acllocal_server_host = 10.3.66.11|\\ +\verb|acllocal_search_base = dc=gonicus,dc=de|\\ +\verb#acllocal_query_filter = (&(|(mail=%s)(gosaMailAlternateAddress=%s))(gosaMailDeliveryMode=*L*))#\\ +\verb|acllocal_result_attribute = mail|\\ +\verb|acllocal_result_filter = insiders_only|\\ +\\ +\verb|# Origen|\\ +\verb|myorigin = $mydomain|\\ +\\ +\verb|# destinos|\\ +\verb|mydestination = $myhostname localhost.localdomain localhost.$mydomain /etc/postfix/locals|\\ +\\ +\verb|# redes locales|\\ +\verb|mynetworks = 127.0.0.0/8 10.0.0.0/8|\\ +\\ +\verb|# Nombre de host|\\ +\verb|myhostname = mail.gonicus.local|\\ +\\ +\verb|# Dominio|\\ +\verb|mydomain = gonicus.de|\\ +\\ +\verb|# Interfaces que escuchan|\\ +\verb|inet_interfaces = all|\\ +\\ +\verb|# Protección contra SPAM, reglas regex basicas|\\ +\verb|#header_checks = regexp:/etc/postfix/header_checks|\\ +\verb|# Bsp.: /etc/postfix/header_checks|\\ +\verb|# /^to: *friend@public\.com$/ REJECT|\\ +\verb|# /^to: *friend@public\.com$/ IGNORE|\\ +\verb|# /^to: *friend@public\.com$/ WARN|\\ +\\ +\verb|# Restricciones SMTP|\\ +\verb|#smtpd_client_restrictions = hash:/etc/postfix/access, reject_maps_rbl|\\ +\verb|#smtpd_client_restrictions = permit_mynetworks, reject_unknown_client, reject_maps_rbl|\\ +\verb|smtpd_client_restrictions = permit_mynetworks|\\ +\\ +\verb|# Para el envio SMTP|\\ +\verb|#smtpd_sender_restrictions = hash:/etc/postfix/access, check_sender_access hash:|\\ +\verb|#smtpd_sender_restrictions = reject_unknown_sender_domain, reject_non_fqdn_sender|\\ +\verb|smtpd_sender_restrictions = regexp:/etc/postfix/protected, check_sender_access hash:/etc/postfix/badmailfrom|\\ +\\ +\verb|# Para los recipientes|\\ +\verb|#smtpd_recipient_restrictions = permit_sasl_authenticated, reject_non_fqdn_recipient, check_client_access hash:/var/lib/pop|\\ +\verb|smtpd_recipient_restrictions = regexp:/etc/postfix/protected,|\\ +\verb| permit_mynetworks,|\\ +\verb| permit_sasl_authenticated,|\\ +\verb| check_relay_domains|\\ +\\ +\verb|# Restricciones la comando HELO|\\ +\verb|smtpd_helo_required = no|\\ +\verb|#smtpd_helo_restrictions = permit_mynetworks, reject_unknown_hostname, reject_invalid_hostname|\\ +\verb|smtpd_helo_restrictions = permit_mynetworks|\\ +\\ +\verb|# |\\ +\verb|smtpd_delay_reject = yes|\\ +\verb|strict_rfc821_envelopes = yes|\\ +\\ +\verb|# Mapas antispam|\\ +\verb|#maps_rbl_domains = hash:/etc/postfix/rbl|\\ +\verb|maps_rbl_domains = blackholes.mail-abuse.org|\\ +\\ +\verb|# Sobre los usuarios y autentificación|\\ +\verb|smtpd_sasl_auth_enable = yes|\\ +\\ +\verb|smtpd_restriction_classes = insiders_only|\\ +\verb|insiders_only = check_sender_access regexp:/etc/postfix/insiders, reject|\\ +\\ +\verb|# relay|\\ +\verb|relay_domains = $mydestination|\\ +\\ +\verb|# transportes|\\ +\verb|fallback_transport = smtp|\\ +\verb|mailbox_transport = lmtp:unix:/var/lib/imap/socket/lmtp|\\ +\\ +\verb|# Control de rendimiento|\\ +\\ +\verb|#local_destination_concurrency_limit = 2|\\ +\verb|#default_destination_concurrency_limit = 10|\\ +\verb|#uucp_destination_recipient_limit = 100|\\ +\verb|#smtp_destination_recipient_limit = 100|\\ +\\ +\verb|# Manipulación de direcciones|\\ +\verb|#rewrite gonicus.de!horst to horst@gonicus.de|\\ +\verb|#rewrite horst%gonicus.de to horst@gonicus.de|\\ +\verb|#rewrite horst to horst@gonicus.de|\\ +\\ +\verb|# Mapas canonicos|\\ +\verb|#canonical_maps = hash:/etc/postfix/canonical|\\ +\verb|#sender_canonical_maps = hash:/etc/postfix/sender_canonical|\\ +\verb|#recipient_canonical_maps = hash:/etc/postfix/recipient_canonical|\\ +\\ +\verb|# Mascarada|\\ +\verb|#masquerade_domains = $mydomain|\\ +\verb|#masquerade_exceptions = root|\\ +\verb|#masquerade_clases = envelope_sender, envelope_recipient, header-sender, header_recipient|\\ +\\ +\verb|# Direcciones Virtuales|\\ +\verb|virtual_maps = ldap:virtualsource, ldap:sharedsource|\\ +\\ +\verb|# Mapas de Transportes|\\ +\verb|#default_transport = smtp-relay|\\ +\verb|#transport_maps = hash:/etc/postfix/transports|\\ +\\ +\verb|# Aliases|\\ +\verb|alias_maps = hash:/etc/aliases|\\ +\\ +\verb|# Antivirus a traves de amavis|\\ +\verb|#content_filter = vscan:|\\ +\verb|#soft_bounce = yes|\\ +\\ +\ebox + +\subsubsection{master.cf} +\subsubsection{sasl} +\subsubsection{ldap} + +\section{Qmail-ldap} + +\subsection{Instalación} +\subsection{Configuración} + +\section{Sendmail} + +\subsection{Instalación} +\subsection{Configuración} + +\section{Exim} + +\subsection{Instalación} +\subsection{Configuración} + +\subsection{IMAP / POP Servers} + +\section{Cyrus} + +\section{Courier} + +\section{SPAM} +\label{spam} + +\section{VIRUS} +\label{virus} diff --git a/doc/guide/admin/es/manual_gosa_es_otros.tex b/doc/guide/admin/es/manual_gosa_es_otros.tex new file mode 100644 index 000000000..6bf1a5110 --- /dev/null +++ b/doc/guide/admin/es/manual_gosa_es_otros.tex @@ -0,0 +1,27 @@ +\chapter{Otros Servidores Ldap} +\section{Fedora Directory Server} +\section{Ultrapossum} +Multifunctional LDAP Solution + +\chapter{Otras Aplicaciones Ldap} +\section{UIF} +Advanced iptables-firewall script +\section{BackupNinja} +lightweight, extensible meta-backup system +\section{OpenSC / libpam-opensc} +Pluggable Authentication Module for using PKCS\#15 Smart Cards +\section{libapache2-mod-ldap-userdir} +Apache2 module that provides UserDir lookups via LDAP +\section{autofs-ldap} +LDAP map support for autofs + +\chapter{Otras Aplicaciones de gestión Ldap} +\section{LAM} +Ldap Account Manager +\section{GQ} +GTK-based LDAP client +\section{VLAD} +LDAP visualisation tool +\section{phpldapadmin} +web based interface for administering LDAP servers + diff --git a/doc/guide/admin/es/referencias_gosa.bib b/doc/guide/admin/es/referencias_gosa.bib index 80b3f3e75..e5fe1bcac 100644 --- a/doc/guide/admin/es/referencias_gosa.bib +++ b/doc/guide/admin/es/referencias_gosa.bib @@ -108,6 +108,31 @@ year = {}, address = {http://www.ietf.org/rfc/rfc2616.txt}, } +@TechReport{1510, +author = {Network Working Group}, +title = {Request for Comments: 1510. The Kerberos Network Authentication Service (V5)}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc1510.txt}, +} + +@TechReport{3961, +author = {Network Working Group}, +title = {Request for Comments: 3961. Encryption and Checksum Specifications for Kerberos 5}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc3961.txt}, +} + +@TechReport{3962, +author = {Network Working Group}, +title = {Request for Comments: 3962. Advanced Encryption Standard (AES) Encryption for Kerberos 5}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc3962.txt}, +} + + @TechReport{cripto1, author = {Manuel José Lucena López}, title = {Criptografía y Seguridad en Computadores}, @@ -115,3 +140,43 @@ institution = {}, year = {}, address = {http://www.telefonica.net/web2/lcripto/lcripto.html}, } + +@TechReport{2821, +author = {Network Working Group}, +title = {Request for Comments: 2821. Simple Mail Transfer Protocol}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc2821.txt}, +} + +@TechReport{2822, +author = {Network Working Group}, +title = {Request for Comments: 2822. Internet Message Format}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc2822.txt}, +} + +@TechReport{1869, +author = {Network Working Group}, +title = {Request for Comments: 1869. SMTP Service Extensions}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc1869.txt}, +} + +@TechReport{1891, +author = {Network Working Group}, +title = {Request for Comments: 1891. SMTP Service Extension for Delivery Status Notifications}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc1891.txt}, +} + +@TechReport{2554, +author = {Network Working Group}, +title = {Request for Comments: 2554. SMTP Service Extension for Authentication}, +institution = {}, +year = {}, +address = {http://www.ietf.org/rfc/rfc2554.txt}, +} -- 2.30.2