SlideShare a Scribd company logo
1 of 36
Download to read offline
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org




        Instalación de servicios básicos en OpenBSD v.4.8




Autor : Astrid Eliana Sánchez Cortés
Correo electrónico: astrid.eliana@gmail.com

Fecha de creación : 09/01/08                                                                           Ultima modificación: 06/01/11


Índice de contenido
1.Licencia (BSD)..................................................................................................................................2
2.Introducción.......................................................................................................................................2
3.Configuración básica del sistema......................................................................................................2
   3.1.Configuración de la red .............................................................................................................3
         a.Interfaces de red...................................................................................................................3
         b.Gateway (puerta de enlace) y dns........................................................................................5
4.Instalando paquetes...........................................................................................................................6
   4.1.Configurando con los paquetes a la mano.................................................................................7
   4.2.Afterboot (despues de bootear la primera vez)..........................................................................8
         a.Creación de usuarios............................................................................................................8
         b.No root en SSH, poweroff y reinicio en kernel panic........................................................10
         c.Deshabilitar los servicios by default...................................................................................11
5.Servidor DHCP................................................................................................................................13
6.Comprobando rc.conf.local.............................................................................................................14
7.Servidor DNS..................................................................................................................................15
8.Servidor MySQL (Bases de Datos).................................................................................................19
   8.1.Aspectos importantes con MySQL..........................................................................................22
9.Servidor WEB: Apache en Chroot..................................................................................................22
   9.1.PHP v 5.0.................................................................................................................................22
   9.2.Apache v 1.3.x (versión por omisión)......................................................................................25
   9.3.Correos con PHP y MiniSendmail ..........................................................................................26
   9.4.Ejemplo con MySQL y PHP....................................................................................................27
10.NAT y Firewall (PF - Packet Filter)..............................................................................................29
11.Servidor Proxy (Squid)..................................................................................................................31
   11.1.Reportes con Sarg..................................................................................................................34
12.Enlaces relacionados.....................................................................................................................35
13.Historial del Documentación.........................................................................................................35
   13.1.Actualizaciones del documento.............................................................................................35




________________________________________________________________________________
                                                                                                                                                       1/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


1. Licencia (BSD)
Copyright (c) 2008, Astrid Eliana Sánchez ,

All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions
are met:
      •    Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
      •    Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
           disclaimer in the documentation and/or other materials provided with the distribution.
      •    Neither the name of the OpenBSD Colombia or the names of its contributors may be used to endorse or promote products
           derived from this software without specific prior written permission.
THIS    SOFTWARE     IS    PROVIDED    BY   THE     COPYRIGHT     HOLDERS      AND     CONTRIBUTORS
"AS    IS"   AND     ANY      EXPRESS   OR    IMPLIED     WARRANTIES,      INCLUDING,     BUT    NOT
LIMITED    TO,   THE     IMPLIED    WARRANTIES     OF    MERCHANTABILITY       AND     FITNESS   FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS      BE      LIABLE    FOR    ANY     DIRECT,     INDIRECT,     INCIDENTAL,     SPECIAL,
EXEMPLARY,     OR     CONSEQUENTIAL      DAMAGES      (INCLUDING,     BUT      NOT     LIMITED    TO,
PROCUREMENT      OF     SUBSTITUTE    GOODS     OR    SERVICES;    LOSS     OF    USE,    DATA,   OR
PROFITS;   OR   BUSINESS     INTERRUPTION)  HOWEVER      CAUSED     AND     ON   ANY     THEORY   OF
LIABILITY,    WHETHER       IN    CONTRACT,     STRICT     LIABILITY,    OR      TORT     (INCLUDING
NEGLIGENCE     OR   OTHERWISE)     ARISING   IN   ANY    WAY     OUT    OF    THE   USE     OF   THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.




2. Introducción
Hace algún tiempo, en la empresa en la que trabajaba decidimos cambiar el servidor, la función de
este servidor sería sencilla, solo debe proveer Internet para una red LAN relativamente pequeña,
con los servicios de DHCP, DNS, WEB, PROXY, NAT y FIREWALL.
La instalación en ese momento se hizo con la versión 4.2 de OpenBSD, y de esta salió la primera
versión de este documento detallando todo, o casi todo lo que hice para dejarlo en funcionamiento.
Esta versión nunca salió de mis manos, ahora se ve enriquecido por el trabajo de Fernando Quintero
quien lo ha mejorado y actualizado a la versión 4.3, ahora se encuentra actualizado a la versión 4.8,
con la ayuda de Esteban Calle. El público objetivo de este documento son personas que están dando
sus primeros pasos en OpenBSD, y que después de instalarlo no saben hacia donde ir, como yo
misma cuando me puse en esta tarea, sin embargo asumo que hay cierta familiaridad con el trabajo
en sistemas tipo Unix.
En este documento no se explicará para que sirve cada servicio, ni los comandos básicos que se
usen, también asumo que se tiene una teoría básica de redes y de servicios de red. El documento
inicia desde que el sistema esta en su instalación base, la instalación propia de OpenBSD está bien
explicada en otros documentos que puede encontrar en la comunidad OpenBSD Colombia.
Espero le sea útil a alguien, recibo comentarios, críticas y sugerencias en mi correo.
Mentiras, las criticas al /dev/null ;)


3. Configuración básica del sistema
Antes de comenzar la configuración de los servicios es necesario tener una configuración básica en
nuestro sistema. En este capítulo mostraré un poco de esto.




________________________________________________________________________________
 3.Configuración básica del sistema                                                                                                                 2/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


3.1. Configuración de la red
Esta configuración puede hacerse desde la instalación, sin embargo no está de más revisarla, y saber
como funciona. Siempre que se hace un cambio en la configuración de la red se debe ejecutar el
script /etc/netstart para que los cambios tengan efecto, o en su defecto reiniciar el sistema.


#sh /etc/netstart
o
#reboot



    a. Interfaces de red
La configuración de las tarjetas de red se encuentra en los archivos /etc/hostname.inteface, donde
inteface es el nombre de la interfaz, en OpenBSD dependen del fabricante de la tarjeta de red, así
que en cada equipo es diferente, para verificar como se llaman nuestras interfaces solo tenemos que
usar el comando ifconfig. La primera palabra que aparece antes de los dos puntos es el nombre de la
interfaz de red. No todas las interfaces que aparecen son físicas, algunas son usadas para procesos
internos del sistema operativo, como cifrar la información, generar logs, etc.
# ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200
        priority: 0
        groups: lo
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
vic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:0c:29:d7:94:53
        priority: 0
        groups: egress
        media: Ethernet autoselect
        status: active
        inet6 fe80::20c:29ff:fed7:9453%vic0 prefixlen 64 scopeid 0x1
        inet 192.168.200.131 netmask 0xffffff00 broadcast 192.168.200.255
vic1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:0c:29:d7:94:5d
        priority: 0
        media: Ethernet autoselect
        status: active
        inet 192.168.1.5 netmask 0xffffff00 broadcast 192.168.1.255


________________________________________________________________________________
3.Configuración básica del sistema                                                                                                              3/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


        inet6 fe80::20c:29ff:fed7:945d%vic1 prefixlen 64 scopeid 0x2
enc0: flags=0<>
        priority: 0
        groups: enc
        status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33200
        priority: 0
        groups: pflog


Por ejemplo yo tengo dos tarjetas de red, cuyos nombres son: vic0 y vic1.
vic0 esta en la red 192.168.200.131 (WAN)
vic1 esta en la red 192.168.1.5 (LAN)
Los archivos de configuración respectivos son entonces /etc/hostname.vic0 y /etc/hostname.vic0.


# ls -l /etc/hostname.*
-rw-r----- 1 root wheel 35 Nov 24 18:53 /etc/hostname.vic0
-rw-r----- 1 root wheel 5 Nov 26 14:28 /etc/hostname.vic1


Si el archivo correspondiente a la interfaz no aparece, simplemente lo creamos.
Para modificar los archivos de las interfaces debemos conocer las opciones disponibles, si
queremos aprender todas las posibles opciones, lo buscamos en el manual:


# man hostname.if
                                           literalmente se usa la palabra if.
Estos archivos tienen una sola línea con la siguiente información separada por espacios:
Familia de direcciones: inet o inet6 dependiendo si usamos IPv4 o IPv6
IP: La dirección IP asignada a la tarjeta de red
Dirección de broadcast, o la palabra NONE,
OPCIONES: Estas pueden consultarse en man hostname.if
Veamos un ejemplo:


# cat /etc/hostname.vic0
dhcp


Se puede ver que la interfaz vic1 se configura por DHCP completamente, así que ningún otra


________________________________________________________________________________
3.Configuración básica del sistema                                                                                                              4/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


opción es requerida.
Configuremos entonces la segunda interfaz:
# pico /etc/hostname.vic1
ksh: pico: not found


¿Qué sucedió?
Ah!, aún no tenemos el editor pico, OpenBSD trae como editor predeterminado a vi, que es el que
usaremos ahora, más adelante les mostraré como se instala pico o cualquier otro programa.
#vi /etc/hostname.vic0
inet 192.168.1.5 0xffffff00 192.168.1.255


Ahora recargo la configuración de red:
# sh /etc/netstart
DHCPREQUEST on vic0 to 255.255.255.255 port 67
DHCPACK from 192.168.200.254 (00:50:56:fe:4f:3a)
bound to 192.168.200.131 -- renewal in 900 seconds.


y confirmo la configuración de las interfaces:
# ifconfig -a


Guardando la configuración en estos archivos logramos que los cambios perduren después de
reiniciar. Finalmente:
# ls -la /etc/hostname.*
-rw-r----- 1 root wheel 35 Nov 24 18:53 /etc/hostname.vic0
-rw-r----- 1 root wheel 5 Nov 26 14:28 /etc/hostname.vic1
# cat /etc/hostname.vic0
dhcp
# cat /etc/hostname.vic1
inet 192.168.1.5 0xffffff00 192.168.1.255



  b. Gateway (puerta de enlace) y dns
Para configurar el gateway por defecto del sistema se usa el archivo /etc/mygate, se pone solo su
dirección IP. Por ejemplo:


# cat /etc/mygate


________________________________________________________________________________
3.Configuración básica del sistema                                                                                                              5/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


192.168.200.2


La configuración de los DNS que usará el sistema se hace en /etc/resolv.conf, usando la palabra
nameserver antes de cada dirección IP correspondiente, y poniendo uno por línea, por ejemplo:
# cat /etc/resolv.conf
search mi-isp.net.co
nameserver 192.168.200.2
lookup file bind


Una vez termine de configurar el servidor cambiaré todos los valores para que correspondan a la
nueva maquina que estoy configurando.


4. Instalando paquetes
En OpenBSD se manejan los paquetes binarios, con la herramienta pkg, que es el método
recomendado. Para compilarlos se mantiene el sistema de ports o portes, sin embargo se pueden
compilar por el método tradicional también (configure, make, make install).
Tanto si se va a instalar por pkg o por los ports debe mantenerse una consistencia entre la rama de
OpenBSD que se esté trabajando, sea Stable, Current, o Snapshot.
La instalación que yo tengo es de stable, la lista de paquetes disponibles se encuentran en:
ftp://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/
Como de costumbre hay varias maneras de hacer esto, y varias direcciones de mirrors donde
encontrar los paquetes, yo lo hago así:
# export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/
# pkg_add -v pico
pico-5.04p1:libiconv-1.13p1: ok                                                                                       pico-
5.04p1:gettext-0.18.1: ok                                                                                       pico-
5.04p1:aspell-0.60.6p4: ok                                                                                       pico-5.04p1:
ok
# pkg_add -v bash
Shell /usr/local/bin/bash appended to /etc/shells
bash-4.1.7p0: ok
# pkg_add -v wget
wget-1.12p0:libidn-1.11: ok
wget-1.12p0: ok


Primero verifico que tenga conectividad con el servidor ftp de OpenBSD y luego exporto la variable
PKG_PATH para que apunte al repositorio de Internet.
Se puede ver en el ejemplo la instalación de los paquetes pico, bash y wget.



________________________________________________________________________________
4.Instalando paquetes                                                                                                                    6/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Para la instalación por ports debe descargarse primero el archivo ports.tar.gz y descomprimirlo, así:
# pwd
/root
# wget ftp://ftp.openbsd.org/pub/OpenBSD/4.8/ports.tar.gz


Cuando la descarga esté completa se descomprime en /usr, SI, tiene que ser allí, de lo contrario el
sistema de portes puede fallar.
# cd /usr
# pwd
/usr
# tar xvzf /ruta/al/archivo/ports.tar.gz ...


De nuevo, hay varias formas de hacerlo, el proceso de instalación de los ports es muy simple, en
resumidas cuentas cuando se descomprime el archivo se crea un árbol de directorios en las que se
ubican todos los posibles programas por categorías, si por ejemplo quiero instalar el editor nano
desde los ports hago lo siguiente:
# ls /usr/ports/editors/nano/
CVS         Makefile distinfo patches pkg
# cd /usr/ports/editors/nano/
# pwd
/usr/ports/editors/nano
# make install
===> Checking files for nano-2.0.7
...


Con esto puedo instalar prácticamente cualquier paquete, hay opciones más avanzadas pero salen
del alcance de este documento. Existe un documento donde se explica acerca de la diferencia entre
ports y paquetes y otros fundamentos de OpenBSD, ese documento lo pueden encontrar en el sitio
de documentos de OpenBSD Colombia1.

4.1. Configurando con los paquetes a la mano
Una forma de acelerar el trabajo en la configuración del servidor es tener los paquetes requeridos a
la mano, para esto es recomendable descargar todos los paquetes disponibles para la versión en la
que se esté trabajando, o disponer de buena conexión a Internet .
En mi caso he descargado todos los paquetes usando el software wget y los he puesto en un
servidor web dentro de red local, de esta forma para acceder a ellos solo debo exportar la variable
PKG_PATH para que apunte a este repositorio y luego usar el comando pkg_add para instalar los
paquetes que necesito.

1 http://groups.google.com/group/OpenBSD-Colombia/files

________________________________________________________________________________
4.Instalando paquetes                                                                                                                     7/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


# export PKG_PATH=http://192.168.0.4/paquetes/
# pkg_add -v bash
Shell /usr/local/bin/bash appended to /etc/shells
bash-4.1.7p0: ok
# bash
bash-4.1#


Hay que recordar que siempre puedo ir a Internet a descargar los paquetes, pero es más rápido si ya
lo tengo de forma local, en nuestra intranet o en un disco duro externo.

4.2. Afterboot (despues de bootear la primera vez)
Lo siguiente en la puesta a punto del sistema fue leer el man afterboot, y tomar de allí algunas
ideas, en mi caso:

  a. Creación de usuarios
Se hace con el ya conocido comando adduser, que como es primera vez que se usa nos pregunta
sobre las opciones por defecto, y luego sí crea el usuario, repitiendo las preguntas por si acaso
queremos que algo sea diferente.
En la creación del usuario hay que tener en cuenta que para que pueda volverse root con el
comando su, el usuario que se crea debe pertenecer al grupo wheel.
Ejemplo:
bash-4.1# adduser
Couldn't find /etc/adduser.conf: creating a new adduser configuration file
Reading /etc/shells
Enter your default shell: bash csh ksh nologin sh [ksh]: bash
Your default shell is: bash -> /usr/local/bin/bash
Default login class: authpf daemon default staff [default]:
Enter your default HOME partition: [/home]:
Copy dotfiles from: /etc/skel no [/etc/skel]:
Send message from file: /etc/adduser.message no [no]:
Do not send message
Prompt for passwords by default (y/n) [y]:
Default encryption method for passwords: auto blowfish des md5 old
[auto]:
Use option ``-silent'' if you don't want to see all warnings and questions.


Reading /etc/shells
Check /etc/master.passwd



________________________________________________________________________________
4.Instalando paquetes                                                                                                                   8/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Check /etc/group


Ok, let's go.
Don't worry about mistakes. There will be a chance later to correct any input.
Enter username []: nando
Enter full name []: Fernando Quintero
Enter shell bash csh ksh nologin sh [bash]:
Uid [1000]:
Login group nando [nando]:
Login group is ``nando''. Invite nando into other groups: guest no
[no]:
Login class authpf daemon default staff [default]:
Enter password []:
Enter password again []:


Name:              nando
Password:               ****
Fullname:               Fernando Quintero
Uid:            1000
Gid:            1000 (nando)
Groups:             nando
Login Class: default
HOME:                   /home/nando
Shell:           /usr/local/bin/bash
OK? (y/n) [y]:
Added user ``nando''
Copy files from /etc/skel to /home/nando
Add another user? (y/n) [y]:
Enter username []: astrid
Enter full name []: Astrid Sanchez
Enter shell bash csh ksh nologin sh [bash]:
Uid [1001]:
Login group astrid [astrid]:
Login group is ``astrid''. Invite astrid into other groups: guest no
[no]:
Login class authpf daemon default staff [default]:
Enter password []:


________________________________________________________________________________
4.Instalando paquetes                                                                                                                            9/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Enter password again []:


Name:              astrid
Password:               ****
Fullname:               Astrid Sanchez
Uid:            1001
Gid:            1001 (astrid)
Groups:             astrid
Login Class: default
HOME:                   /home/astrid
Shell:           /usr/local/bin/bash
OK? (y/n) [y]:
Added user ``astrid''
Copy files from /etc/skel to /home/astrid
Add another user? (y/n) [y]: n
Goodbye!


Como pueden ver agregué dos usuarios, uno llamado nando y otro astrid.
Si quiero que estos dos usuarios puedan trabajar con su o sudo, entonces debo agregarlos al grupo
wheel, usando el comando usermod.
bash-4.1# id nando
uid=1000(nando) gid=1000(nando) groups=1000(nando)
bash-4.1# id astrid
uid=1001(astrid) gid=1001(astrid) groups=1001(astrid)
bash-4.1# usermod -G wheel nando
bash-4.1# usermod -G wheel astrid
bash-4.1# id nando
uid=1000(nando) gid=1000(nando) groups=1000(nando), 0(wheel)
bash-4.1# id astrid
uid=1001(astrid) gid=1001(astrid) groups=1001(astrid), 0(wheel)



  b. No root en SSH, poweroff y reinicio en kernel panic
