From baf0463633c0481ae70557ed8131243756affa0c Mon Sep 17 00:00:00 2001 From: opensides Date: Sun, 10 Feb 2008 18:20:49 +0000 Subject: [PATCH] - Final version of guide.xml - Removed obsoleted spanish docs git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.5@8796 594d385d-05f5-0310-b6e9-bd551577e9d8 --- doc/guide.xml | 21 +- doc/guide/admin/en/manual_gosa_en.tex | 72 -- doc/guide/admin/en/manual_gosa_en_apache.tex | 837 ------------ doc/guide/admin/en/manual_gosa_en_ldap.tex | 1059 --------------- doc/guide/admin/en/referencias_gosa.bib | 109 -- doc/guide/admin/es/manual_gosa_es.tex | 120 -- doc/guide/admin/es/manual_gosa_es_apache.tex | 822 ------------ .../admin/es/manual_gosa_es_certificates.tex | 102 -- doc/guide/admin/es/manual_gosa_es_dns.tex | 304 ----- .../admin/es/manual_gosa_es_fileserver.tex | 11 - doc/guide/admin/es/manual_gosa_es_ftp.tex | 1 - doc/guide/admin/es/manual_gosa_es_gw.tex | 1 - doc/guide/admin/es/manual_gosa_es_im.tex | 1 - .../admin/es/manual_gosa_es_kerberos.tex | 693 ---------- doc/guide/admin/es/manual_gosa_es_ldap.tex | 1135 ----------------- doc/guide/admin/es/manual_gosa_es_mail.tex | 329 ----- doc/guide/admin/es/manual_gosa_es_otros.tex | 27 - .../admin/es/manual_gosa_es_printing.tex | 1 - doc/guide/admin/es/manual_gosa_es_proxy.tex | 1 - doc/guide/admin/es/manual_gosa_es_ssh.tex | 1 - doc/guide/admin/es/manual_gosa_es_vpn.tex | 1 - doc/guide/admin/es/referencias_gosa.bib | 182 --- 22 files changed, 12 insertions(+), 5818 deletions(-) delete mode 100644 doc/guide/admin/en/manual_gosa_en.tex delete mode 100644 doc/guide/admin/en/manual_gosa_en_apache.tex delete mode 100644 doc/guide/admin/en/manual_gosa_en_ldap.tex delete mode 100644 doc/guide/admin/en/referencias_gosa.bib delete mode 100644 doc/guide/admin/es/manual_gosa_es.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_apache.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_certificates.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_dns.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_fileserver.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_ftp.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_gw.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_im.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_kerberos.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_ldap.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_mail.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_otros.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_printing.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_proxy.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_ssh.tex delete mode 100644 doc/guide/admin/es/manual_gosa_es_vpn.tex delete mode 100644 doc/guide/admin/es/referencias_gosa.bib diff --git a/doc/guide.xml b/doc/guide.xml index 48c36f5eb..691b471f0 100644 --- a/doc/guide.xml +++ b/doc/guide.xml @@ -37,7 +37,7 @@ specified for this class below. - + @@ -47,11 +47,11 @@ specified for this class below. + - @@ -89,12 +89,12 @@ specified for this class below. - + - + - + @@ -103,7 +103,10 @@ specified for this class below. - + + + + @@ -120,15 +123,15 @@ specified for this class below. - + - + - + diff --git a/doc/guide/admin/en/manual_gosa_en.tex b/doc/guide/admin/en/manual_gosa_en.tex deleted file mode 100644 index 4a9036bb6..000000000 --- a/doc/guide/admin/en/manual_gosa_en.tex +++ /dev/null @@ -1,72 +0,0 @@ -\documentclass[a4paper,english,10pt]{book} - -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[pdftex]{graphicx} -\usepackage[english]{babel} -\usepackage{times} -\usepackage{multirow} -\usepackage[latex2html,backref,pdftitle={GOsa}]{hyperref} -\usepackage{html,color} -\usepackage{latexsym} -\usepackage{anysize} -\usepackage{float} -\usepackage{longtable} -\usepackage{verbatim} - -\author{Alejandro Escanero Blanco} -\title{System Management with GOsa } -\date{28-03-05} - -\marginsize{3cm}{2cm}{2.5cm}{2.5cm} - - -\begin{document} - -\maketitle -\newpage -\tableofcontents -\newpage -\listoffigures -\newpage -\listoftables -\newpage - -\chapter*{Preamble} - -\htmladdnormallink{GOsa}{http://gosa.gonicus.de}, was a project created in year 2001 by Cajus Pollmeier \htmladdnormallink{Cajus Pollmeier}{mailto://pollmeier@gonicus.de} - -In the 1.0 version GOsa was a an ambitious project, but badly focused. I entred as developer of the project in June of 2003 for the early versions of the branch 1.99.xx. -The code was remade from scratch, and we created a new modular and extensible version (based on plugins) and optimizing its operations enormously. - -The actual version of GOsa (in the date of this document) is 2.3. -It have the ability to manage a great amount of services like samba2/3, pureftpd, postfix, cyrus-imap, posix, etc. -It have a small but very active developer group directed by Cajus. - -\chapter{Introduction} -The management of systems can be a really complicated work, too many users with diferents services and access to them. - -\section{Copyright and Disclaimer} -Copyright (c) 2005 Alejandro Escanero Blanco. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". - -If you have questions, please visit the following url: http://www.gnu.org/licenses/fdl.txt and contact at: \htmladdnormallink{blainett@yahoo.es}{mailto://blainett@yahoo.es} - -\include{manual_gosa_en_ldap} - -\include{manual_gosa_en_apache} - -\chapter{GOsa} - -\chapter{The Servers} -\label{servers} -\section{Postfix} -\section{Cyrus-IMAP} -\section{Samba 2/3} -\section{Pure-Ftpd} -\section{Squid} -\section{Egroupware} - -\bibliography{referencias_gosa} -\bibliographystyle{unsrt} - -\end{document} diff --git a/doc/guide/admin/en/manual_gosa_en_apache.tex b/doc/guide/admin/en/manual_gosa_en_apache.tex deleted file mode 100644 index aa349f9b4..000000000 --- a/doc/guide/admin/en/manual_gosa_en_apache.tex +++ /dev/null @@ -1,837 +0,0 @@ -\chapter{Apache And PHP} -\section{Apache Introduction} - -GOsa is an application written in the PHP programming language. - -Although everybody knows what is a Web page, we will review some basic points: - -\begin{description} -\item[WWW] -The World Wide Web is the main core of what we know as the Internet, it is a space information where each resource is identified by its URI (Universal Resource Identifier), it defines the protocol necessary to accede to the information, the machine that has it and where it is placed. - -The WWW is the great revolution of our time, is an enormous source of information. And because this all the applications are being Internet oriented. GOsa uses the WWW for a simple reason, distribution of the program, a Internet oriented application that can be used from any place and any time. GOsa does not need to be acceded in the same machine that has it executed, and another thing, each one of the servers whom it controls even can be in different machines and remote places. - -\item[HTTP] -\htmladdnormallink{HTTP}{http://www.w3.org/Protocols/}\cite{2616} is the acronym of HyperText Transfer Protocol, whose importantest purpose is the publication and reception of "Web pages". - -It is a application level protocol invented for distributed systems of hypermedia information. It has been being used for the WWW from 1990, the current version is HTTP/1.1. - -The practical operation can be reduced to a client whom makes a request and a server whom manages that request makes an answer. - -\item[HTML] -If the request of the client and the answer of the server are correct, the answer of the server will contain some type of hypermedia, the most habitual is \htmladdnormallink{HTML}{http://www.w3.org/TR/1998/REC-html40-19980424/} (HyperText Markup Language), a language thought for publication with contents and a easy navigation by them. It is a protocol in constant development, the present version is HTML4.01 and in publication XHTML2.0 -\end{description} - -\htmladdnormallink{APACHE}{http://httpd.apache.org/} is the \htmladdnormallink{most used}{http://news.netcraft.com/archives/web_server_survey.html} server for HTTP , secure, efficient and modular. - -This manual will be centered around this server, since this is the most used and has a opensource license. - -More information about this server is in \htmladdnormallink{http://httpd.apache.org/docs-2.0/}{http://httpd.apache.org/docs-2.0/} - - -\section{PHP Introduction} - -PHP (PHP: Hypertext Preprocessor), is an interpreted high level language, specially thought for the design of web pages. The syntax is a mixture of C, Perl and Java. It is embed in HTML pages and is executed by the HTTP server. - -PHP is widely extended and has a numerous group of developer, a \htmladdnormallink{extensive documentation}{http://www.php.net/docs.php} and numerous web sites with documentation and examples. - -\newpage - -\section{Installation} -\subsection{Unloading and Installing Apache} -\label{down_apache} -As in the previous chapter, Apache is practically in all the distributions, although we will see its installation from the sources. We are going to focus on the most advanced versions of apache, the 2.0.XX stables series. - -It is recommended install the same packages that are needed for openLDAP\ref{down_ldap}. - -It is possible to be downloaded of: \htmladdnormallink{http://httpd.apache.org/download.cgi}{http://httpd.apache.org/download.cgi}, the version which we are going to download and decompress in/usr/src is the httpd-2.0.XX.tar.gz - -We executed \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/en/configure-apache.sh} with the following options: - -\begin{itemize} -\item[]Generals\\ -\begin{tabular}{|ll|} \hline ---enable-so & $\rightarrow$ Support of Dynamic Shared Objects (DSO)\\ ---with-program-name=apache2 & \\ ---with-dbm=db42 & $\rightarrow$ Version of Berkeley DB that we are going to use\\ ---with-external-pcre=/usr & \\ ---enable-logio & $\rightarrow$ Input and Output Log\\ ---with-ldap=yes & \\ ---with-ldap-include=/usr/include & \\ ---with-ldap-lib=/usr/lib & \\ -\hline \end{tabular} - -\item[]suexec Support\\ -\begin{tabular}{|ll|}\hline ---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 & \\ -\hline \end{tabular} - -\item[] -\begin{longtable}{|ll|} -\hline -\multicolumn{2}{|c|}{\textbf{Modules}}\\ -\hline -\endfirsthead -\hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot ---enable-userdir=shared & $\rightarrow$ mod\_userdir, module for user directories\\ ---enable-ssl=shared & $\rightarrow$ mod\_ssl, module of secure connectivity SSL\\ ---enable-deflate=shared & $\rightarrow$ mod\_deflate, module to compress the information\\ ---enable-ldap=shared & $\rightarrow$ mod\_ldap\_userdir, module for ldap cache and connections\\ ---enable-auth-ldap=shared & $\rightarrow$ mod\_ldap, module of authentication in ldap\\ ---enable-speling=shared & $\rightarrow$ mod\_speling, module for the correction of failures in URL\\ ---enable-include=shared & $\rightarrow$ mod\_include, module for the inclusion of other configurations \\ ---enable-rewrite=shared & $\rightarrow$ mod\_rewrite, allows the URL manipulations \\ ---enable-cgid=shared & $\rightarrow$ CGI script\\ ---enable-vhost-alias=shared & $\rightarrow$ module for aliasing of virtual domains \\ ---enable-info=shared & $\rightarrow$ Information of the server\\ ---enable-suexec=shared & $\rightarrow$ Change the user and the group of the processes\\ ---enable-unique-id=shared & $\rightarrow$ unique Identifier by request\\ ---enable-usertrack=shared & $\rightarrow$ Track of the user session\\ ---enable-expires=shared & $\rightarrow$ Module for sending of expiration headers\\ ---enable-cern-meta=shared & $\rightarrow$ Files meta type CERN\\ ---enable-mime-magic=shared & $\rightarrow$ Obtain automatically mimetype\\ ---enable-headers=shared & $\rightarrow$ Control HTTP headers\\ ---enable-auth-anon=shared & $\rightarrow$ Access to anonymous users\\ ---enable-proxy=shared & $\rightarrow$ Allow the use of Apache as a proxy\\ ---enable-dav=shared & $\rightarrow$ Able to handle to the WebDav protocol\\ ---enable-dav-fs=shared & $\rightarrow$ Supplier DAV for the file system\\ ---enable-auth-dbm=shared & $\rightarrow$ Authentication based on database DBM\\ ---enable-cgi=shared & $\rightarrow$ Allow CGI scripts\\ ---enable-asis=shared & $\rightarrow$ Types of archives as they are\\ ---enable-imap=shared & $\rightarrow$ Server side image maps\\ ---enable-ext-filter=shared & $\rightarrow$ Module for external filters\\ ---enable-authn-dbm=shared & \\ ---enable-authn-anon=shared & \\ ---enable-authz-dbm=shared & \\ ---enable-auth-digest=shared & $\rightarrow$ Collection of authentications according to RFC2617\\ ---enable-actions=shared & $\rightarrow$ Active actions according to requests\\ ---enable-file-cache=shared & $\rightarrow$ File Cache\\ ---enable-cache=shared & $\rightarrow$ Dynamic Cache of archives\\ ---enable-disk-cache=shared & $\rightarrow$ Disc cache\\ ---enable-mem-cache=shared & $\rightarrow$ Mamory cache\\ -\end{longtable} -\end{itemize} - -Once configured, we must do:\\ -\\ -\begin{tabular}{|l|}\hline -\#make \&\& make install\\ -\hline \end{tabular} -\newpage - -\subsection{Installing PHP in Apache} - -Can be downloaded of \htmladdnormallink{http://www.php.net/downloads.php}{http://www.php.net/downloads.php} being the version necessary to the date of this manual for comaptibility with GOsa, the 4.3.XX, since versions 5.0.XX are not supported yet. We will download and decompress in/usr/src. - -In order to be able to compile the necessary modules, we need the developer libraries of servers section \ref{servers}, in addition to same that openLDAP\ref{down_ldap} and the Apache\ref{down_apache}, we will need some library more: - -\begin{itemize} -\item[libbz2] -We can download it of \htmladdnormallink{http://sources.redhat.com/bzip2/}{http://sources.redhat.com/bzip2/} as module of compression BZ2. -\item[e2fsprogs] -For access to the file system, can be downloaded of \htmladdnormallink{http://e2fsprogs.sourceforge.net}{http://e2fsprogs.sourceforge.net} -\item[expat] -Download from \htmladdnormallink{http://expat.sourceforge.net/}{http://expat.sourceforge.net/}, A XML parser. -\item[zziplib] -Download from \htmladdnormallink{http://zziplib.sourceforge.net/}{http://zziplib.sourceforge.net/}, to access to ZIP archives. -\item[zlib] -Download from \htmladdnormallink{http://www.gzip.org/zlib/}{http://www.gzip.org/zlib/} for GZIP compression. -\item[file] -Download from \htmladdnormallink{http://www.darwinsys.com/freeware/file.html}{http://www.darwinsys.com/freeware/file.html} to get control of archives. -\item[sed] -Download from \htmladdnormallink{http://www.gnu.org/software/sed/sed.html}{http://www.gnu.org/software/sed/sed.html}, one of the most powerful tools for text handling. -\item[libcurl] -Powerful tool to handle remote archives, download from \htmladdnormallink{http://curl.haxx.se/}{http://curl.haxx.se/}. -\item[gettext] -GNU Tool for support of several languages, download from \htmladdnormallink{http://www.gnu.org/software/gettext/gettext.html}{http://www.gnu.org/software/gettext/gettext.html}. -\item[libgd] -For the manipulation and creation of images, download from: \htmladdnormallink{http://www.boutell.com/gd}{/http://www.boutell.com/gd/}. -\item[libjpeg] -Manipulation of JPEG images, download from \htmladdnormallink{http://www.ijg.org/}{http://www.ijg.org/}. -\item[libpng] -Manipulation of PNG images, donwload from \htmladdnormallink{http://www.libpng.org/pub/png/libpng.html}{http://www.libpng.org/pub/png/libpng.html}. -\item[mcal] -Library for access to remote Calendars, download from \htmladdnormallink{http://mcal.chek.com/}{http://mcal.chek.com/}. -\item[libmysql] -Support of most famous database, is essential for php, download from \htmladdnormallink{http://www.mysql.com/}{http://www.mysql.com/} -\end{itemize} -\vspace{1cm} - - -A recommended configuration will be like this: - - -\begin{itemize} -\item[]Apache2\\ -\begin{tabular}{|ll|}\hline ---prefix=/usr --with-apxs2=/usr/bin/apxs2 & \\ ---with-config-file-path=/etc/php4/apache2 & \\ -\hline \end{tabular} - - - -\item[]Options of compilation\\ -\begin{tabular}{|ll|}\hline ---enable-memory-limit & \# Compiled with memory limit\\ ---disable-debug & \# To compile without debug symbols\\ ---disable-static & \# Without static libraries\\ ---with-pic & \# To use PIC and nonPIC objects\\ ---with-layout=GNU & \\ ---enable-sysvsem & \# sysvmsg Support\\ ---enable-sysvshm & \# sysvshm Support\\ ---enable-sysvmsg & \# System V shared memory support\\ ---disable-rpath & \# Disable to be able to pass routes to extra librerias to the binary\\ ---without-mm & \# To disable memoty sessions support\\ -\hline \end{tabular} - -\item[]Session\\ -\begin{tabular}{|ll|}\hline ---enable-track-vars & \\ ---enable-trans-sid & \\ -\hline \end{tabular} - -\item[]Support\\ -\begin{tabular}{|ll|}\hline ---enable-sockets & \# sockets support\\ ---with-mime-magic=/usr/share/misc/file/magic.mime & \\ ---with-exec-dir=/usr/lib/php4/libexec & \\ -\hline \end{tabular} - -\item[]pear\\ -\begin{tabular}{|ll|}\hline ---with-pear=/usr/share/php & \# Where we are going to install PEAR\\ -\hline \end{tabular} - -\item[]functions\\ -\begin{tabular}{|ll|}\hline ---enable-ctype & \# Control of characters functions support\\ ---with-iconv & iconv functions support \\ ---with-bz2 & BZ2 Compression support\\ ---with-regex=php & Type of library of regular expressions\\ ---enable-calendar & Calendar conversion functions\\ ---enable-bcmath & Mathematics of arbitrary precision support\\ ---with-db4 & DBA: Berkeley DB version 4 support \\ ---enable-exif & exif functions support, for JPG and TIFF metadata reading\\ ---enable-ftp & FTP functions support \\ ---with-gettext & Localization support\\ ---enable-mbstring & \\ ---with-pcre-regex=/usr & \\ ---enable-shmop & shared memory functions\\ ---disable-xml --with-expat-dir=/usr & use expat xml instead of which comes with php\\ ---with-xmlrpc & \\ ---with-zlib & \\ ---with-zlib-dir=/usr & \\ ---with-imap=shared,/usr & imap generic support\\ ---with-kerberos=/usr & Imap with Kerberos authentication\\ ---with-imap-ssl & Imap with SSL secure access\\ ---with-openssl=/usr & \\ ---with-zip=/usr & \\ ---enable-dbx & Layer of abstraction with databases\\ -\hline \end{tabular} - -\item[]external modules\\ -\begin{tabular}{|ll|}\hline ---with-curl=shared,/usr & remote Handling of archives\\ ---with-dom=shared,/usr --with-dom-xslt=shared,/usr --with-dom-exslt=shared,/usr & With xmlrpc already integrated\\ ---with-gd=shared,/usr --enable-gd-native-ttf & Images handling support\\ ---with-jpeg-dir=shared,/usr & GD Support for JPEG\\ ---with-png-dir=shared,/usr & GD Support for png\\ ---with-ldap=shared,/usr & Support for ldap\\ ---with-mcal=shared,/usr & Support of calendars\\ ---with-mhash=shared,/usr & Module for several key generation algorithms\\ ---with-mysql=shared,/usr & Support of Mysql database\\ -\hline \end{tabular} -\end{itemize} - -Then do:\\ -\#make \&\& make install -\newpage -\section{Apache2 Configuration} - -The apache configuration is saved in the directory /etc/apache2 in the following files and directories: -\begin{itemize} -\item[]File apache2.conf:\\ -Main configuration of apache2, it have the necesary configuration to run apache.\\ -We don\'t need to edit this file. -\item[]File ports.conf\\ -What port apache listen, we need two, port 80 for HTTP and port 443 for HTTPS, we will edit the file, and leave like this:\\ -\begin{tabular}{|l|}\hline -Listen 80,443\\ -\hline \end{tabular} -\item[]Directory conf.d:\\ -Directory for especial configuration, we don\'t need it. -\item[]Directories mods-available and mods-enabled:\\ -This directory have all the modules we can use of apache2, to enable a module is neccesary link it to the directory mods-enabled.\\ -\item[]Directories sites-available and sites-enabled:\\ -In sites available we must configure the sites we can use.\\ -For example we are going to create a no secure gosa site gosa, we can use it to redirect the request to the secure server. - -Gosa Configuration (sites-available/gosa) can be like this:\\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\\ -\verb| |Redirect /gosa https://gosa.chaosdimension.org/gosa\\ -\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\\ -\hline \end{tabular} - -And when is saved, can be enabled making this:\\ -\\ -\begin{tabular}{|l|}\hline -\#>ln -s /etc/apache2/sites-available/gosa.conf /etc/apache2/sites-enabled/gosa.conf\\ -\hline \end{tabular} -\\ -\item[]Directory ssl:\\ -Directory for Secure Socket Layer configuration, this will see in the next section. -\end{itemize} -\newpage -\subsection{Security} - -The security is one of the most important points when running a apache server, we will need to make a safe environment where not to allow that the users manipulate and accede to code or programs. - -The way to obtain this is using cryptography, in which we secure the communications between clients and servers so that nobody else can accede to the data. This is obtained with cryptography and key exchange. - -The other way to secure the system is that if some failure exists in the system or the code, and if a intruder tries to execute code, this person can be disabled, since powerful limitations exist, like not allowing that he executes commands, reads code of others scripts. He cannot modify nothing because he has a user with very limited resources. - -\subsubsection{SSL Certificates} - -\noindent There are a great amount of documentation on cryptography and concretely on SSL, a system of encryption with public and private key. \\ -\\ -\noindent As the package openSSL was already installed from the previous steps, we must create the certificates that we will use in our Web server. \\ -\\ -\noindent we will save the certificates in/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 With this we have created a certificate that allows SSL access to our pages. \\ -\\ -\noindent If what we want is a configuration that allows us not only that traffic is codified, but that in addition the client guarantees that he is a valid user, we must force the server to requests a client certification \\ -\\ -\noindent In this way we will follow a longer procedure, first will be creation of a certification of CA: \\ -\\ -\begin{tabular}{|l|}\hline -\#>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\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent After several questions we will have a CA, now we make a requirement to the created CA: \\ -\\ -\begin{tabular}{|l|}\hline -\#>openssl req -new -keyout \$REQFILE -out \$REQFILE \$DAYS\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent Sign the new certificate: \\ -\\ -\begin{tabular}{|l|}\hline -\#>openssl ca -policy policy\_anything -out \$CERFILE -infiles \$REQFILE\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent and we created a pkcs12 certidicate to configure the clients: \\ -\\ -\begin{tabular}{|l|}\hline -\#>openssl pkcs12 -export -inkey \$KEY -in \$CERTFILE -out certificado\_cliente.pkcs12\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent This certificate will be installed in the client, and in the the configuration of the Web server in the way explained in the following point, we will have the security that the clients who will accede the server are in a secure machine and its communication will be strictly confidential. \ \ - -\subsubsection{Configuring mod-SSL} -\noindent The SSL module comes with apache2, this will simplify our work. In order to know if already is enabled: \\ -\\ -\begin{tabular}{|l|}\hline -\#> if [ -h /etc/apache2/mods-enabled/ssl.load ]; then echo "enabled module";else echo "disabled module"; fi\\ -\hline \end{tabular} -\vspace{0.4cm} - -\noindent To enabled it we will do it following: \\ -\\ -\begin{tabular}{|l|}\hline -\#>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\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent This will enable the module in apache2 and we will be able to use it after restarting the server with: \\ -\\ -\begin{tabular}{|l|}\hline -\#>/etc/init.d/apache2 restart\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent If we only want a secure configuration, we will make this in /etc/apache2/sites-available, gosa-SSL: \\ -\\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *:443\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\verb| |alias /gosa /usr/share/gosa/html\\ -\\ -\verb| |DocumentRoot /var/www/gosa.chaosdimension.org\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\verb| |SSLEngine On\\ -\verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ -\verb| |SSLCACertificatePath /etc/apache2/ssl/\\ -\verb| |SSLLogLevel error\\ -\verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ -\\ -\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent For a secure communication in which we verified the certificate of the client: \\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *:443\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\\ -\verb| |alias /gosa /usr/share/gosa/html\\ -\\ -\verb| |DocumentRoot /var/www/gosa.chaosdimension.org\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\verb| |SSLEngine On\\ -\verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ -\verb| |SSLCACertificatePath /etc/apache2/ssl/\\ -\verb| |SSLLogLevel error\\ -\verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ -\\ -\verb| |\\ -\verb| |\verb| |SSLVerifyClient require\\ -\verb| |\verb| |SSLVerifyDepth 1\\ -\verb| |\\ -\\ -\hline \end{tabular} -\vspace{0.5cm} - -\subsubsection{Configuring suphp} -\noindent -Suphp is a module for apache and php that allows to execute processes of php with a different user of which apache uses to execute php pages. - -It consists of two parts, one is a module for apache who "captures" requests of php pages, verifies the user of the file, its group, and sends the information to the other part, that is suid-root executable that sends the information to php4-cgi with the owner of the file as user, then gives back the result to the module of the apache. - -The idea is to lower the damage that would cause a possible failure of the system being exploited, in this way the user enter the system with an nonqualified account, without permissions of execution and possibility to access to another code or programs. - -Suphp can be downloaded of \htmladdnormallink{http://www.suphp.org/Home.html}{http://www.suphp.org/Home.html}, decompressing the package in/usr/src and compiled with the following options:\\ -\\ -\begin{tabular}{|l|}\hline -\#>./configure --prefix=/usr \textbackslash \\ -\verb| |--with-apxs=/usr/bin/apxs2 \textbackslash \\ -\verb| |--with-apache-user=www-data \textbackslash \\ -\verb| |--with-php=/usr/lib/cgi-bin/php4 \textbackslash \\ -\verb| |--sbindir=/usr/lib/suphp \textbackslash \\ -\verb| |--with-logfile=/var/log/suphp/suphp.log \textbackslash \\ -\verb| |-with-setid-mode \textbackslash \\ -\verb| |--disable-checkpath \\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent Of course we will need to have compiled in php for cgi, this means returning to compilation of php, but clearing the configuration for apache2 and adding: \\ -\\ -\begin{tabular}{|l|}\hline -\verb| |--prefix=/usr --enable-force-cgi-redirect --enable-fastcgi \textbackslash\\ -\verb| |--with-config-file-path=/etc/php4/cgi\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent To configure in apache we will do the same as for SSL, first we verify if is enabled: \\ -\\ -\begin{tabular}{|l|}\hline -\#> if [ -h /etc/apache2/mods-enabled/suphp.load ]; then echo "enabled module";else echo "disabled module"; fi\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent to activate it we will do the following: \\ -\\ -\begin{tabular}{|l|}\hline -\#>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\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent This will enable the module in apache2 and we will be able to use it after restarting the server with: \ -\\ -\begin{tabular}{|l|}\hline -\#>/etc/init.d/apache2 restart\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent The configuration of the secure site with suphp included would be like this: \\ -\\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *:443\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\\ -\verb| |DocumentRoot /usr/share/gosa/html\\ -\verb| |alias /gosa /usr/share/gosa/html\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\verb| |suPHP\_Engine on\\ -\\ -\verb| |SSLEngine On\\ -\verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ -\verb| |SSLCACertificatePath /etc/apache2/ssl/\\ -\verb| |SSLLogLevel error\\ -\verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ -\\ -\verb| |\\ -\verb| |\verb| |SSLVerifyClient require\\ -\verb| |\verb| |SSLVerifyDepth 1\\ -\verb| |\\ -\\ -\hline \end{tabular} -\vspace{0.5cm} - -\noindent We must decide which user we are going to use, in this case I am going to create one called "gosa", that will be is used for suphp:\\ -\\ -\begin{tabular}{|l|}\hline -\verb| |\#>useradd -d /usr/share/gosa/html gosa\\ -\verb| |\#>passwd -l gosa\\ -\verb| |\#>cd /usr/share/gosa\\ -\verb| |\#>find /usr/share/gosa -name "*.php" -exec chown gosa {} ";"\\ -\verb| |\#>find /usr/share/gosa -name "*.php" -exec chmod 600 {} ";"\\ -\hline \end{tabular} -\vspace{0.5cm} -\newpage -\section{PHP4 Configuration} -The configuration for mod\_php will be in the path that we had configured in the compilation of php4. In our case it is/etc/php4/apache2. - -The configuration file we always be named php.ini and we will enable the modules. - -A basic configuration will be like this:\\ -\\ -\begin{center} -\begin{longtable}{|l|} -\caption{PHP4 Configuration}\\ -\hline -\multicolumn{1}{|c|}{\textbf{PHP4 Configuration}}\\ -\hline -\endfirsthead -\hline -\endhead -\hline -\multicolumn{1}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -; Engine \\ -\verb| |engine = On ; Activates PHP\\ -\verb| |short\_open\_tag = On ; allows to use \\ -\verb| |precision = 14 ; Number of significant digits shown in numbers in floating comma\\ -\verb| |output\_buffering = Off ; Only will be allowed send headers before send the content.\\ -\verb| |implicit\_flush = Off ; We did not force to php to that cleans the exit buffer after each block.\\ -\\ -; Safe Mode \\ -\verb| |\label{sm} safe\_mode = Off ; We do not want the safe way\\ -\verb| |\label{smed} safe\_mode\_exec\_dir = ; Directory where PHP is executed\\ -\verb| |\label{smid} safe\_mode\_include\_dir = Directory where PHP will search PHP libraries\\ -\verb| |\label{smaev} safe\_mode\_allowed\_env\_vars = PHP\_ ; Only is allowed to the users\\ -\verb| |\verb| |\verb| |;to create system variables that begin with PHP\_\\ -\verb| |\label{smpev} safe\_mode\_protected\_env\_vars = LD\_LIBRARY\_PATH ; List of system variables that\\ -\verb| |\verb| |\verb| |; can not be changed by security reasons.\\ -\verb| |\label{df} disable\_functions = ; Functions that will be disabled for security reasons\\ -\verb| |\label{auf} allow\_url\_fopen = Yes ; We allowed that they open to archives from PHP\\ -\verb| |\label{ob} open\_basedir = ;\\ -\ \ -; Colors for the way of colored syntax. \ \ -\verb| |highlight.string = \#DD0000\\ -\verb| |highlight.comment = \#FF8000\\ -\verb| |highlight.keyword = \#007700\\ -\verb| |highlight.bg = \#FFFFFF\\ -\verb| |highlight.default = \#0000BB\\ -\verb| |highlight.html = \#000000\\ -\\ -; Misc\\ -\verb| |\label{ep}expose\_php = On ; It indicates in the message of the Web server if it is installed or no.\\ -\\ -; Resource Limits ;\\ -\verb| |max\_execution\_time = 30 ; Maximum time of execution of script.\\ -\verb| |memory\_limit = 16M ; Maximun memory allowed that can consume the script.\\ -\\ -; Error handling and logging ;\\ -\verb| |error\_reporting = E\_ALL; We indicated that shows all the errors and warnings.\\ -\verb| |display\_errors = Off ; Does not print in screen.\\ -\verb| |display\_startup\_errors = Off ; That does not show the errors of PHP starting.\\ -\verb| |log\_errors = On ; That sends the errors to a file.\\ -\verb| |track\_errors = On ; That \$php\_errormsg keeps the last Error / Warning (boolean)\\ -\verb| |error\_log = /var/log/php/php4.log ; File that will keep the errors\\ -\verb| |warn\_plus\_overloading = Off ; We did not warn if operator + is used with strings\\ -\\ -; Data Handling ;\\ -\verb| |variables\_order = "EGPCS" ; This directive describes the order in which\\ -\verb| |; will be registered the PHP variables (Being G=GET, P=POST, C=Cookie,\\ -\verb| |; E = System, S = Own of PHP, all is indicated like EGPCS) \\ -\verb| |\label{rg} register\_globals = Off ; We do not want that the EGPCS are registered like globals.\\ -\verb| |register\_argc\_argv = Off ; We did not declare ARGV and ARGC for its use in scripts.\\ -\verb| |post\_max\_size = 8M ; Maximum size of sending POST that will accept PHP.\\ -\\ -; Magic quotes\\ -\verb| |\label{mqq}magic\_quotes\_gpc = On ; Quotes added fro GPC(GET/POST/Cookie data)\\ -\verb| |magic\_quotes\_runtime= Off ; Quotes added for system generated data, \\ -\verb| |;for example from SQL, exec(), etc.\\ -\verb| |magic\_quotes\_sybase = Off ; Use Sybase style added quotes.\\ -\verb| ;(escape ' with '' instead of \')|\\ -\\ -; PHP default type of file and default codification.\\ -\verb| |default\_mimetype = "text/html"\\ -\verb| |default\_charset = "iso-8859-1"\\ -\\ -; Routes and directories ;\\ -\verb| |\label{ip} include\_path = . ;\\ -\verb| |doc\_root = ; Root of the php pages, better is to leave in blank.\\ -\verb| |user\_dir = ; Where php executes scripts,better is to leave in blank.\\ -\verb| |;extension\_dir = /usr/lib/php4/apache ; ¿Where the modules are?\\ -\verb| |enable\_dl = Off ; Allow or No the dymanic load of modules with the dl() function.\\ -\\ -; Upload files to the server;\\ -\verb| |file\_uploads = On ; Allow upload files to the server.\\ -\verb| |upload\_max\_filesize = 2M ; Maximum size of the files we are going to upload.\\ -\\ -; Dynamic Extensions ;\\ -\verb| |extension=gd.so ; Graphics\\ -\verb| |extension=mysql.so ; Mysql\\ -\verb| |extension=ldap.so ; Ldap\\ -\verb| |extension=mhash.so ; Mhash\\ -\verb| |extension=imap.so ; Imap\\ -\verb| |extension=kadm5.so ; Kerberos\\ -\verb| |extension=cups.so ; Cupsys\\ -\\ -; System Log \\ -\verb|[Syslog]|\\ -\verb| |define\_syslog\_variables = Off ; We disabled the definition of syslog variables.\\ -\\ -; mail functions\\ -\verb|[mail function]|\\ -\verb| |;sendmail\_path = ;In unix system, where is located sendmail (is 'sendmail -t -i' by default)\\ -\\ -; debug\\ -\verb|[Debugger]|\\ -\verb| |debugger.host = localhost ; Where is the debugger.\\ -\verb| |debugger.port = 7869 ; The port it is listening.\\ -\verb| |debugger.enabled = False ; We suppose there is not a debugger.\\ -\\ -; SQL Options\\ -\verb|[SQL]|\\ -\verb| |sql.safe\_mode = Off ; SQL safe mode, we will disabled it.\\ -\\ -; Mysql Options\\ -\verb|[MySQL]|\\ -\verb| |mysql.allow\_persistent = Off ; We will disable the persistent links for security reasons.\\ -\verb| |mysql.max\_persistent = -1 ; Number of persistent connections, is not used when is disabled.\\ -\verb| |mysql.max\_links = -1 ; Maximum number of connections, -1 is without limits.\\ -\verb| |mysql.default\_port = 3306; Default port of mysql.\\ -\verb| |mysql.default\_socket = ; Socket name that will be used for local mysql connections.\\ -\verb| |;If is void, will be use the default compilation configuration of PHP.\\ -\verb| |mysql.default\_host = ; No default host configured.\\ -\verb| |mysql.default\_user = ; No default user configured.\\ -\verb| |mysql.default\_password = ; No default password configured.\\ -\\ -; session control\\ -\verb|[Session]|\\ -\verb| |session.save\_handler = files ; We saved the session information in files.\\ -\verb| |\label{ss} session.save\_path = /var/lib/php4 ; Directory where is going to be saved the session files.\\ -\verb| |session.use\_cookies = 1 ; We will use cookies for the session tracking.\\ -\verb| |session.name = PHPSESSID ; Name of the session that will be used in the name of the cookie.\\ -\verb| |session.auto\_start = 0 ; We did not initiate session automatically.\\ -\verb| |session.cookie\_lifetime = 0 ; Time of life of a session cookie or 0 if we wait him to closes the navigator.\\ -\verb| |session.cookie\_path = / ; The path for which the cookie is valid.\\ -\verb| |session.cookie\_domain = ; The domain for which the cookie is valid.\\ -\verb| |session.serialize\_handler = php ; Used manipulator to serialize the data.\\ -\verb| |session.gc\_probability = 1 ; Probability in percentage that the garbage collector activates in each session.\\ -\verb| |session.gc\_maxlifetime = 1440 ; After this time in seconds, the saved information\\ -\verb| |; will be look like garbage for the garbage collector.\\ -\verb| |session.referer\_check = ; Verifies HTTP Referer to invalidate externals URLs containing ids\\ -\verb| |session.entropy\_length = 0 ; Number of bytes to be readed of the entropy file.\\ -\verb| |session.entropy\_file = ; The file that will generate the entropy.\\ -\verb| |session.cache\_limiter = nocache ; Without session cache.\\ -\verb| |session.cache\_expire = 180 ; document expiration time.\\ -\verb| |session.use\_trans\_sid = 0 ; To use translate sid if is enabled in compilation time.\\ -\\ -\end{longtable} -\end{center} - -\subsection{Security} - -PHP is a powerful scripting language, it allows its users to have enough control over the system and to malicious attackers too many options to reach its objective. - -An system administrator does not have to suppose that a system is completely safe with only having installed security updates, a system that shows code to the outside is not safe, although the result is HTML, it is exposed to attacks of very diverse forms and failures of security not even know. - -Limit to the maximum the access that allows php is then a necessity. - -\subsection{Configuring safe php} - -PHP has a mode \htmladdnormallink{safe-mode}{http://www.php.net/manual/en/features.safe-mode.php} that allows a greater security, a recommended configuration for Safe mode is: - -\begin{tabular}{|l|}\hline -\\ -\verb| |\ref{mqq} magic\_quotes\_qpc = On\\ -\\ -\verb| |\ref{auf} allow\_url\_fopen = No\\ -\\ -\verb| |\ref{rg} register\_globals = Off\\ -\\ -\verb| |\ref{sm} safe\_mode = On\\ -\\ -\verb| |\ref{smid} safe\_mode\_include\_dir = "/usr/share/gosa:/var/spool/gosa"\\ -\\ -\verb| |\ref{smed} safe\_mode\_exec\_dir = "/usr/lib/gosa"\\ -\\ -\verb| |\ref{smaev} safe\_mode\_allowed\_env\_vars = PHP\_,LANG\\ -\\ -\verb| |\ref{ob} open\_basedir = "/etc/gosa:/var/spool/gosa:/var/cache/gosa:/usr/share/gosa:/tmp"\\ -\\ -\verb| |\ref{ip} include\_path = ".:/usr/share/php:/usr/share/gosa:/var/spool/gosa:/usr/share/gosa/safe\_bin"\\ -\\ -\verb| |\ref{df} disable\_functions = system, shell\_exec, passthru, phpinfo, show\_source\\ -\\ -\hline \end{tabular} - - -In the case we are going to use SuPHP, we must give the following permissions to the directory /var/lib/php4:\\ - -\begin{tabular}{|l|}\hline -\#>chmod 1777 /var/lib/php4\\ -\hline \end{tabular} - -Since each user who executes PHP kept the session with that user. - -\section{Necessary PHP Modules} - -In this section are explained the steps to be able to compile and to use the necessary or important modules for GOsa, is recommended to install all the modules, even those that are not necessary. - -\subsection{ldap.so} - -NECCESARY MODULE - -\indent This module does not need any special configuration to work. -Only knows a problem: PHP+Apache with cannot be connected with a LDAP server who requests valid Certificate. The communication will be safe, since SSL can be used, but will not be guaranteed. - -\subsection{mysql.so} - -OPTIONAL MODULE - -\indent This module does not need any special configuration to work. - -\indent Necessary to save the imap - sieve plugin configuration. - -\subsection{imap.so} - -OPTIONAL MODULE - -\indent The installed module when compiling PHP work, but it will have an important deficiency, the function getacl that gives control on the folders, so we will need a patch and steps to compile the module for its use in GOsa. - -We download the patch from \htmladdnormallink{php4-imap-getacl.patch}{ftp://ftp.gonicus.de/gosa/contrib/php4-imap-getacl.patch} and we put it in/usr/src, as we have the sources of PHP in /usr/src, we executed the following command: - -\begin{tabular}{|l|}\hline -\#>cd /usr/src/php4.3-XXX/extensions/imap\\ -\#>make clear\\ -\#>patch -p1 phpize\\ -\#>./configure\\ -\#>make\\ -\#>make install\\ -\hline \end{tabular} - -This make and install the module correctly. - -\subsection{gd.so} - -OPTIONAL MODULE - -\indent This module does not need any special configuration to work. - -\indent The module is used for the handling of graphs, also used by the system of smarty templates. - -\subsection{cups} - -OPTIONAL MODULE - -\indent To use the Cups module for the selection of the printer in Posix, we must download the cups sources from \htmladdnormallink{http://www.cups.org/software.php}{http://www.cups.org/software.php} and decompress en /usr/src, then we executing the next commands: -\\ -\noindent \begin{tabular}{|l|}\hline -\#cd /usr/src/cups-1.1.XX/scripting/php\\ -\#phpize\\ -\#./configure\\ -\#make\\ -\#make install\\ -\#echo \verb|"extension=cups.so" >>| /etc/php4/apache2/php.init\\ -\#/etc/init.d/apache2 reload\\ -\hline \end{tabular} - - -\subsection{krb} - -OPTIONAL MODULE - -\indent This module need to have the MIT Kerberos sources installed, because it can not be compiled with the Heimdal Kerberos sources. - -\indent The module will connect with the Kerberos servers to update the keys of the users. - -Will download from \htmladdnormallink{PECL}{http://pecl.php.net/kadm5}, and descompress in /usr/src, we must have the MIT Kerberos sources also, descompress in /usr/src, with it will execute this: (changing X.X for the actual version of the programs):\\ -\\ -\noindent \begin{tabular}{|l|}\hline -\#cd /usr/src/kadm5-0.X.X/scripting/php\\ -\#cp config.m4 config.m4.2\\ -\#sed \verb|s/krb5-1\.2\.4\/src\/include/krb5-1\.X\.X\/src\/lib/| config.m4.2 >config.m4\\ -\#rm -f config.m4.2\\ -\#phpize\\ -\#./configure\\ -\#make\\ -\#make install\\ -\#echo \verb|"extension=kadm5.so" >>| /etc/php4/apache2/php.ini\\ -\#/etc/init.d/apache2 reload\\ -\hline \end{tabular} - diff --git a/doc/guide/admin/en/manual_gosa_en_ldap.tex b/doc/guide/admin/en/manual_gosa_en_ldap.tex deleted file mode 100644 index cc145cc5d..000000000 --- a/doc/guide/admin/en/manual_gosa_en_ldap.tex +++ /dev/null @@ -1,1059 +0,0 @@ -\chapter{openLDAP} -\section{Introduction,What is LDAP?} -\subsection{Directory Services, X.500} - -A directory is a search information specialised database based on attributes. - -X.500|ISO 9594\cite{x500} is a standard of ITU-S(International Telecommunication Union - Telecommunication Standardisation Burean), previously known like CCITT, to solve the problem of directories. Based on the works made with X.400 (a directory for electronic mail) and the works of ISO (International Standards Organisation) and ECMA (European Computer Manufacturers Association).\\ - -The X.501|ISO 9594 part 2. define the models, as the information must be organized, the model of user information, the model of administrative information and the directory service, which defines as the information must be distributed between several systems.\\ - -In X.509|ISO 9594 part 8. the standard of authentication and security used for SSL.\\ - -X.525|ISO 9594 part 9. indicates as the replication must be between systems.\\ - -In X.519|ISO 9594 part 5. the communication protocols are defined, among them the one that have greater importance to us that is DAP - the protocol of access to directories - it defines that operations can be done with the connection: bind, unbind, the objects (entry) and its operation: add, eliminate, modify, search, list, compare, etc.\\ - -DAP is a protocol to complex to make servers and clients usable for Internet, then a comfortable protocol must be created to handle these directories: LDAP.\\ - -LDAP (Lightweight Directory Access Protocol) is a protocol thought for update and search of Internet (TCP/IP) oriented directories. \\ - -The last LDAP version is 3 and it is covered by the RFCs: 2251\cite{2251}, 2252\cite{2252}, 2253\cite{2253}, 2254\cite{2254}, 2255\cite{2255}, 2256\cite{2256} y 3377\cite{3377}.\\ -\newpage -\subsection{Basic Concepts of LDAP} - -\begin{itemize} -\item[]Entry\\ -An Entry is a collection of attributes identified by its DN (distinguished name). A DN is unique in all the tree and therefore it identifies clearly the entrance to which refers. As example: CN=Alex O=CHAOSDIMENSION C=ES must identify to the object of common name \'Alex\' that is in organization \'CHAOSDIMENSION\' and country is \'ES\' (Spain). A RDN(names distinguished relative) is a part of the DN, in a way that concatenating the RDNs they give as result the DN. Of the previous example CN=Alex is a RDN. - -\item[]Object Class\\ -A Object Class is a special attribute (ObjectClass) that defines attributes that are required and allowed in an entry. The values of the Objects Classes are defined in the schema. All the entrances must have a ObjectClass attribute. It isn\'t allowed to add attributes to the entries that aren\'t allowed by definitions of the Objects Classes of the entry. - -\item[]Attrib\\ -An Attribute is a type with one or more values associated. It is identified by a OID (object identifier). The attribute type indicates if can have more of a value of this attribute in an entry, the values that can have and how they can be searched. - -\item[]Schema\\ -A Schema is a collection of definitions of types of attributes, Objects Classes and information that the server use to do the searches, to introduce values in an attribute, and to allow operations to add or to modify. - -To create a search, we must consider several important parameters: -\item[]Filter\\ -\begin{list}{}{} -\item[Base Object] -Un DN que sera a partir del cual realizaremos la busqueda. - -\item[Scope] -It can have several values. -\begin{list}{}{} -\item[base] it will only search in the level base. -\item[sub] it will make a recursive search by all the tree from the level base -\item[one] search a level below the level base. -\end{list} - -\item[Size Limit] -It restricts the number of entries given back as result of a search. - -\item[Time Limit] -It restricts the execution maximum time of a search. - -\item[Filter] -A chain that defines the conditions that must be completed to find an entry. - -\end{list} - -The filters can be concatenated with ' and', ' or' and ' not' to create more complex filters. For example a filter with base O=CHAOSDIMENSION, C=ES, scope base and filter (CN=Alex) would find the entry CN=Alex , O=CHAOSDIMENSION, C=ES. - -\end{itemize} -\newpage -\subsection{LDAP Servers} - -LDAP is supported by numerous servers being the knownest Directory Active of Microsoft, eDirectory of Novell, Oracle Internet Directory of Oracle, iPlanet Directory Server of SUN and finally but not less important openLDAP. - -This manual teach about the use and installation of openLDAP, since this supported by practically all the distributions of linux and their license fulfills the openSource standard. - -For more information about LDAP see LDAP Linux HowTo\cite{llh}, Using LDAP\cite{ul}, openLDAP administrator Guide\cite{oag} and in Spanish the LDAP relative part of the magnify manual Ldap+Samba+Cups+Pykota\cite{lscp}. - -\section{Installation} -Most distributions have packages of openLDAP. The use apt-get in debian, Urpmi in Mandrake, up2date in redhat or Yast2 in Suse is outside this manual. This manual explain the necessary work for the construction and configuration from the sources. - -\subsection{Downloading openLDAP} -\label{down_ldap} -Downloading openLDAP - -Although they are not really necessary, there is several packages that have to be installed before openLDAP because we need them. - -The first of them is \textbf{openSSL}, it exists in all the distributions and has documentation in is webpage\cite{ssldoc}. - -The sources can be downloaded from \htmladdnormallink{http://www.openssl.org/source/}{http://www.openssl.org/source/} - -The second is \textbf{Kerberos Services v5}, which have two implementations, one is \htmladdnormallink{MIT Kerberos V}{http://web.mit.edu/kerberos/www} and the other is \htmladdnormallink{Heimdal Kerberos}{http://www.pdc.kth.se/heimdal}, both have good documentation and are widely supported by all the distributions. - -It could also be interesting to have the \textbf{Cyrus SASL} libraries installed (Simple Cyrus's Authentication and Security Layer) that could be obtained from \htmladdnormallink{http://asg.web.cmu.edu/sasl/}{http://asg.web.cmu.edu/sasl/sasl-library.html}, Cyrus SASL makes use of openSSL and Kerberos/GSSAPI for authentication. - -At last we will need a database for openLDAP, with respect to this manual this will be given through the \htmladdnormallink{\textbf{Sleepycat Software Berkeley DB}}{http://www.sleepycat.com/} libraries, we will need it if we want to use LDBM (Berkeley DB version 3) or BDB (Berkeley DB version 4). Also they exist in the majority of the distributions. - -Once obtained and compiled the necessary libraries we download the \htmladdnormallink{sources of openLDAP}{http://www.openldap.org/software/download/} in /usr/src (for example) and decompressed in that directory (for example with tar -zxvf openldap-2.X.XX.tgz). -\newpage -\subsection{Install Options} - -The following options are for openLDAP version 2.2.xx that can differ from versions 2.0.XX and 2.1.XX. - -We executed \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/en/configure.sh} with the following options: - -\begin{itemize} -\item[](Directories)\\ -\begin{tabular}{|ll|}\hline ---prefix=/usr & \\ ---libexecdir='\${prefix}/lib' & \\ ---sysconfdir=/etc & \\ ---localstatedir=/var/run & \\ ---mandir='\${prefix}/share/man' & \\ ---with-subdir=ldap & \\ -\hline \end{tabular} - -\item[](Basic Options)\\ -\begin{tabular}{|ll|}\hline ---enable-syslog & \\ ---enable-proctitle & \\ ---enable-ipv6 & $\rightarrow$Sockets IPv6\\ ---enable-local & $\rightarrow$Sockets Unix\\ ---with-cyrus-sasl & $\rightarrow$Supported authentication Cyrus SASL\\ ---with-threads & $\rightarrow$Support thread of execution\\ ---with-tls & $\rightarrow$Support TLS/SSL\\ ---enable-dynamic & $\rightarrow$Dynamic compilation\\ -\hline \end{tabular} - -\item[](Slapd Options)\\ -\begin{tabular}{|ll|}\hline ---enable-slapd & $\rightarrow$To compile the server in addition to the libraries\\ ---enable-cleartext & $\rightarrow$It allows send clear text passwords\\ ---enable-crypt & $\rightarrow$Send crypther passwords with DES.\\ ---enable-spasswd & $\rightarrow$Verification of passwords through SASL\\ ---enable-modules & $\rightarrow$Support of dynamic modules\\ ---enable-aci & $\rightarrow$Support of ACIs by objects (Experimental)\\ ---enable-rewrite & $\rightarrow$Rewriting of DN in recovery of LDAP\\ ---enable-rlookups & $\rightarrow$Inverse search of the name of the client workstation\\ ---enable-slp & $\rightarrow$SLPv2 support\\ ---enable-wrappers & $\rightarrow$Support TCP wrappers\\ -\hline \end{tabular} - -\item[](Support)\\ -\begin{tabular}{|ll|}\hline ---enable-bdb=yes & $\rightarrow$Berkeley version 4 support\\ ---enable-dnssrv=mod & \\ ---enable-ldap=mod & $\rightarrow$It supports another LDAP server as database\\ ---enable-ldbm=mod & \\ ---with-ldbm-api=berkeley & $\rightarrow$Berkeley version 3 support\\ ---enable-meta=mod & $\rightarrow$Metadirectory support\\ ---enable-monitor=mod & \\ ---enable-null=mod & \\ ---enable-passwd=mod & \\ ---enable-perl=mod & $\rightarrow$Perl scripts support\\ ---enable-shell=mod & $\rightarrow$Shell scripts support\\ ---enable-sql=mod & $\rightarrow$Relational database support\\ -\hline \end{tabular} -\end{itemize} - -Then do:\\ -\#make \&\& make install -\newpage -\section{Configuration} -\subsection{Basic} - -\noindent The configuration of the LDAP server slapd of openLDAP is in /etc/ldap/slapd.conf - -\noindent A \htmladdnormallink{basic configuration}{http://warping.sourceforge.net/gosa/contrib/en/basic_slapd.conf} would be like this: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Basic LDAP COnfiguration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Basic LDAP COnfiguration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Basic LDAP COnfiguration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -\# Schema and objectClass definitions, basic configuration & \\ -include /etc/ldap/schema/core.schema & \\ -include /etc/ldap/schema/cosine.schema & \\ -include /etc/ldap/schema/inetorgperson.schema & \\ -include /etc/ldap/schema/openldap.schema & \\ -include /etc/ldap/schema/nis.schema & \\ -include /etc/ldap/schema/misc.schema & \\ - & \\ -\# Force entries to match schemas for their ObjectClasses & \\ -schemacheck on & \\ - & \\ -\# Password hash, default crypt type & \\ -\# Puede ser: \{SHA\}, \{MD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ -password-hash \{CRYPT\} & \\ - & \\ -\# Default search base & \\ -defaultsearchbase "dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\#Used by init scripts to stop and to start the server. & \\ -pidfile /var/run/slapd.pid & \\ - & \\ -\# Arguments passed to the server. & \\ -argsfile /var/run/slapd.args & \\ - & \\ -\# Level of log information & \\ -loglevel 1024 & \\ - & \\ -\# Where and which modules load & \\ -modulepath /usr/lib/ldap & \\ -moduleload back\_bdb \# Berkeley BD version 4 & \\ - & \\ -\#definitions of the database & \\ -database bdb & \\ - & \\ -\# The base of the directory & \\ -suffix "dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\# Here is the definition of the administrator of the directory and his key & \\ -\# In this example is " tester" & \\ -\# The crypt key can be extract with & \\ -\# makepasswd --crypt --clearfrom file\_with\_user\_name & \\ - & \\ -rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ -rootpw \{crypt\}OuorOLd3VqvC2 & \\ - & \\ -\# here are the attributes that we indexed to make searchs & \\ -index default sub & \\ -index uid,mail eq & \\ -index cn,sn,givenName,ou pres,eq,sub & \\ -index objectClass pres,eq & \\ - & \\ -\# Directory where the database is located & \\ -directory " /var/lib/ldap" & \\ - & \\ -\# We say if wished to keep the date of the last modification & \\ -lastmod off & \\ - & \\ -\#Administrator access & \\ -access to * & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ - by * read & \\ -\end{longtable} -\end{center} - -\newpage -\subsection{GOsa Specifications} - -GOsa adds several schemas for the control of certain services and characteristics of users. \\ - -The necessary schemas for GOsa are in the package, in the contrib section, they need to be copied in /etc/ldap/schema. \\ - -A \htmladdnormallink{recommended configuration}{http://warping.sourceforge.net/gosa/contrib/en/gosa_slapd.conf} of /etc/ldap/slapd.conf is the following one: \\ - -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{LDAP GOsa Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{LDAP GOsa Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{LDAP GOsa Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -\# Schema and objectClass definitions, basic configuration & \\ -include /etc/ldap/schema/core.schema & \\ -include /etc/ldap/schema/cosine.schema & \\ -include /etc/ldap/schema/inetorgperson.schema & \\ -include /etc/ldap/schema/openldap.schema & \\ -include /etc/ldap/schema/nis.schema & \\ -include /etc/ldap/schema/misc.schema & \\ - & \\ -\# These schemes would be present in GOsa. In the case of samba3 & \\ -\# we must change samba.schema and gosa.schema by samba3.schema & \\ -\# and gosa+samba3.schema & \\ -include /etc/ldap/schema/samba3.schema & \\ -include /etc/ldap/schema/pureftpd.schema & \\ -include /etc/ldap/schema/gohard.schema & \\ -include /etc/ldap/schema/gofon.schema & \\ -include /etc/ldap/schema/goto.schema & \\ -include /etc/ldap/schema/gosa+samba3.schema & \\ -include /etc/ldap/schema/gofax.schema & \\ -include /etc/ldap/schema/goserver.schema & \\ - & \\ -\# Force entries to match schemas for their ObjectClasses & \\ -schemacheck on & \\ - & \\ -\# Password hash, type of key encryption & \\ -\# Can be: \{SHA\}, \{SMD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ -password-hash \{CRYPT\} & \\ - & \\ -\# Default search base. & \\ -defaultsearchbase " dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\# Used by init scripts to stop and to start the server. & \\ -pidfile /var/run/slapd.pid & \\ - & \\ -\# Arguments passed to the server. & \\ -argsfile /var/run/slapd.args & \\ - & \\ -\# Log level information & \\ -loglevel 1024 & \\ - & \\ -\# Where and which modules to load. & \\ -modulepath /usr/lib/ldap & \\ -moduleload back\_bdb \# Berkeley BD version 4 & \\ - & \\ -\# Some performance parameters & \\ -threads 64 & \\ -concurrency 32 & \\ -conn\_max\_pending 100 & \\ -conn\_max\_pending\_auth 250 & \\ -reverse-lookup off & \\ -sizelimit 1000 & \\ -timelimit 30 & \\ -idletimeout 30 & \\ - & \\ -\# specific limitations & \\ -limits anonymous size.soft=500 time.soft=5 & \\ - & \\ -\# Definitions of the database & \\ -database bdb & \\ -cachesize 5000 & \\ -checkpoint 512 720 & \\ -mode 0600 & \\ - & \\ -\# The diretory base. & \\ -suffix " dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\# Here is the definition of the administrator of the directory and his key & \\ -\# In this example is " tester" & \\ -\# The crypt key can be extract with & \\ -\# makepasswd --crypt --clearfrom file\_with\_user\_name & \\ - & \\ -rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ -rootpw \{crypt\}OuorOLd3VqvC2 & \\ - & \\ -\# That attributes we indexed to make search & \\ -index default sub & \\ -index uid,mail eq & \\ -index gosaMailAlternateAddress,gosaMailForwardingAddress eq & \\ -index cn,sn,givenName,ou pres,eq,sub & \\ -index objectClass pres,eq & \\ -index uidNumber,gidNumber,memberuid eq & \\ -index gosaSubtreeACL,gosaObject,gosaUser pres,eq & \\ - & \\ -\# Indexing for Samba 3 -index sambaSID eq & \\ -index sambaPrimaryGroupSID eq & \\ -index sambaDomainName eq & \\ - & \\ -\# Who can change the user keys & \\ -\# ,only by the own user if is authenticate & \\ -\# or by the administrator & \\ -access to attr=sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChange & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by anonymous auth & \\ - by self write & \\ - by * none & \\ -access to attr=userPassword,shadowMax,shadowExpire & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by anonymous auth & \\ - by self write & \\ - by * none & \\ - & \\ -\# Acess deny to imap keys, fax or kerberos saved in & \\ -\# LDAP & \\ -access to attr=goImapPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by * none & \\ -access to attr=goKrbPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by * none & \\ -access to attr=goFaxPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by * none & \\ - & \\ -\# Permit that server write the LastUser attribute & \\ -access to attr=gotoLastUser & \\ - by * write & \\ - & \\ -\# The samba keys by defect only can be changed & \\ -\# by the user if has been authenticate. & \\ -access to attr=sambaLmPassword,sambaNtPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by anonymous auth & \\ - by self write & \\ - by * none & \\ - & \\ -\# Allow write access for terminal administrator & \\ -access to dn=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ - by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - & \\ -access to dn.subtree=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ - by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - & \\ -\# Directory where is the database & \\ -directory " /var/lib/ldap" & \\ - & \\ -\# Indicate if we wished to keep the modification last date & \\ -lastmod off & \\ - & \\ -\# Administrator access & \\ -access to * & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ - by * read & \\ -\end{longtable} -\end{center} - - -\section{Utilization} -\subsection{PAM/NSS Configuration} - -NSS (Network Security Service Libraries) - -NSS is a basic component of the system, is used for control of accounts POSIX, to be able to use LDAP for accounts POSIX (of the system), we will use NSS\_LDAP, that can be downloaded of \htmladdnormallink{http://www.padl.com/OSS/nss\_ldap.html}{http://www.padl.com/OSS/nss\_ldap.html} , we decompressed it in /usr/src and executed:\\ - -\noindent \#cd /usr/src/nss\_ldap\\ -\noindent \#./configure \&\& make \&\& make install\\ - -The basic configuration of NSS are in /etc/nsswitch.conf and must be left like this for what we want. - -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{NSSWITCH Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{NSSWITCH Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{NSSWITCH Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -passwd: files ldap & \# These are the lines that we changed so that ldap makes requests\\ -group: files ldap & \#\\ -shadow: files ldap & \#\\ - & \\ -hosts: files dns & \\ -networks: files & \\ - & \\ -protocols: db files & \\ -services: db files & \\ -ethers: db files & \\ -rpc: db files & \\ - & \\ -netgroup: nis & \\ -\end{longtable} -\end{center} - - -\newpage -The NSS-LDAP configuration is saved in /etc/nss-ldap.conf and a valid configuration for GOsa would be this: - -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{NSS Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{NSS Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{NSS Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -host ip.servidor.ldap & \# Here we will put our LDAP server LDAP\\ -base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Here is where are going to go the users and\\ - & \# their passwords. OU means organizational\\ - & \# unit and OU=people is the place where\\ - & \# GOsa save the characteristics of the users\\ -ldap\_version 3 & \# Supported Version of LDAP \\ - & \# (the use of version 3 is recommended)\\ -nss\_base\_passwd ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \# Where we search for POSIX characteristics\\ -nss\_base\_shadow ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \# Where we search for the passwords\\ -nss\_base\_group ou=groups,dc=CHAOSDIMENSION,DC=ORG?one & \# Where is the POSIX group characteristics\\ -\end{longtable} -\end{center} - -PAM (Pluggable Authentication Modules) is a package of dynamic libraries that allow to system administrators to choose in which way the applications authenticates the users. - -PAM is in all the distributions, save the configurations of each module in /etc/pam.d and have the dynamic libraries in /lib/security. - -We are going to concentrate on one of the PAM modules: pam\_ldap. This module will serve to us so that the applications that don't use LDAP and use the system base of authentication and control of sessions, indirectly accede LDAP for authentication. - -With PAM\_LDAP and the infrastructure of PAM we gain that POSIX users of the system, work through LDAP and they can be created with GOsa. - -PAM\_LDAP can be downloaded from \htmladdnormallink{http://www.padl.com/OSS/pam\_ldap.html}{http://www.padl.com/OSS/pam\_ldap.html}, we decompressed it is /usr/src and we executed the clasic: \\ - -\#./configure \&\& make \&\& make install\\ -\\ -The configuration of this module will be in /etc/pam\_ldap.conf, a basic working configuration will be like this: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{PAM Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -host ip.servidor.ldap & \# Here we put where will be our LDAP server\\ -base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Here is where are going to go the users and their passwords.\\ - & \# OU means organizational unit\\ - & \# and OU=people is the place where GOsa\\ - & \# save the users characteristics\\ -ldap\_version 3 & \# Supported Version of LDAP (very recommended version 3)\\ -scope one & \# In gosa the users are at the same level, we did not need to descend.\\ -rootbinddn cn=ldapadmin,dc=solaria,dc=es & \# Here is the LDAP administrator DN of the server,\\ - & \# is necessary, since the server\\ - & \# will give access to the encrypted passwords to the administrator.\\ -pam\_password md5 & \# Indicate as password are encrypted.\\ -\end{longtable} -\end{center} - - -In the file /etc/secret we will put the LDAP administrator password, this file, like the previous one only could be accessible by root. - -Now, in order to be able to use LDAP authentication with the services, we will have to configure three pam configuration files:\\ -Control of accounts /etc/pam.d/common-account: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{PAM common-account Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM common-account Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM common-account Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -account required pam\_unix.so & \# Always required\\ -account sufficient pam\_ldap.so & \# The calls to ldap\\ -\end{longtable} -\end{center} - - -Authentication control /etc/pam.d/common-auth: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{PAM common-auth Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM common-auth Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM common-auth Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -auth sufficient pam\_unix.so & \# Authentication Standar\\ -auth sufficient pam\_ldap.so try\_first\_pass & \# LDAP Authentication in the first attempt\\ -auth required pam\_env.so & \\ -auth required pam\_securetty.so & \\ -auth required pam\_unix\_auth.so & \\ -auth required pam\_warn.so & \\ -auth required pam\_deny.so & \\ -\end{longtable} -\end{center} - - -Session control /etc/pam.d/common-session: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{PAM common-session Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM common-session Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{PAM common-session Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -session required pam\_limits.so & \\ -session required pam\_unix.so & \# Standar UNIX session\\ -session optional pam\_ldap.so & \# LDAP based session\\ -\end{longtable} -\end{center} - -This configuration will be necessary to use POSIX and SAMBA at least. -\newpage -\subsection{Replication} - -If we have more that one domain we must have a distributed structure, that is more efficient against failures. A basic structure would be a master server with a complete LDAP tree and servers with LDAP subtrees that only have the part of the tree for the domain they control. - -This way GOsa controls the master server and the domain servers through a process called replication. - -The replication is made in the configuration of ldap, but it is not executed by the daemon slapd, but another one called slurp. Its configuration is made in the database that we want to replicate, like in the basic example we have only configured a database that will be added at the end of the configuration file /etc/ldap/slapd.conf: - -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Replica Configuration}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Replica Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Replica Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -\# Replica configuration & \\ -\#Used by init scripts to stop and to start the server. & \\ -replica-pidfile /var/run/slurp.pid & \\ - & \\ -\# Arguments passed to the server. & \\ -replica-argsfile /var/run/slapd.args & \\ - & \\ -\# Place where we recorded the log of replica, is used by slurpd & \\ -replogfile /var/lib/ldap/replog & \\ -\# The replicas & \\ -\# Slave1 replica indication & \\ -replica & \\ -\#URI direction of slave1 & \\ -uri=ldap://ip.server.slave1 & \\ -\#That we are going to reply & \\ -\# from the master server & \\ -suffix=" dc=domain1,dc=CHAOSDIMENSION,dc=ORG" & \\ -\#How we are going to authenticate & \\ -bindmethod=simple & \\ -\# reply DN of the slave1 & \\ -binddn=\verb|"cn=esclavo1,ou=people,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\ -\#Password of slave1 reply DN & \\ -credentials=" tester" & \\ -\# Slave2 replica indication & \\ -replica & \\ -uri=ldap://ip.server.slave2 & \\ -suffix=" dc=domain2,dc=CHAOSDIMENSION,dc=ORG" & \\ -bindmethod=simple & \\ -binddn=\verb|"cn=esclavo2,ou=people,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\ -credentials=" tester" & \\ -\end{longtable} -\end{center} - - -By simplicity we suppose that both slaved servers are configured like the master, excepted the replica configuration of the master and the indications at the slaves of who is the master server. - -In the slaved servers we must add at the end of /etc/ldap/slapd.conf: - -In slave 1:\\ - -\begin{tabular}{|ll|}\hline -\# Who can update the server & \\ -updatedn \verb|"cn=slave1,dc=domain1,dc=CHAOSDIMENSION,dc=ORG"| & \\ -\# From where & \\ -updateref ldap://ip.server.master & \\ -\#Access allow & \\ -access to dn.subtree= " dc=domain1,dc=CHAOSDIMENSION,dc=ORG" & \\ -by dn= \verb|"cn=slave1,dc=domain1,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ -by * none & \\ -\hline\end{tabular} -\vspace{0.5cm} - -In slave 2:\\ - -\begin{tabular}{|ll|}\hline -\# Who can update the server & \\ -updatedn \verb|"cn=slave2,dc=domain2,dc=CHAOSDIMENSION,dc=ORG"| & \\ -\#From where & \\ -updateref ldap://ip.server.master & \\ -\#Access allow & \\ -access to dn.subtree= " dc=domain2,dc=CHAOSDIMENSION,dc=ORG" & \\ -by dn= \verb|"cn=slave2,dc=domain2,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ -by * none & \\ -\hline\end{tabular} -\vspace{0.5cm} - -Also we must create the replica users in the corresponding databases. That will be explained in the following point. - -\subsection{Data Load} - - -In this point we will give the initial data of our necessary LDAP tree for GOsa. Also we will show how upload the data and what to do in the case of a unique servant or in a case where there are replicas. - -The load can be done of two ways, one is trought of slapadd and the other is trought of ldapadd.\\ -In the first case the load is made against the database, this replication does not exist and then will not be update the data in LDAP server until is initiated again, \textbf{the load of data this way must be done with the server stopped}. In the second case, the load will be trought LDAP and it will update self and will be replicated in the pertinent way. - -For a load from zero of the database, we will have to do it from slapadd, with the daemon slapd stopped. - -The way slapadd must be used is: \\ - -\noindent \#slapadd -v -l fichero\_con\_datos.ldif\\ - -LDIF is the standard format to save data from LDAP. GOsa come with its own ldif of example, in following two points we will explain how it must be used for our necessities. -\vspace{1cm} - -\subsubsection{Server Alone} - -This is the most basic case, here isn't replication and only we need a single tree. In our example we will suppose that our GOsa tree is in dc=CHAOSDIMENSION, dc=ORG.\\ - -We will load the data with a script, called \htmladdnormallink{load.sh}{http://warping.sourceforge.net/gosa/contrib/en/load.sh}, this simplified the steps to load. The parameters of script will be: DN of the base, IMAP Server adn Kerberos Realm. -\begin{center} -\begin{longtable}{|l|}\hline -\caption{Load Data on Single Server Configuration}\\ -\hline \hline -\multicolumn{1}{|c|}{\textbf{Load Data on Single Server Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{1}{|c|}{\textbf{Load Data on Single Server Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{1}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -\#!/bin/sh\\ -\\ -if [ \$\{\#@\} != 3 ]\\ -then\\ -\verb| |echo "The parameters DN base, IMAP Server and Kerberos server are needed"\\ -\verb| |echo "For example: ./carga.sh dc=CHAOSDIMENSION,dc=ORG imap.solaria krb.solaria"\\ -\verb| |exit\\ -fi\\ -\\ -DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d\textbackslash, -f 1`\\ -IMAP=\$2\\ -KRB=\$3\\ -\\ -slapadd \verb|<<| EOF\\ -dn: \$1\\ -objectClass: dcObject\\ -objectClass: organization\\ -description: Base object\\ -dc: \$DC\\ -o: My own Organization\\ -\\ -dn: cn=terminal-admin,\$1\\ -objectClass: person\\ -cn: terminal-admin\\ -sn: Upload user\\ -description: GOto Upload Benutzer\\ -userPassword:: e2tlcmJlcm9zfXRlcm1pbmFsYWRtaW5AR09OSUNVUy5MT0NBTAo=\\ -\\ -dn: ou=systems,\$1\\ -objectClass: organizationalUnit\\ -ou: systems\\ -\\ -dn: ou=terminals,ou=systems,\$1\\ -objectClass: organizationalUnit\\ -ou: terminals\\ -\\ -dn: ou=servers,ou=systems,\$1\\ -objectClass: organizationalUnit\\ -ou: servers\\ -\\ -dn: ou=people,\$1\\ -objectClass: organizationalUnit\\ -ou: people\\ -\\ -dn: ou=groups,\$1\\ -objectClass: organizationalUnit\\ -ou: groups\\ -\\ -dn: cn=default,ou=terminals,ou=systems,\$1\\ -objectClass: gotoTerminal\\ -cn: default\\ -gotoMode: disabled\\ -gotoXMethod: query\\ -gotoRootPasswd: tyogUVSVZlEPs\\ -gotoXResolution: 1024x768\\ -gotoXColordepth: 16\\ -gotoXKbModel: pc104\\ -gotoXKbLayout: de\\ -gotoXKbVariant: nodeadkeys\\ -gotoSyslogServer: lts-1\\ -gotoSwapServer: lts-1:/export/swap\\ -gotoLpdServer: lts-1:/export/spool\\ -gotoNtpServer: lts-1\\ -gotoScannerClients: lts-1.\$DC.local\\ -gotoFontPath: inet/lts-1:7110\\ -gotoXdmcpServer: lts-1\\ -gotoFilesystem: afs-1:/export/home /home nfs exec,dev,suid,rw,hard,nolock,fg,rsize=8192 1 1\\ -\\ -dn: cn=admin,ou=people,\$1\\ -objectClass: person\\ -objectClass: organizationalPerson\\ -objectClass: inetOrgPerson\\ -objectClass: gosaAccount\\ -uid: admin\\ -cn: admin\\ -givenName: admin\\ -sn: GOsa main administrator\\ -sambaLMPassword: 10974C6EFC0AEE1917306D272A9441BB\\ -sambaNTPassword: 38F3951141D0F71A039CFA9D1EC06378\\ -userPassword:: dGVzdGVy\\ -\\ -dn: cn=administrators,ou=groups,\$1\\ -objectClass: gosaObject\\ -objectClass: posixGroup\\ -objectClass: top\\ -gosaSubtreeACL: :all\\ -cn: administrators\\ -gidNumber: 999\\ -memberUid: admin\\ -\\ -dn: cn=lts-1,ou=servers,ou=systems,\$1\\ -objectClass: goTerminalServer\\ -objectClass: goServer\\ -goXdmcpIsEnabled: true\\ -macAddress: 00:B0:D0:F0:DE:1D\\ -cn: lts-1\\ -goFontPath: inet/lts-1:7110\\ -\\ -dn: cn=afs-1,ou=servers,ou=systems,\$1\\ -objectClass: goNfsServer\\ -objectClass: goNtpServer\\ -objectClass: goLdapServer\\ -objectClass: goSyslogServer\\ -objectClass: goCupsServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:1C\\ -cn: afs-1\\ -goExportEntry: /export/terminals 10.3.64.0/255.255.252.0(ro,async,no\_root\_squash)\\ -goExportEntry: /export/spool 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ -goExportEntry: /export/swap 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ -goExportEntry: /export/home 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ -goLdapBase: \$1\\ -\\ -dn: cn=vserver-02,ou=servers,ou=systems,\$1\\ -objectClass: goImapServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:1F\\ -cn: vserver-02\\ -goImapName: imap://\$IMAP\\ -goImapConnect: {\$IMAP:143}\\ -goImapAdmin: cyrus\\ -goImapPassword: secret\\ -goImapSieveServer: \$IMAP\\ -goImapSievePort: 2000\\ -\\ -dn: cn=kerberos,ou=servers,ou=systems,\$1\\ -objectClass: goKrbServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:1E\\ -cn: kerberos\\ -goKrbRealm: \$KRB\\ -goKrbAdmin: admin/admin\\ -goKrbPassword: secret\\ -\\ -dn: cn=fax,ou=servers,ou=systems,\$1\\ -objectClass: goFaxServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:10\\ -cn: fax\\ -goFaxAdmin: fax\\ -goFaxPassword: secret\\ -\\ -dn: ou=incoming,\$1\\ -objectClass: organizationalUnit\\ -ou: incoming\\ -\\ -EOF\\ -\end{longtable} -\end{center} - - -\subsubsection{Master Server and two slaves} - -The data will be loaded with the same script of the previous section, in the master and in the slaves, with the following differences:\\ - -In the master "DC=CHAOSDIMENSION, dc=ORG" we will execute this script \htmladdnormallink{creating\_base.sh}{http://warping.sourceforge.net/gosa/contrib/en/creating\_base.sh} to create the base: \\ - -\begin{center} -\begin{longtable}{|l|}\hline -\caption{Create Base Configuration}\\ -\hline \hline -\multicolumn{1}{|c|}{\textbf{Create Base Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{1}{|c|}{\textbf{Create Base Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{1}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -\#!/bin/sh\\ -\\ -if [ \$\{\#@\} != 1 ]\\ -then\\ -\verb| |echo "Is needed the parameter base DN of the master"\\ -\verb| |echo "For example creating\_base.sh dc=CHAOSDIMENSION,dc=ORG"\\ -\verb| |exit\\ -fi\\ -\\ -DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d\textbackslash, -f 1`\\ -\\ -slapadd \verb|<<| EOF\\ -dn: \$1\\ -objectClass: dcObject\\ -objectClass: organization\\ -description: Base object\\ -dc: \$DC\\ -o: My own Base Organization\\ -EOF\\ -\end{longtable} -\end{center} - - -Also with the script of the previous section we will load the domains\\ "DC=domain1, DC=CHAOSDIMENSION, DC=ORG" and "DC=domain2, DC=CHAOSDIMENSION, DC=ORG". \\ - -In slave1 we will execute script with "DC=domain1, DC=CHAOSDIMENSION, DC=ORG" and in slave2 with "DC=domain2, DC=CHAOSDIMENSION, DC=ORG". In both cases both LDAP slave servers will be configured for their own DN.\\ - -At last we need to create the user for the replica, who could make it with the following script (\htmladdnormallink{user\_replica.sh}{http://warping.sourceforge.net/gosa/contrib/en/user\_replica.sh}) with the name of the user and the DN base: \\ - -\begin{center} -\begin{longtable}{|l|}\hline -\caption{Create replica user Configuration}\\ -\hline \hline -\multicolumn{1}{|c|}{\textbf{Create replica user Configuration}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{1}{|c|}{\textbf{Create replica user Configuration (continuation)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{1}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -\#!/bin/sh\\ -\\ -if [ \$\{\#@\} != 2 ]\\ -then\\ -\verb| |echo "Are needed the parameters name of user and DN base for replica"\\ -\verb| |echo "For example user\_replica.sh replicator dc=domain1,dc=CHAOSDIMENSION,dc=ORG"\\ -\verb| |exit\\ -fi\\ -\\ -KEY=`makepasswd --crypt --chars=7 \textbackslash\\ --string="abcdefghijklmnopqrstuvwxyz1234567890"`\\ -PASS=`echo \$KEY|awk '\{ print \$1\}'`\\ -CRYPT=`echo \$KEY|awk '\{ print \$2\}'`\\ - -echo "Creating user \$1 with password: \$PASS"\\ - -slapadd \verb|<<| EOF\\ -dn: cn=\$1,ou=people,\$2\\ -displayName: Debian User,,,\\ -userPassword: \{crypt\} \$CRYPT\\ -sambaLMPassword: \\ -sambaNTPassword: \\ -sn: \$1\\ -givenName: \$1\\ -cn: \$1\\ -homeDirectory: /home/\$1\\ -loginShell: /bin/false\\ -uidNumber: 10000\\ -gidNumber: 100\\ -gecos: \$1\\ -shadowMin: 0\\ -shadowMax: 99999\\ -shadowWarning: 7\\ -shadowInactive: 0\\ -shadowLastChange: 12438\\ -gosaDefaultLanguage: en\_EN\\ -uid: \$1\\ -objectClass: posixAccount\\ -objectClass: shadowAccount\\ -objectClass: person\\ -objectClass: organizationalPerson\\ -objectClass: inetOrgPerson\\ -objectClass: gosaAccount\\ -objectClass: top\\ -EOF\\ -\end{longtable} -\end{center} - - diff --git a/doc/guide/admin/en/referencias_gosa.bib b/doc/guide/admin/en/referencias_gosa.bib deleted file mode 100644 index 8c8100b96..000000000 --- a/doc/guide/admin/en/referencias_gosa.bib +++ /dev/null @@ -1,109 +0,0 @@ -@Manual{x500, -title = {Understanding X.500 - The Directory}, -key = {x500}, -author = { D W Chadwick}, -} - -@TechReport{2251, -author = {Network Working Group}, -title = {Request for Comments: 2251. Lightweight Directory Access Protocol (v3)}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2251.txt}, -} - -@TechReport{2252, -author = {Network Working Group}, -title = {Request for Comments: 2252. Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2252.txt}, -} - -@TechReport{2253, -author = {Network Working Group}, -title = {Request for Comments: 2253. Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2253.txt}, -} - -@TechReport{2254, -author = {Network Working Group}, -title = {Request for Comments: 2254. The String Representation of LDAP Search Filters}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2254.txt}, -} - -@TechReport{2255, -author = {Network Working Group}, -title = {Request for Comments: 2255. The LDAP URL Format}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2255.txt}, -} - -@TechReport{2256, -author = {Network Working Group}, -title = {Request for Comments: 2256. A Summary of the X.500(96) User Schema for use with LDAPv3}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2256.txt}, -} - -@TechReport{3377, -author = {Network Working Group}, -title = {Request for Comments: 3377. Lightweight Directory Access Protocol (v3): Technical Specification}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc3377.txt}, -} - -@TechReport{llh, -author = {Luiz Ernesto Pinheiro Malère}, -title = {LDAP Linux HOWTO}, -institution = {}, -year = {}, -address = {http://www.tldp.org/HOWTO/LDAP-HOWTO/index.html}, -} - -@TechReport{ul, -author = {metaconsultancy}, -title = {Using OpenLDAP}, -institution = {}, -year = {}, -address = {http://www.metaconsultancy.com/whitepapers/ldap.htm}, -} - -@TechReport{oag, -author = {The OpenLDAP Project}, -title = {OpenLDAP 2.2 Administrator's Guide}, -institution = {}, -year = {}, -address = {http://www.openldap.org/doc/admin22/index.html}, -} - -@TechReport{lscp, -author = {Sergio González González}, -title = {Integración de redes con OpenLDAP, Samba, CUPS y PyKota}, -institution = {}, -year = {}, -address = {http://es.tldp.org/Tutoriales/doc-openldap-samba-cups-python/html/ldap+samba+cups+pykota.html}, -} - -@TechReport{ssldoc, -author = {OpenSSL Project}, -title = {OpenSSL Documents}, -institution = {}, -year = {}, -address = {http://www.openssl.org/docs/}, -} - -@TechReport{2616, -author = {Network Working Group}, -title = {Request for Comments: 2616. Hypertext Transfer Protocol -- HTTP/1.1}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2616.txt}, -} diff --git a/doc/guide/admin/es/manual_gosa_es.tex b/doc/guide/admin/es/manual_gosa_es.tex deleted file mode 100644 index 01f609c35..000000000 --- a/doc/guide/admin/es/manual_gosa_es.tex +++ /dev/null @@ -1,120 +0,0 @@ -\documentclass[a4paper,spanish,10pt]{book} - -\usepackage[latin1]{inputenc} -\usepackage[T1]{fontenc} -\usepackage[pdftex]{graphicx} -\usepackage[spanish]{babel} -\usepackage{times} -\usepackage{multirow} -\usepackage[latex2html,backref,pdftitle={GOsa}]{hyperref} -\usepackage{html,color} -\usepackage{latexsym} -\usepackage{anysize} -\usepackage{float} -\usepackage{longtable} -\usepackage{fancyvrb} - -\author{Alejandro Escanero Blanco} -\title{Administración de Sistemas con GOsa } -\date{28-03-05} - -\marginsize{3cm}{2cm}{2.5cm}{2.5cm} - -\begin{document} -\renewcommand{\contentsname}{Índice General} -\renewcommand{\listfigurename}{Lista de Figuras} -\renewcommand{\listtablename}{Lista de Tablas} -\renewcommand{\bibname}{Bibliografía} -\renewcommand{\indexname}{Índice Alfabético} -\renewcommand{\figurename}{Figura} -\renewcommand{\partname}{Parte} -\renewcommand{\chaptername}{Capítulo} -\renewcommand{\appendixname}{Apéndice} -\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 -\newpage -\listoffigures -\newpage -\listoftables -\newpage - -\chapter*{Preámbulo} - -\htmladdnormallink{GOsa}{http://gosa.gonicus.de}, es un proyecto creado en el año 2001 por Cajus Pollmeier \htmladdnormallink{Cajus Pollmeier}{mailto://pollmeier@gonicus.de} - -En su versión 1.0 era un proyecto ambicioso, pero mal enfocado. Entre como desarrollador del proyecto en Junio del 2003 en las primeras versiones de la versión 1.99.xx. -El código fue rehecho completamente y se creo una nueva versión modular y extensible (basada en plugins) y se optimizo enormemente su funcionamiento. - -La versión actual de GOsa (a la fecha de la versión de este documento) es la 2.3. -Es capaz de gestionar gran cantidad de servicios como samba2/3, pureftpd, postfix, cyrus-imap, posix, etc. -Y cuenta con un pequeño, pero muy activo grupo de desarrolladores dirigido por Cajus. - -\chapter{Introducción} -La administración de sistemas puede llegar a ser una tarea realmente complicada, demasiados usuarios con servicios y permisos diferentes. -\section{Copyright and Disclaimer} -Copyright (c) 2005 Alejandro Escanero Blanco. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". - -If you have questions, please visit the following url: http://www.gnu.org/licenses/fdl.txt\\ And contact at: \htmladdnormallink{blainett@yahoo.es}{mailto://blainett@yahoo.es} - -\include{manual_gosa_es_certificates} - -\include{manual_gosa_es_kerberos} - -\include{manual_gosa_es_ldap} - -\include{manual_gosa_es_apache} - -\chapter{GOsa} - -\include{manual_gosa_es_dns} -\include{manual_gosa_es_mail} -\include{manual_gosa_es_fileserver} -\include{manual_gosa_es_printing} -\include{manual_gosa_es_proxy} -\include{manual_gosa_es_gw} -\include{manual_gosa_es_ssh} -\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} - -\bibliography{referencias_gosa} -\bibliographystyle{unsrt} - -\end{document} diff --git a/doc/guide/admin/es/manual_gosa_es_apache.tex b/doc/guide/admin/es/manual_gosa_es_apache.tex deleted file mode 100644 index df71abad7..000000000 --- a/doc/guide/admin/es/manual_gosa_es_apache.tex +++ /dev/null @@ -1,822 +0,0 @@ -\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 a través 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 cada 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 época, 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 prácticamente en cualquier momento. GOsa no necesita estar siendo ejecutado en la misma máquina que lo tiene, mas -aun cada uno de los servidores que controla pueden estar en máquinas 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 propósito 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 contendrá algún tipo de hipermedia, el mas habitual es \htmladdnormallink{HTML}{http://www.w3.org/TR/1998/REC-html40-19980424/} (Lenguaje de marcas de hipertexto / HyperText Markup Language), un lenguaje pensado para la publicación con contenidos y para una fácil 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 numeroso grupo de desarrolladores, una \htmladdnormallink{ extensa documentación }{http://www.php.net/docs.php} y numerosos sitios webs con documentación y ejemplos. - -\newpage - -\section{Instalación } -\subsection{Descargando e Instalando Apache} -\label{down_apache} -Al igual que en el capítulo anterior, Apache está en prácticamente 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 - -Ejecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure-apache.sh} con las siguientes opciones. - -\begin{itemize} -\item[]Generales\\ -\begin{tabular}{|ll|}\hline ---enable-so & $\rightarrow$ Soporte de Objetos Dinámicos Compartidos (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 & \\ -\hline \end{tabular} - -\item[]Soporte suexec\\ -\begin{tabular}{|ll|}\hline ---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 & \\ -\hline \end{tabular} - -\item[] -\begin{longtable}{|ll|} -\hline -\multicolumn{2}{|c|}{\textbf{Módulos}}\\ -\hline -\endfirsthead -\hline -\endhead -\hline -\multicolumn{2}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot ---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 envío de la cabecera de expiración\\ ---enable-cern-meta=shared & $\rightarrow$ Ficheros meta tipo CERN\\ ---enable-mime-magic=shared & $\rightarrow$ Determina automáticamente el tipo MIME\\ ---enable-headers=shared & $\rightarrow$ Control cabeceras HTTP\\ ---enable-auth-anon=shared & $\rightarrow$ Acceso a usuarios anónimos\\ ---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 imágenes 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 según RFC2617\\ ---enable-actions=shared & $\rightarrow$ Activa acciones según peticiones\\ ---enable-file-cache=shared & $\rightarrow$ Cache de archivos\\ ---enable-cache=shared & $\rightarrow$ Cache dinámico de archivos\\ ---enable-disk-cache=shared & $\rightarrow$ Cache de disco\\ ---enable-mem-cache=shared & $\rightarrow$ Cache de memoria\\ -\hline \end{longtable} -\end{itemize} - -Una vez configurado, hacemos:\\ -\\ -\begin{tabular}{|l|}\hline -\#make \&\& make install\\ -\hline \end{tabular} -\newpage - - -\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 además de necesitar las librerías de desarrollo de la seccion Servidores \ref{servidores}, además de las mismas que para openLDAP\ref{down_ldap} y Apache\ref{down_apache} necesitaremos alguna librería 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 herramienta 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 descargamos 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 imágenes desde: \htmladdnormallink{http://www.boutell.com/gd/}{http://www.boutell.com/gd/} . -\item[libjpeg] -Manipulación de imágenes JPEG de \htmladdnormallink{http://www.ijg.org/}{http://www.ijg.org/} . -\item[libpng] -Manipulación imágenes PNG de \htmladdnormallink{http://www.libpng.org/pub/png/libpng.html}{http://www.libpng.org/pub/png/libpng.html} . -\item[mcal] -Librería para el acceso a Calendarios remotos, se baja de \htmladdnormallink{http://mcal.chek.com/}{http://mcal.chek.com/} . -\item[libmysql] -Soporte para la famosísima 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 será: - - -\begin{itemize} -\item[]Apache2\\ -\begin{tabular}{|ll|}\hline ---prefix=/usr --with-apxs2=/usr/bin/apxs2 & \\ ---with-config-file-path=/etc/php4/apache2 & \\ -\hline \end{tabular} - - - -\item[]Opciones de compilación\\ -\begin{tabular}{|ll|}\hline ---enable-memory-limit & \# Compilado con límite de memoria\\ ---disable-debug & \# Compilar sin símbolos de depuración\\ ---disable-static & \# Sin librerías 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 librerías adiciones al binario\\ ---without-mm & \# Desactivar el soporte de sesiones por memoria\\ -\hline \end{tabular} - -\item[]De sesión\\ -\begin{tabular}{|ll|}\hline ---enable-track-vars & \\ ---enable-trans-sid & \\ -\hline \end{tabular} - -\item[]Soporte\\ -\begin{tabular}{|ll|}\hline ---enable-sockets & \# Soporte de sockets\\ ---with-mime-magic=/usr/share/misc/file/magic.mime & \\ ---with-exec-dir=/usr/lib/php4/libexec & \\ -\hline \end{tabular} - -\item[]pear\\ -\begin{tabular}{|ll|}\hline ---with-pear=/usr/share/php & Donde vamos a instalar PEAR\\ -\hline \end{tabular} - -\item[]Funciones\\ -\begin{tabular}{|ll|}\hline ---enable-ctype & Soporte funciones de control de caracteres \\ ---with-iconv & Soporte funciones iconv\\ ---with-bz2 & Soporte Compresión BZ2\\ ---with-regex=php & Tipo de librería de expresiones regulares\\ ---enable-calendar & Funciones para conversión de calendario\\ ---enable-bcmath & Soporte de matemáticas 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 genérico\\ ---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\\ -\hline \end{tabular} - -\item[]Módulos externos\\ -\begin{tabular}{|ll|}\hline ---with-curl=shared,/usr & Manejo remoto 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 gráficos\\ ---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 varios algoritmos de generación de claves\\ ---with-mysql=shared,/usr & Soporte de base de datos Mysql\\ -\hline \end{tabular} -\end{itemize} -Posteriormente hacemos:\\ -\\ -\begin{tabular}{|l|}\hline -\#make \&\& make install\\ -\hline \end{tabular} -\newpage -\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[]Archivo apache2.conf:\\ -COnfiguración principal de apache2, tiene la configuración necesaria para arrancar apache.\\ -No necesitamos editar este archivo. -\item[]Archivo ports.conf\\ -Que puertos escucha apache, necesitamos dos, el puerto 80 para HTTP y el 443 para HTTPS, editaremos el ficheros, dejandolo como esto: -\begin{tabular}{|l|}\hline -Listen 80,443\\ -\hline \end{tabular} -\item[]Directorio conf.d:\\ -Directorio para configuraciones especiales, no lo necesitamos. -\item[]Directorios mods-available y mods-enabled:\\ -Este directorio tiene todos los módulos que podemos usar de apache2, para poder usar un módulo es necesario enlazar este al directorio mods-enabled. -\item[]Directorios sites-available y sites-enabled:\\ -En sites-available debemos configurar los sitios que vamos a usar.\\ -Por ejemplo vamos a crear el sitio no seguro gosa, que vamos a usar para redirigir las peticiones a un servidor seguro. - -La configuración de GOsa (sites-available/gosa) puede ser parecida a esta::\\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\\ -\verb| |Redirect /gosa https://gosa.chaosdimension.org/gosa\\ -\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\\ -\hline \end{tabular} - -Una vez sea guardada, podemos activarla haciendo esto:\\ -\\ -\begin{tabular}{|l|}\hline -\#>ln -s /etc/apache2/mods-available/suphp.conf /etc/apache2/mods-enabled/suphp.conf\\ -\hline \end{tabular} -\\ -\item[]Directorio ssl:\\ -Directorio de configuración de Secure Socket Layer, esto lo veremos en la siguiente sección. -\end{itemize} -\newpage -\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 encriptación, 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\\ -\\ -\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} -\\ -\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=/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\\ -\hline \end{tabular} -\\ -\noindent Después de varias cuestiones tendremos una CA, ahora hacemos un requerimiento a la CA creada:\\ -\\ -\begin{tabular}{|l|}\hline -\#>openssl req -new -keyout \$REQFILE -out \$REQFILE \$DAYS\\ -\hline \end{tabular} -\\ -\noindent Firmamos el nuevo certificado:\\ -\\ -\begin{tabular}{|l|}\hline -\#>openssl ca -policy policy\_anything -out \$CERFILE -infiles \$REQFILE\\ -\hline \end{tabular} -\\ -\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} -\\ -\noindent Este certificado se puede instalar en el cliente, y en el servidor web mediante la configuración explicada en el siguiente punto, nos dará la seguridad de que solo accederán aquellos clientes que nosotros deseamos y que su comunicación será 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:\\ -\\ -\begin{tabular}{|l|}\hline -\#> if [ -h /etc/apache2/mods-enabled/ssl.load ]; then echo "módulo instalado";else echo "módulo no instalado"; fi\\ -\hline \end{tabular} -\\ -\noindent Para activarlo haremos lo siguiente:\\ -\\ -\begin{tabular}{|l|}\hline -\#>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\\ -\hline \end{tabular} -\\ -\noindent Esto configurará el módulo en apache2 y se podrá utilizar después de recargar el servidor con:\\ -\\ -\begin{tabular}{|l|}\hline -\#>/etc/init.d/apache2 restart\\ -\hline \end{tabular} -\\ -\\ -\noindent Para el caso de querer solo una configuración para comunicación encriptada, crearemos en /etc/apache2/sites-available, gosa-ssl:\\ -\\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *:443\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\\ -\verb| |alias /gosa /usr/share/gosa/html\\ -\\ -\verb| |DocumentRoot /var/www/gosa.chaosdimension.org\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\verb| |SSLEngine On\\ -\verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ -\verb| |SSLCACertificatePath /etc/apache2/ssl/\\ -\verb| |SSLLogLevel error\\ -\verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ -\\ -\\ -\hline \end{tabular} -\\ -\noindent Para una comunicación encriptada en la cual verificamos el certificado del cliente: -\\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *:443\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\\ -\verb| |alias /gosa /usr/share/gosa/html\\ -\\ -\verb| |DocumentRoot /var/www/gosa.chaosdimension.org\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\verb| |SSLEngine On\\ -\verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ -\verb| |SSLCACertificatePath /etc/apache2/ssl/\\ -\verb| |SSLLogLevel error\\ -\verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ -\\ -\verb| |\\ -\verb| |\verb| |SSLVerifyClient require\\ -\verb| |\verb| |SSLVerifyDepth 1\\ -\verb| |\\ -\\ -\hline \end{tabular} - -\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 envía 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 provocaría al ser explotado un posible fallo del sistema, de esta manera el usuario entraría en el sistema con una cuenta no habilitada, sin permisos de ejecución y sin posibilidad 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: -\\ -\begin{tabular}{|l|}\hline -\#>./configure --prefix=/usr \textbackslash \\ -\verb| |--with-apxs=/usr/bin/apxs2 \textbackslash \\ -\verb| |--with-apache-user=www-data \textbackslash \\ -\verb| |--with-php=/usr/lib/cgi-bin/php4 \textbackslash \\ -\verb| |--sbindir=/usr/lib/suphp \textbackslash \\ -\verb| |--with-logfile=/var/log/suphp/suphp.log \textbackslash \\ -\verb| |-with-setid-mode \textbackslash \\ -\verb| |--disable-checkpath \\ -\hline \end{tabular} -\\ -\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:\\ -\\ -\begin{tabular}{|l|}\hline -\verb| |--prefix=/usr --enable-force-cgi-redirect --enable-fastcgi \textbackslash\\ -\verb| |--with-config-file-path=/etc/php4/cgi\\ -\hline \end{tabular} - -\noindent Para configurarlo en apache haremos igual que para ssl, primero comprobamos si está configurado:\\ -\\ -\begin{tabular}{|l|}\hline -\#> if [ -h /etc/apache2/mods-enabled/suphp.load ]; then echo "módulo instalado";else echo "módulo no instalado"; fi\\ -\hline \end{tabular} -\\ -\noindent Para activarlo haremos lo siguiente:\\ -\\ -\begin{tabular}{|l|}\hline -\#>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\\ -\hline \end{tabular} -\\ -\noindent Esto configurará el módulo en apache2 y se podrá utilizar después de recargar el servidor con:\\ -\\ -\begin{tabular}{|l|}\hline -\#>/etc/init.d/apache2 restart\\ -\hline \end{tabular} -\\ - -\noindent La configuración del sitio seguro con suphp incluido quedaría así:\\ -\\ -\begin{tabular}{|l|}\hline -\noindent NameVirtual *:443\\ -\\ -\verb| |ServerName gosa.chaosdimension.org\\ -\\ -\verb| |DocumentRoot /usr/share/gosa/html\\ -\verb| |alias /gosa /usr/share/gosa/html\\ -\verb| |CustomLog /var/log/apache/gosa.log combined\\ -\verb| |ErrorLog /var/log/apache/gosa.log\\ -\\ -\verb| |suPHP\_Engine on\\ -\\ -\verb| |SSLEngine On\\ -\verb| |SSLCertificateFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCertificateChainFile /etc/apache2/ssl/gosa.cert\\ -\verb| |SSLCertificateKeyFile /etc/apache2/ssl/gosa.key\\ -\verb| |SSLCACertificateFile /etc/apache2/ssl/gosa.ca\\ -\verb| |SSLCACertificatePath /etc/apache2/ssl/\\ -\verb| |SSLLogLevel error\\ -\verb| |SSLLog /var/log/apache2/ssl-gosa.log\\ -\\ -\verb| |\\ -\verb| |\verb| |SSLVerifyClient require\\ -\verb| |\verb| |SSLVerifyDepth 1\\ -\verb| |\\ -\\ -\hline \end{tabular} - -\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:\\ -\\ -\begin{tabular}{|l|}\hline -\verb| |\#useradd -d /usr/share/gosa/html gosa\\ -\verb| |\#passwd -l gosa\\ -\verb| |\#cd /usr/share/gosa\\ -\verb| |\#find /usr/share/gosa -name "*.php" -exec chown gosa {} ";"\\ -\verb| |\#find /usr/share/gosa -name "*.php" -exec chmod 600 {} ";"\\ -\hline \end{tabular} - - - -\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 será como esta: -\begin{center} -\begin{longtable}{|l|} -\caption{PHP4 Configuration}\\ -\hline -\multicolumn{1}{|c|}{\textbf{PHP4 Configuration}}\\ -\hline -\endfirsthead -\hline -\endhead -\hline -\multicolumn{1}{|c|}{Continue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{End}}\\ -\hline -\endlastfoot -; Engine\\ -\verb| |engine = On ; Activa PHP\\ -\verb| |short\_open\_tag = On ; Permite usar \\ -\verb| |precision = 14 ; Número de dígitos significantes mostrados en números en coma flotante\\ -\verb| |output\_buffering = Off ; Solo permitimos que envie cabecera antes de enviar el contenido.\\ -\verb| |implicit\_flush = Off ; No forzamos a php a que limpie el buffer de salida después de cada bloque.\\ -\\ -; Safe Mode\\ -\verb| |\label{sm} safe\_mode = Off ; No queremos el modo seguro\\ -\verb| |\label{smed} safe\_mode\_exec\_dir = ; Directorio donde se ejecutara PHP\\ -\verb| |\label{smid} safe\_mode\_include\_dir = Directorios donde hará la busqueda PHP de librerías\\ -\verb| |\label{smaev} safe\_mode\_allowed\_env\_vars = PHP\_ ; Solo se permite a los usuarios\\ -\verb| |\verb| |\verb| |;a crear variables del sistema que empiecen por PHP\_\\ -\verb| |\label{smpev} safe\_mode\_protected\_env\_vars = LD\_LIBRARY\_PATH ; Lista de variables del sistema que\\ -\verb| |\verb| |\verb| |; no pueden ser cambiadas por razones de seguridad\\ -\verb| |\label{df} disable\_functions = ; Funciones que serán desactivadas por razones de seguridad\\ -\verb| |\label{auf} allow\_url\_fopen = Yes ; Permitimos que se abran archivos desde PHP\\ -\verb| |\label{ob} open\_basedir = ;\\ -\\ -; Colores para el modo de síntasis coloreada.\\ -\verb| |highlight.string = \#DD0000\\ -\verb| |highlight.comment = \#FF8000\\ -\verb| |highlight.keyword = \#007700\\ -\verb| |highlight.bg = \#FFFFFF\\ -\verb| |highlight.default = \#0000BB\\ -\verb| |highlight.html = \#000000\\ -\\ -; Misc\\ -\verb| |\label{ep}expose\_php = On ; Indica en el mensaje del servidor web si está instalado o no.\\ -\\ -; Resource Limits ;\\ -\verb| |max\_execution\_time = 30 ; Tiempo máximo de ejecución del script.\\ -\verb| |memory\_limit = 16M ; La cantidad máxima permitida de memoria que puede consumir un script.\\ -\\ -; Error handling and logging ;\\ -\verb| |error\_reporting = E\_ALL; Indicamos que muestre todos los errores y avisos.\\ -\verb| |display\_errors = Off ; Que no los imprima en pantalla.\\ -\verb| |display\_startup\_errors = Off ; Que no muestre los errores de arranque de PHP.\\ -\verb| |log\_errors = On ; Que envíe los errores a un fichero.\\ -\verb| |track\_errors = On ; Que guarde el último error / aviso para \$php\_errormsg (boolean)\\ -\verb| |error\_log = /var/log/php/php4.log ; Fichero que guardará los errores\\ -\verb| |warn\_plus\_overloading = Off ; No avisamos si se usa el operador + con cadenas de texto\\ -\\ -; Data Handling ;\\ -\verb| |variables\_order = "EGPCS" ; Esta directiva describe el orden en el cual\\ -\verb| |;se registrarán las variables de PHP (Siendo G=GET, P=POST, C=Cookie,\\ -\verb| |; E= Sistema, S= Propias de PHP, todas es indicado como EGPCS)\\ -\verb| |\label{rg} register\_globals = Off ; No queremos que se registren las EGPCS como globales.\\ -\verb| |register\_argc\_argv = Off ; No declaramos ARGV y ARGC para su uso en scripts.\\ -\verb| |post\_max\_size = 8M ; Tamaño máximo de un envío POST que aceptará PHP.\\ - -; Magic quotes\\ -\verb| |\label{mqq}magic\_quotes\_gpc = On ; Comillas añadidas para gpc(información GET/POST/Cookie)\\ -\verb| |magic\_quotes\_runtime= Off ; Comillas añadidas para información generada por el sistema, \\ -\verb| |;por ejemplo desde SQL, exec(), etc.\\ -\verb| |magic\_quotes\_sybase = Off ; Usar comillas añadidas al estilo de Sybase \\ -\verb| |;(escapa ' con '' en lugar de \textbackslash ')\\ -\\ -; Tipo de archivo por defecto de PHP y codificación por defecto.\\ -\verb| |default\_mimetype = "text/html"\\ -\verb| |default\_charset = "iso-8859-1"\\ -\\ -; Rutas y directorios ;\\ -\verb| |\label{ip} include\_path = . ;\\ -\verb| |doc\_root = ; Raíz de las páginas php, mejor dejarlo en blanco.\\ -\verb| |user\_dir = ; Donde php ejecuta el script, tambien mejor en blanco.\\ -\verb| |;extension\_dir = /usr/lib/php4/apache ; ¿Donde estan los módulos?\\ -\verb| |enable\_dl = Off ; Permitir o no la carga dinámica de módulos con la función dl().\\ -\\ -; Subir ficheros al servidor;\\ -\verb| |file\_uploads = On ; Permitir el subir archivos al servidor.\\ -\verb| |upload\_max\_filesize = 2M ; Tamaño máximo de los archivos que vamos a subir.\\ -\\ -; Extensiones dinámicas ;\\ -\verb| |extension=gd.so ; Graficos\\ -\verb| |extension=mysql.so ; Mysql\\ -\verb| |extension=ldap.so ; Ldap\\ -\verb| |extension=mhash.so ; Mhash\\ -\verb| |extension=imap.so ; Imap\\ -\verb| |extension=kadm5.so ; Kerberos\\ -\verb| |extension=cups.so ; Cupsys\\ -\\ -; Log del sistema\\ -\verb|[Syslog]|\\ -\verb| |define\_syslog\_variables = Off ; Desactivamos la definición de variables de syslog.\\ -\\ -; funciones de correo\\ -\verb|[mail function]|\\ -\verb| |;sendmail\_path = ;En sistemas Unix, donde esta hubicado sendmail (por defecto es 'sendmail -t -i')\\ -\\ -; depuración\\ -\verb|[Debugger]|\\ -\verb| |debugger.host = localhost ; Donde está el depurador.\\ -\verb| |debugger.port = 7869 ; En que puerto escucha.\\ -\verb| |debugger.enabled = False ; En principio suponemos que no hay depurados.\\ -\\ -; Opciones SQL\\ -\verb|[SQL]|\\ -\verb| |sql.safe\_mode = Off ; Modo seguro de sql, en principio estará desactivado.\\ -\\ -; Opciones Mysql\\ -\verb|[MySQL]|\\ -\verb| |mysql.allow\_persistent = Off ; Desactivaremos los enlaces persistentes por razones de seguridad.\\ -\verb| |mysql.max\_persistent = -1 ; Numero de conexiones persistentes, no se usa por haberlas desactivado.\\ -\verb| |mysql.max\_links = -1 ; Numero máximo de conexiones, -1 es sin limite.\\ -\verb| |mysql.default\_port = 3306; Puerto por defecto del mysql.\\ -\verb| |mysql.default\_socket = ; Nombre de socket que se usaran para conexiones locales MySQL.\\ -\verb| |;Si está vacio se usara el que tengamos en la configuración de la compilación del PHP.\\ -\verb| |mysql.default\_host = ; No configuramos host por defecto.\\ -\verb| |mysql.default\_user = ; No configuramos usuario por defecto.\\ -\verb| |mysql.default\_password = ; No configuramos una contraseña por defecto.\\ -\\ -; Control de sesiones\\ -\verb|[Session]|\\ -\verb| |session.save\_handler = files ; Guardamos la información de sesión en ficheros.\\ -\verb| |\label{ss} session.save\_path = /var/lib/php4 ; Donde se van ha guardar los ficheros de sesión.\\ -\verb| |session.use\_cookies = 1 ; Usaremos cookies para el seguimiento de sesión.\\ -\verb| |session.name = PHPSESSID ; Nombre de la sesión que será usado en el nombre de la cookie.\\ -\verb| |session.auto\_start = 0 ; No iniciamos sesión automáticamente.\\ -\verb| |session.cookie\_lifetime = 0 ; Tiempo de vida de una cookie de sesión o 0 si esperamos a que cierre el navegador.\\ -\verb| |session.cookie\_path = / ; La ruta para que es válida la cookie.\\ -\verb| |session.cookie\_domain = ; El dominio para el cual es válida la cookie.\\ -\verb| |session.serialize\_handler = php ; Manipulador usado para serializar los datos.\\ -\verb| |session.gc\_probability = 1 ; Probabilidad en porcentaje de que el recolector de basura se active en cada sesión.\\ -\verb| |session.gc\_maxlifetime = 1440 ; Después de este tiempo en segundos, la información guardada\\ -\verb| |; será vista como basura para el recolector de basura.\\ -\verb| |session.referer\_check = ; Comprueba los Referer HTTP para invalidar URLs externas conteniendo ids\\ -\verb| |session.entropy\_length = 0 ; Número de bytes a leer del fichero de entropía.\\ -\verb| |session.entropy\_file = ; El fichero que generará la entropía.\\ -\verb| |session.cache\_limiter = nocache ; Sin cache de sessiones.\\ -\verb| |session.cache\_expire = 180 ; Tiempo de expiración del documento.\\ -\verb| |session.use\_trans\_sid = 0 ; Usar sid transportable si está activado en la compilación\\ -\\ -\end{longtable} -\end{center} - - -\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 muestra 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:\\ -\\ -\noindent \begin{tabular}{|l|}\hline -\verb| |\ref{mqq} magic\_quotes\_qpc = On\\ -\verb| |\ref{auf} allow\_url\_fopen = No\\ -\verb| |\ref{rg} register\_globals = Off\\ -\verb| |\ref{sm} safe\_mode = On\\ -\verb| |\ref{smid} safe\_mode\_include\_dir = "/usr/share/gosa:/var/spool/gosa"\\ -\verb| |\ref{smed} safe\_mode\_exec\_dir = "/usr/lib/gosa"\\ -\verb| |\ref{smaev} safe\_mode\_allowed\_env\_vars = PHP\_,LANG\\ -\verb| |\ref{ob} open\_basedir = "/etc/gosa:/var/spool/gosa:/var/cache/gosa:/usr/share/gosa:/tmp"\\ -\verb| |\ref{ip} include\_path = ".:/usr/share/php:/usr/share/gosa:/var/spool/gosa:/usr/share/gosa/safe\_bin"\\ -\verb| |\ref{df} disable\_functions = system, shell\_exec, passthru, phpinfo, show\_source\\ -\hline \end{tabular} -\\ -En el caso de que vayamos a usar SuPHP, debemos dar los siguientes permisos al directorio /var/lib/php4:\\ -\begin{tabular}{|l|}\hline -\#chmod 1777 /var/lib/php4\\ -\hline \end{tabular} - -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 recomienda 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 tendrá una importante carencia, la función getacl que da control sobre las carpetas, así 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://oss.gonicus.de/pub/gosa/patches/php4-imap-getacl.patch} y lo ponemos en /usr/src, como tenemos las fuentes de PHP en /usr/src, ejecutamos los siguientes comandos:\\ -\\ -\noindent \begin{tabular}{|l|}\hline -\#cd /usr/src/php4.3-XXX/extensions/imap\\ -\#make clear\\ -\#patch -p1 >| /etc/php4/apache2/php.init\\ -\#/etc/init.d/apache2 reload\\ -\hline \end{tabular} - - -\subsection{krb} - -MÓDULO OPCIONAL - -\indent Este módulo necesita tener instaladas las fuentes de kerberos del MIT, ya que no se puede compilar con las fuentes de kerberos de Heimdal. - -\indent El módulo interactuará con los servidores Kerberos para actualizar las claves de los usuarios creados. - -Se descargara de \htmladdnormallink{PECL}{http://pecl.php.net/kadm5}, y lo descomprimiremos en /usr/src, debemos tener tambien las fuentes del kerberos del MIT, las cuales descomprimiremos en /usr/src, con ello hacemos (sustituimos X.X por las respectivas versiones de los programas):\\ -\\ -\noindent \begin{tabular}{|l|}\hline -\#cd /usr/src/kadm5-0.X.X/scripting/php\\ -\#cp config.m4 config.m4.2\\ -\#sed \verb|s/krb5-1\.2\.4\/src\/include/krb5-1\.X\.X\/src\/lib/| config.m4.2 >config.m4\\ -\#rm -f config.m4.2\\ -\#phpize\\ -\#./configure\\ -\#make\\ -\#make install\\ -\#echo \verb|"extension=kadm5.so" >>| /etc/php4/apache2/php.ini\\ -\#/etc/init.d/apache2 reload\\ -\hline \end{tabular} - - diff --git a/doc/guide/admin/es/manual_gosa_es_certificates.tex b/doc/guide/admin/es/manual_gosa_es_certificates.tex deleted file mode 100644 index 534ef08d6..000000000 --- a/doc/guide/admin/es/manual_gosa_es_certificates.tex +++ /dev/null @@ -1,102 +0,0 @@ -\chapter{Seguridad y Certificados} -\section{Introduction SSL} -\section{Creación de certificados} -La seguridad es uno de los puntos mas importantes al configurar un servidor, necesitaremos un entorno seguro donde no permitir que los usuarios manipulen y accedan a codigo o programas. - -Una formas de conseguir esto es usando encriptación, 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. -\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 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 deleted file mode 100644 index de7195d5a..000000000 --- a/doc/guide/admin/es/manual_gosa_es_dns.tex +++ /dev/null @@ -1,304 +0,0 @@ -\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 deleted file mode 100644 index 9f05473c6..000000000 --- a/doc/guide/admin/es/manual_gosa_es_fileserver.tex +++ /dev/null @@ -1,11 +0,0 @@ -\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_ftp.tex b/doc/guide/admin/es/manual_gosa_es_ftp.tex deleted file mode 100644 index 3033e89cc..000000000 --- a/doc/guide/admin/es/manual_gosa_es_ftp.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Servidores de FTP - PureFtpd} \ No newline at end of file diff --git a/doc/guide/admin/es/manual_gosa_es_gw.tex b/doc/guide/admin/es/manual_gosa_es_gw.tex deleted file mode 100644 index fb764e739..000000000 --- a/doc/guide/admin/es/manual_gosa_es_gw.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Servicios de trabajo en grupo} \ No newline at end of file diff --git a/doc/guide/admin/es/manual_gosa_es_im.tex b/doc/guide/admin/es/manual_gosa_es_im.tex deleted file mode 100644 index 5c4e08a9d..000000000 --- a/doc/guide/admin/es/manual_gosa_es_im.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Servidores de mensajeria instantanea - Jabber} \ No newline at end of file diff --git a/doc/guide/admin/es/manual_gosa_es_kerberos.tex b/doc/guide/admin/es/manual_gosa_es_kerberos.tex deleted file mode 100644 index cc59a5654..000000000 --- a/doc/guide/admin/es/manual_gosa_es_kerberos.tex +++ /dev/null @@ -1,693 +0,0 @@ -\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} -¿Quién se conecta al servidor?\\ -¿Puedo estar seguro de que se puede confiar en el cliente, y el cliente en el servidor? - -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). - -\subsection{El problema del hombre de enmedio} -Si alguien ve tu usuario y tu contraseña puede hacer algo peor que simplemente ver que haces, puede suplantarte. - -El hombre de enmedio (man in the middle) es un sistema que esta entre el cliente y el servidor que coge las peticiones del cliente, las manipula y las envia al servidor, por supuesto tambien puede manipular lo que viene del servidor. - -\subsection{Caso 2: Las contraseñas tienen codificación simetrica} - -\begin{enumerate} -\item Mejora mucho la seguridad, cuanto mejor sea la encriptación sera mas seguro. -\item Aún así es problemático y deberia usarse bajo canales seguros. -\item ¿Como enviamos la clave con la que encriptamos la contraseña? -\item Si esta clave cae, se producira una situación como la del envio en texto plano, y volvemos a estar en situación de que un sistema intermedio tome nuestra personalidad. -\item Se considera segura a partir de 128bits de longitud. -\item No autentifica quien envio el mensaje. -\end{enumerate} - -\subsection{Caso 3: Cifrado por bloques (Hashes)} - -\begin{enumerate} -\item Las contraseñas se codifican de tal manera que no se puede volver a conseguir la contraseña por otro metodo que no sea la fuerza bruta. -\item Es menos problemático, pero deberia usarse solo bajo canales seguros. -\item Se envían de esta manera por la red, cualquiera puede identificar que es una contraseña e intentar romper por fuerza bruta la contraseña. -\item Sigue siendo sensible al problema del robo de identidad, ya que no autentifica quien envio el mensaje. -\item Se puede mejorar usando tecnicas de desafio, enviando antes de pedir la clave un codigo al usuario con el que mejorar la seguridad del código resultante. -\end{enumerate} - -\subsection{Caso 4: Cifrado Asimetrico, Certificados SSL} -\begin{enumerate} -\item Se dividen en dos partes: la privada, aquella con la que codificamos, y la publica, que es aquella con la que decodifican los mensajes los clientes. -\item Necesita logitudes de clave muy largas para ser seguros (>1024bits) y mucho mas tiempo de computación que los cifrados simetricos. -\item En la práctica se utilizan para el envio de la clave y despues los mensaje se envian con codificación simetrica. -\item Es mas resistente a sistemas intermedios, ya que este no puede acceder a la clave privada y por lo tanto no puede codificar mensajes. -\end{enumerate} - - -\subsection{Caso 5: Kerberos para identificación} -\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 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: - -\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} - -El cliente autentifica contra el AS, despues demuestra al TGS que esta autorizado para recibir el ticket para el servicio que quiere usar, y por último demuestra ante el SS que esta autorizado para usar el servicio. - -\subsection{Que es un ticket y como funciona Kerberos} - -\begin{enumerate} -\item[1.-] Un usuario introduce una clave y contraseña en el cliente. -\item[2.-] El Cliente usa un hash sobre la contraseña y la convierte en la clave secreta del cliente. -\item[3.-] El cliente envía un mensaje al AS pidiendo servicio para el cliente. -\item[4.-] El AS comprueba si el usuario existe en la base de datos. Si existe le envia dos mensajes al cliente.\\ -El mensaje A: Tiene una clave de sesión del TGS codificada usando la clave secreta del usuario.\\ -El mensaje B: (TGT)Ticket-Granting Ticket. Este incluye el identificador del cliente, la dirección de red es este, un periodo de valided, y la clave de sesión del TGS, todo codificado usando la clave secreta del TGS. -\item[5.-] El cliente recibe los mensajes A y B, con su clave secreta decodifica el mensaje A y coge la clave de sesión del TGS, con esta podra comunicarse con el TGS. Se observa que el cliente no puede decodificar el mensaje B al no tener la clave secreta del TGS. -\item[6.-] Cuando el cliente quiere usar algún servicio, envia los siguientes mensajes al TGS:\\ -Mensaje C: Compuesto por el TGT del mensaje B y el identificador de petición de servicio.\\ -Mensaje D: Autentificador (El cual está compuesto por el identificador del cliente y una marca horaria - timestamp -) codificado con la clave de sesión del TGS. -\item[7.-] Al recibir los dos mensajes, el TGS decodifica el autentificador usando la clave de sesión del usuario y envia los siguientes mensajes al cliente:\\ -Mensaje E: Ticket Cliente Servidor, que contiene el identificador del cliente, su dirección de red, un periodo de valided, y la clave de sesión del TGS, codificado usando la clave secreta del servidor.\\ -Mensaje F: Clave de sesión Cliente / Servidor codificada con la clave de sesión del TGS del cliente. -\item[8.-] Una vez recibidos desde el TGS los mensajes, el cliente tiene información suficiente para autentificarse ante el SS. El cliente se conectara al SS y le enviara los siguientes mensajes:\\ -Mensaje G: El ticket de cliente / servidor codificado con la clave secreta del servidor. (Mensaje E).\\ -Mensaje H: Un nuevo autentificador que contiene el identificador del cliente, una marca horaria y que esta codificado usando la clave de sesión cliente / servidor. -\item[9.-] El SS decodifica el Mensaje G usando su propia clave secreta y usando la clave Cliente/TGS en el mensaje F consigue la clave de sesion cliente/servidor, entonces le enviara el siguiente mensaje al cliente para confirmar su identidad:\\ -Mensaje I: La marca horaria del Autentificador mas 1, codificado usando la clave de sesión cliente/servidor. -\item[10.-] El cliente decodifica el mensaje de confirmación y comprueba si la marca horaria ha sido actualizada correctamente. Si todo es correcto, el cliente confiara en el servidor y puede comenzar a hacer peticiones al servidor. -\item[11.-] El servidor responde a las peticiones de ese cliente que ha sido autentificado. - -\end{enumerate} - -\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} - -\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} - -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: - -\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} - -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. - -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 deleted file mode 100644 index 4b88a9e99..000000000 --- a/doc/guide/admin/es/manual_gosa_es_ldap.tex +++ /dev/null @@ -1,1135 +0,0 @@ -\chapter{openLDAP} -\section{Introducción,¿Que es LDAP?} -\subsection{Servicios de Directorios, X.500} - -Un directorio es una base de datos especializada en busqueda de información basada en atributos.\\ - -X.500|ISO 9594\cite{x500} es un estándar de ITU-S(International Telecommunication Union - Telecommunication Standardisation Burean), anteriormente conocido como CCITT, para solucionar el problema de directorios. Basado en los trabajos realizados con X.400 (un directorio para correo electrónico) y los trabajos de ISO ( International Standards Organisation) y ECMA (European Computer Manufacturers Association).\\ - -El X.501|ISO 9594 parte 2. define los modelos de como debe estar organizada la información, el modelo de información de usuario, el modelo de información administrativa y el servicio de directorio, que define como debe estar distribuida la información entre varios sistemas.\\ - -En X.509|ISO 9594 parte 8. el estándar de autentificación y seguridad usado para SSL.\\ - -X.525|ISO 9594 parte 9. indica como debe ser la replicación entre sistemas.\\ - -En X.519|ISO 9594 parte 5. se definen los protocolos de comunicaciones, entre ellos el que mas nos importa que es DAP - El protocolo de acceso a directorios - que define que operaciones se pueden hacer con la conexión: bind, unbind, los objetos (entradas) y sus operaciones: añadir, eliminar, modificar, buscar, listar, comparar, etc.\\ - -DAP es un protocolo demasiado complejo para que se puedan hacer servidores y clientes para su uso para Internet, así que se crea un protocolo mas cómodo de manejar estos directorios: LDAP.\\ - -LDAP (Lightweight Directory Access Protocol / Protocolo de acceso a directorios ligero) es un protocolo pensado para actualización y busquedas de directorios orientados a Internet (TCP/IP).\\ - -La ultima versión de LDAP es la 3 y es cubierta por los RFCs: 2251\cite{2251}, 2252\cite{2252}, 2253\cite{2253}, 2254\cite{2254}, 2255\cite{2255}, 2256\cite{2256} y 3377\cite{3377}.\\ -\newpage -\subsection{Conceptos Básicos de LDAP} - -\begin{itemize} -\item[]Entrada\\ (Entry)\\ -Una entrada es una colección de atributos a los que se identifica por su DN (nombre distinguido / distinguished name). -Un DN es único en todo el árbol y por lo tanto identifica claramente la entrada a la que refiere. Como ejemplo: CN=Alex O=CHAOSDIMENSION C=ES identificaría al objeto de nombre común Alex que esta en la organización CHAOSDIMENSION y en país ES (España).\\ - -Un RDN( nombre distinguido relativo / relative distinguished name) es parte del DN, de tal manera que concatenando los RDN dan como resultado el DN. Del ejemplo anterior CN=Alex seria un RDN. - -\item[]Clase de objeto\\(Object Class)\\ -Una clase es un atributo especial (ObjectClass) que define que atributos son requeridos y permitidos en una entrada. Los valores de las clases objetos están definidos en el esquema. -Todas las entradas deben tener un atributo ObjectClass. -No se permite añadir atributos a las entradas que no permitidos por las definiciones de las clases de objetos de la entrada. - -\item[]Atributo\\(Attrib)\\ -Un atributo es un tipo con uno o mas valores asociados. -Se identifica por su OID ( identificador de objeto / object identifier). -El tipo de atributo indica si puede haber mas de un valor de este atributo en una entrada, los valores que pueden tener y como se los puede buscar. - -\item[]Esquema\\(Schema)\\ -Un esquema es una colección de definiciones de tipos de atributos, clases de objetos e información que el servidor usa para realizar las busquedas, introducir valores en un atributo, y permitir operaciones de añadir o modificar. - -\item[]Filtro\\(Filter)\\ -Para realizar una busqueda debemos tener en cuenta varios parámetros importantes: - -\begin{list}{}{} -\item[Base](baseObject)\\ -Un DN que sera a partir del cual realizaremos la busqueda. - -\item[Alcance](scope)\\ -Puede tener varios valores.\\- base: solo buscara en ese nivel base.\\- sub: hará busqueda recursiva por todo el árbol a partir del nivel base.\\- one: descenderá solo un nivel por debajo del nivel base. - -\item[Tamaño limite](sizelimit)\\ -Restringe el numero de entradas devueltas como resultado de una busqueda. - -\item[Tiempo limite](timelimit)\\ -Restringe el tiempo máximo de ejecución de una busqueda. - -\item[filtro](filter)\\ -Es una cadena que defina las condiciones que deben ser completadas para encontrar una entrada. - -\end{list} - -Los filtros se pueden concatenar con 'and', 'or' y 'not' para crear filtros mas complejos.\\ -Por ejemplo un filtro con base O=CHAOSDIMENSION, C=ES, alcance base y filtro (CN=Alex) encontraría la entrada -CN=Alex, O=CHAOSDIMENSION, C=ES.\\ - -\end{itemize} -\newpage -\subsection{Servidores de LDAP} - -LDAP esta soportado por numerosos servidores siendo los mas conocidos Active Directory de Microsoft, eDirectory de Novell, Oracle Internet Directory de Oracle, iPlanet directory server de SUN y por último pero no menos importante openLDAP. - -En este manual se tratara el uso e instalación de openLDAP, ya que esta soportado por prácticamente todas las distribuciones de linux y su licencia cumple el estándar openSource. - -Para mas información véase LDAP Linux HowTo\cite{llh}, Using LDAP\cite{ul}, openLDAP administrator Guide\cite{oag} y en español la parte relativa a LDAP del magnifico manual Ldap+Samba+Cups+Pykota\cite{lscp}. - -\section{Instalación} - -Las mayorías de las distribuciones tienen paquetes de openLDAP. Como usar apt-get en debian, Urpmi en Mandrake, up2date en redhat o Yast2 en Suse sale fuera de este manual. Así que este manual explicara los necesario para la construcción desde las fuentes. - -\subsection{Descargando openLDAP} -\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} \ref{down_ssl}. - -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. - -Necesitaremos por ultimo una base de datos para openLDAP, en lo que atañe a este manual esta será dada a través de las librerías de \htmladdnormallink{\textbf{Sleepycat Software Berkeley DB}}{http://www.sleepycat.com/}, las necesitaremos tanto si usamos LDBM (Berkeley DB versión 3) o BDB (Berkeley DB versión 4). También existen en la totalidad de distribuciones. - -Una vez obtenidas y compiladas las librerías necesarias nos bajamos las \htmladdnormallink{fuentes de openLDAP}{http://www.openldap.org/software/download/} en /usr/src (por ejemplo) y -descomprimimos en ese directorio (por ejemplo con tar -zxvf openldap-2.X.XX.tgz). -\newpage -\subsection{Opciones de instalación} - -La siguientes opciones son para openLDAP versión 2.2.xx que pueden diferir de las versiones 2.0.XX y 2.1.XX. - -Ejecutamos \htmladdnormallink{./configure}{http://warping.sourceforge.net/gosa/contrib/es/configure.sh} con las siguientes opciones. - -\begin{itemize} -\item[](Directorios)\\ -\begin{tabular}{|ll|}\hline ---prefix=/usr & \\ ---libexecdir='\${prefix}/lib' & \\ ---sysconfdir=/etc & \\ ---localstatedir=/var/run & \\ ---mandir='\${prefix}/share/man' & \\ ---with-subdir=ldap & \\ -\hline \end{tabular} - -\item[](Opciones Básicas)\\ -\begin{tabular}{|ll|}\hline ---enable-syslog & \\ ---enable-proctitle & \\ ---enable-ipv6 & $\rightarrow$Sockets IPv6\\ ---enable-local & $\rightarrow$Sockets Unix\\ ---with-cyrus-sasl & $\rightarrow$Autentificación Cyrus SASL soportadas\\ ---with-threads & $\rightarrow$Soporte de Hilos de ejecución\\ ---with-tls & $\rightarrow$Soporte TLS/SSL\\ ---enable-dynamic & $\rightarrow$Compilación dinámica\\ -\hline \end{tabular} - -\item[](Opciones Slapd)\\ -\begin{tabular}{|ll|}\hline ---enable-slapd & $\rightarrow$Compilar el servidor además de las librerías\\ ---enable-cleartext & $\rightarrow$Permite el envío de contraseñas en claro\\ ---enable-crypt & $\rightarrow$Envío de contraseñas encriptadas con DES.\\ ---enable-spasswd & $\rightarrow$Verificación de contraseñas a través de SASL\\ ---enable-modules & $\rightarrow$Soporte dinámico de módulos\\ ---enable-aci & $\rightarrow$Soporte de ACIs por objetos (Experimental)\\ ---enable-rewrite & $\rightarrow$Reescritura de DN en recuperación de LDAP\\ ---enable-rlookups & $\rightarrow$Busqueda inversa del nombre del equipo cliente\\ ---enable-slp & $\rightarrow$Soporte de SLPv2\\ ---enable-wrappers & $\rightarrow$Soporte TCP wrappers\\ -\hline \end{tabular} - -\item[](Soporte)\\ -\begin{tabular}{|ll|}\hline ---enable-bdb=yes & $\rightarrow$Soporte Berkeley versión 4\\ ---enable-dnssrv=mod & \\ ---enable-ldap=mod & $\rightarrow$Soporta otro servidor LDAP como base de datos\\ ---enable-ldbm=mod & \\ ---with-ldbm-api=berkeley & $\rightarrow$Soporte Berkeley versión 3\\ ---enable-meta=mod & $\rightarrow$Soporte metadirectorio\\ ---enable-monitor=mod & \\ ---enable-null=mod & \\ ---enable-passwd=mod & \\ ---enable-perl=mod & $\rightarrow$Soporte scripts en perl\\ ---enable-shell=mod & $\rightarrow$Soporte scripts en shell\\ ---enable-sql=mod & $\rightarrow$Soporte base de datos relacional\\ -\hline \end{tabular} -\end{itemize} - -Posteriormente hacemos:\\ -\#make \&\& make install -\newpage -\section{Configuración} -\subsection{Básica} - -\noindent La configuración del servidor slapd de openLDAP se guarda en /etc/ldap/slapd.conf.\\ - -\noindent Una \htmladdnormallink{configuración básica}{http://warping.sourceforge.net/gosa/contrib/es/basic_slapd.conf} quedaría así:\\ -\\ -\begin{center} -\begin{longtable}{|p{15cm}l|}\hline -\caption{Configuración Básica de openLDAP}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración Básica de openLDAP}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración Básica de openLDAP (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -\# Schema and objectClass definitions, configuración básica & \\ -include /etc/ldap/schema/core.schema & \\ -include /etc/ldap/schema/cosine.schema & \\ -include /etc/ldap/schema/inetorgperson.schema & \\ -include /etc/ldap/schema/openldap.schema & \\ -include /etc/ldap/schema/nis.schema & \\ -include /etc/ldap/schema/misc.schema & \\ - & \\ -\#Fuerza a las entradas a encontar eschemas para los ObjectClass & \\ -schemacheck on & \\ - & \\ -\# Password hash, tipo de encriptación de la clave & \\ -\# Puede ser: \{SHA\}, \{MD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ -password-hash \{CRYPT\} & \\ - & \\ -\# Base de busqueda por defecto & \\ -defaultsearchbase "dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\#Utilizado por init scripts para parar e iniciar el servidor. & \\ -pidfile /var/run/slapd.pid & \\ - & \\ -\# Argumentos pasados al servidor. & \\ -argsfile /var/run/slapd.args & \\ - & \\ -\# Nivel de logs & \\ -loglevel 1024 & \\ - & \\ -\# Donde y que módulos cargar & \\ -modulepath /usr/lib/ldap & \\ -moduleload back\_bdb \# Berkeley BD versión 4 & \\ - & \\ -\#definiciones de la base de datos & \\ -database bdb & \\ - & \\ -\# La base del directorio & \\ -suffix "dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\# Aquí definimos al administrador del directorio y su clave & \\ -\# En este ejemplo es " tester" & \\ -\# La clave se puede sacar con & \\ -\# makepasswd --crypt --clearfrom fichero\_con\_nombre usuario & \\ - & \\ -rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ -rootpw \{crypt\}OuorOLd3VqvC2 & \\ - & \\ -\# Que atributos indexamos para hacer busquedas & \\ -index default sub & \\ -index uid,mail eq & \\ -index cn,sn,givenName,ou pres,eq,sub & \\ -index objectClass pres,eq & \\ - & \\ -\# Directorio donde se guarda la base de datos & \\ -directory " /var/lib/ldap" & \\ - & \\ -\# Indicamos si deseamos guardar la fecha de la ultima modificación & \\ -lastmod off & \\ - & \\ -\#Acceso del administrador & \\ -access to * & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG" =wrscx| & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ - by * read & \\ -\end{longtable} -\end{center} - -\newpage -\subsection{Específica para GOsa} - -GOsa añade varios esquemas para el control de ciertos servicios y características de los usuarios.\\ - -Los esquemas necesarios para GOsa están en el paquete, en la seccion contrib, lo ideal será copiarlos todos a /etc/ldap/schema\\ - -Una \htmladdnormallink{configuración recomendada}{http://warping.sourceforge.net/gosa/contrib/es/gosa_slapd.conf} de /etc/ldap/slapd.conf es la siguiente:\\ - -\begin{center} -\begin{longtable}{|p{15cm}l|}\hline -\caption{Configuración Específica para GOsa}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración Específica para GOsa}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración Específica para GOsa (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -\# Schema and objectClass definitions, configuración básica & \\ -include /etc/ldap/schema/core.schema & \\ -include /etc/ldap/schema/cosine.schema & \\ -include /etc/ldap/schema/inetorgperson.schema & \\ -include /etc/ldap/schema/openldap.schema & \\ -include /etc/ldap/schema/nis.schema & \\ -include /etc/ldap/schema/misc.schema & \\ - & \\ -\# Estos esquemas deberían estar presentes en GOsa. En el caso de samba3 & \\ -\# se deben cambiar samba.schema y gosa.schema por samba3.schema & \\ -\# y gosa+samba3.schema. & \\ -include /etc/ldap/schema/samba3.schema & \\ -include /etc/ldap/schema/pureftpd.schema & \\ -include /etc/ldap/schema/gohard.schema & \\ -include /etc/ldap/schema/gofon.schema & \\ -include /etc/ldap/schema/goto.schema & \\ -include /etc/ldap/schema/gosa+samba3.schema & \\ -include /etc/ldap/schema/gofax.schema & \\ -include /etc/ldap/schema/goserver.schema & \\ - & \\ -\#Obliga al cumplimiento de los ObjectClass & \\ -schemacheck on & \\ - & \\ -\# Password hash, tipo de encriptación de la clave & \\ -\# Puede ser: \{SHA\}, \{SMD5\}, \{MD4\}, \{CRYPT\}, \{CLEARTEXT\} & \\ -password-hash \{CRYPT\} & \\ - & \\ -\# Base de busqueda por defecto & \\ -defaultsearchbase " dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\#Utilizado por init scripts para parar e iniciar el servidor. & \\ -pidfile /var/run/slapd.pid & \\ - & \\ -\# Argumentos pasados al servidor. & \\ -argsfile /var/run/slapd.args & \\ - & \\ -\# Nivel de logs & \\ -loglevel 1024 & \\ - & \\ -\# Donde y que módulos cargar & \\ -modulepath /usr/lib/ldap & \\ -moduleload back\_bdb \# Berkeley BD versión 4& \\ - & \\ -\# Algunos parámetros de rendimiento & \\ -threads 64 & \\ -concurrency 32 & \\ -conn\_max\_pending 100 & \\ -conn\_max\_pending\_auth 250 & \\ -reverse-lookup off & \\ -sizelimit 1000 & \\ -timelimit 30 & \\ -idletimeout 30 & \\ - & \\ -\# Limitaciones específicas & \\ -limits anonymous size.soft=500 time.soft=5 & \\ - & \\ -\# Definiciones de la base de datos & \\ -database bdb & \\ -cachesize 5000 & \\ -checkpoint 512 720 & \\ -mode 0600 & \\ - & \\ -\# La base del directorio & \\ -suffix " dc=CHAOSDIMENSION,dc=ORG" & \\ - & \\ -\# Aquí definimos al administrador del directorio y su clave & \\ -\# En este ejemplo es " tester" & \\ -\# La clave se puede sacar con & \\ -\# makepasswd --crypt --clearfrom fichero\_con\_nombre usuario & \\ - & \\ -rootdn \verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| & \\ -rootpw \{crypt\}OuorOLd3VqvC2 & \\ - & \\ -\# Que atributos indexamos para hacer busquedas & \\ -index default sub & \\ -index uid,mail eq & \\ -index gosaMailAlternateAddress,gosaMailForwardingAddress eq & \\ -index cn,sn,givenName,ou pres,eq,sub & \\ -index objectClass pres,eq & \\ -index uidNumber,gidNumber,memberuid eq & \\ -index gosaSubtreeACL,gosaObject,gosaUser pres,eq & \\ - & \\ -\# Indexing for Samba 3 -index sambaSID eq & \\ -index sambaPrimaryGroupSID eq & \\ -index sambaDomainName eq & \\ - & \\ -\# Quienes pueden cambiar las claves de usuario & \\ -\# Solo por el propio usuario si está autentificado & \\ -\# o por el administrador & \\ -access to attr=sambaPwdLastSet,sambaPwdMustChange,sambaPwdCanChange & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by anonymous auth & \\ - by self write & \\ - by * none & \\ -access to attr=userPassword,shadowMax,shadowExpire & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by anonymous auth & \\ - by self write & \\ - by * none & \\ - & \\ -\# Denegar acceso a las claves imap, fax o kerberos guardadas en & \\ -\# LDAP & \\ -access to attr=goImapPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by * none & \\ -access to attr=goKrbPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by * none & \\ -access to attr=goFaxPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by * none & \\ - & \\ -\# Permite que el servidor escriba el atributo LastUser & \\ -access to attr=gotoLastUser & \\ - by * write & \\ - & \\ -\#Las claves samba por defecto pueden ser cambiadas & \\ -\#por el usuario si se ha autentificado. & \\ -access to attr=sambaLmPassword,sambaNtPassword & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - by anonymous auth & \\ - by self write & \\ - by * none & \\ - & \\ -\# Permite acceso de escritura para administrador de terminales & \\ -access to dn=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ - by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - & \\ -access to dn.subtree=" ou=incoming,dc=CHAOSDIMENSION,dc=ORG" & \\ - by dn=\verb|"cn=terminal-admin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| write & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| write & \\ - & \\ -\# Directorio donde se guarda la base de datos & \\ -directory " /var/lib/ldap" & \\ - & \\ -\# Indicamos si deseamos guardar la fecha de la ultima modificación & \\ -lastmod off & \\ - & \\ -\# Acceso del administrador & \\ -access to * & \\ - by dn=\verb|"cn=ldapadmin,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ - by dn.regex=\verb|"uid=[^{}/]+/admin\+(realm=CHAOSDIMENSION.LOCAL)?"| =wrscx & \\ - by * read & \\ -\end{longtable} -\end{center} - -\section{Utilización} -\subsection{Configuración PAM/NSS} - -NSS (Librerías del servicio de seguridad en red / Network Security Service Libraries)\\ - -NSS es una parte básica del sistema, sirve para control de las cuentas POSIX, para poder usar LDAP para cuentas POSIX (del sistema) utilizaremos NSS\_LDAP, que se puede descargar de \htmladdnormallink{http://www.padl.com/OSS/nss\_ldap.html}{http://www.padl.com/OSS/nss\_ldap.html} , lo descomprimimos es /usr/src y ejecutamos:\\ - -\noindent \#cd /usr/src/nss\_ldap\\ -\noindent \#./configure \&\& make \&\& make install\\ - -La configuración básica de NSS esta en /etc/nsswitch.conf y debe quedar así para lo que nosotros queremos.\\ -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Configuración NSSWITCH}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración NSSWITCH}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración NSSWITCH (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot - -passwd: files ldap & \# Estas son las lineas que cambiamos para que haga peticiones ldap\\ -group: files ldap & \#\\ -shadow: files ldap & \#\\ - & \\ -hosts: files dns & \\ -networks: files & \\ - & \\ -protocols: db files & \\ -services: db files & \\ -ethers: db files & \\ -rpc: db files & \\ - & \\ -netgroup: nis & \\ -\hline \end{longtable} -\end{center} -\newpage -La configuración de nss-ldap se guarda en /etc/nss-ldap.conf y una configuración válida para GOsa quedaría así: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Configuración NSS}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración NSS}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración NSS (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -host ip.servidor.ldap & \# Aquí ponemos donde\\ - & \# estará nuestro servidor LDAP\\ -base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Aquí donde van a ir los usuarios y sus claves.\\ - & \# OU significa unidad organizativa\\ - & \# y OU=people es el lugar donde GOsa guarda las\\ - & \# caracteristicas de los usuarios\\ -ldap\_version 3 & \# Versión de LDAP soportada \\ - & \#(muy recomendado la versión 3)\\ -nss\_base\_passwd ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde buscamos las caracteristicas POSIX\\ -nss\_base\_shadow ou=people,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde buscamos las claves\\ -nss\_base\_group ou=groups,dc=CHAOSDIMENSION,DC=ORG?one & \#Donde las caracteristicas de los grupos POSIX\\ -\hline \end{longtable} -\end{center} - -PAM ( Módulos de autentificación conectables / Pluggable Authentication Modules) es una paquete de librerías dinámicas que permiten al administrador de sistema elegir en que manera las aplicaciones autentifican a los usuarios. - -PAM viene de serie en todas las distribuciones, en /etc/pam.d se guarda la configuración de cada módulo y en /lib/security las librerías dinámicas. - -Nos vamos a concentrar en uno de los módulos de PAM: pam\_ldap. Este módulo nos servirá para que las aplicaciones que usen el sistema base de autentificación y control de sesión y que no usen LDAP, indirectamente accedan a LDAP, como fuente de autentificación. - -Con PAM\_LDAP y la infraestructura de PAM conseguimos que los usuarios POSIX del sistema funcionen atraves de LDAP y se puedan configurar con GOsa. - -PAM\_LDAP se puede descargar de \htmladdnormallink{http://www.padl.com/OSS/pam\_ldap.html}{http://www.padl.com/OSS/pam\_ldap.html} , lo descomprimimos es /usr/src y ejecutamos el clásico:\\ - -\noindent \#cd /usr/src/pam\_ldap\\ -\noindent \#./configure \&\& make \&\& make install\\ -\\ -La configuración de este módulo estará en /etc/pam\_ldap.conf, una configuración básica que funcione con GOsa quedaría: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Configuración PAM}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -host ip.servidor.ldap & \# Aquí ponemos donde estará nuestro servidor LDAP\\ -base ou=people,dc=CHAOSDIMENSION,dc=ORG & \# Aquí donde van a ir los usuarios y sus claves.\\ - & \# OU significa unidad organizativa y OU=people\\ - & \# es el lugar donde GOsa guarda las caracteristicas de los usuarios\\ -ldap\_version 3 & \# Versión de LDAP soportada (muy recomendado la versión 3)\\ -scope one & \# En gosa los usuarios están al mismo nivel,\\ - & \# no necesitamos descender.\\ -rootbinddn cn=ldapadmin,dc=solaria,dc=es & \# Aquí está el DN del administrador LDAP del servidor,\\ - & \# es necesario, ya que el servidor solo\\ - & \# dará acceso a las claves encriptadas al administrador.\\ -pam\_password md5 & \# Indica como están encriptadas las claves.\\ -\hline \end{longtable} -\end{center} - -En el archivo /etc/secret pondremos la clave del administrador LDAP, este archivo, así como el anterior solo deberían ser accesibles por root. - -Para poder user ahora los servicios con la autentificación LDAP deberemos concentrarnos en tres archivos:\\ -Control de cuentas /etc/pam.d/common-account: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Configuración PAM common-account}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM common-account}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM common-account (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -account required pam\_unix.so & \# Siempre requerido\\ -account sufficient pam\_ldap.so & \# Las llamadas a ldap\\ -\hline \end{longtable} -\end{center} - -Control de autentificación /etc/pam.d/common-auth: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Configuración PAM common-auth}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM common-auth}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM common-auth (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -auth sufficient pam\_unix.so & \# Autentificación estandar\\ -auth sufficient pam\_ldap.so try\_first\_pass & \# Autentificacion LDAP en el primer intento\\ -auth required pam\_env.so & \\ -auth required pam\_securetty.so & \\ -auth required pam\_unix\_auth.so & \\ -auth required pam\_warn.so & \\ -auth required pam\_deny.so & \\ -\hline \end{longtable} -\end{center} - -Control de sesiones /etc/pam.d/common-session: -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Configuración PAM common-session}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM common-session}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración PAM common-session (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -session required pam\_limits.so & \\ -session required pam\_unix.so & \# Sesión unix estandar\\ -session optional pam\_ldap.so & \# Sesión basada en LDAP\\ -\hline \end{longtable} -\end{center} - -Esta configuración será necesaria al menos para configurar POSIX y SAMBA. -\newpage -\subsection{Replicación} - -Si tenemos mas de un dominio debemos tener una estructura mas distribuida que sea mas eficiente contra fallos. Una estructura básica sería un servidor maestro con el árbol LDAP completo y servidores con subárboles LDAP que solo tuvieran la parte del dominio que controlan. - -De esta manera GOsa controla el servidor maestro y a traves de un proceso llamado replicación los servidores de dominio. - -La replicación se configura en la configuración de ldap, pero no la ejecuta el demonio slapd, sino otro especializado llamado slurp. -Su configuración se realiza en la base de datos que queremos replicar, como en el ejemplo básico no hemos configurado mas que una base de datos solo tendríamos que añadir al final del fichero de configuración /etc/ldap/slapd.conf: - -\begin{center} -\begin{longtable}{|ll|}\hline -\caption{Configuración Replicación}\\ -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración Replicación}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{2}{|c|}{\textbf{Configuración Replicación (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{2}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{2}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -\#Configuración de réplica & \\ -\#Utilizado por init scripts para parar e iniciar el servidor. & \\ -replica-pidfile /var/run/slurp.pid & \\ - & \\ -\# Argumentos pasados al servidor. & \\ -replica-argsfile /var/run/slapd.args & \\ - & \\ -\#Lugar donde grabamos lo que se replica, y que usara slurpd & \\ -replogfile /var/lib/ldap/replog & \\ -\#Las configuraciones de réplica & \\ -\#Indicación de réplica & \\ -replica & \\ -\#Dirección URI del servidor & \\ -uri=ldap://ip.servidor.esclavo1 & \\ -\#Que vamos a replicar del maestro & \\ -suffix=" dc=dominio1,dc=CHAOSDIMENSION,dc=ORG" & \\ -\#Como vamos a autentificar & \\ -bindmethod=simple & \\ -\#DN replica del esclavo1 & \\ -binddn=\verb|"cn=esclavo1,ou=people,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\ -\#Contraseña del usuario & \\ -\# de replica de esclavo1 & \\ -credentials=" tester" & \\ -\#Indicación de réplica del esclavo2 & \\ -replica & \\ -uri=ldap://ip.servidor.esclavo2 & \\ -suffix=" dc=dominio2,dc=CHAOSDIMENSION,dc=ORG" & \\ -bindmethod=simple & \\ -binddn=\verb|"cn=esclavo2,ou=people,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\ -credentials=" tester" & \\ -\hline \end{longtable} -\end{center} - -Por simplicidad hemos supuesto que los dos servidores esclavos están configurados igual que el maestro, excepto por la configuración de replica del maestro y las indicaciones de los esclavos de quien es el servidor maestro. - -En los servidores esclavos añadimos al final del /etc/ldap/slapd.conf: - -En esclavo1:\\ -\begin{tabular}{|ll|}\hline -\#Quién puede actualizar el servidor & \\ -updatedn \verb|"cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| & \\ -\#Desde donde & \\ -updateref ldap://ip.servidor.maestro & \\ -\#Permitimos el acceso & \\ -access to dn.subtree= " dc=dominio1,dc=CHAOSDIMENSION,dc=ORG" & \\ -by dn= \verb|"cn=esclavo1,dc=dominio1,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ -by * none & \\ -\hline\end{tabular} -\vspace{0.5cm} - -En esclavo2:\\ -\begin{tabular}{|ll|}\hline -\#Quién puede actualizar el servidor & \\ -updatedn \verb|"cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| & \\ -\#Desde donde & \\ -updateref ldap://ip.servidor.maestro & \\ -\#Permitimos el acceso & \\ -access to dn.subtree= " dc=dominio2,dc=CHAOSDIMENSION,dc=ORG" & \\ -by dn= \verb|"cn=esclavo2,dc=dominio2,dc=CHAOSDIMENSION,dc=ORG"| =wrscx & \\ -by * none & \\ -\hline \end{tabular} -\vspace{1cm} - -Además debemos crear los usuarios de replica en las bases de datos correspondientes. Eso se vera en el siguiente punto. - -\subsection{Carga de datos} - -En este punto daremos los datos iniciales de nuestro árbol LDAP necesario para GOsa. -Tambien indicaremos de que manera hacer la carga de estos datos y que hacer en el caso de un servidor único o en el caso de que haya réplicas. - -La carga se puede hacer de dos maneras, una es atraves de slapadd y la otra es atraves de ldapadd.\\ -En el primer caso la carga se hace directamente sobre la base de datos con lo cual no existe replicación y ademas no se mostrarán los datos en el servidor LDAP hasta que este no sea iniciado nuevamente, \textbf{la carga de datos de esta manera debe ser hecha con el servidor apagado}.\\ -En el segundo caso, la carga se hace a traves de ldap y si hay replica esta se generara de la manera pertinente. - -Para una carga desde cero de la base de datos, deberemos hacerla desde slapadd, con el servidor slapd parado. - -La forma de usar slapadd es:\\ - -\noindent \#slapadd -v -l fichero\_con\_datos.ldif\\ - -LDIF es el formato estándar para guardar datos de LDAP. GOsa trae su propio ldif de ejemplo, en los siguientes dos puntos explicaremos como usarlo según nuestras necesidades. -\vspace{1cm} - -\subsubsection{Servidor Único} - -Es el caso mas básico, en el no hay replicación y solo necesitamos un árbol simple.\\ -En nuestro ejemplo supondremos que nuestro árbol GOsa está en dc=CHAOSDIMENSION,dc=ORG.\\ - -Cargaremos los datos con un script, le llamaremos \htmladdnormallink{carga.sh}{http://warping.sourceforge.net/gosa/contrib/es/carga.sh}, esto simplificara los pasos. -Los parámetros del script serán: DN de la base, Servidor IMAP,Realm Kerberos\\ - -\begin{center} -\begin{longtable}{|l|}\hline -\caption{Configuración Carga de Datos}\\ -\hline \hline -\multicolumn{1}{|c|}{\textbf{Configuración Carga de Datos}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{1}{|c|}{\textbf{Configuración Carga de Datos (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{1}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -\#!/bin/sh\\ -\\ -if [ \$\{\#@\} != 3 ]\\ -then\\ -\verb| |echo "Se necesita los parametro DN base, Servidor IMAP y Servidor Kerberos"\\ -\verb| |echo "Por ejemplo carga.sh dc=CHAOSDIMENSION,dc=ORG imap.solaria krb.solaria"\\ -\verb| |exit\\ -fi\\ -\\ -DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d \textbackslash , -f 1`\\ -IMAP=\$2\\ -KRB=\$3\\ -\\ -slapadd \verb|<<| EOF\\ -dn: \$1\\ -objectClass: dcObject\\ -objectClass: organization\\ -description: Base object\\ -dc: \$DC\\ -o: My own Organization\\ -\\ -dn: cn=terminal-admin,\$1\\ -objectClass: person\\ -cn: terminal-admin\\ -sn: Upload user\\ -description: GOto Upload Benutzer\\ -userPassword:: e2tlcmJlcm9zfXRlcm1pbmFsYWRtaW5AR09OSUNVUy5MT0NBTAo=\\ -\\ -dn: ou=systems,\$1\\ -objectClass: organizationalUnit\\ -ou: systems\\ -\\ -dn: ou=terminals,ou=systems,\$1\\ -objectClass: organizationalUnit\\ -ou: terminals\\ -\\ -dn: ou=servers,ou=systems,\$1\\ -objectClass: organizationalUnit\\ -ou: servers\\ -\\ -dn: ou=people,\$1\\ -objectClass: organizationalUnit\\ -ou: people\\ -\\ -dn: ou=groups,\$1\\ -objectClass: organizationalUnit\\ -ou: groups\\ -\\ -dn: cn=default,ou=terminals,ou=systems,\$1\\ -objectClass: gotoTerminal\\ -cn: default\\ -gotoMode: disabled\\ -gotoXMethod: query\\ -gotoRootPasswd: tyogUVSVZlEPs\\ -gotoXResolution: 1024x768\\ -gotoXColordepth: 16\\ -gotoXKbModel: pc104\\ -gotoXKbLayout: de\\ -gotoXKbVariant: nodeadkeys\\ -gotoSyslogServer: lts-1\\ -gotoSwapServer: lts-1:/export/swap\\ -gotoLpdServer: lts-1:/export/spool\\ -gotoNtpServer: lts-1\\ -gotoScannerClients: lts-1.\$DC.local\\ -gotoFontPath: inet/lts-1:7110\\ -gotoXdmcpServer: lts-1\\ -gotoFilesystem: afs-1:/export/home /home nfs exec,dev,suid,rw,hard,nolock,fg,rsize=8192 1 1\\ -\\ -dn: cn=admin,ou=people,\$1\\ -objectClass: person\\ -objectClass: organizationalPerson\\ -objectClass: inetOrgPerson\\ -objectClass: gosaAccount\\ -uid: admin\\ -cn: admin\\ -givenName: admin\\ -sn: GOsa main administrator\\ -sambaLMPassword: 10974C6EFC0AEE1917306D272A9441BB\\ -sambaNTPassword: 38F3951141D0F71A039CFA9D1EC06378\\ -userPassword:: dGVzdGVy\\ -\\ -dn: cn=administrators,ou=groups,\$1\\ -objectClass: gosaObject\\ -objectClass: posixGroup\\ -objectClass: top\\ -gosaSubtreeACL: :all\\ -cn: administrators\\ -gidNumber: 999\\ -memberUid: admin\\ -\\ -dn: cn=lts-1,ou=servers,ou=systems,\$1\\ -objectClass: goTerminalServer\\ -objectClass: goServer\\ -goXdmcpIsEnabled: true\\ -macAddress: 00:B0:D0:F0:DE:1D\\ -cn: lts-1\\ -goFontPath: inet/lts-1:7110\\ -\\ -dn: cn=afs-1,ou=servers,ou=systems,\$1\\ -objectClass: goNfsServer\\ -objectClass: goNtpServer\\ -objectClass: goLdapServer\\ -objectClass: goSyslogServer\\ -objectClass: goCupsServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:1C\\ -cn: afs-1\\ -goExportEntry: /export/terminals 10.3.64.0/255.255.252.0(ro,async,no\_root\_squash)\\ -goExportEntry: /export/spool 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ -goExportEntry: /export/swap 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ -goExportEntry: /export/home 10.3.64.0/255.255.252.0(rw,sync,no\_root\_squash)\\ -goLdapBase: \$1\\ -\\ -dn: cn=vserver-02,ou=servers,ou=systems,\$1\\ -objectClass: goImapServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:1F\\ -cn: vserver-02\\ -goImapName: imap://\$IMAP\\ -goImapConnect: {\$IMAP:143}\\ -goImapAdmin: cyrus\\ -goImapPassword: secret\\ -goImapSieveServer: \$IMAP\\ -goImapSievePort: 2000\\ -\\ -dn: cn=kerberos,ou=servers,ou=systems,\$1\\ -objectClass: goKrbServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:1E\\ -cn: kerberos\\ -goKrbRealm: \$KRB\\ -goKrbAdmin: admin/admin\\ -goKrbPassword: secret\\ -\\ -dn: cn=fax,ou=servers,ou=systems,\$1\\ -objectClass: goFaxServer\\ -objectClass: goServer\\ -macAddress: 00:B0:D0:F0:DE:10\\ -cn: fax\\ -goFaxAdmin: fax\\ -goFaxPassword: secret\\ -\\ -dn: ou=incoming,\$1\\ -objectClass: organizationalUnit\\ -ou: incoming\\ -\\ -EOF\\ -\hline \end{longtable} -\end{center} - -\subsubsection{Servidor Maestro y dos réplicas} - -La carga de datos se hará con el mismo script de la sección anterior, tanto en el maestro como en los esclavos, con las siguientes diferencias:\\ - -En el maestro por ejemplo "DC=CHAOSDIMENSION,DC=ORG" ejecutaremos este script \htmladdnormallink{crea\_base.sh}{http://warping.sourceforge.net/gosa/contrib/es/crea\_base.sh} para crear la base:\\ - -\begin{center} -\begin{longtable}{|l|}\hline -\caption{Configuración Crea Base Maestro}\\ -\hline \hline -\multicolumn{1}{|c|}{\textbf{Configuración Crea Base Maestro}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{1}{|c|}{\textbf{Configuración Crea Base Maestro (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{1}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -\#!/bin/sh\\ -\\ -if [ \$\{\#@\} != 1 ]\\ -then\\ -\verb| |echo "Se necesita el parámetro DN base del maestro"\\ -\verb| |echo "Por ejemplo crea\_base.sh dc=CHAOSDIMENSION,dc=ORG"\\ -\verb| |exit\\ -fi\\ -\\ -DC=`echo \$1|cut -d\textbackslash= -f 2|cut -d\textbackslash, -f 1`\\ -\\ -slapadd \verb|<<| EOF\\ -dn: \$1\\ -objectClass: dcObject\\ -objectClass: organization\\ -description: Base object\\ -dc: \$DC\\ -o: My own Base Organization\\ -\\ -EOF\\ -\hline \end{longtable} -\end{center} - -Además con el script de la sección anterior cargaremos los dominios de ejemplo:\\ "DC=dominio1,DC=CHAOSDIMENSION,DC=ORG" y "DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".\\ - -En el esclavo1 ejecutaremos el script con "DC=dominio1,DC=CHAOSDIMENSION,DC=ORG" y en esclavo2 con "DC=dominio2,DC=CHAOSDIMENSION,DC=ORG".\\ En ambos casos los dos servidores LDAP esclavos habrán sido configurados para su propio DN. - -Lo que nos faltaría seria crear el usuario para la replica, que se podría hacer con el siguiente script \htmladdnormallink{usuario\_replica.sh}{http://warping.sourceforge.net/gosa/contrib/es/usuario\_replica.sh} con parámetros nombre del usuario y el DN base: \\ - -\begin{center} -\begin{longtable}{|l|}\hline -\caption{Configuración Usuario Réplica}\\ -\hline \hline -\multicolumn{1}{|c|}{\textbf{Configuración Usuario Réplica}}\\ -\hline \hline -\endfirsthead -\hline \hline -\multicolumn{1}{|c|}{\textbf{Configuración Usuario Réplica (continuación)}}\\ -\hline \hline -\endhead -\hline -\multicolumn{1}{|c|}{Sigue $\ldots$}\\ -\hline -\endfoot -\hline -\multicolumn{1}{|c|}{\textbf{Fin}}\\ -\hline -\endlastfoot -\#!/bin/sh\\ -if [ \$\{\#@\} != 2 ]\\ -then\\ -\verb| |echo "Se necesita los parametros nombre de usuario y DN base para replica"\\ -\verb| |echo "Por ejemplo usuario\_replica.sh replicator dc=dominio1,dc=CHAOSDIMENSION,dc=ORG "\\ -\verb| |exit\\ -fi\\ -\\ -KEY=`makepasswd --crypt --chars=7 \textbackslash \\--string="abcdefghijklmnopqrstuvwxyz1234567890"`\\ -PASS=`echo \$KEY|awk '\{ print \$1 \}'`\\ -CRYPT=`echo \$KEY|awk '\{ print \$2 \}'`\\ -\\ -echo \verb|"Creando usuario $1 con contraseña: $PASS"|\\ -\\ -slapadd \verb|<<| EOF\\ -dn: cn=\$1,ou=people,\$2\\ -displayName: Debian User,,,\\ -userPassword: \{crypt\} \$CRYPT\\ -sambaLMPassword: \\ -sambaNTPassword: \\ -sn: \$1\\ -givenName: \$1\\ -cn: \$1\\ -homeDirectory: /home/\$1\\ -loginShell: /bin/false\\ -uidNumber: 10000\\ -gidNumber: 100\\ -gecos: \$1\\ -shadowMin: 0\\ -shadowMax: 99999\\ -shadowWarning: 7\\ -shadowInactive: 0\\ -shadowLastChange: 12438\\ -gosaDefaultLanguage: es\_ES\\ -uid: \$1\\ -objectClass: posixAccount\\ -objectClass: shadowAccount\\ -objectClass: person\\ -objectClass: organizationalPerson\\ -objectClass: inetOrgPerson\\ -objectClass: gosaAccount\\ -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 deleted file mode 100644 index 961bf30b9..000000000 --- a/doc/guide/admin/es/manual_gosa_es_mail.tex +++ /dev/null @@ -1,329 +0,0 @@ -\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} - -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 deleted file mode 100644 index 6bf1a5110..000000000 --- a/doc/guide/admin/es/manual_gosa_es_otros.tex +++ /dev/null @@ -1,27 +0,0 @@ -\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/manual_gosa_es_printing.tex b/doc/guide/admin/es/manual_gosa_es_printing.tex deleted file mode 100644 index 9362859cb..000000000 --- a/doc/guide/admin/es/manual_gosa_es_printing.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Servidores de impresión - Cupsys} \ No newline at end of file diff --git a/doc/guide/admin/es/manual_gosa_es_proxy.tex b/doc/guide/admin/es/manual_gosa_es_proxy.tex deleted file mode 100644 index 1933e7986..000000000 --- a/doc/guide/admin/es/manual_gosa_es_proxy.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Seguridad en la navegación web - Squid} \ No newline at end of file diff --git a/doc/guide/admin/es/manual_gosa_es_ssh.tex b/doc/guide/admin/es/manual_gosa_es_ssh.tex deleted file mode 100644 index c34998d14..000000000 --- a/doc/guide/admin/es/manual_gosa_es_ssh.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Servicios de terminal seguros - ssh} \ No newline at end of file diff --git a/doc/guide/admin/es/manual_gosa_es_vpn.tex b/doc/guide/admin/es/manual_gosa_es_vpn.tex deleted file mode 100644 index b1a3902a6..000000000 --- a/doc/guide/admin/es/manual_gosa_es_vpn.tex +++ /dev/null @@ -1 +0,0 @@ -\chapter{Conexiones remotas seguras - OpenVPN} \ No newline at end of file diff --git a/doc/guide/admin/es/referencias_gosa.bib b/doc/guide/admin/es/referencias_gosa.bib deleted file mode 100644 index e5fe1bcac..000000000 --- a/doc/guide/admin/es/referencias_gosa.bib +++ /dev/null @@ -1,182 +0,0 @@ -@Manual{x500, -title = {Understanding X.500 - The Directory}, -key = {x500}, -author = { D W Chadwick}, -} - -@TechReport{2251, -author = {Network Working Group}, -title = {Request for Comments: 2251. Lightweight Directory Access Protocol (v3)}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2251.txt}, -} - -@TechReport{2252, -author = {Network Working Group}, -title = {Request for Comments: 2252. Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2252.txt}, -} - -@TechReport{2253, -author = {Network Working Group}, -title = {Request for Comments: 2253. Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2253.txt}, -} - -@TechReport{2254, -author = {Network Working Group}, -title = {Request for Comments: 2254. The String Representation of LDAP Search Filters}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2254.txt}, -} - -@TechReport{2255, -author = {Network Working Group}, -title = {Request for Comments: 2255. The LDAP URL Format}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2255.txt}, -} - -@TechReport{2256, -author = {Network Working Group}, -title = {Request for Comments: 2256. A Summary of the X.500(96) User Schema for use with LDAPv3}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc2256.txt}, -} - -@TechReport{3377, -author = {Network Working Group}, -title = {Request for Comments: 3377. Lightweight Directory Access Protocol (v3): Technical Specification}, -institution = {}, -year = {}, -address = {http://www.ietf.org/rfc/rfc3377.txt}, -} - -@TechReport{llh, -author = {Luiz Ernesto Pinheiro Malère}, -title = {LDAP Linux HOWTO}, -institution = {}, -year = {}, -address = {http://www.tldp.org/HOWTO/LDAP-HOWTO/index.html}, -} - -@TechReport{ul, -author = {metaconsultancy}, -title = {Using OpenLDAP}, -institution = {}, -year = {}, -address = {http://www.metaconsultancy.com/whitepapers/ldap.htm}, -} - -@TechReport{oag, -author = {The OpenLDAP Project}, -title = {OpenLDAP 2.2 Administrator's Guide}, -institution = {}, -year = {}, -address = {http://www.openldap.org/doc/admin22/index.html}, -} - -@TechReport{lscp, -author = {Sergio González González}, -title = {Integración de redes con OpenLDAP, Samba, CUPS y PyKota}, -institution = {}, -year = {}, -address = {http://es.tldp.org/Tutoriales/doc-openldap-samba-cups-python/html/ldap+samba+cups+pykota.html}, -} - -@TechReport{ssldoc, -author = {OpenSSL Project}, -title = {OpenSSL Documents}, -institution = {}, -year = {}, -address = {http://www.openssl.org/docs/}, -} - -@TechReport{2616, -author = {Network Working Group}, -title = {Request for Comments: 2616. Hypertext Transfer Protocol -- HTTP/1.1}, -institution = {}, -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}, -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