36
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: [email protected] 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

Servidor de Red en OpenBSD 48

Embed Size (px)

Citation preview

Page 1: Servidor de Red en OpenBSD 48

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: [email protected]

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

Índice de contenido1.Licencia (BSD)..................................................................................................................................22.Introducción.......................................................................................................................................23.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...........................................................................................................................64.1.Configurando con los paquetes a la mano.................................................................................74.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................................................................................................................................136.Comprobando rc.conf.local.............................................................................................................147.Servidor DNS..................................................................................................................................158.Servidor MySQL (Bases de Datos).................................................................................................19

8.1.Aspectos importantes con MySQL..........................................................................................229.Servidor WEB: Apache en Chroot..................................................................................................22

9.1.PHP v 5.0.................................................................................................................................229.2.Apache v 1.3.x (versión por omisión)......................................................................................259.3.Correos con PHP y MiniSendmail ..........................................................................................269.4.Ejemplo con MySQL y PHP....................................................................................................27

10.NAT y Firewall (PF - Packet Filter)..............................................................................................2911.Servidor Proxy (Squid)..................................................................................................................31

11.1.Reportes con Sarg..................................................................................................................3412.Enlaces relacionados.....................................................................................................................3513.Historial del Documentación.........................................................................................................35

13.1.Actualizaciones del documento.............................................................................................35

________________________________________________________________________________ 1/36

Page 2: Servidor de Red en OpenBSD 48

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 NOTLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FORA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER ORCONTRIBUTORS 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, ORPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OFLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDINGNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THISSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

2. IntroducciónHace 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 sistemaAntes 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

Page 3: Servidor de Red en OpenBSD 48

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 redLa 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

Page 4: Servidor de Red en OpenBSD 48

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

Page 5: Servidor de Red en OpenBSD 48

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 dnsPara 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

Page 6: Servidor de Red en OpenBSD 48

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 paquetesEn 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

Page 7: Servidor de Red en OpenBSD 48

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 manoUna 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

Page 8: Servidor de Red en OpenBSD 48

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 usuariosSe 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

Page 9: Servidor de Red en OpenBSD 48

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

Page 10: Servidor de Red en OpenBSD 48

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 panicComo 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

Page 11: Servidor de Red en OpenBSD 48

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 defaultEl 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

Page 12: Servidor de Red en OpenBSD 48

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/tcpdaytime 13/udptime 37/tcp timservertime 37/udp timserverauth 113/tcp authentication tap identSi 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

Page 13: Servidor de Red en OpenBSD 48

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 DHCPNecesito 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.confAhora 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

Page 14: Servidor de Red en OpenBSD 48

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.localEn 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

Page 15: Servidor de Red en OpenBSD 48

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 DNSEste 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

Page 16: Servidor de Red en OpenBSD 48

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

Page 17: Servidor de Red en OpenBSD 48

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

Page 18: Servidor de Red en OpenBSD 48

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

Page 19: Servidor de Red en OpenBSD 48

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

Page 20: Servidor de Red en OpenBSD 48

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

Page 21: Servidor de Red en OpenBSD 48

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

Page 22: Servidor de Red en OpenBSD 48

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 MySQLEn 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 ChrootEn 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.0Para 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

Page 23: Servidor de Red en OpenBSD 48

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

Page 24: Servidor de Red en OpenBSD 48

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

Page 25: Servidor de Red en OpenBSD 48

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

Page 26: Servidor de Red en OpenBSD 48

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

Page 27: Servidor de Red en OpenBSD 48

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 PHPVoy 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

Page 28: Servidor de Red en OpenBSD 48

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

Page 29: Servidor de Red en OpenBSD 48

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

Page 30: Servidor de Red en OpenBSD 48

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

Page 31: Servidor de Red en OpenBSD 48

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 FAQ4 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

Page 32: Servidor de Red en OpenBSD 48

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

Page 33: Servidor de Red en OpenBSD 48

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

Page 34: Servidor de Red en OpenBSD 48

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 SargPara 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

Page 35: Servidor de Red en OpenBSD 48

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 relacionadosA 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ónEsteban Calle Pérez [email protected] 27/11/10Fernando Quintero [email protected] 06/01/11

________________________________________________________________________________ 13.Historial del Documentación 35/36

Page 36: Servidor de Red en OpenBSD 48

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