Como medida de seguridad voy a deshabilitar la conexión a través de ssh con la cuenta de root, para
hacer esto se edita el archivo /etc/ssh/sshd_config (no confundir con /etc/ssh/ssh_config) en este
busco la línea :




________________________________________________________________________________
4.Instalando paquetes                                                                                                                            10/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


#PermitRootLoging yes


Se descomenta y cambia el yes por no quedando así:
PermitRootLogin no


Sin hacer más cambios grabo el archivo de configuración.
Luego, y por razones de comodidad voy a habilitar el apagado físico del equipo a través de la línea
de comandos, el comportamiento por defecto es bajar el sistema, pero no apagar el equipo. Para
habilitar esto y poder por ejemplo reiniciar el sistema remotamente, se edita el archivo
/etc/rc.shutdown, que es donde se encuentran las opciones de apagado del equipo, y asegurarse que
la siguiente línea aparezca así:
powerdown=YES


Ahora para que al reiniciarse el equipo no entre en el modo debugguer cuando suceda un kernel
panic o algo no vaya bien en el booteo, activamos en el archivo /etc/sysctl.conf la siguiente línea
que se encuentra comentada:
#ddb.panic=0                  # 0=Do not drop into ddb on a kernel panic
quedando así:
ddb.panic=0                 # 0=Do not drop into ddb on a kernel panic



  c. Deshabilitar los servicios by default
El lema de solo dos agujeros en la instalación por omisión tiene una razón de ser, y es que cuando
el sistema operativo se instala son muy pocos servicios los que corren sin que se les haya dicho que
lo hagan, pero para los que somos un poco mas paranoicos todavía se puede hacer algo mas y
deshabilitar los servicios que aunque no son muy común verlos funcionando, están allí:
bash-4.1# netstat -an | more
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address                              Foreign Address                       (state)
ip         0            0     *.*                                    *.*                             17
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address                              Foreign Address                       (state)
tcp            0        0     192.168.1.5.22                     192.168.1.1.43020                           ESTABLISHED
tcp            0        0     127.0.0.1.587                          *.*                                      LISTEN
tcp            0        0     127.0.0.1.25                           *.*                                      LISTEN
tcp            0        0     *.22                                   *.*                                      LISTEN
tcp            0        0     *.37                                   *.*                                       LISTEN
tcp            0        0     *.13                                   *.*                                       LISTEN

________________________________________________________________________________
4.Instalando paquetes                                                                                                                   11/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


tcp            0        0        *.113                                  *.*                                       LISTEN


Todo puerto que aparezca asociado a la palabra LISTEN significa que el sistema esta escuchando o
esperando peticiones. Se puede ver que la interfaz WAN esta escuchando en el puerto 22, lo que
quiere decir que esta habilitado el servicio SSH.
En la interfaz loopback (127.0.0.1) están los puertos 25 y 587 ambos pertenecen al servidor de
correo SENDMAIL, si no los necesito los puedo deshabilitar, aunque al estar corriendo en la
interfaz loopback no hay riesgo de que un atacante externo se pueda aprovechar de el.
Pero, ¿qué sucede con el resto?,el asterisco (*) representa todas las interfaces, así que en todas las
interfaces se está escuchando en los puertos 37, 13 y 113.
Esos servicios son:
daytime            13/tcp
daytime            13/udp
time                37/tcp    timserver
time                37/udp    timserver
auth                113/tcp   authentication tap ident
Si no sabes que son estos servicios, entonces no los necesitas, para deshabilitarlos del arranque
podemos editar el archivo /etc/services , buscar cada una de estas líneas y comentarlas.
Para hacer efectivo estos cambios puedo matar el proceso inetd2 y luego recargarlo:
bash-4.1# ps aux | grep inetd
root        9009 0.0 0.7 484 712 ?? Is                      7:30PM             0:00.04 inetd
bash-4.1# pkill inetd
bash-4.1# ps aux | grep inetd
bash-4.1# inetd
bash-4.1# ps aux | grep inetd
root        2480 0.0 0.8 316 824 ?? Is                      9:08PM             0:00.02 inetd


Verificando...
bash-4.1# netstat -an | more
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address                                 Foreign Address                       (state)
ip         0            0        *.*                                    *.*                             17
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address                                 Foreign Address                       (state)
tcp            0        0        192.168.1.5.22                     192.168.1.1.43020                     ESTABLISHED


2 http://www.openbsd.org/cgi-bin/man.cgi?
  query=inetd&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html

________________________________________________________________________________
4.Instalando paquetes                                                                                                                      12/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


tcp            0       0           127.0.0.1.587                      *.*                                 LISTEN
tcp            0       0           127.0.0.1.25                       *.*                                 LISTEN
tcp            0       0           *.22                                *.*                                LISTEN


Como se ve los servicios no deseados ya no suben ni en IPv4 ni en IPv6. :)


5. Servidor DHCP
Necesito un servidor básico de DHCP, así que las modificaciones que debo hacer a la configuración
by default son mínimas, y mi red funciona perfectamente, los pasos fueron:
Primero habilitar el servidor DHCP con el arranque del sistema, agregando la línea siguiente en el
archivo /etc/rc.conf.local.
Este archivo no existe by default en la versión 4.8, así que tendrás que crearlo, simplemente es un
archivo en texto plano, donde agregaremos las variables que necesitemos para habilitar los
servicios.
Bash-4.1# cat /etc/rc.conf.local
dhcpd_flags="vic1"


En este fichero hemos definido en que interfaz de red ha de escuchar el servidor dhcp, para nuestro
caso el la interfaz vic1. A continuación modificamos el archivo /etc/dhcpd.conf, esta configuración
es estándar para la configuración de este demonio de DHCP, así que puedo basarme en
configuraciones de Linux u otros sistemas operativos tipo Unix.
option domain-name "dominio.com";
option domain-name-servers 192.168.1.5;


subnet 192.168.1.0 netmask 255.255.255.0 {
                   option routers 192.168.1.5;
                   range 192.168.0.50 192.168.0.150;
}


He realizado la configuración mínima posible, estableciendo un rango de direcciones desde 50 a 150
maquinas en mi red local. Si quisiera agregar mas opciones puedo seguir la excelente
documentación de: man dhcpd.conf
Ahora podemos iniciar nuestro servicio, pero antes debemos                                                  de      crear       el     fichero
/var/db/dhcpd.leases y seguido podemos iniciar nuestro servicio.


Bash-4.1# touch /var/db/dhcpd.leases
Bash-4.1# dhcpd




________________________________________________________________________________
 5.Servidor DHCP                                                                                                                             13/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Para este caso hemos iniciado nuestro servicio dhcp, y en fichero /etc/rc.conf.local hemos definido
que interfaz hemos usado, ahora queda establecido automáticamente al inicio del sistema.
Otra forma de hacer la prueba una vez configurado el archivo dhcpd.conf es ejecutar el script rc.
# sh /etc/rc
setting tty flags
kbd: keyboard mapping set to es
pfctl: pf already enabled
machdep.allowaperture: 2 -> 2
starting network
…


Offtopic:
Para saber que es lo que hace el script /etc/rc con respecto a un servicio particular, busca las
palabras relacionadas en el archivo, así:
# grep -i dhcp /etc/rc
if [ X"${dhcpd_flags}" != X"NO" -a -f /etc/dhcpd.conf ]; then
         touch /var/db/dhcpd.leases
         echo -n ' dhcpd';     /usr/sbin/dhcpd ${dhcpd_flags}
#
En este ejemplo vemos que lo que chequea el script es que la variable dhcpd_flags sea diferente de
la palabra NO y que a la vez exista el archivo de configuración /etc/dhcpd.conf.


6. Comprobando rc.conf.local
En cualquier momento podemos probar nuestra configuración de servidores, para esto recargamos
los servicios ejecutando lo siguiente:
bash-4.1# sh /etc/rc
setting tty flags
kbd: keyboard mapping set to es
pfctl: pf already enabled
machdep.allowaperture: 2 -> 2
starting network
DHCPREQUEST on vic0 to 255.255.255.255 port 67
DHCPACK from 192.168.200.254 (00:50:56:fe:4f:3a)
bound to 192.168.200.132 -- renewal in 900 seconds.
starting system logger
syslogd: bind: Address already in use
starting initial daemons:.


________________________________________________________________________________
 6.Comprobando rc.conf.local                                                                                                             14/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


savecore: no core dump
checking quotas: done.
building ps databases: kvm dev.
clearing /tmp
starting pre-securelevel daemons:.
setting kernel security level: kern.securelevel: 1 -> 1
creating runtime link editor directory cache.
preserving editor files.
starting network daemons: sshd dhcpd sendmail inetd.
starting local daemons:.
standard daemons: cron.
Fri Nov 26 23:17:09 COT 2010
Esto nos evita el tener que reiniciar completamente el sistema. En la salida por pantalla de este
script podemos verificar que los servicios han subido correctamente:
starting network daemons: sshd dhcpd sendmail inetd.


7. Servidor DNS
Este servicio lo voy a usar solo para resolver algunas IPs internas, y para hacer cache de las ya
resueltas, de modo que haya una mejor respuesta para los usuarios de cara a Internet.
Este servicio viene integrado con OpenBSD, por tanto solo configuro el archivo pre-existente
/var/named/etc/named.conf, como puede verse de esta ruta, este servicio viene listo para funcionar
dentro de un chroot.
Editamos este archivo y hacemos que el named escuche solo en la interfaz interna: vic0
bash-4.1# pico /var/named/etc/named.conf
options {
       version "";     // remove this to allow version queries


       listen-on     { 192.168.1.5; };
       listen-on-v6 { none; };


       empty-zones-enable yes;


       allow-recursion { clients; };
};


También deshabilitamos la escucha para IPv6 a menos que tengamos implementado túneles o una
red en IPV6 dentro de la LAN.


________________________________________________________________________________
7.Servidor DNS                                                                                                                             15/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


By default el named trae unas configuraciones que podemos aprovechar, pero no trae archivos de
zonas configurados, así que tendremos que crearlos.
bash-3.2# pwd
/var/named/etc
bash-3.2# ls -la
total 28
drwxr-x--- 2 root named 512 Aug 3 08:32 .
drwxr-xr-x 8 root wheel 512 Aug 3 08:32 ..
-rw-r----- 1 root named 1646 Mar 12 11:28 named-dual.conf
-rw-r----- 1 root named 1428 Mar 12 11:28 named-simple.conf
-rw-r----- 1 root named 1429 Aug 3 10:36 named.conf
-rw-r--r-- 1 root wheel 2940 Mar 12 11:28 root.hint


Como vamos a configurar dos zonas, una directa y una inversa, entonces agregamos esto al
named.conf :
zone "dominio.com" {
       type master;
       file "master/dominio.com";
};


zone "1.168.192.in-addr.arpa" {
       type master;
       file "master/inv-dominio.com";
};


y creamos los archivo correspondientes:
bash-4.1# cat dominio.com
$ORIGIN dominio.com.
$TTL 3h
@          IN SOA ns.dominio.com. estebacalleperez.gmail.com. (
                 666           ; Serial yyyymmddnn
                 3h           ; Refresh After 3 hours
                  1h           ; Retry Retry after 1 hour
                 1w           ; Expire after 1 week
                 1h)        ; Minimum negative caching of 1 hour
; Agrego mis hosts
@                  86400   IN NS         ns.dominio.com.

________________________________________________________________________________
7.Servidor DNS                                                                                                                         16/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


@                     86400   IN MX 10 mail.dominio.com.
ns               IN     A                 192.168.1.5
dns              IN     CNAME             ns
fw               IN     CNAME             ns
www              IN     CNAME             ns
proxy IN         CNAME         ns
estacion1        IN     A                 192.168.1.9
estacion2        IN     A                 192.168.1.10
repositorio      IN     A                 192.168.1.4
mail             IN     A                 192.168.1.8


Chequeando la zona:
bash-4.1# named-checkzone dominio.com /var/named/master/dominio.com
zone dominio.com/IN: loaded serial 666
OK
La zona directa esta OK.


Probemos la zona inversa:
bash-4.1# cat inv-dominio.com
$ORIGIN 1.168.192.in-addr.arpa.
$TTL 3h
@          IN SOA ns.dominio.com. estebancalleperez.gmail.com. (
                  333            ; Serial yyyymmddnn
                  3h            ; Refresh After 3 hours
                  1h            ; Retry Retry after 1 hour
                  1w            ; Expire after 1 week
                  1h)         ; Minimum negative caching of 1 hour
; Agrego mis hosts
@                     86400   IN NS        ns.dominio.com.


5        IN      PTR    ns.dominio.com.
9        IN      PTR    estacion1.dominio.com.
10       IN      PTR    estacion2.dominio.com.
4        IN      PTR    repositorio.dominio.com.
8        IN      PTR    mail.dominio.com.




________________________________________________________________________________
7.Servidor DNS                                                                                                                           17/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Chequeando la zona inversa:
bash-4.1# named-checkzone 1.168.192.in-addr.arpa /var/named/master/inv-dominio.com
zone 1.168.192.in-addr.arpa/IN: loaded serial 333
OK


Una vez listas las dos zonas, probamos todo el DNS con el siguiente comando:
bash-4.1# named -g


Este nos ayudará a identificar errores antes de que el servicio suba de forma normal.
Cuando el servicio DNS esté listo se habilita para que se inicie con el sistema, para esto solo basta
agregar la línea named_flags=”” en el archivo /etc/rc.conf.local
bash-4.1# echo 'named_flags=""' >> /etc/rc.conf.local


Para iniciarlo sin la necesidad de reiniciar el sistema ejecutamos el siguiente comando y buscamos
la línea que contenga “starting named”.
bash-4.1# sh /etc/rc
…
starting named
…


Si se quiere verificar que el servidor DNS resuelva estas zonas, se puede usar la utilidad nslookup:
bash-4.1# nslookup
> server 192.168.1.5
Default server: 192.168.1.5
Address: 192.168.1.5#53
> ns.dominio.com
Server:          192.168.1.5
Address:         192.168.1.5#53


Name: ns.dominio.com
Address: 192.168.1.5
> mail.dominio.com
Server:          192.168.1.5
Address:         192.168.1.5#53


Name: mail.dominio.com


________________________________________________________________________________
7.Servidor DNS                                                                                                                           18/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Address: 192.168.1.8
> 192.168.1.9
Server:              192.168.1.5
Address:              192.168.1.5#53


9.1.168.192.in-addr.arpa                 name = estacion1.dominio.com.
> 192.168.1.5
Server:              192.168.1.5
Address:              192.168.1.5#53


5.1.168.192.in-addr.arpa                 name = ns.dominio.com.


Como pueden ver el servidor DNS funciona perfectamente, le preguntamos por dos hosts en la zona
directa y dos en la inversa, antes de preguntarle a un DNS le definimos quien será nuestro servidor
usando el comando server dentro de la utilidad nslookup.


8. Servidor MySQL (Bases de Datos)
Como se ha visto hasta ahora la puesta en marcha de todos los servicios en OpenBSD es algo muy
sencillo, y sigue un procedimiento estándar, primero se configura el servicio preconfigurado, luego
se habilitan las variables en el archivo /etc/rc.conf y luego se recarga la configuración de la red.
Pero que sucede cuando el servicio no viene instalado en el sistema base?, debemos entonces
buscarlo en la lista de paquetes disponibles de OpenBSD (actualmente mas de 5700) y luego hacer
la respectiva configuración. Veamos como lo hacemos con el servidor MySQL.
bash-4.1# pkg_add -v mysql-server
mysql-server-5.1.48:p5-Net-Daemon-0.43: ok
mysql-server-5.1.48:p5-PlRPC-0.2018p0: ok
mysql-server-5.1.48:p5-DBI-1.609: ok                                                                                            mysql-
server-5.1.48:mysql-client-5.1.48: ok                                                                                       mysql-
server-5.1.48:p5-DBD-mysql-4.014: ok                                                                                          mysql-
server-5.1.48: ok
--- +mysql-server-5.1.48 -------------------
You can find detailed instructions on how to install a database
in /usr/local/share/doc/mysql/README.OpenBSD.


En esta ocasión el mensaje que aparece nos advierte de la importancia de leer el archivo
/usr/local/share/doc/mysql/README.OpenBSD donde se encuentran los pasos a seguir para que el
servidor funcione a la perfección, una vez verificadas las opciones del servidor puedo continuar con
el procedimiento final para instalar el servidor. Lo primero que se hace una vez instalado el servidor
MySQL es crear la primera base de datos, sin la cual no funciona, esto se hace con el script que se
encuentra en la dirección: /usr/local/bin/mysql_install_db



________________________________________________________________________________
8.Servidor MySQL (Bases de Datos)                                                                                                             19/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org




bash-4.1# sh /usr/local/bin/mysql_install_db
Installing MySQL system tables...
101127 2:00:57 [Warning] '--skip-locking' is deprecated and will be removed in a future
release. Please use '--skip-external-locking' instead.
OK
Filling help tables...
101127 2:00:58 [Warning] '--skip-locking' is deprecated and will be removed in a future
release. Please use '--skip-external-locking' instead.
OK


PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:


/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h OBSDColombia.dominio.com password 'new-
password'


Alternatively you can run:
/usr/local/bin/mysql_secure_installation


which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.


See the manual for more instructions.


Please report any problems with the /usr/local/bin/mysqlbug script!


Para tener acceso al servicio MySQL desde el servidor Web Apache que se encuentra por defecto
en un chroot, debe hacerse un enlace entre el socket real de MySQL, y un lugar donde el Apache
pueda verlo, así:
bash-4.1# mysqld_safe &
[1] 31032
101127 11:04:30 mysqld_safe Logging to '/var/mysql/OBSDColombia.dominio.com.err'.
101127 11:04:30 mysqld_safe Starting mysqld daemon with databases from /var/mysql
bash-4.1# mkdir -p /var/www/var/run/mysql/
bash-4.1# ln /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock


________________________________________________________________________________
8.Servidor MySQL (Bases de Datos)                                                                                                             20/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Como este ultimo comando hay que ejecutarlo cada vez que sube el demonio MySQL, entonces lo
agregamos a la parte final del /etc/rc.local el cual es un archivo general donde se cargan cosas del
sistema en el momento del arranque.
#Arranque de MySQL
pkill mysql
sleep 3
rm /var/www/var/run/mysql/mysql.sock
/usr/local/share/mysql/mysql.server start
sleep 5
ln /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock


Con estas líneas en el fichero /etc/rc.local, se “mata” cualquier demonio que se este ejecutando en
ese momento con el nombre mysql, luego espera 3 segundos para que los cambios surtan efecto y
luego borra cualquier archivo con el nombre /var/www/var/run/mysql/mysql.sock existente en la
ruta del chroot del apache si existe, después se ejecuta el demonio y como el arranque puede tardar
un momento, le damos 5 segundos de tiempo y luego intentamos linkear el socket al socket dentro
del chroot. Si el MySQL no encuentra el socket dentro del chroot del apache, no funcionará la
integración de las aplicaciones Web con el servidor MySQL. Tenga en cuenta que esto se presenta
porque por defecto el apache (httpd) instalado en OpenBSD corre en modo chroot.
Después de hacer un sh /etc/rc nuevamente, comprobamos que el socket este en el lugar correcto y
que se este haciendo el drop de privilegios con el demonio SQL, esto es que quien corre la
aplicación es realmente el usuario _mysql y no el root. Esto mitigará el alcance de los ataques contra
las aplicaciones Web+MySQL que tengamos en el sistema.
bash-4.1# ls -la /var/www/var/run/mysql/mysql.sock
srwxrwxrwx 2 _mysql _mysql 0 Nov 27 11:35 /var/www/var/run/mysql/mysql.sock
bash-4.1# ps aux | grep mysqld
root    4564 0.0 1.2 944 1244 C0- I                            11:35AM              0:00.10 bash -c
/usr/local/bin/mysqld_safe >/dev/null
root    30728 0.0 0.5 576 456 C0- I                            11:35AM              0:00.12 /bin/sh
/usr/local/bin/mysqld_safe
_mysql 3781 0.0 17.4 43364 17696 C0- S            11:35AM 0:00.86
/usr/local/libexec/mysqld --basedir=/usr/local --datadir=/var/mysql --user=_mysql


Para agregarle un poco mas de seguridad a la ya existente, entonces deshabiltamos el socket de red
que crea el demonio MySQL, ya que todas las peticiones vendrán desde nuestro equipo local y lo
harán por el socket tipo archivo. Para esto en el archivo /etc/my.cnf , descomentamos la línea :
skip-networking


Con esto saltara la carga del socket de red y ningún puerto se abrirá.
Nota: Esto aplica si su aplicación y BD MySQL están en el mismo Servidor como en este caso.


________________________________________________________________________________
8.Servidor MySQL (Bases de Datos)                                                                                                             21/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


8.1. Aspectos importantes con MySQL
En este punto el servidor de bases de datos debe estar habilitado y listo para instalar las aplicaciones
que necesitemos., aquí dejo tres aspectos importantes que se deben tener en cuenta:
    ●     Para activar el servidor sin reiniciar el sistema:
#/usr/local/bin/mysqld_safe &


    ●     Para cambiar la contraseña del usuario root de MySQL, lo cual debe hacerse pues
          inicialmente no tiene ninguna, recuerde cambiar 'micontraseña' por el valor real de la
          contraseña que tendrá el usuario:
# /usr/local/bin/mysqladmin -u root password 'micontraseña'


    ●     Para tener acceso a este servicio desde el servidor Web Apache en OpenBSD, debe hacerse
          un enlace entre el socket real de MySQL, y un lugar donde el Apache si pueda verlo, así:
# mkdir -p /var/www/var/run/mysql
# ln /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock


(Se hizo la aclaración que esto se debe hacer cada vez que suba el servicio, por lo tanto se introdujo
en el script para cargar el servicio MySQL en /etc/rc.local)


9. Servidor WEB: Apache en Chroot
En este capítulo se explicará como activar el servidor Apache que viene por defecto dentro del
chroot, de modo que tenga soporte para PHP, integrado con MySQL, y que se puedan enviar correos
desde una aplicación que use PHP, por ejemplo un CMS como drupal, wordpress o joomla.

9.1. PHP v 5.0
Para comenzar este proceso hago la instalación de PHP,
bash-4.1# pkg_add -v php5-core
php5-core-5.2.13p0:libxml-2.7.6: ok
php5-core-5.2.13p0: ok
--- +php5-core-5.2.13p0 -------------------
To enable the php5 module please create a symbolic
link from /var/www/conf/modules.sample/php5.conf
to /var/www/conf/modules/php5.conf.


ln -s /var/www/conf/modules.sample/php5.conf 
        /var/www/conf/modules


The recommended php configuration has been installed

________________________________________________________________________________
9.Servidor WEB: Apache en Chroot                                                                                                             22/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


to /var/www/conf/php.ini.


Este mensaje aparece en OpenBSD 4.8, si leemos con mas atención las recomendaciones, nos dice
que como el apache esta en un chroot, entonces debemos hacer ciertos enlaces para que el PHP
funcione de forma correcta, entonces lo hacemos:
bash-4.1# ln -s /var/www/conf/modules.sample/php5.conf 
> /var/www/conf/modules/


Esto permite instalar el modulo de configuración del php para que el servidor web lo pueda
encontrar. Ahora continuo con la instalación de php5-mysql, evidentemente para soportar MySQL
desde PHP:
bash-4.1# pkg_add -v php5-mysql
php5-mysql-5.2.13p0: ok
--- +php5-mysql-5.2.13p0 -------------------
You can enable this module by creating a symbolic
link from /var/www/conf/php5.sample/mysql.ini to
/var/www/conf/php5/mysql.ini.


ln -fs /var/www/conf/php5.sample/mysql.ini 
       /var/www/conf/php5/mysql.ini


bash-4.1# ln -fs /var/www/conf/php5.sample/mysql.ini 
> /var/www/conf/php5/mysql.ini


También hago el enlace simbólico sugerido, y eso es todo ;)


Otros módulos de PHP que están disponibles como paquetes son:
bash-4.1# wget http://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/index.txt
--2010-11-27                                                                                                                    12:14:10--
http://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/index.txt
Resolving ftp.openbsd.org (ftp.openbsd.org)... 129.128.5.191
Connecting to ftp.openbsd.org (ftp.openbsd.org)|129.128.5.191|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 485770 (474K) [text/plain]
Saving to: `index.txt'


100%[========================>] 485,770                                         88.8K/s in 7.1s


________________________________________________________________________________
9.Servidor WEB: Apache en Chroot                                                                                                             23/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


2010-11-27 12:14:18 (67.1 KB/s) - `index.txt' saved [485770/485770]


-bash-4.1# grep -i php index.txt
-rw-r--r-- 1 276 125                45304 Aug 10 20:08:51 2010 asp2php-0.77.3p2-no_x11.tgz
-rw-r--r-- 1 276 125                58316 Aug 10 19:41:50 2010 asp2php-0.77.3p2.tgz
-rw-r--r-- 1 276 125                34402 Aug 10 20:55:57 2010 drupal6-phpmailer-2.1.tgz
-rw-r--r-- 1 276 125                18268 Aug 10 19:15:16 2010 ffmpeg-php-0.6.0p3.tgz
-rw-r--r-- 1 276 125                6648 Aug 10 08:28:13 2010 gpsd-php-2.38.tgz
-rw-r--r-- 1 276 125                6357 Aug 10 20:38:22 2010 p5-PHP-Serialization-0.33.tgz
-rw-r--r-- 1 276 125                7403 Aug 10 20:36:53 2010 p5-PHP-Session-0.26p1.tgz
-rw-r--r-- 1 276 125                40361 Aug 10 20:49:57 2010 pear-PHPUnit2-2.1.6p1.tgz
-rw-r--r-- 1 276 125                15934 Aug 10 20:13:42 2010 php-markdown-1.0.1n.tgz
-rw-r--r-- 1 276 125               109259 Aug 10 20:49:32 2010 php-openid-2.1.2.tgz
-rw-r--r-- 1 276 125               2859333 Aug 10 20:44:24 2010 php-weathermap-0.97ap0.tgz
-rw-r--r-- 1 276 125                10642 Aug 10 09:35:17 2010 php5-bz2-5.2.13p0.tgz
-rw-r--r-- 1 276 125               3564016 Aug 10 03:44:29 2010 php5-core-5.2.13p0.tgz
-rw-r--r-- 1 276 125                26434 Aug 10 09:35:18 2010 php5-curl-5.2.13p0.tgz
-rw-r--r-- 1 276 125                24949 Aug 10 09:35:19 2010 php5-dba-5.2.13p0.tgz
-rw-r--r-- 1 276 125                14729 Aug 10 09:35:20 2010 php5-dbase-5.2.13p0.tgz
-rw-r--r-- 1 276 125                 945 Aug 10 09:35:15 2010 php5-extensions-5.2.13p0.tgz
-rw-r--r-- 1 276 125               1431471 Aug 10 03:44:32 2010 php5-fastcgi-5.2.13p0.tgz
-rw-r--r-- 1 276 125               102700 Aug 10 09:35:22 2010 php5-gd-5.2.13p0-no_x11.tgz
-rw-r--r-- 1 276 125               111257 Aug 10 10:23:40 2010 php5-gd-5.2.13p0.tgz
-rw-r--r-- 1 276 125                16453 Aug 10 09:35:23 2010 php5-gmp-5.2.13p0.tgz
-rw-r--r-- 1 276 125                38176 Aug 10 09:35:24 2010 php5-imap-5.2.13p0.tgz
-rw-r--r-- 1 276 125                19018 Aug 10 09:35:25 2010 php5-ldap-5.2.13p0.tgz
-rw-r--r-- 1 276 125               815190 Aug 10 14:54:27 2010 php5-mapscript-5.6.5.tgz
-rw-r--r-- 1 276 125               1104619 Aug 10 09:35:27 2010 php5-mbstring-5.2.13p0.tgz
-rw-r--r-- 1 276 125                14193 Aug 10 09:35:28 2010 php5-mcrypt-5.2.13p0.tgz
-rw-r--r-- 1 276 125                5266 Aug 10 09:35:29 2010 php5-mhash-5.2.13p0.tgz
-rw-r--r-- 1 276 125                22230 Aug 10 09:35:48 2010 php5-mssql-5.2.13p0.tgz
-rw-r--r-- 1 276 125                24049 Aug 10 09:35:30 2010 php5-mysql-5.2.13p0.tgz
-rw-r--r-- 1 276 125                41310 Aug 10 09:35:32 2010 php5-mysqli-5.2.13p0.tgz
-rw-r--r-- 1 276 125                24931 Aug 10 09:35:33 2010 php5-ncurses-5.2.13p0.tgz
-rw-r--r-- 1 276 125                27942 Aug 10 09:35:34 2010 php5-odbc-5.2.13p0.tgz
-rw-r--r-- 1 276 125                8263 Aug 10 09:35:47 2010 php5-pdo_dblib-5.2.13p0.tgz
-rw-r--r-- 1 276 125                13555 Aug 10 09:35:35 2010 php5-pdo_mysql-5.2.13p0.tgz


________________________________________________________________________________
9.Servidor WEB: Apache en Chroot                                                                                                                24/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


-rw-r--r-- 1 276 125                14169 Aug 10 09:35:36 2010 php5-pdo_pgsql-5.2.13p0.tgz
-rw-r--r-- 1 276 125                11834 Aug 10 09:35:38 2010 php5-pdo_sqlite-5.2.13p0.tgz
-rw-r--r-- 1 276 125                44269 Aug 10 09:35:39 2010 php5-pgsql-5.2.13p0.tgz
-rw-r--r-- 1 276 125                9121 Aug 10 09:35:40 2010 php5-pspell-5.2.13p0.tgz
-rw-r--r-- 1 276 125                5037 Aug 10 09:35:41 2010 php5-shmop-5.2.13p0.tgz
-rw-r--r-- 1 276 125                12076 Aug 10 09:35:43 2010 php5-snmp-5.2.13p0.tgz
-rw-r--r-- 1 276 125               137879 Aug 10 09:35:42 2010 php5-soap-5.2.13p0.tgz
-rw-r--r-- 1 276 125                29510 Aug 10 09:35:44 2010 php5-sqlite-5.2.13p0.tgz
-rw-r--r-- 1 276 125                19354 Aug 10 09:35:45 2010 php5-sybase_ct-5.2.13p0.tgz
-rw-r--r-- 1 276 125                18157 Aug 10 09:35:49 2010 php5-tidy-5.2.13p0.tgz
-rw-r--r-- 1 276 125                40025 Aug 10 09:35:50 2010 php5-xmlrpc-5.2.13p1.tgz
-rw-r--r-- 1 276 125                14085 Aug 10 09:35:51 2010 php5-xsl-5.2.13p0.tgz
-rw-r--r-- 1 276 125               4739544 Aug 10 20:18:16 2010 phpMyAdmin-3.3.4.tgz
-rw-r--r-- 1 276 125               918070 Aug 10 20:45:13 2010 phpPgAdmin-4.2.3.tgz
-rw-r--r-- 1 276 125               336116 Aug 10 20:47:46 2010 phpicalendar-2.31.tgz
-rw-r--r-- 1 276 125               1333073 Aug 10 20:40:54 2010 phpldapadmin-1.2.0.4.tgz
-rw-r--r-- 1 276 125               1273081 Aug 10 20:32:48 2010 phplist-2.10.5p0.tgz


9.2. Apache v 1.3.x (versión por omisión)
Lo único que falta ahora es subir el servidor con el arranque del sistema, para esto agregar en el
/etc/rc.conf.local:
httpd_flags=""


Quedando el archivo así:
bash-4.1# cat /etc/rc.conf.local
dhcpd_flags="vic1"
named_flags=""
httpd_flags=""


vic1 es la interfaz de red por la cual va a escuchar el servicio dhcpd
Ahora verificamos el funcionamiento de apache + php, creamos un archivo index.php y ponemos
una función de información de php.
bash-4.1# pwd
/var/www/htdocs
bash-4.1# nano index.php
bash-4.1# cat index.php



________________________________________________________________________________
9.Servidor WEB: Apache en Chroot                                                                                                                25/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


<?php
phpinfo();
?>
bash-4.1# ls -la index.php
-rw-r--r-- 1 root daemon 20 Nov 27 12:36 index.php


Luego al navegar al sitio web de nuestro nuevo servidor y debemos obtener algo similar a esto:




9.3. Correos con PHP y MiniSendmail
Hasta ahora funciona perfecto, para mis propósitos solo falta poder enviar correos desde algunas
aplicaciones web con PHP, vamos a hacerlo con solo unas pocas lineas de shell:
bash-4.1# pkg_add -v mini_sendmail-chroot
mini_sendmail-chroot-1.3.6p0: ok


Ahora creamos unos directorios y archivos necesarios para el funcionamiento de mini-sendmail
dentro del chroot:
bash-4.1# mkdir -p /var/www/usr/sbin/
bash-4.1# ln /var/www/bin/mini_sendmail /var/www/usr/sbin/sendmail
bash-4.1# cp /bin/sh /var/www/bin/
bash-4.1# cp /usr/local/bin/bash /var/www/bin/
bash-4.1# mkdir /var/www/etc
bash-4.1# cp /etc/passwd /var/www/etc/
bash-4.1# nano /var/www/etc/passwd




________________________________________________________________________________
9.Servidor WEB: Apache en Chroot                                                                                                             26/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Con el primer comando agregamos el paquete mini_sendmail, en su versión para trabajar en el
chroot del Apache, luego lo ubicamos con un enlace simbólico en el lugar en el que PHP espera
encontrar el binario de Sendmail, y luego agregamos algunas cosas del sistema completo que
mini_sendmail necesita para trabajar, como son una shell, y el archivo /etc/passwd sin embargo
editamos fuertemente este, de modo que solo dejamos unos pocos usuarios sin importancia, además
aunque al darle acceso a una shell dentro de la chroot a la que tiene acceso el Apache se
compromete un poco la seguridad, esto sigue comprometiendo solo a la chroot y no a todo el
sistema. Si en este momento puedo comprobar de nuevo la configuración de los servidores con el
siguiente comando:
bash-4.1# sh /etc/rc




9.4. Ejemplo con MySQL y PHP
Voy a dar un ejemplo de la instalación de una aplicación OAMP (OpenBSD + Apache + MySQL +
PHP). Instalaremos la plataforma E-learning moodle3.
Pasos para la instalación de moodle:
    ●     Instalo el software requerido:
bash-4.1# pkg_add -v moodle
moodle-1.9.7:php5-xmlrpc-5.2.13p1: ok
moodle-1.9.7:curl-7.20.0: ok
moodle-1.9.7:php5-curl-5.2.13p0: ok
moodle-1.9.7:php5-mbstring-5.2.13p0: ok
moodle-1.9.7:png-1.2.44: ok
moodle-1.9.7:jpeg-8b: ok
moodle-1.9.7:t1lib-5.1.0p2: ok
moodle-1.9.7:php5-gd-5.2.13p0: ok
moodle-1.9.7: ok
...
Moodle requiere varios módulos adicionales de PHP que serán instalados como dependencias, solo
queda enlazarlos para que el apache los pueda ver dentro del chroot:
bash-4.1# ln -fs /var/www/conf/php5.sample/curl.ini /var/www/conf/php5/
bash-4.1# ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/
bash-4.1# ln -fs /var/www/conf/php5.sample/mbstring.ini 
> /var/www/conf/php5/
bash-4.1# ln -fs /var/www/conf/php5.sample/xmlrpc.ini /var/www/conf/php5/ .




3 http://www.moodle.org/

________________________________________________________________________________
9.Servidor WEB: Apache en Chroot                                                                                                             27/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


    ●     Enlazo el directorio de contenido para que quede dentro del chroot
bash-4.1# pwd
/var/www/htdocs
bash-4.1# ln -s ../moodle/ /var/www/htdocs/moodle
    ●     Creo la base de datos para moodle:
bash-4.1# mysqladmin -u root -p create moodle
Enter password:
                          El password de la BD es el que cambiamos en el item anterior.


    ●     Creo un usuario dentro de MySQL para la aplicación que voy a instalar
Esto no es necesario pero le añade un factor de seguridad puesto que si se presenta un problema de
seguridad en la aplicación, el atacante solo tendrá acceso a la aplicación en cuestión y no podrá
atacar otras bases de datos disponibles en el sistema.


bash-4.1# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 5
Server version: 5.1.48-log OpenBSD port: mysql-server-5.1.48


Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license


Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.


mysql> grant all on moodle.* to moodleuser@localhost identified by 'clavemoodle';
Query OK, 0 rows affected (0.13 sec)


mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)


mysql>
 En este caso he creado un usuario moodleuser con contraseña clavemoodle. Obviamente esta no
 es una contraseña adecuada, es responsabilidad de ustedes configurarla, esto es solo un ejemplo.




________________________________________________________________________________
9.Servidor WEB: Apache en Chroot                                                                                                               28/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Ahora modifico el archivo /var/www/moodle/config.php con los siguientes datos:
$CFG->dbtype                    = 'mysql';       // mysql or postgres7 (for now)
$CFG->dbhost                    = 'localhost'; // eg localhost or db.isp.com
$CFG->dbname                      = 'moodle';        // database name, eg moodle
$CFG->dbuser                    = 'moodleuser';         // your database username
$CFG->dbpass                     = 'clavemoodle';         // your database password
$CFG->prefix                 = 'mdl_';        // Prefix to use for all table names
Luego cambio la ruta a la que apuntará el moodle, puedo usar también nombres, esto es solo un
ejemplo.
$CFG->wwwroot = 'http://192.168.1.5/moodle';
$CFG->dirroot = '/moodle';
Debe existir un directorio donde moodle almacenará la información.
$CFG->dataroot = '/var/run/moodledata';
           Hasta aquí los cambios en el archivo config.php
     ●     Ahora regreso a la consola y creo el directorio que falta:
-bash-4.1# pwd
/var/www/var/run
-bash-4.1# mkdir moodledata
-bash-4.1# chown www.www moodledata/
-bash-4.1# chmod 777 moodledata/
     ●     Para empezar a instalar el software moodle, ingreso con un browser a la ruta definida
http://192.168.1.5/moodle
De ahí en adelante el procedimiento es intuitivo, solo basta hacer click, click y leer el manual de
como usar moodle. de esta forma tendremos una aplicación OAMP funcional y segura en poco
tiempo.
NOTA: Cualquier aplicación OAMP se instala con el mismo procedimiento general, pero
siempre es recomendable leer los archivos README o INSTALL que vengan en el paquete
que se quiere instalar.


10. NAT y Firewall (PF - Packet Filter)
Ya terminada la configuración básica del sistema podemos usar el PF para darle otro grado mas de
seguridad. Primero hacemos un par de modificaciones en unos archivos del sistema para activar el
PF y el forwarding para el NAT.
Para que se active al arrancar el sistema se debe agregar pf=YES al archivo /etc/rc.conf.local


echo "pf=YES" >> /etc/rc.conf.local



________________________________________________________________________________
10.NAT y Firewall (PF - Packet Filter)                                                                                                             29/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Ahora para activar el forwarding necesario para el NAT, hay que modificar el
archivo /etc/sysctl.conf , como no voy a usar Ipv6 solo requiero modificar una línea quitando el
comentario que viene por omisión.
net.inet.ip.forwarding=1


La configuración de PF, el conjunto de reglas (ruleset) y la configuración de NAT, se hacen en
/etc/pf.conf, allí se encuentra un archivo de ejemplo, que se puede usar como guía, se encuentra
completamente comentado. La estructura de este archivo es rígida, por lo que se debe seguir el
siguiente orden:
     1. -Macros
     2. -Tablas
     3. -Opciones
     4. -Scrub (normalización)
     5. -Queueing (control de ancho de banda y priorización de paquetes)
     6. -NAT
     7. -Reglas del filtro


En mi caso el archivo de configuración quedo así, la explicación en los comentarios.
bash-4.1# cat /etc/pf.conf
#MACROS
#Interfaz externa
wan="vic0"
#Intefaz interna
lan="vic1"
#Red interna
red_lan="192.168.1.0/24"


#OPCIONES


#No filtrar en las interfaces de loopback
set skip on lo0


#SCRUB
#Normalización de los paquetes, que entran y salen en todas las interfaces
match in all scrub (no-df max-mss 1440)


#NAT, enmascaramiento, en Linux esto seria el iptables POSTROUTING -j MASQUERADE
#Esta regla hace que toda la red pueda salir a Internet.
match out on $wan from $red_lan to any nat-to $wan


________________________________________________________________________________
10.NAT y Firewall (PF - Packet Filter)                                                                                                             30/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org




#REGLAS DEL FILTRO
#Políticas por defecto, bloquear todo lo que entra, dejar pasar todo lo que sale


block in on $wan
pass out all


#Antispoof en la LAN
#Para que no falsifiquen nuestras direccciones IP en la LAN
antispoof quick for $lan inet


#Permitir conexiones ssh y web desde afuera, logueando el primer paquete para un #analisis
posterior
pass in log on $wan proto tcp from any to any port ssh
pass in log on $wan proto tcp from any to any port 80

Como se ve faltan algunas secciones, como el encolamiento (queueing), pero no todas las secciones
son necesarias, y solo se pone lo que necesitemos, en cuanto a la sintaxis del PF me parece muy
sencillo, y es que se entiende casi como leyendo en lenguaje natural, en la FAQ 4 oficial de
OpenBSD se puede encontrar más información.
La única regla “rara” que tengo es la de antispoofing, la cual es una opción que trae el PF, en este
caso evitamos que alguien desde la interfaz $wan se haga pasar por una IP de la red interna.
Nótese también que al final se pone en lugar del número de puerto el nombre del servicio al que
está normalmente asignado, esto es posible porque se tienen en cuenta los nombres definidos en
/etc/services.
Para cargar el firewall y las reglas de NAT se puede reiniciar el sistema, ejcutar el script /etc/rc o
ejecutar el comando:
# pfctl -f /etc/pf.conf


11. Servidor Proxy (Squid)
Squid viene en varios sabores, con soporte snmp, transparente, los dos, o ninguno, en este caso
evidentemente escogí solo con soporte para proxy transparente que es lo que necesito, así mis
usuarios no notarán la diferencia entre no tener proxy o tenerlo, y la configuración en sus equipos
será mucho más simple.
La instalación la hacemos con pkg_add:
Buscamos el nombre del paquete dentro del archivo index.txt que contiene toda la lista de paquetes
disponibles.
bash-4.1# grep -i squid index.txt
-rw-r--r-- 1 276 125          65007 Aug 10 20:53:51 2010 lightsquid-1.8.tgz



4 http://www.openbsd.org/faq/pf/

________________________________________________________________________________
11.Servidor Proxy (Squid)                                                                                                                    31/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


-rw-r--r-- 1 276            125          725240 Aug 10 15:07:10 2010 squid-2.7.STABLE9-ldap-
snmp.tgz
-rw-r--r-- 1 276 125              712727 Aug 10 15:19:32 2010 squid-2.7.STABLE9-ldap.tgz
-rw-r--r-- 1 276 125              703638 Aug 10 15:46:29 2010 squid-2.7.STABLE9-snmp.tgz
-rw-r--r-- 1 276 125              690116 Aug 9 11:02:10 2010 squid-2.7.STABLE9.tgz
-rw-r--r-- 1 276 125          1683240 Aug 10 19:47:01 2010 squidGuard-1.4p0-ldap.tgz
-rw-r--r-- 1 276 125          1681544 Aug 10 19:54:59 2010 squidGuard-1.4p0.tgz


Una vez encontrado el paquete requerido lo instalamos:
bash-4.1# pkg_add squid-2.7.STABLE9.tgz


Al terminar la instalación de squid, aparece algo como:
[....]
You can also edit /etc/rc.local so that Squid is started automatically:


    if [ -x /usr/local/sbin/squid ]; then
         echo -n ' squid';         /usr/local/sbin/squid
    fi


Esto nos informa las diferencias locales de Squid en OpenBSD, nos cuenta que los archivos de
configuración están en /etc/squid, ejemplos en /usr/local/share/examples/squid, mensajes de error
en /usr/local/share/squid/errors, ejemplos de error en /usr/local/share/examples/squid/errors, los
iconos      están      en      /usr/local/share/squid/icons,    los     ejemplos    de     iconos
/usr/local/share/examples/squid/icons, la cache está en /var/squid/cache, los logs se guardan en
/var/squid/logs, el usuario y el grupo son respectivamente _squid:_squid.
También nos recuerda inicializar la cache con "squid -z" antes de tratar de correr squid por primera
vez, y las últimas líneas nos muestra que es lo que debemos poner en el archivo /etc/rc.local para
inicializarlo automáticamente con el sistema.
Se configura el /etc/squid/squid.conf según las opciones que se deseen, este tiene también la misma
estructura y contenido que en cualquier otro sistema operativo, aquí voy a comentar solo las cosas
específicas para tener en cuenta.
Primero que todo, la instalación por defecto solo admite el sistema de archivos ufs, y la política de
reemplazo lru (yo intenté usar otras opciones y no me lo permitió, diciendo que eran opciones
equivocadas, o desconocidas), esto se debe a las opciones con las que se compilo el paquete, si se
desea que tenga otras opciones, debe instalarse desde los ports.
Para proxy transparente se debe recordar poner en la directiva http_port la opción transparente, así:
http_port 3128 transparent
donde 3128 es el puerto por defecto en el que escucha el servidor proxy.



________________________________________________________________________________
11.Servidor Proxy (Squid)                                                                                                                     32/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


Para que este proxy transparente funcione correctamente, es necesario agregar la siguiente línea en
el archivo /etc/pf.conf antes de la línea de nat.
pass in quick on $lan inet proto tcp to any port 80 rdr-to 127.0.0.1 port 3128


Con esta línea se redirecciona todo el tráfico saliente dirigido a web (puerto 80) al puerto local en el
que escucha el Squid, así que este será el que atienda la petición. Para que Squid loguee sus
actividades es necesario definir además de la ruta de los archivos en los que se guardarán los logs,
el formato de estos. Pensando en más adelante usar Sarg para analizar los logs, y generar reportes,
uso un formato que este pueda entender, en el squid.conf hay varios tipos de formatos definidos y
comentados, en mi caso funcionó con la primera línea:
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt


Luego se ejecuta el siguiente comando para crear las carpetas de la cache:
bash-4.1# squid -z
2010/11/27 16:42:53| Creating Swap Directories


Aquí pueden verse además los errores de sintaxis que puedan haber en el squid.conf, una vez que se
ejecuta sin error, se puede iniciar el servicio, con el siguiente comando:
bash-4.1# /usr/local/sbin/squid


Para que siempre se inicie con el sistema se debe agregar las líneas que nos mostró después de la
instalación en el archivo /etc/rc.local, son las siguientes:
# Cargar el demonio SQUID
    if [ -x /usr/local/sbin/squid ]; then
         echo -n ' squid';   /usr/local/sbin/squid
    fi


Cuando se quiera hacer un cambio en la configuración del Squid sin pararlo, basta cambiar los
archivos de configuración y luego usar el comando siguiente:
bash-4.1# /usr/local/sbin/squid -k reconfigure


En caso de necesitar limpiar la cache, puede hacerse el siguiente procedimiento:
bash-4.1#/usr/local/sbin/squid -k shutdown
bash-4.1#rm -rf /var/squid/cache
bash-4.1#squid -z
bash-4.1#/usr/local/sbin/squid




________________________________________________________________________________
11.Servidor Proxy (Squid)                                                                                                                33/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


De esta manera se detiene, luego se borra la cache existente, se reconstruye, y se inicia nuevamente
el servicio. Si queremos verificar el funcionamiento del squid, podemos usar el comando tail para
monitorear el archivo de log:
bash-4.1# tail -f /var/squid/logs/access.log
1290910480.566 124 192.168.1.50 TCP_MISS/304 275 GET
http://www.google.com.co/images/modules/buttons/g-button-chocobo-basic-2.gif -
DIRECT/72.14.253.104 -
1290910480.578 131 192.168.1.50 TCP_MISS/304 275 GET
http://www.google.com.co/intl/en_com/images/srpr/logo1w.png - DIRECT/72.14.253.104-


11.1. Reportes con Sarg
Para generar los reportes basados en los logs del Squid, de modo que yo pueda ver en que se están
gastando mis usuarios el ancho de banda, y saber si tengo que hacer algún tipo de control sobre
estos, puedo implementar la herramienta sarg5, lo primero que hago es instalar el software:
bash-4.1# pkg_add -v sarg
sarg-2.2.5p0: ok
El archivo de configuración se encuentra en /etc/sarg/sarg.conf, en este hago las siguientes
modificaciones :
#Que el reporte me salga en español:
language Spanish
#Lugar donde se encuentra el access.log del squid
access_log /var/squid/logs/access.log
#Directorio de trabajo temporal
temporary_dir /tmp
#Directorio de salida, yo cree la carpeta manualmente con mkdir.
output_dir /var//www/htdocs/sarg
#Formato de fecha decente dd/mm/yyyy
date_format e
#Haga todos los reportes disponibles:
report_type topusers topsites sites_users users_sites date_time denied auth_failures
site_user_time_date downloads
# Ubique apropiadamente mi servidor web:
www_document_root /var/www/ htdocs
Fácil!, asi como lo es todo en OpenBSD ;)
Hay muchas otras opciones en este archivo, pero está bien documentado, en el mismo formato del
squid.conf, con estas será más que suficiente.
Para generar el reporte basta con ejecutar el comando sarg.



5 http://sarg.sourceforge.net/

________________________________________________________________________________
11.Servidor Proxy (Squid)                                                                                                                  34/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org


bash-4.1# sarg
SARG: Records in file: 45, reading: 100.00%
SARG: Reporte generado satisfactoriamente en /var/www/htdocs/sarg/27Nov2010-
27Nov2010
De esta manera se crea en el directorio que pusimos como de salida el reporte completo, y para
accederlo se hace a través del servidor web, en mi caso en la dirección de la LAN:
http://192.168.1.5/sarg/
Es posible configurar otros sistemas de reportes de una manera rápida y segura. Experimenta!


12. Enlaces relacionados
A continuación las direcciones de las páginas que use como guía en este proceso:


Obviamente la referencia de algunos documentos básicos de:
http://groups.google.com/group/OpenBSD-Colombia/files


Y otros documentos de:
http://openbsd.org/faq/faq4.html#AddFileSet
http://www.openbsd.org/ports.html
http://www.openbsd.org/faq/pf/index.html
http://www.openbsd.org/faq/faq6.html#DHCP
http://www.kernel-panic.it/openbsd/proxy/index.html
http://www.openbsdsupport.org/mysql.htm
http://www.h-i-r.net/2010/10/openbsd-48-is-almost-here-chroot-apache.html
http://www.kernel-panic.it/openbsd/dns/dns3.html
http://structio.sourceforge.net/guias/
http://www.openbsd.org/faq/pf/nat.html
http://www.openbsd.org/faq/pf/example1.html



13. Historial del Documentación

13.1. Actualizaciones del documento


Nombre                                         E-mail                                                    Fecha modificación
Esteban Calle Pérez                            estebancalleperez@gmail.com                               27/11/10
Fernando Quintero                              Fernando.a.quintero@gmail.com                             06/01/11


________________________________________________________________________________
13.Historial del Documentación                                                                                                             35/36
Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org




                                 WWW.OPENBSDCOLOMBIA.ORG
                                     Piensa en Libertad, Piensa BSD.




________________________________________________________________________________
13.Historial del Documentación                                                                                                             36/36

More Related Content

What's hot

9018560 manual-de-zenoss-
9018560 manual-de-zenoss-9018560 manual-de-zenoss-
9018560 manual-de-zenoss-darkradamanthys
 
Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...camilaml
 
Sistemas operativos(1)
Sistemas operativos(1)Sistemas operativos(1)
Sistemas operativos(1)luisa1200
 
Elx1 o1 lab1-instalacion de elastix
Elx1 o1 lab1-instalacion de elastixElx1 o1 lab1-instalacion de elastix
Elx1 o1 lab1-instalacion de elastixenriquetcampos.org
 
Curso de mantenimiento de computadoras 2013
Curso de mantenimiento de computadoras 2013Curso de mantenimiento de computadoras 2013
Curso de mantenimiento de computadoras 2013Marco Arias
 
Solucion practica final bloque 1 sist. op. en red
Solucion practica final bloque 1 sist. op. en redSolucion practica final bloque 1 sist. op. en red
Solucion practica final bloque 1 sist. op. en redcfgmi
 
Free radius coovachilli y daloradius
Free radius  coovachilli y daloradiusFree radius  coovachilli y daloradius
Free radius coovachilli y daloradiuslisset neyra
 
Manual de windows
Manual de windowsManual de windows
Manual de windowsLuxed Tevic
 
Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux. Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux. camilaml
 
Guia instalacion y configuracion nagios
Guia instalacion y configuracion nagiosGuia instalacion y configuracion nagios
Guia instalacion y configuracion nagiosPedro Alcaraz Díaz
 
Bd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlBd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlKARY
 

What's hot (20)

Manual redhat
Manual redhatManual redhat
Manual redhat
 
Ft py ssh_fco_javier_mejías_fernández
Ft py ssh_fco_javier_mejías_fernándezFt py ssh_fco_javier_mejías_fernández
Ft py ssh_fco_javier_mejías_fernández
 
9018560 manual-de-zenoss-
9018560 manual-de-zenoss-9018560 manual-de-zenoss-
9018560 manual-de-zenoss-
 
Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...Manual de instalación y administración de active directory en windows server ...
Manual de instalación y administración de active directory en windows server ...
 
Sistemas operativos(1)
Sistemas operativos(1)Sistemas operativos(1)
Sistemas operativos(1)
 
Paso a paso zenoss 2.5
Paso a paso zenoss  2.5Paso a paso zenoss  2.5
Paso a paso zenoss 2.5
 
Elx1 o1 lab1-instalacion de elastix
Elx1 o1 lab1-instalacion de elastixElx1 o1 lab1-instalacion de elastix
Elx1 o1 lab1-instalacion de elastix
 
Manual asterisk innova
Manual asterisk innovaManual asterisk innova
Manual asterisk innova
 
Curso de mantenimiento de computadoras 2013
Curso de mantenimiento de computadoras 2013Curso de mantenimiento de computadoras 2013
Curso de mantenimiento de computadoras 2013
 
Solucion practica final bloque 1 sist. op. en red
Solucion practica final bloque 1 sist. op. en redSolucion practica final bloque 1 sist. op. en red
Solucion practica final bloque 1 sist. op. en red
 
Free radius coovachilli y daloradius
Free radius  coovachilli y daloradiusFree radius  coovachilli y daloradius
Free radius coovachilli y daloradius
 
Pxe
PxePxe
Pxe
 
Redes
RedesRedes
Redes
 
Guia de instalacion_sap_ides_47
Guia de instalacion_sap_ides_47Guia de instalacion_sap_ides_47
Guia de instalacion_sap_ides_47
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Instalación y configuración de Nagios
Instalación y configuración de NagiosInstalación y configuración de Nagios
Instalación y configuración de Nagios
 
Manual de windows
Manual de windowsManual de windows
Manual de windows
 
Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux. Administración de un directorio activo (LDAP) en Linux.
Administración de un directorio activo (LDAP) en Linux.
 
Guia instalacion y configuracion nagios
Guia instalacion y configuracion nagiosGuia instalacion y configuracion nagios
Guia instalacion y configuracion nagios
 
Bd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys qlBd eq.#3 actividad 2 reporte instalacion mys ql
Bd eq.#3 actividad 2 reporte instalacion mys ql
 

Similar to Servidor de red_en_open_bsd_48

Casodestudio authpf
Casodestudio authpfCasodestudio authpf
Casodestudio authpfjonathan17
 
Informe proyecto nessus
Informe proyecto nessusInforme proyecto nessus
Informe proyecto nessusLethy Mendez
 
Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01pattala01
 
Seguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik FirewallSeguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik FirewallVanesa Rodríguez Percy
 
Cofiguracion de una_red
Cofiguracion de una_redCofiguracion de una_red
Cofiguracion de una_redyoes1053
 
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...
Instalacion del servidor proxy para conectar una red lan a una pc con salid...Fragatacante
 
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...
Instalacion del servidor proxy para conectar una red lan a una pc con salid...Aldo_Jonathan
 
Manual De Isa Server
Manual De Isa ServerManual De Isa Server
Manual De Isa ServerCesar Pineda
 
Armar un servidor casero con OpenBSD
Armar un servidor casero con OpenBSDArmar un servidor casero con OpenBSD
Armar un servidor casero con OpenBSDSergio Vallejo
 
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...
Instalacion del servidor proxy para conectar una red lan a una pc con salid...Arnold Graniel Cruz
 
Taller sistemas distribuidos linux usando VMWare
Taller sistemas distribuidos linux usando VMWareTaller sistemas distribuidos linux usando VMWare
Taller sistemas distribuidos linux usando VMWareDamian Barrios Castillo
 
Sistemas multi usu red_alfonso_contreras_final
Sistemas multi usu red_alfonso_contreras_finalSistemas multi usu red_alfonso_contreras_final
Sistemas multi usu red_alfonso_contreras_finalalfonso2014
 
53458737 manual-de-usuario-de-pfsense-firewall
53458737 manual-de-usuario-de-pfsense-firewall53458737 manual-de-usuario-de-pfsense-firewall
53458737 manual-de-usuario-de-pfsense-firewallSebastian Berrios Vasquez
 
Manual de-usuario-de-pfsense-firewall
Manual de-usuario-de-pfsense-firewallManual de-usuario-de-pfsense-firewall
Manual de-usuario-de-pfsense-firewallfampperrales
 
Manualdeisaserver
Manualdeisaserver Manualdeisaserver
Manualdeisaserver solslaud
 

Similar to Servidor de red_en_open_bsd_48 (20)

Casodestudio authpf
Casodestudio authpfCasodestudio authpf
Casodestudio authpf
 
Informe proyecto nessus
Informe proyecto nessusInforme proyecto nessus
Informe proyecto nessus
 
Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01Actividadno1seguridadperimetral -conversion-gate01
Actividadno1seguridadperimetral -conversion-gate01
 
Seguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik FirewallSeguridad perimetral - Mikrotik Firewall
Seguridad perimetral - Mikrotik Firewall
 
Proyecto 7
Proyecto 7Proyecto 7
Proyecto 7
 
Guia postfix
Guia postfixGuia postfix
Guia postfix
 
Practica active directory
Practica active directoryPractica active directory
Practica active directory
 
Vse710 updating implementguide_es
Vse710 updating implementguide_esVse710 updating implementguide_es
Vse710 updating implementguide_es
 
Cofiguracion de una_red
Cofiguracion de una_redCofiguracion de una_red
Cofiguracion de una_red
 
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
 
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
 
Manual De Isa Server
Manual De Isa ServerManual De Isa Server
Manual De Isa Server
 
Armar un servidor casero con OpenBSD
Armar un servidor casero con OpenBSDArmar un servidor casero con OpenBSD
Armar un servidor casero con OpenBSD
 
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...Instalacion del  servidor  proxy para conectar una red lan a una pc con salid...
Instalacion del servidor proxy para conectar una red lan a una pc con salid...
 
Taller sistemas distribuidos linux usando VMWare
Taller sistemas distribuidos linux usando VMWareTaller sistemas distribuidos linux usando VMWare
Taller sistemas distribuidos linux usando VMWare
 
Sistemas multi usu red_alfonso_contreras_final
Sistemas multi usu red_alfonso_contreras_finalSistemas multi usu red_alfonso_contreras_final
Sistemas multi usu red_alfonso_contreras_final
 
53458737 manual-de-usuario-de-pfsense-firewall
53458737 manual-de-usuario-de-pfsense-firewall53458737 manual-de-usuario-de-pfsense-firewall
53458737 manual-de-usuario-de-pfsense-firewall
 
Manual de-usuario-de-pfsense-firewall
Manual de-usuario-de-pfsense-firewallManual de-usuario-de-pfsense-firewall
Manual de-usuario-de-pfsense-firewall
 
Web 2.0
Web 2.0Web 2.0
Web 2.0
 
Manualdeisaserver
Manualdeisaserver Manualdeisaserver
Manualdeisaserver
 

Servidor de red_en_open_bsd_48

  • 1. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Instalación de servicios básicos en OpenBSD v.4.8 Autor : Astrid Eliana Sánchez Cortés Correo electrónico: astrid.eliana@gmail.com Fecha de creación : 09/01/08 Ultima modificación: 06/01/11 Índice de contenido 1.Licencia (BSD)..................................................................................................................................2 2.Introducción.......................................................................................................................................2 3.Configuración básica del sistema......................................................................................................2 3.1.Configuración de la red .............................................................................................................3 a.Interfaces de red...................................................................................................................3 b.Gateway (puerta de enlace) y dns........................................................................................5 4.Instalando paquetes...........................................................................................................................6 4.1.Configurando con los paquetes a la mano.................................................................................7 4.2.Afterboot (despues de bootear la primera vez)..........................................................................8 a.Creación de usuarios............................................................................................................8 b.No root en SSH, poweroff y reinicio en kernel panic........................................................10 c.Deshabilitar los servicios by default...................................................................................11 5.Servidor DHCP................................................................................................................................13 6.Comprobando rc.conf.local.............................................................................................................14 7.Servidor DNS..................................................................................................................................15 8.Servidor MySQL (Bases de Datos).................................................................................................19 8.1.Aspectos importantes con MySQL..........................................................................................22 9.Servidor WEB: Apache en Chroot..................................................................................................22 9.1.PHP v 5.0.................................................................................................................................22 9.2.Apache v 1.3.x (versión por omisión)......................................................................................25 9.3.Correos con PHP y MiniSendmail ..........................................................................................26 9.4.Ejemplo con MySQL y PHP....................................................................................................27 10.NAT y Firewall (PF - Packet Filter)..............................................................................................29 11.Servidor Proxy (Squid)..................................................................................................................31 11.1.Reportes con Sarg..................................................................................................................34 12.Enlaces relacionados.....................................................................................................................35 13.Historial del Documentación.........................................................................................................35 13.1.Actualizaciones del documento.............................................................................................35 ________________________________________________________________________________ 1/36
  • 2. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org 1. Licencia (BSD) Copyright (c) 2008, Astrid Eliana Sánchez , All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. • Neither the name of the OpenBSD Colombia or the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2. Introducción Hace algún tiempo, en la empresa en la que trabajaba decidimos cambiar el servidor, la función de este servidor sería sencilla, solo debe proveer Internet para una red LAN relativamente pequeña, con los servicios de DHCP, DNS, WEB, PROXY, NAT y FIREWALL. La instalación en ese momento se hizo con la versión 4.2 de OpenBSD, y de esta salió la primera versión de este documento detallando todo, o casi todo lo que hice para dejarlo en funcionamiento. Esta versión nunca salió de mis manos, ahora se ve enriquecido por el trabajo de Fernando Quintero quien lo ha mejorado y actualizado a la versión 4.3, ahora se encuentra actualizado a la versión 4.8, con la ayuda de Esteban Calle. El público objetivo de este documento son personas que están dando sus primeros pasos en OpenBSD, y que después de instalarlo no saben hacia donde ir, como yo misma cuando me puse en esta tarea, sin embargo asumo que hay cierta familiaridad con el trabajo en sistemas tipo Unix. En este documento no se explicará para que sirve cada servicio, ni los comandos básicos que se usen, también asumo que se tiene una teoría básica de redes y de servicios de red. El documento inicia desde que el sistema esta en su instalación base, la instalación propia de OpenBSD está bien explicada en otros documentos que puede encontrar en la comunidad OpenBSD Colombia. Espero le sea útil a alguien, recibo comentarios, críticas y sugerencias en mi correo. Mentiras, las criticas al /dev/null ;) 3. Configuración básica del sistema Antes de comenzar la configuración de los servicios es necesario tener una configuración básica en nuestro sistema. En este capítulo mostraré un poco de esto. ________________________________________________________________________________ 3.Configuración básica del sistema 2/36
  • 3. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org 3.1. Configuración de la red Esta configuración puede hacerse desde la instalación, sin embargo no está de más revisarla, y saber como funciona. Siempre que se hace un cambio en la configuración de la red se debe ejecutar el script /etc/netstart para que los cambios tengan efecto, o en su defecto reiniciar el sistema. #sh /etc/netstart o #reboot a. Interfaces de red La configuración de las tarjetas de red se encuentra en los archivos /etc/hostname.inteface, donde inteface es el nombre de la interfaz, en OpenBSD dependen del fabricante de la tarjeta de red, así que en cada equipo es diferente, para verificar como se llaman nuestras interfaces solo tenemos que usar el comando ifconfig. La primera palabra que aparece antes de los dos puntos es el nombre de la interfaz de red. No todas las interfaces que aparecen son físicas, algunas son usadas para procesos internos del sistema operativo, como cifrar la información, generar logs, etc. # ifconfig -a lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33200 priority: 0 groups: lo inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 vic0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:0c:29:d7:94:53 priority: 0 groups: egress media: Ethernet autoselect status: active inet6 fe80::20c:29ff:fed7:9453%vic0 prefixlen 64 scopeid 0x1 inet 192.168.200.131 netmask 0xffffff00 broadcast 192.168.200.255 vic1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 lladdr 00:0c:29:d7:94:5d priority: 0 media: Ethernet autoselect status: active inet 192.168.1.5 netmask 0xffffff00 broadcast 192.168.1.255 ________________________________________________________________________________ 3.Configuración básica del sistema 3/36
  • 4. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org inet6 fe80::20c:29ff:fed7:945d%vic1 prefixlen 64 scopeid 0x2 enc0: flags=0<> priority: 0 groups: enc status: active pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33200 priority: 0 groups: pflog Por ejemplo yo tengo dos tarjetas de red, cuyos nombres son: vic0 y vic1. vic0 esta en la red 192.168.200.131 (WAN) vic1 esta en la red 192.168.1.5 (LAN) Los archivos de configuración respectivos son entonces /etc/hostname.vic0 y /etc/hostname.vic0. # ls -l /etc/hostname.* -rw-r----- 1 root wheel 35 Nov 24 18:53 /etc/hostname.vic0 -rw-r----- 1 root wheel 5 Nov 26 14:28 /etc/hostname.vic1 Si el archivo correspondiente a la interfaz no aparece, simplemente lo creamos. Para modificar los archivos de las interfaces debemos conocer las opciones disponibles, si queremos aprender todas las posibles opciones, lo buscamos en el manual: # man hostname.if literalmente se usa la palabra if. Estos archivos tienen una sola línea con la siguiente información separada por espacios: Familia de direcciones: inet o inet6 dependiendo si usamos IPv4 o IPv6 IP: La dirección IP asignada a la tarjeta de red Dirección de broadcast, o la palabra NONE, OPCIONES: Estas pueden consultarse en man hostname.if Veamos un ejemplo: # cat /etc/hostname.vic0 dhcp Se puede ver que la interfaz vic1 se configura por DHCP completamente, así que ningún otra ________________________________________________________________________________ 3.Configuración básica del sistema 4/36
  • 5. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org opción es requerida. Configuremos entonces la segunda interfaz: # pico /etc/hostname.vic1 ksh: pico: not found ¿Qué sucedió? Ah!, aún no tenemos el editor pico, OpenBSD trae como editor predeterminado a vi, que es el que usaremos ahora, más adelante les mostraré como se instala pico o cualquier otro programa. #vi /etc/hostname.vic0 inet 192.168.1.5 0xffffff00 192.168.1.255 Ahora recargo la configuración de red: # sh /etc/netstart DHCPREQUEST on vic0 to 255.255.255.255 port 67 DHCPACK from 192.168.200.254 (00:50:56:fe:4f:3a) bound to 192.168.200.131 -- renewal in 900 seconds. y confirmo la configuración de las interfaces: # ifconfig -a Guardando la configuración en estos archivos logramos que los cambios perduren después de reiniciar. Finalmente: # ls -la /etc/hostname.* -rw-r----- 1 root wheel 35 Nov 24 18:53 /etc/hostname.vic0 -rw-r----- 1 root wheel 5 Nov 26 14:28 /etc/hostname.vic1 # cat /etc/hostname.vic0 dhcp # cat /etc/hostname.vic1 inet 192.168.1.5 0xffffff00 192.168.1.255 b. Gateway (puerta de enlace) y dns Para configurar el gateway por defecto del sistema se usa el archivo /etc/mygate, se pone solo su dirección IP. Por ejemplo: # cat /etc/mygate ________________________________________________________________________________ 3.Configuración básica del sistema 5/36
  • 6. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org 192.168.200.2 La configuración de los DNS que usará el sistema se hace en /etc/resolv.conf, usando la palabra nameserver antes de cada dirección IP correspondiente, y poniendo uno por línea, por ejemplo: # cat /etc/resolv.conf search mi-isp.net.co nameserver 192.168.200.2 lookup file bind Una vez termine de configurar el servidor cambiaré todos los valores para que correspondan a la nueva maquina que estoy configurando. 4. Instalando paquetes En OpenBSD se manejan los paquetes binarios, con la herramienta pkg, que es el método recomendado. Para compilarlos se mantiene el sistema de ports o portes, sin embargo se pueden compilar por el método tradicional también (configure, make, make install). Tanto si se va a instalar por pkg o por los ports debe mantenerse una consistencia entre la rama de OpenBSD que se esté trabajando, sea Stable, Current, o Snapshot. La instalación que yo tengo es de stable, la lista de paquetes disponibles se encuentran en: ftp://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/ Como de costumbre hay varias maneras de hacer esto, y varias direcciones de mirrors donde encontrar los paquetes, yo lo hago así: # export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/ # pkg_add -v pico pico-5.04p1:libiconv-1.13p1: ok pico- 5.04p1:gettext-0.18.1: ok pico- 5.04p1:aspell-0.60.6p4: ok pico-5.04p1: ok # pkg_add -v bash Shell /usr/local/bin/bash appended to /etc/shells bash-4.1.7p0: ok # pkg_add -v wget wget-1.12p0:libidn-1.11: ok wget-1.12p0: ok Primero verifico que tenga conectividad con el servidor ftp de OpenBSD y luego exporto la variable PKG_PATH para que apunte al repositorio de Internet. Se puede ver en el ejemplo la instalación de los paquetes pico, bash y wget. ________________________________________________________________________________ 4.Instalando paquetes 6/36
  • 7. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Para la instalación por ports debe descargarse primero el archivo ports.tar.gz y descomprimirlo, así: # pwd /root # wget ftp://ftp.openbsd.org/pub/OpenBSD/4.8/ports.tar.gz Cuando la descarga esté completa se descomprime en /usr, SI, tiene que ser allí, de lo contrario el sistema de portes puede fallar. # cd /usr # pwd /usr # tar xvzf /ruta/al/archivo/ports.tar.gz ... De nuevo, hay varias formas de hacerlo, el proceso de instalación de los ports es muy simple, en resumidas cuentas cuando se descomprime el archivo se crea un árbol de directorios en las que se ubican todos los posibles programas por categorías, si por ejemplo quiero instalar el editor nano desde los ports hago lo siguiente: # ls /usr/ports/editors/nano/ CVS Makefile distinfo patches pkg # cd /usr/ports/editors/nano/ # pwd /usr/ports/editors/nano # make install ===> Checking files for nano-2.0.7 ... Con esto puedo instalar prácticamente cualquier paquete, hay opciones más avanzadas pero salen del alcance de este documento. Existe un documento donde se explica acerca de la diferencia entre ports y paquetes y otros fundamentos de OpenBSD, ese documento lo pueden encontrar en el sitio de documentos de OpenBSD Colombia1. 4.1. Configurando con los paquetes a la mano Una forma de acelerar el trabajo en la configuración del servidor es tener los paquetes requeridos a la mano, para esto es recomendable descargar todos los paquetes disponibles para la versión en la que se esté trabajando, o disponer de buena conexión a Internet . En mi caso he descargado todos los paquetes usando el software wget y los he puesto en un servidor web dentro de red local, de esta forma para acceder a ellos solo debo exportar la variable PKG_PATH para que apunte a este repositorio y luego usar el comando pkg_add para instalar los paquetes que necesito. 1 http://groups.google.com/group/OpenBSD-Colombia/files ________________________________________________________________________________ 4.Instalando paquetes 7/36
  • 8. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org # export PKG_PATH=http://192.168.0.4/paquetes/ # pkg_add -v bash Shell /usr/local/bin/bash appended to /etc/shells bash-4.1.7p0: ok # bash bash-4.1# Hay que recordar que siempre puedo ir a Internet a descargar los paquetes, pero es más rápido si ya lo tengo de forma local, en nuestra intranet o en un disco duro externo. 4.2. Afterboot (despues de bootear la primera vez) Lo siguiente en la puesta a punto del sistema fue leer el man afterboot, y tomar de allí algunas ideas, en mi caso: a. Creación de usuarios Se hace con el ya conocido comando adduser, que como es primera vez que se usa nos pregunta sobre las opciones por defecto, y luego sí crea el usuario, repitiendo las preguntas por si acaso queremos que algo sea diferente. En la creación del usuario hay que tener en cuenta que para que pueda volverse root con el comando su, el usuario que se crea debe pertenecer al grupo wheel. Ejemplo: bash-4.1# adduser Couldn't find /etc/adduser.conf: creating a new adduser configuration file Reading /etc/shells Enter your default shell: bash csh ksh nologin sh [ksh]: bash Your default shell is: bash -> /usr/local/bin/bash Default login class: authpf daemon default staff [default]: Enter your default HOME partition: [/home]: Copy dotfiles from: /etc/skel no [/etc/skel]: Send message from file: /etc/adduser.message no [no]: Do not send message Prompt for passwords by default (y/n) [y]: Default encryption method for passwords: auto blowfish des md5 old [auto]: Use option ``-silent'' if you don't want to see all warnings and questions. Reading /etc/shells Check /etc/master.passwd ________________________________________________________________________________ 4.Instalando paquetes 8/36
  • 9. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Check /etc/group Ok, let's go. Don't worry about mistakes. There will be a chance later to correct any input. Enter username []: nando Enter full name []: Fernando Quintero Enter shell bash csh ksh nologin sh [bash]: Uid [1000]: Login group nando [nando]: Login group is ``nando''. Invite nando into other groups: guest no [no]: Login class authpf daemon default staff [default]: Enter password []: Enter password again []: Name: nando Password: **** Fullname: Fernando Quintero Uid: 1000 Gid: 1000 (nando) Groups: nando Login Class: default HOME: /home/nando Shell: /usr/local/bin/bash OK? (y/n) [y]: Added user ``nando'' Copy files from /etc/skel to /home/nando Add another user? (y/n) [y]: Enter username []: astrid Enter full name []: Astrid Sanchez Enter shell bash csh ksh nologin sh [bash]: Uid [1001]: Login group astrid [astrid]: Login group is ``astrid''. Invite astrid into other groups: guest no [no]: Login class authpf daemon default staff [default]: Enter password []: ________________________________________________________________________________ 4.Instalando paquetes 9/36
  • 10. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Enter password again []: Name: astrid Password: **** Fullname: Astrid Sanchez Uid: 1001 Gid: 1001 (astrid) Groups: astrid Login Class: default HOME: /home/astrid Shell: /usr/local/bin/bash OK? (y/n) [y]: Added user ``astrid'' Copy files from /etc/skel to /home/astrid Add another user? (y/n) [y]: n Goodbye! Como pueden ver agregué dos usuarios, uno llamado nando y otro astrid. Si quiero que estos dos usuarios puedan trabajar con su o sudo, entonces debo agregarlos al grupo wheel, usando el comando usermod. bash-4.1# id nando uid=1000(nando) gid=1000(nando) groups=1000(nando) bash-4.1# id astrid uid=1001(astrid) gid=1001(astrid) groups=1001(astrid) bash-4.1# usermod -G wheel nando bash-4.1# usermod -G wheel astrid bash-4.1# id nando uid=1000(nando) gid=1000(nando) groups=1000(nando), 0(wheel) bash-4.1# id astrid uid=1001(astrid) gid=1001(astrid) groups=1001(astrid), 0(wheel) b. No root en SSH, poweroff y reinicio en kernel panic Como medida de seguridad voy a deshabilitar la conexión a través de ssh con la cuenta de root, para hacer esto se edita el archivo /etc/ssh/sshd_config (no confundir con /etc/ssh/ssh_config) en este busco la línea : ________________________________________________________________________________ 4.Instalando paquetes 10/36
  • 11. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org #PermitRootLoging yes Se descomenta y cambia el yes por no quedando así: PermitRootLogin no Sin hacer más cambios grabo el archivo de configuración. Luego, y por razones de comodidad voy a habilitar el apagado físico del equipo a través de la línea de comandos, el comportamiento por defecto es bajar el sistema, pero no apagar el equipo. Para habilitar esto y poder por ejemplo reiniciar el sistema remotamente, se edita el archivo /etc/rc.shutdown, que es donde se encuentran las opciones de apagado del equipo, y asegurarse que la siguiente línea aparezca así: powerdown=YES Ahora para que al reiniciarse el equipo no entre en el modo debugguer cuando suceda un kernel panic o algo no vaya bien en el booteo, activamos en el archivo /etc/sysctl.conf la siguiente línea que se encuentra comentada: #ddb.panic=0 # 0=Do not drop into ddb on a kernel panic quedando así: ddb.panic=0 # 0=Do not drop into ddb on a kernel panic c. Deshabilitar los servicios by default El lema de solo dos agujeros en la instalación por omisión tiene una razón de ser, y es que cuando el sistema operativo se instala son muy pocos servicios los que corren sin que se les haya dicho que lo hagan, pero para los que somos un poco mas paranoicos todavía se puede hacer algo mas y deshabilitar los servicios que aunque no son muy común verlos funcionando, están allí: bash-4.1# netstat -an | more Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) ip 0 0 *.* *.* 17 Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 0 192.168.1.5.22 192.168.1.1.43020 ESTABLISHED tcp 0 0 127.0.0.1.587 *.* LISTEN tcp 0 0 127.0.0.1.25 *.* LISTEN tcp 0 0 *.22 *.* LISTEN tcp 0 0 *.37 *.* LISTEN tcp 0 0 *.13 *.* LISTEN ________________________________________________________________________________ 4.Instalando paquetes 11/36
  • 12. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org tcp 0 0 *.113 *.* LISTEN Todo puerto que aparezca asociado a la palabra LISTEN significa que el sistema esta escuchando o esperando peticiones. Se puede ver que la interfaz WAN esta escuchando en el puerto 22, lo que quiere decir que esta habilitado el servicio SSH. En la interfaz loopback (127.0.0.1) están los puertos 25 y 587 ambos pertenecen al servidor de correo SENDMAIL, si no los necesito los puedo deshabilitar, aunque al estar corriendo en la interfaz loopback no hay riesgo de que un atacante externo se pueda aprovechar de el. Pero, ¿qué sucede con el resto?,el asterisco (*) representa todas las interfaces, así que en todas las interfaces se está escuchando en los puertos 37, 13 y 113. Esos servicios son: daytime 13/tcp daytime 13/udp time 37/tcp timserver time 37/udp timserver auth 113/tcp authentication tap ident Si no sabes que son estos servicios, entonces no los necesitas, para deshabilitarlos del arranque podemos editar el archivo /etc/services , buscar cada una de estas líneas y comentarlas. Para hacer efectivo estos cambios puedo matar el proceso inetd2 y luego recargarlo: bash-4.1# ps aux | grep inetd root 9009 0.0 0.7 484 712 ?? Is 7:30PM 0:00.04 inetd bash-4.1# pkill inetd bash-4.1# ps aux | grep inetd bash-4.1# inetd bash-4.1# ps aux | grep inetd root 2480 0.0 0.8 316 824 ?? Is 9:08PM 0:00.02 inetd Verificando... bash-4.1# netstat -an | more Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) ip 0 0 *.* *.* 17 Active Internet connections (including servers) Proto Recv-Q Send-Q Local Address Foreign Address (state) tcp 0 0 192.168.1.5.22 192.168.1.1.43020 ESTABLISHED 2 http://www.openbsd.org/cgi-bin/man.cgi? query=inetd&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=i386&format=html ________________________________________________________________________________ 4.Instalando paquetes 12/36
  • 13. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org tcp 0 0 127.0.0.1.587 *.* LISTEN tcp 0 0 127.0.0.1.25 *.* LISTEN tcp 0 0 *.22 *.* LISTEN Como se ve los servicios no deseados ya no suben ni en IPv4 ni en IPv6. :) 5. Servidor DHCP Necesito un servidor básico de DHCP, así que las modificaciones que debo hacer a la configuración by default son mínimas, y mi red funciona perfectamente, los pasos fueron: Primero habilitar el servidor DHCP con el arranque del sistema, agregando la línea siguiente en el archivo /etc/rc.conf.local. Este archivo no existe by default en la versión 4.8, así que tendrás que crearlo, simplemente es un archivo en texto plano, donde agregaremos las variables que necesitemos para habilitar los servicios. Bash-4.1# cat /etc/rc.conf.local dhcpd_flags="vic1" En este fichero hemos definido en que interfaz de red ha de escuchar el servidor dhcp, para nuestro caso el la interfaz vic1. A continuación modificamos el archivo /etc/dhcpd.conf, esta configuración es estándar para la configuración de este demonio de DHCP, así que puedo basarme en configuraciones de Linux u otros sistemas operativos tipo Unix. option domain-name "dominio.com"; option domain-name-servers 192.168.1.5; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.5; range 192.168.0.50 192.168.0.150; } He realizado la configuración mínima posible, estableciendo un rango de direcciones desde 50 a 150 maquinas en mi red local. Si quisiera agregar mas opciones puedo seguir la excelente documentación de: man dhcpd.conf Ahora podemos iniciar nuestro servicio, pero antes debemos de crear el fichero /var/db/dhcpd.leases y seguido podemos iniciar nuestro servicio. Bash-4.1# touch /var/db/dhcpd.leases Bash-4.1# dhcpd ________________________________________________________________________________ 5.Servidor DHCP 13/36
  • 14. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Para este caso hemos iniciado nuestro servicio dhcp, y en fichero /etc/rc.conf.local hemos definido que interfaz hemos usado, ahora queda establecido automáticamente al inicio del sistema. Otra forma de hacer la prueba una vez configurado el archivo dhcpd.conf es ejecutar el script rc. # sh /etc/rc setting tty flags kbd: keyboard mapping set to es pfctl: pf already enabled machdep.allowaperture: 2 -> 2 starting network … Offtopic: Para saber que es lo que hace el script /etc/rc con respecto a un servicio particular, busca las palabras relacionadas en el archivo, así: # grep -i dhcp /etc/rc if [ X"${dhcpd_flags}" != X"NO" -a -f /etc/dhcpd.conf ]; then touch /var/db/dhcpd.leases echo -n ' dhcpd'; /usr/sbin/dhcpd ${dhcpd_flags} # En este ejemplo vemos que lo que chequea el script es que la variable dhcpd_flags sea diferente de la palabra NO y que a la vez exista el archivo de configuración /etc/dhcpd.conf. 6. Comprobando rc.conf.local En cualquier momento podemos probar nuestra configuración de servidores, para esto recargamos los servicios ejecutando lo siguiente: bash-4.1# sh /etc/rc setting tty flags kbd: keyboard mapping set to es pfctl: pf already enabled machdep.allowaperture: 2 -> 2 starting network DHCPREQUEST on vic0 to 255.255.255.255 port 67 DHCPACK from 192.168.200.254 (00:50:56:fe:4f:3a) bound to 192.168.200.132 -- renewal in 900 seconds. starting system logger syslogd: bind: Address already in use starting initial daemons:. ________________________________________________________________________________ 6.Comprobando rc.conf.local 14/36
  • 15. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org savecore: no core dump checking quotas: done. building ps databases: kvm dev. clearing /tmp starting pre-securelevel daemons:. setting kernel security level: kern.securelevel: 1 -> 1 creating runtime link editor directory cache. preserving editor files. starting network daemons: sshd dhcpd sendmail inetd. starting local daemons:. standard daemons: cron. Fri Nov 26 23:17:09 COT 2010 Esto nos evita el tener que reiniciar completamente el sistema. En la salida por pantalla de este script podemos verificar que los servicios han subido correctamente: starting network daemons: sshd dhcpd sendmail inetd. 7. Servidor DNS Este servicio lo voy a usar solo para resolver algunas IPs internas, y para hacer cache de las ya resueltas, de modo que haya una mejor respuesta para los usuarios de cara a Internet. Este servicio viene integrado con OpenBSD, por tanto solo configuro el archivo pre-existente /var/named/etc/named.conf, como puede verse de esta ruta, este servicio viene listo para funcionar dentro de un chroot. Editamos este archivo y hacemos que el named escuche solo en la interfaz interna: vic0 bash-4.1# pico /var/named/etc/named.conf options { version ""; // remove this to allow version queries listen-on { 192.168.1.5; }; listen-on-v6 { none; }; empty-zones-enable yes; allow-recursion { clients; }; }; También deshabilitamos la escucha para IPv6 a menos que tengamos implementado túneles o una red en IPV6 dentro de la LAN. ________________________________________________________________________________ 7.Servidor DNS 15/36
  • 16. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org By default el named trae unas configuraciones que podemos aprovechar, pero no trae archivos de zonas configurados, así que tendremos que crearlos. bash-3.2# pwd /var/named/etc bash-3.2# ls -la total 28 drwxr-x--- 2 root named 512 Aug 3 08:32 . drwxr-xr-x 8 root wheel 512 Aug 3 08:32 .. -rw-r----- 1 root named 1646 Mar 12 11:28 named-dual.conf -rw-r----- 1 root named 1428 Mar 12 11:28 named-simple.conf -rw-r----- 1 root named 1429 Aug 3 10:36 named.conf -rw-r--r-- 1 root wheel 2940 Mar 12 11:28 root.hint Como vamos a configurar dos zonas, una directa y una inversa, entonces agregamos esto al named.conf : zone "dominio.com" { type master; file "master/dominio.com"; }; zone "1.168.192.in-addr.arpa" { type master; file "master/inv-dominio.com"; }; y creamos los archivo correspondientes: bash-4.1# cat dominio.com $ORIGIN dominio.com. $TTL 3h @ IN SOA ns.dominio.com. estebacalleperez.gmail.com. ( 666 ; Serial yyyymmddnn 3h ; Refresh After 3 hours 1h ; Retry Retry after 1 hour 1w ; Expire after 1 week 1h) ; Minimum negative caching of 1 hour ; Agrego mis hosts @ 86400 IN NS ns.dominio.com. ________________________________________________________________________________ 7.Servidor DNS 16/36
  • 17. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org @ 86400 IN MX 10 mail.dominio.com. ns IN A 192.168.1.5 dns IN CNAME ns fw IN CNAME ns www IN CNAME ns proxy IN CNAME ns estacion1 IN A 192.168.1.9 estacion2 IN A 192.168.1.10 repositorio IN A 192.168.1.4 mail IN A 192.168.1.8 Chequeando la zona: bash-4.1# named-checkzone dominio.com /var/named/master/dominio.com zone dominio.com/IN: loaded serial 666 OK La zona directa esta OK. Probemos la zona inversa: bash-4.1# cat inv-dominio.com $ORIGIN 1.168.192.in-addr.arpa. $TTL 3h @ IN SOA ns.dominio.com. estebancalleperez.gmail.com. ( 333 ; Serial yyyymmddnn 3h ; Refresh After 3 hours 1h ; Retry Retry after 1 hour 1w ; Expire after 1 week 1h) ; Minimum negative caching of 1 hour ; Agrego mis hosts @ 86400 IN NS ns.dominio.com. 5 IN PTR ns.dominio.com. 9 IN PTR estacion1.dominio.com. 10 IN PTR estacion2.dominio.com. 4 IN PTR repositorio.dominio.com. 8 IN PTR mail.dominio.com. ________________________________________________________________________________ 7.Servidor DNS 17/36
  • 18. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Chequeando la zona inversa: bash-4.1# named-checkzone 1.168.192.in-addr.arpa /var/named/master/inv-dominio.com zone 1.168.192.in-addr.arpa/IN: loaded serial 333 OK Una vez listas las dos zonas, probamos todo el DNS con el siguiente comando: bash-4.1# named -g Este nos ayudará a identificar errores antes de que el servicio suba de forma normal. Cuando el servicio DNS esté listo se habilita para que se inicie con el sistema, para esto solo basta agregar la línea named_flags=”” en el archivo /etc/rc.conf.local bash-4.1# echo 'named_flags=""' >> /etc/rc.conf.local Para iniciarlo sin la necesidad de reiniciar el sistema ejecutamos el siguiente comando y buscamos la línea que contenga “starting named”. bash-4.1# sh /etc/rc … starting named … Si se quiere verificar que el servidor DNS resuelva estas zonas, se puede usar la utilidad nslookup: bash-4.1# nslookup > server 192.168.1.5 Default server: 192.168.1.5 Address: 192.168.1.5#53 > ns.dominio.com Server: 192.168.1.5 Address: 192.168.1.5#53 Name: ns.dominio.com Address: 192.168.1.5 > mail.dominio.com Server: 192.168.1.5 Address: 192.168.1.5#53 Name: mail.dominio.com ________________________________________________________________________________ 7.Servidor DNS 18/36
  • 19. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Address: 192.168.1.8 > 192.168.1.9 Server: 192.168.1.5 Address: 192.168.1.5#53 9.1.168.192.in-addr.arpa name = estacion1.dominio.com. > 192.168.1.5 Server: 192.168.1.5 Address: 192.168.1.5#53 5.1.168.192.in-addr.arpa name = ns.dominio.com. Como pueden ver el servidor DNS funciona perfectamente, le preguntamos por dos hosts en la zona directa y dos en la inversa, antes de preguntarle a un DNS le definimos quien será nuestro servidor usando el comando server dentro de la utilidad nslookup. 8. Servidor MySQL (Bases de Datos) Como se ha visto hasta ahora la puesta en marcha de todos los servicios en OpenBSD es algo muy sencillo, y sigue un procedimiento estándar, primero se configura el servicio preconfigurado, luego se habilitan las variables en el archivo /etc/rc.conf y luego se recarga la configuración de la red. Pero que sucede cuando el servicio no viene instalado en el sistema base?, debemos entonces buscarlo en la lista de paquetes disponibles de OpenBSD (actualmente mas de 5700) y luego hacer la respectiva configuración. Veamos como lo hacemos con el servidor MySQL. bash-4.1# pkg_add -v mysql-server mysql-server-5.1.48:p5-Net-Daemon-0.43: ok mysql-server-5.1.48:p5-PlRPC-0.2018p0: ok mysql-server-5.1.48:p5-DBI-1.609: ok mysql- server-5.1.48:mysql-client-5.1.48: ok mysql- server-5.1.48:p5-DBD-mysql-4.014: ok mysql- server-5.1.48: ok --- +mysql-server-5.1.48 ------------------- You can find detailed instructions on how to install a database in /usr/local/share/doc/mysql/README.OpenBSD. En esta ocasión el mensaje que aparece nos advierte de la importancia de leer el archivo /usr/local/share/doc/mysql/README.OpenBSD donde se encuentran los pasos a seguir para que el servidor funcione a la perfección, una vez verificadas las opciones del servidor puedo continuar con el procedimiento final para instalar el servidor. Lo primero que se hace una vez instalado el servidor MySQL es crear la primera base de datos, sin la cual no funciona, esto se hace con el script que se encuentra en la dirección: /usr/local/bin/mysql_install_db ________________________________________________________________________________ 8.Servidor MySQL (Bases de Datos) 19/36
  • 20. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org bash-4.1# sh /usr/local/bin/mysql_install_db Installing MySQL system tables... 101127 2:00:57 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead. OK Filling help tables... 101127 2:00:58 [Warning] '--skip-locking' is deprecated and will be removed in a future release. Please use '--skip-external-locking' instead. OK PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/local/bin/mysqladmin -u root password 'new-password' /usr/local/bin/mysqladmin -u root -h OBSDColombia.dominio.com password 'new- password' Alternatively you can run: /usr/local/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. Please report any problems with the /usr/local/bin/mysqlbug script! Para tener acceso al servicio MySQL desde el servidor Web Apache que se encuentra por defecto en un chroot, debe hacerse un enlace entre el socket real de MySQL, y un lugar donde el Apache pueda verlo, así: bash-4.1# mysqld_safe & [1] 31032 101127 11:04:30 mysqld_safe Logging to '/var/mysql/OBSDColombia.dominio.com.err'. 101127 11:04:30 mysqld_safe Starting mysqld daemon with databases from /var/mysql bash-4.1# mkdir -p /var/www/var/run/mysql/ bash-4.1# ln /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock ________________________________________________________________________________ 8.Servidor MySQL (Bases de Datos) 20/36
  • 21. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Como este ultimo comando hay que ejecutarlo cada vez que sube el demonio MySQL, entonces lo agregamos a la parte final del /etc/rc.local el cual es un archivo general donde se cargan cosas del sistema en el momento del arranque. #Arranque de MySQL pkill mysql sleep 3 rm /var/www/var/run/mysql/mysql.sock /usr/local/share/mysql/mysql.server start sleep 5 ln /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock Con estas líneas en el fichero /etc/rc.local, se “mata” cualquier demonio que se este ejecutando en ese momento con el nombre mysql, luego espera 3 segundos para que los cambios surtan efecto y luego borra cualquier archivo con el nombre /var/www/var/run/mysql/mysql.sock existente en la ruta del chroot del apache si existe, después se ejecuta el demonio y como el arranque puede tardar un momento, le damos 5 segundos de tiempo y luego intentamos linkear el socket al socket dentro del chroot. Si el MySQL no encuentra el socket dentro del chroot del apache, no funcionará la integración de las aplicaciones Web con el servidor MySQL. Tenga en cuenta que esto se presenta porque por defecto el apache (httpd) instalado en OpenBSD corre en modo chroot. Después de hacer un sh /etc/rc nuevamente, comprobamos que el socket este en el lugar correcto y que se este haciendo el drop de privilegios con el demonio SQL, esto es que quien corre la aplicación es realmente el usuario _mysql y no el root. Esto mitigará el alcance de los ataques contra las aplicaciones Web+MySQL que tengamos en el sistema. bash-4.1# ls -la /var/www/var/run/mysql/mysql.sock srwxrwxrwx 2 _mysql _mysql 0 Nov 27 11:35 /var/www/var/run/mysql/mysql.sock bash-4.1# ps aux | grep mysqld root 4564 0.0 1.2 944 1244 C0- I 11:35AM 0:00.10 bash -c /usr/local/bin/mysqld_safe >/dev/null root 30728 0.0 0.5 576 456 C0- I 11:35AM 0:00.12 /bin/sh /usr/local/bin/mysqld_safe _mysql 3781 0.0 17.4 43364 17696 C0- S 11:35AM 0:00.86 /usr/local/libexec/mysqld --basedir=/usr/local --datadir=/var/mysql --user=_mysql Para agregarle un poco mas de seguridad a la ya existente, entonces deshabiltamos el socket de red que crea el demonio MySQL, ya que todas las peticiones vendrán desde nuestro equipo local y lo harán por el socket tipo archivo. Para esto en el archivo /etc/my.cnf , descomentamos la línea : skip-networking Con esto saltara la carga del socket de red y ningún puerto se abrirá. Nota: Esto aplica si su aplicación y BD MySQL están en el mismo Servidor como en este caso. ________________________________________________________________________________ 8.Servidor MySQL (Bases de Datos) 21/36
  • 22. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org 8.1. Aspectos importantes con MySQL En este punto el servidor de bases de datos debe estar habilitado y listo para instalar las aplicaciones que necesitemos., aquí dejo tres aspectos importantes que se deben tener en cuenta: ● Para activar el servidor sin reiniciar el sistema: #/usr/local/bin/mysqld_safe & ● Para cambiar la contraseña del usuario root de MySQL, lo cual debe hacerse pues inicialmente no tiene ninguna, recuerde cambiar 'micontraseña' por el valor real de la contraseña que tendrá el usuario: # /usr/local/bin/mysqladmin -u root password 'micontraseña' ● Para tener acceso a este servicio desde el servidor Web Apache en OpenBSD, debe hacerse un enlace entre el socket real de MySQL, y un lugar donde el Apache si pueda verlo, así: # mkdir -p /var/www/var/run/mysql # ln /var/run/mysql/mysql.sock /var/www/var/run/mysql/mysql.sock (Se hizo la aclaración que esto se debe hacer cada vez que suba el servicio, por lo tanto se introdujo en el script para cargar el servicio MySQL en /etc/rc.local) 9. Servidor WEB: Apache en Chroot En este capítulo se explicará como activar el servidor Apache que viene por defecto dentro del chroot, de modo que tenga soporte para PHP, integrado con MySQL, y que se puedan enviar correos desde una aplicación que use PHP, por ejemplo un CMS como drupal, wordpress o joomla. 9.1. PHP v 5.0 Para comenzar este proceso hago la instalación de PHP, bash-4.1# pkg_add -v php5-core php5-core-5.2.13p0:libxml-2.7.6: ok php5-core-5.2.13p0: ok --- +php5-core-5.2.13p0 ------------------- To enable the php5 module please create a symbolic link from /var/www/conf/modules.sample/php5.conf to /var/www/conf/modules/php5.conf. ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules The recommended php configuration has been installed ________________________________________________________________________________ 9.Servidor WEB: Apache en Chroot 22/36
  • 23. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org to /var/www/conf/php.ini. Este mensaje aparece en OpenBSD 4.8, si leemos con mas atención las recomendaciones, nos dice que como el apache esta en un chroot, entonces debemos hacer ciertos enlaces para que el PHP funcione de forma correcta, entonces lo hacemos: bash-4.1# ln -s /var/www/conf/modules.sample/php5.conf > /var/www/conf/modules/ Esto permite instalar el modulo de configuración del php para que el servidor web lo pueda encontrar. Ahora continuo con la instalación de php5-mysql, evidentemente para soportar MySQL desde PHP: bash-4.1# pkg_add -v php5-mysql php5-mysql-5.2.13p0: ok --- +php5-mysql-5.2.13p0 ------------------- You can enable this module by creating a symbolic link from /var/www/conf/php5.sample/mysql.ini to /var/www/conf/php5/mysql.ini. ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini bash-4.1# ln -fs /var/www/conf/php5.sample/mysql.ini > /var/www/conf/php5/mysql.ini También hago el enlace simbólico sugerido, y eso es todo ;) Otros módulos de PHP que están disponibles como paquetes son: bash-4.1# wget http://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/index.txt --2010-11-27 12:14:10-- http://ftp.openbsd.org/pub/OpenBSD/4.8/packages/i386/index.txt Resolving ftp.openbsd.org (ftp.openbsd.org)... 129.128.5.191 Connecting to ftp.openbsd.org (ftp.openbsd.org)|129.128.5.191|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 485770 (474K) [text/plain] Saving to: `index.txt' 100%[========================>] 485,770 88.8K/s in 7.1s ________________________________________________________________________________ 9.Servidor WEB: Apache en Chroot 23/36
  • 24. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org 2010-11-27 12:14:18 (67.1 KB/s) - `index.txt' saved [485770/485770] -bash-4.1# grep -i php index.txt -rw-r--r-- 1 276 125 45304 Aug 10 20:08:51 2010 asp2php-0.77.3p2-no_x11.tgz -rw-r--r-- 1 276 125 58316 Aug 10 19:41:50 2010 asp2php-0.77.3p2.tgz -rw-r--r-- 1 276 125 34402 Aug 10 20:55:57 2010 drupal6-phpmailer-2.1.tgz -rw-r--r-- 1 276 125 18268 Aug 10 19:15:16 2010 ffmpeg-php-0.6.0p3.tgz -rw-r--r-- 1 276 125 6648 Aug 10 08:28:13 2010 gpsd-php-2.38.tgz -rw-r--r-- 1 276 125 6357 Aug 10 20:38:22 2010 p5-PHP-Serialization-0.33.tgz -rw-r--r-- 1 276 125 7403 Aug 10 20:36:53 2010 p5-PHP-Session-0.26p1.tgz -rw-r--r-- 1 276 125 40361 Aug 10 20:49:57 2010 pear-PHPUnit2-2.1.6p1.tgz -rw-r--r-- 1 276 125 15934 Aug 10 20:13:42 2010 php-markdown-1.0.1n.tgz -rw-r--r-- 1 276 125 109259 Aug 10 20:49:32 2010 php-openid-2.1.2.tgz -rw-r--r-- 1 276 125 2859333 Aug 10 20:44:24 2010 php-weathermap-0.97ap0.tgz -rw-r--r-- 1 276 125 10642 Aug 10 09:35:17 2010 php5-bz2-5.2.13p0.tgz -rw-r--r-- 1 276 125 3564016 Aug 10 03:44:29 2010 php5-core-5.2.13p0.tgz -rw-r--r-- 1 276 125 26434 Aug 10 09:35:18 2010 php5-curl-5.2.13p0.tgz -rw-r--r-- 1 276 125 24949 Aug 10 09:35:19 2010 php5-dba-5.2.13p0.tgz -rw-r--r-- 1 276 125 14729 Aug 10 09:35:20 2010 php5-dbase-5.2.13p0.tgz -rw-r--r-- 1 276 125 945 Aug 10 09:35:15 2010 php5-extensions-5.2.13p0.tgz -rw-r--r-- 1 276 125 1431471 Aug 10 03:44:32 2010 php5-fastcgi-5.2.13p0.tgz -rw-r--r-- 1 276 125 102700 Aug 10 09:35:22 2010 php5-gd-5.2.13p0-no_x11.tgz -rw-r--r-- 1 276 125 111257 Aug 10 10:23:40 2010 php5-gd-5.2.13p0.tgz -rw-r--r-- 1 276 125 16453 Aug 10 09:35:23 2010 php5-gmp-5.2.13p0.tgz -rw-r--r-- 1 276 125 38176 Aug 10 09:35:24 2010 php5-imap-5.2.13p0.tgz -rw-r--r-- 1 276 125 19018 Aug 10 09:35:25 2010 php5-ldap-5.2.13p0.tgz -rw-r--r-- 1 276 125 815190 Aug 10 14:54:27 2010 php5-mapscript-5.6.5.tgz -rw-r--r-- 1 276 125 1104619 Aug 10 09:35:27 2010 php5-mbstring-5.2.13p0.tgz -rw-r--r-- 1 276 125 14193 Aug 10 09:35:28 2010 php5-mcrypt-5.2.13p0.tgz -rw-r--r-- 1 276 125 5266 Aug 10 09:35:29 2010 php5-mhash-5.2.13p0.tgz -rw-r--r-- 1 276 125 22230 Aug 10 09:35:48 2010 php5-mssql-5.2.13p0.tgz -rw-r--r-- 1 276 125 24049 Aug 10 09:35:30 2010 php5-mysql-5.2.13p0.tgz -rw-r--r-- 1 276 125 41310 Aug 10 09:35:32 2010 php5-mysqli-5.2.13p0.tgz -rw-r--r-- 1 276 125 24931 Aug 10 09:35:33 2010 php5-ncurses-5.2.13p0.tgz -rw-r--r-- 1 276 125 27942 Aug 10 09:35:34 2010 php5-odbc-5.2.13p0.tgz -rw-r--r-- 1 276 125 8263 Aug 10 09:35:47 2010 php5-pdo_dblib-5.2.13p0.tgz -rw-r--r-- 1 276 125 13555 Aug 10 09:35:35 2010 php5-pdo_mysql-5.2.13p0.tgz ________________________________________________________________________________ 9.Servidor WEB: Apache en Chroot 24/36
  • 25. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org -rw-r--r-- 1 276 125 14169 Aug 10 09:35:36 2010 php5-pdo_pgsql-5.2.13p0.tgz -rw-r--r-- 1 276 125 11834 Aug 10 09:35:38 2010 php5-pdo_sqlite-5.2.13p0.tgz -rw-r--r-- 1 276 125 44269 Aug 10 09:35:39 2010 php5-pgsql-5.2.13p0.tgz -rw-r--r-- 1 276 125 9121 Aug 10 09:35:40 2010 php5-pspell-5.2.13p0.tgz -rw-r--r-- 1 276 125 5037 Aug 10 09:35:41 2010 php5-shmop-5.2.13p0.tgz -rw-r--r-- 1 276 125 12076 Aug 10 09:35:43 2010 php5-snmp-5.2.13p0.tgz -rw-r--r-- 1 276 125 137879 Aug 10 09:35:42 2010 php5-soap-5.2.13p0.tgz -rw-r--r-- 1 276 125 29510 Aug 10 09:35:44 2010 php5-sqlite-5.2.13p0.tgz -rw-r--r-- 1 276 125 19354 Aug 10 09:35:45 2010 php5-sybase_ct-5.2.13p0.tgz -rw-r--r-- 1 276 125 18157 Aug 10 09:35:49 2010 php5-tidy-5.2.13p0.tgz -rw-r--r-- 1 276 125 40025 Aug 10 09:35:50 2010 php5-xmlrpc-5.2.13p1.tgz -rw-r--r-- 1 276 125 14085 Aug 10 09:35:51 2010 php5-xsl-5.2.13p0.tgz -rw-r--r-- 1 276 125 4739544 Aug 10 20:18:16 2010 phpMyAdmin-3.3.4.tgz -rw-r--r-- 1 276 125 918070 Aug 10 20:45:13 2010 phpPgAdmin-4.2.3.tgz -rw-r--r-- 1 276 125 336116 Aug 10 20:47:46 2010 phpicalendar-2.31.tgz -rw-r--r-- 1 276 125 1333073 Aug 10 20:40:54 2010 phpldapadmin-1.2.0.4.tgz -rw-r--r-- 1 276 125 1273081 Aug 10 20:32:48 2010 phplist-2.10.5p0.tgz 9.2. Apache v 1.3.x (versión por omisión) Lo único que falta ahora es subir el servidor con el arranque del sistema, para esto agregar en el /etc/rc.conf.local: httpd_flags="" Quedando el archivo así: bash-4.1# cat /etc/rc.conf.local dhcpd_flags="vic1" named_flags="" httpd_flags="" vic1 es la interfaz de red por la cual va a escuchar el servicio dhcpd Ahora verificamos el funcionamiento de apache + php, creamos un archivo index.php y ponemos una función de información de php. bash-4.1# pwd /var/www/htdocs bash-4.1# nano index.php bash-4.1# cat index.php ________________________________________________________________________________ 9.Servidor WEB: Apache en Chroot 25/36
  • 26. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org <?php phpinfo(); ?> bash-4.1# ls -la index.php -rw-r--r-- 1 root daemon 20 Nov 27 12:36 index.php Luego al navegar al sitio web de nuestro nuevo servidor y debemos obtener algo similar a esto: 9.3. Correos con PHP y MiniSendmail Hasta ahora funciona perfecto, para mis propósitos solo falta poder enviar correos desde algunas aplicaciones web con PHP, vamos a hacerlo con solo unas pocas lineas de shell: bash-4.1# pkg_add -v mini_sendmail-chroot mini_sendmail-chroot-1.3.6p0: ok Ahora creamos unos directorios y archivos necesarios para el funcionamiento de mini-sendmail dentro del chroot: bash-4.1# mkdir -p /var/www/usr/sbin/ bash-4.1# ln /var/www/bin/mini_sendmail /var/www/usr/sbin/sendmail bash-4.1# cp /bin/sh /var/www/bin/ bash-4.1# cp /usr/local/bin/bash /var/www/bin/ bash-4.1# mkdir /var/www/etc bash-4.1# cp /etc/passwd /var/www/etc/ bash-4.1# nano /var/www/etc/passwd ________________________________________________________________________________ 9.Servidor WEB: Apache en Chroot 26/36
  • 27. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Con el primer comando agregamos el paquete mini_sendmail, en su versión para trabajar en el chroot del Apache, luego lo ubicamos con un enlace simbólico en el lugar en el que PHP espera encontrar el binario de Sendmail, y luego agregamos algunas cosas del sistema completo que mini_sendmail necesita para trabajar, como son una shell, y el archivo /etc/passwd sin embargo editamos fuertemente este, de modo que solo dejamos unos pocos usuarios sin importancia, además aunque al darle acceso a una shell dentro de la chroot a la que tiene acceso el Apache se compromete un poco la seguridad, esto sigue comprometiendo solo a la chroot y no a todo el sistema. Si en este momento puedo comprobar de nuevo la configuración de los servidores con el siguiente comando: bash-4.1# sh /etc/rc 9.4. Ejemplo con MySQL y PHP Voy a dar un ejemplo de la instalación de una aplicación OAMP (OpenBSD + Apache + MySQL + PHP). Instalaremos la plataforma E-learning moodle3. Pasos para la instalación de moodle: ● Instalo el software requerido: bash-4.1# pkg_add -v moodle moodle-1.9.7:php5-xmlrpc-5.2.13p1: ok moodle-1.9.7:curl-7.20.0: ok moodle-1.9.7:php5-curl-5.2.13p0: ok moodle-1.9.7:php5-mbstring-5.2.13p0: ok moodle-1.9.7:png-1.2.44: ok moodle-1.9.7:jpeg-8b: ok moodle-1.9.7:t1lib-5.1.0p2: ok moodle-1.9.7:php5-gd-5.2.13p0: ok moodle-1.9.7: ok ... Moodle requiere varios módulos adicionales de PHP que serán instalados como dependencias, solo queda enlazarlos para que el apache los pueda ver dentro del chroot: bash-4.1# ln -fs /var/www/conf/php5.sample/curl.ini /var/www/conf/php5/ bash-4.1# ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/ bash-4.1# ln -fs /var/www/conf/php5.sample/mbstring.ini > /var/www/conf/php5/ bash-4.1# ln -fs /var/www/conf/php5.sample/xmlrpc.ini /var/www/conf/php5/ . 3 http://www.moodle.org/ ________________________________________________________________________________ 9.Servidor WEB: Apache en Chroot 27/36
  • 28. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org ● Enlazo el directorio de contenido para que quede dentro del chroot bash-4.1# pwd /var/www/htdocs bash-4.1# ln -s ../moodle/ /var/www/htdocs/moodle ● Creo la base de datos para moodle: bash-4.1# mysqladmin -u root -p create moodle Enter password: El password de la BD es el que cambiamos en el item anterior. ● Creo un usuario dentro de MySQL para la aplicación que voy a instalar Esto no es necesario pero le añade un factor de seguridad puesto que si se presenta un problema de seguridad en la aplicación, el atacante solo tendrá acceso a la aplicación en cuestión y no podrá atacar otras bases de datos disponibles en el sistema. bash-4.1# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 5 Server version: 5.1.48-log OpenBSD port: mysql-server-5.1.48 Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> grant all on moodle.* to moodleuser@localhost identified by 'clavemoodle'; Query OK, 0 rows affected (0.13 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> En este caso he creado un usuario moodleuser con contraseña clavemoodle. Obviamente esta no es una contraseña adecuada, es responsabilidad de ustedes configurarla, esto es solo un ejemplo. ________________________________________________________________________________ 9.Servidor WEB: Apache en Chroot 28/36
  • 29. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Ahora modifico el archivo /var/www/moodle/config.php con los siguientes datos: $CFG->dbtype = 'mysql'; // mysql or postgres7 (for now) $CFG->dbhost = 'localhost'; // eg localhost or db.isp.com $CFG->dbname = 'moodle'; // database name, eg moodle $CFG->dbuser = 'moodleuser'; // your database username $CFG->dbpass = 'clavemoodle'; // your database password $CFG->prefix = 'mdl_'; // Prefix to use for all table names Luego cambio la ruta a la que apuntará el moodle, puedo usar también nombres, esto es solo un ejemplo. $CFG->wwwroot = 'http://192.168.1.5/moodle'; $CFG->dirroot = '/moodle'; Debe existir un directorio donde moodle almacenará la información. $CFG->dataroot = '/var/run/moodledata'; Hasta aquí los cambios en el archivo config.php ● Ahora regreso a la consola y creo el directorio que falta: -bash-4.1# pwd /var/www/var/run -bash-4.1# mkdir moodledata -bash-4.1# chown www.www moodledata/ -bash-4.1# chmod 777 moodledata/ ● Para empezar a instalar el software moodle, ingreso con un browser a la ruta definida http://192.168.1.5/moodle De ahí en adelante el procedimiento es intuitivo, solo basta hacer click, click y leer el manual de como usar moodle. de esta forma tendremos una aplicación OAMP funcional y segura en poco tiempo. NOTA: Cualquier aplicación OAMP se instala con el mismo procedimiento general, pero siempre es recomendable leer los archivos README o INSTALL que vengan en el paquete que se quiere instalar. 10. NAT y Firewall (PF - Packet Filter) Ya terminada la configuración básica del sistema podemos usar el PF para darle otro grado mas de seguridad. Primero hacemos un par de modificaciones en unos archivos del sistema para activar el PF y el forwarding para el NAT. Para que se active al arrancar el sistema se debe agregar pf=YES al archivo /etc/rc.conf.local echo "pf=YES" >> /etc/rc.conf.local ________________________________________________________________________________ 10.NAT y Firewall (PF - Packet Filter) 29/36
  • 30. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Ahora para activar el forwarding necesario para el NAT, hay que modificar el archivo /etc/sysctl.conf , como no voy a usar Ipv6 solo requiero modificar una línea quitando el comentario que viene por omisión. net.inet.ip.forwarding=1 La configuración de PF, el conjunto de reglas (ruleset) y la configuración de NAT, se hacen en /etc/pf.conf, allí se encuentra un archivo de ejemplo, que se puede usar como guía, se encuentra completamente comentado. La estructura de este archivo es rígida, por lo que se debe seguir el siguiente orden: 1. -Macros 2. -Tablas 3. -Opciones 4. -Scrub (normalización) 5. -Queueing (control de ancho de banda y priorización de paquetes) 6. -NAT 7. -Reglas del filtro En mi caso el archivo de configuración quedo así, la explicación en los comentarios. bash-4.1# cat /etc/pf.conf #MACROS #Interfaz externa wan="vic0" #Intefaz interna lan="vic1" #Red interna red_lan="192.168.1.0/24" #OPCIONES #No filtrar en las interfaces de loopback set skip on lo0 #SCRUB #Normalización de los paquetes, que entran y salen en todas las interfaces match in all scrub (no-df max-mss 1440) #NAT, enmascaramiento, en Linux esto seria el iptables POSTROUTING -j MASQUERADE #Esta regla hace que toda la red pueda salir a Internet. match out on $wan from $red_lan to any nat-to $wan ________________________________________________________________________________ 10.NAT y Firewall (PF - Packet Filter) 30/36
  • 31. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org #REGLAS DEL FILTRO #Políticas por defecto, bloquear todo lo que entra, dejar pasar todo lo que sale block in on $wan pass out all #Antispoof en la LAN #Para que no falsifiquen nuestras direccciones IP en la LAN antispoof quick for $lan inet #Permitir conexiones ssh y web desde afuera, logueando el primer paquete para un #analisis posterior pass in log on $wan proto tcp from any to any port ssh pass in log on $wan proto tcp from any to any port 80 Como se ve faltan algunas secciones, como el encolamiento (queueing), pero no todas las secciones son necesarias, y solo se pone lo que necesitemos, en cuanto a la sintaxis del PF me parece muy sencillo, y es que se entiende casi como leyendo en lenguaje natural, en la FAQ 4 oficial de OpenBSD se puede encontrar más información. La única regla “rara” que tengo es la de antispoofing, la cual es una opción que trae el PF, en este caso evitamos que alguien desde la interfaz $wan se haga pasar por una IP de la red interna. Nótese también que al final se pone en lugar del número de puerto el nombre del servicio al que está normalmente asignado, esto es posible porque se tienen en cuenta los nombres definidos en /etc/services. Para cargar el firewall y las reglas de NAT se puede reiniciar el sistema, ejcutar el script /etc/rc o ejecutar el comando: # pfctl -f /etc/pf.conf 11. Servidor Proxy (Squid) Squid viene en varios sabores, con soporte snmp, transparente, los dos, o ninguno, en este caso evidentemente escogí solo con soporte para proxy transparente que es lo que necesito, así mis usuarios no notarán la diferencia entre no tener proxy o tenerlo, y la configuración en sus equipos será mucho más simple. La instalación la hacemos con pkg_add: Buscamos el nombre del paquete dentro del archivo index.txt que contiene toda la lista de paquetes disponibles. bash-4.1# grep -i squid index.txt -rw-r--r-- 1 276 125 65007 Aug 10 20:53:51 2010 lightsquid-1.8.tgz 4 http://www.openbsd.org/faq/pf/ ________________________________________________________________________________ 11.Servidor Proxy (Squid) 31/36
  • 32. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org -rw-r--r-- 1 276 125 725240 Aug 10 15:07:10 2010 squid-2.7.STABLE9-ldap- snmp.tgz -rw-r--r-- 1 276 125 712727 Aug 10 15:19:32 2010 squid-2.7.STABLE9-ldap.tgz -rw-r--r-- 1 276 125 703638 Aug 10 15:46:29 2010 squid-2.7.STABLE9-snmp.tgz -rw-r--r-- 1 276 125 690116 Aug 9 11:02:10 2010 squid-2.7.STABLE9.tgz -rw-r--r-- 1 276 125 1683240 Aug 10 19:47:01 2010 squidGuard-1.4p0-ldap.tgz -rw-r--r-- 1 276 125 1681544 Aug 10 19:54:59 2010 squidGuard-1.4p0.tgz Una vez encontrado el paquete requerido lo instalamos: bash-4.1# pkg_add squid-2.7.STABLE9.tgz Al terminar la instalación de squid, aparece algo como: [....] You can also edit /etc/rc.local so that Squid is started automatically: if [ -x /usr/local/sbin/squid ]; then echo -n ' squid'; /usr/local/sbin/squid fi Esto nos informa las diferencias locales de Squid en OpenBSD, nos cuenta que los archivos de configuración están en /etc/squid, ejemplos en /usr/local/share/examples/squid, mensajes de error en /usr/local/share/squid/errors, ejemplos de error en /usr/local/share/examples/squid/errors, los iconos están en /usr/local/share/squid/icons, los ejemplos de iconos /usr/local/share/examples/squid/icons, la cache está en /var/squid/cache, los logs se guardan en /var/squid/logs, el usuario y el grupo son respectivamente _squid:_squid. También nos recuerda inicializar la cache con "squid -z" antes de tratar de correr squid por primera vez, y las últimas líneas nos muestra que es lo que debemos poner en el archivo /etc/rc.local para inicializarlo automáticamente con el sistema. Se configura el /etc/squid/squid.conf según las opciones que se deseen, este tiene también la misma estructura y contenido que en cualquier otro sistema operativo, aquí voy a comentar solo las cosas específicas para tener en cuenta. Primero que todo, la instalación por defecto solo admite el sistema de archivos ufs, y la política de reemplazo lru (yo intenté usar otras opciones y no me lo permitió, diciendo que eran opciones equivocadas, o desconocidas), esto se debe a las opciones con las que se compilo el paquete, si se desea que tenga otras opciones, debe instalarse desde los ports. Para proxy transparente se debe recordar poner en la directiva http_port la opción transparente, así: http_port 3128 transparent donde 3128 es el puerto por defecto en el que escucha el servidor proxy. ________________________________________________________________________________ 11.Servidor Proxy (Squid) 32/36
  • 33. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org Para que este proxy transparente funcione correctamente, es necesario agregar la siguiente línea en el archivo /etc/pf.conf antes de la línea de nat. pass in quick on $lan inet proto tcp to any port 80 rdr-to 127.0.0.1 port 3128 Con esta línea se redirecciona todo el tráfico saliente dirigido a web (puerto 80) al puerto local en el que escucha el Squid, así que este será el que atienda la petición. Para que Squid loguee sus actividades es necesario definir además de la ruta de los archivos en los que se guardarán los logs, el formato de estos. Pensando en más adelante usar Sarg para analizar los logs, y generar reportes, uso un formato que este pueda entender, en el squid.conf hay varios tipos de formatos definidos y comentados, en mi caso funcionó con la primera línea: logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt Luego se ejecuta el siguiente comando para crear las carpetas de la cache: bash-4.1# squid -z 2010/11/27 16:42:53| Creating Swap Directories Aquí pueden verse además los errores de sintaxis que puedan haber en el squid.conf, una vez que se ejecuta sin error, se puede iniciar el servicio, con el siguiente comando: bash-4.1# /usr/local/sbin/squid Para que siempre se inicie con el sistema se debe agregar las líneas que nos mostró después de la instalación en el archivo /etc/rc.local, son las siguientes: # Cargar el demonio SQUID if [ -x /usr/local/sbin/squid ]; then echo -n ' squid'; /usr/local/sbin/squid fi Cuando se quiera hacer un cambio en la configuración del Squid sin pararlo, basta cambiar los archivos de configuración y luego usar el comando siguiente: bash-4.1# /usr/local/sbin/squid -k reconfigure En caso de necesitar limpiar la cache, puede hacerse el siguiente procedimiento: bash-4.1#/usr/local/sbin/squid -k shutdown bash-4.1#rm -rf /var/squid/cache bash-4.1#squid -z bash-4.1#/usr/local/sbin/squid ________________________________________________________________________________ 11.Servidor Proxy (Squid) 33/36
  • 34. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org De esta manera se detiene, luego se borra la cache existente, se reconstruye, y se inicia nuevamente el servicio. Si queremos verificar el funcionamiento del squid, podemos usar el comando tail para monitorear el archivo de log: bash-4.1# tail -f /var/squid/logs/access.log 1290910480.566 124 192.168.1.50 TCP_MISS/304 275 GET http://www.google.com.co/images/modules/buttons/g-button-chocobo-basic-2.gif - DIRECT/72.14.253.104 - 1290910480.578 131 192.168.1.50 TCP_MISS/304 275 GET http://www.google.com.co/intl/en_com/images/srpr/logo1w.png - DIRECT/72.14.253.104- 11.1. Reportes con Sarg Para generar los reportes basados en los logs del Squid, de modo que yo pueda ver en que se están gastando mis usuarios el ancho de banda, y saber si tengo que hacer algún tipo de control sobre estos, puedo implementar la herramienta sarg5, lo primero que hago es instalar el software: bash-4.1# pkg_add -v sarg sarg-2.2.5p0: ok El archivo de configuración se encuentra en /etc/sarg/sarg.conf, en este hago las siguientes modificaciones : #Que el reporte me salga en español: language Spanish #Lugar donde se encuentra el access.log del squid access_log /var/squid/logs/access.log #Directorio de trabajo temporal temporary_dir /tmp #Directorio de salida, yo cree la carpeta manualmente con mkdir. output_dir /var//www/htdocs/sarg #Formato de fecha decente dd/mm/yyyy date_format e #Haga todos los reportes disponibles: report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads # Ubique apropiadamente mi servidor web: www_document_root /var/www/ htdocs Fácil!, asi como lo es todo en OpenBSD ;) Hay muchas otras opciones en este archivo, pero está bien documentado, en el mismo formato del squid.conf, con estas será más que suficiente. Para generar el reporte basta con ejecutar el comando sarg. 5 http://sarg.sourceforge.net/ ________________________________________________________________________________ 11.Servidor Proxy (Squid) 34/36
  • 35. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org bash-4.1# sarg SARG: Records in file: 45, reading: 100.00% SARG: Reporte generado satisfactoriamente en /var/www/htdocs/sarg/27Nov2010- 27Nov2010 De esta manera se crea en el directorio que pusimos como de salida el reporte completo, y para accederlo se hace a través del servidor web, en mi caso en la dirección de la LAN: http://192.168.1.5/sarg/ Es posible configurar otros sistemas de reportes de una manera rápida y segura. Experimenta! 12. Enlaces relacionados A continuación las direcciones de las páginas que use como guía en este proceso: Obviamente la referencia de algunos documentos básicos de: http://groups.google.com/group/OpenBSD-Colombia/files Y otros documentos de: http://openbsd.org/faq/faq4.html#AddFileSet http://www.openbsd.org/ports.html http://www.openbsd.org/faq/pf/index.html http://www.openbsd.org/faq/faq6.html#DHCP http://www.kernel-panic.it/openbsd/proxy/index.html http://www.openbsdsupport.org/mysql.htm http://www.h-i-r.net/2010/10/openbsd-48-is-almost-here-chroot-apache.html http://www.kernel-panic.it/openbsd/dns/dns3.html http://structio.sourceforge.net/guias/ http://www.openbsd.org/faq/pf/nat.html http://www.openbsd.org/faq/pf/example1.html 13. Historial del Documentación 13.1. Actualizaciones del documento Nombre E-mail Fecha modificación Esteban Calle Pérez estebancalleperez@gmail.com 27/11/10 Fernando Quintero Fernando.a.quintero@gmail.com 06/01/11 ________________________________________________________________________________ 13.Historial del Documentación 35/36
  • 36. Instalación de servicios básicos en OpenBSD v.4.8 - Astrid Eliana Sánchez Cortés, http://www.openbsdcolombia.org WWW.OPENBSDCOLOMBIA.ORG Piensa en Libertad, Piensa BSD. ________________________________________________________________________________ 13.Historial del Documentación 36/36