Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para...

45
Notas de OpenBSD como servidor y contrafuegos Vladimir Támara Patiño Mauricio Rivera

Transcript of Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para...

Page 1: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Notas de OpenBSD como servidor ycontrafuegos

Vladimir Támara Patiño

Mauricio Rivera

Page 2: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Notas de OpenBSD como servidor y contrafuegospor Vladimir Támara Patiño

por Mauricio Rivera

Este documento y sus fuentes se ceden al dominio público en 2004. Se actualizaron por última vez en 19/01/2005 y cubren especialmente

OpenBSD 3.6. No se ofrece garantía alguna, por el contrario se aprecia que se envien correcciones y sugerencias al autor. Este escrito se dedica a

Dios.

Este documento se ha escrito en el marco del proyecto Structio (http://structio.sourceforge.net/). La versión publicada más reciente está disponible

tanto en HTML (http://structio.sourceforge.net/guias/servidor_OpenBSD/), como PostScript comprimido

(http://structio.sourceforge.net/guias/servidor_OpenBSD//servidor_OpenBSD-1.0.ps.gz) y como PDF

(http://structio.sourceforge.net/guias/servidor_OpenBSD//servidor_OpenBSD-1.0.pdf). También están publicadas sus fuentes en DocBook

comprimidas (http://structio.sourceforge.net/guias/servidor_OpenBSD//servidor_OpenBSD-1.0.tar.gz). La versión de desarrollo está en el

repositorio CVS de Structio (http://cvs.sourceforge.net/viewcvs.py/structio/guias/servidor_OpenBSD/).

Page 3: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Tabla de contenidos1. Introducción ........................................................................................................................................... 1

2. Dispositivos de interconexión................................................................................................................ 2

2.1. Conexión con un módem nulo .................................................................................................... 22.1.1. Módem Nulo................................................................................................................... 22.1.2. Servidor .......................................................................................................................... 32.1.3. Terminal.......................................................................................................................... 32.1.4. PPP sobre Módem Nulo ................................................................................................. 42.1.5. Referencias y lecturas recomendadas............................................................................. 5

2.2. Conexión a Internet con un módem o modem ISDN ..................................................................52.2.1. Resolviendo problemas de conexion con Supercable en OpenBSD ..............................72.2.2. Referencias y lecturas recomendadas............................................................................. 8

2.3. Uso y configuración en una red LAN Ethernet........................................................................... 82.3.1. Configuración de una interfaz de red.............................................................................. 92.3.2. Protocolo ARP................................................................................................................ 92.3.3. Enrutamiento .................................................................................................................. 92.3.4. Nombres ....................................................................................................................... 102.3.5. Referencias ................................................................................................................... 10

3. Direcciones, enrutamiento, transporte y contrafuegos.....................................................................11

3.1. NAT (Network Address Translation) ........................................................................................ 113.1.1. Referencias y lecturas recomendadas........................................................................... 11

3.2. Contrafuegos ............................................................................................................................. 113.2.1. Referencias y lecturas recomendadas........................................................................... 12

3.3. Control de ancho de banda........................................................................................................ 123.3.1. Referencias y lecturas recomendadas........................................................................... 13

4. Protocolos de soporte y de usuario..................................................................................................... 14

4.1. Servidor DNS............................................................................................................................ 144.1.1. Resolución de nombres................................................................................................. 144.1.2. named ........................................................................................................................... 144.1.3. Referencias y lecturas recomendadas........................................................................... 16

4.2. Servidor ssh............................................................................................................................... 164.2.1. Referencias y lecturas recomendadas........................................................................... 16

4.3. Servidor ntp .............................................................................................................................. 164.3.1. Referencias y lecturas recomendadas........................................................................... 17

4.4. Configuración de correo............................................................................................................ 174.4.1. Relevo de Correo .......................................................................................................... 174.4.2. Cambiar puerto SMTP.................................................................................................. 174.4.3. Dominios virtuales........................................................................................................ 184.4.4. POP3 y POP3S ............................................................................................................. 19

4.4.4.1. Referencias y lecturas recomendadas ..............................................................214.4.5. Openwebmail................................................................................................................ 214.4.6. Instalando Mailman (no chroot) ................................................................................... 22

4.4.6.1. Lecturas recomendadas.................................................................................... 244.5. Configuración de un servidor ftp .............................................................................................. 24

4.5.1. Referencias y lecturas recomendadas........................................................................... 24

iii

Page 4: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

4.6. Apache ...................................................................................................................................... 254.6.1. Dominios virtuales........................................................................................................ 254.6.2. SSL ............................................................................................................................... 264.6.3. PHP............................................................................................................................... 26

4.6.3.1. Soporte para PostgreSQL en PHP....................................................................274.6.3.2. Lecturas recomendadas.................................................................................... 27

4.6.4. Tomcat .......................................................................................................................... 274.6.4.1. Lecturas recomendadas.................................................................................... 29

4.6.5. Server Side Include....................................................................................................... 294.6.5.1. Lecturas recomendadas.................................................................................... 29

5. Otros servicios que puede prestar el servidor ................................................................................... 30

5.1. syslog ........................................................................................................................................ 305.1.1. Referencias y lecturas recomendadas........................................................................... 30

5.2. Cuotas........................................................................................................................................ 305.2.1. Referencias y lecturas recomendadas........................................................................... 31

5.3. RDBMS PostgreSQL ................................................................................................................ 315.3.1. Primera instalación del servidor ................................................................................... 315.3.2. Creación de una base de datos...................................................................................... 335.3.3. Uso de una base de datos.............................................................................................. 345.3.4. Referencias y lecturas recomendadas........................................................................... 34

5.4. MySQL...................................................................................................................................... 345.4.1. MySQL y Apache con chroot....................................................................................... 36

5.4.1.1. Volviendo chroot el servidor ............................................................................ 365.4.1.1.1. Sistema operativo ................................................................................ 365.4.1.1.2. 3.2 Preparar el ambiente chroot...........................................................375.4.1.1.3. Establecer derechos de acceso.............................................................375.4.1.1.4. Crear estructura del directorio.............................................................375.4.1.1.5. Filtrar archivos de passwords y grupos ...............................................375.4.1.1.6. Consideraciones especiales .................................................................38

5.4.1.2. Corriendo el servidor ....................................................................................... 385.4.1.3. Habilitando php en el servidor apache.............................................................395.4.1.4. Habilitando mysql con php en el servidor apache ...........................................39

5.4.2. Lecturas recomendadas ................................................................................................ 39

Bibliografía............................................................................................................................................... 41

iv

Page 5: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 1. IntroducciónEn este escrito describimos algunos programas y características de OpenBSD 3.6 que se emplean enservidores seguros o contrafuegos conectados a Internet o en una Intranet. Este escrito escomplementario a [OpenBSD_usuario] donde se describe la instalación de OpenBSD así como su uso yla configuración de programas y características típicamente empleadas por usuarios finales.

La estructura de este documento se basa en el capítulo 6 de [AALinux], aunque hemos procurado norepetir los conceptos básicos allí mencionados, sino la implementación en el caso de OpenBSD.

Las fuentes de este escrito están en DocBook (ver [DocBook]) y siguen algunas convenciones de laherramienta repasa (ver [repasa]).

1

Page 6: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexiónDurante el arranque, OpenBSD detecta la gran mayoría de dispositivos conectados a un computador. Unavez en operación puede examinar la detección con dmesg.

Si durante el arranque algún dispositivo no es detectado o es detectado incorrectamente, puede intentarhacer modificaciones durante el arranque iniciando con bsd -c cuando esté en el prompt de arranquedel programa boot.

2.1. Conexión con un módem nuloPara conectar una terminal a un sistema OpenBSD puede emplearse un módem nulo. La terminal puedeser un computador con OpenBSD o con cualquier otro sistema operativo y un programa que permita verla información que llegue a un puerto serial y enviar la que se teclee (por ejemplo sirven variosprogramas para comunicarse vía módem).

2.1.1. Módem NuloUn módem nulo es cable que tiene en sus extremos dos conectores hembra para puerto serial y queintercambia algunas conexiones. Si ambos conectores son de 25 pines, todos los cables deben estarsueltos excepto:

• (DSR) 6 & (DCD) 8 – 20,

• (TxD) 2 – 3,

• (RxD) 3 – 2,

• (RTS) 4 – 5,

• (CTS) 5 – 4,

• (SG) 7 – 7,

• (DTR) 20 – 6 & 8.

En un conector de 9 pines la nomenclatura es: 1 DCD, 2 TxD, 3 RxD, 4 DTR, 5 SG, 6 DSR, 7 RTS y 8CTS.

Un módem nulo mínimo sólo requiere que se conecten SG - SG (tierra), TxD - RxD (transmisión de unocon recepción del otro) y RxD - TxD. Sin embargo para poder efectuar control de flujo también debenconectarse los demás.

Aunque en el comercio es posible comprar un módem nulo, también es relativamente fácil ensamblaruno, una vez tenga conectores, cable y cautín. Si hace su propio módem nulo puede probar que laconexión haya quedado bien empleando un ohmiometro.

Una vez se conecte un módem nulo puede probarlo enviando mensajes por el puerto serial del uno yviendo lo que recibe en el otro. Por ejemplo si conecta dos sistemas OpenBSD empleando en ambos elprimer puerto serial, en uno de los dos puede ejecutar (como usuario root)

cat < /dev/cua00

2

Page 7: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

mientras que en el otro ejecute

cat > /dev/cua00

cuando escriba en el segundo y presione ENTER, en el primero recibirá el mensaje y líneas en blanco(cat no es el programa apropiado para establecer la comunicación, sólo para probar).

2.1.2. ServidorCon un módem nulo conectado y funcionado puede configurarse un sistema OpenBSD como servidorpara que permita conectar terminales a un puerto serial. Debe configurarse el programa init para quedurante el arranque ejecute un programa que reciba conexiones por el puerto serial (tal programanormalmente es getty).

Basta editar el archivo /etc/ttys, quitar el comentario a la línea apropiada para que quede:

tty00 "/usr/libexec/getty std.9600" vt220 on secure

Después puede reiniciar el sistema o reiniciar init con: kill -HUP 1.

En la línea modificada a /etc/ttys, tty00 se refiere a /dev/tty00 (i.e el dispositivo del primerpuerto serial); /usr/libexec/getty std.9600 es el comando por ejecutar al arranque para manejarese dispositivo1; vt220 indica el tipo de terminal que se conectará; on y secure son banderas2 para init,el primero indica que se esperan conexiones por esa línea tty y el segundo indica que puede iniciarconexiones el usuario root.

2.1.3. TerminalUna vez conectado su módem nulo operativo a un servidor OpenBSD ya configurado para recibirconexiones por el puerto serial, puede conectar una terminal.

Si la terminal cuenta con un sistema operativo, puede emplear un programa de comunicaciones. Con estedebe poder ver los mensajes de login del servidor. Desde ahí puede entrar como un usuario de esesistema y trabajar como en una de las consolas virtuales (sin ambiente X).

Si el computador que va a conectar es un sistema OpenBSD puede emplear el programa tip comousuario root:

tip tty0

Es posible que tenga que intentar varias veces, si configura el servidor con una velocidad diferente puedeespecificarla por ejemplo con tip -38400 tty0

tip empleará la descripción de tty0 disponible en /etc/remote (que por defecto está configurado pararepresentar el primer puerto serial). Le permitirá ver la información que el servidor envíe, enviar

1. Como parámetro getty recibe características de la línea que deben estar especificadas en /etc/gettytab. En este casostd.9600 especifica la velocidad de transmisión. Empleando un módem nulo con control de flujo es posible emplear velocidadesmayores hasta std.115200.2. banderas del inglés flags

3

Page 8: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

información al servidor y hacer algunas operaciones especiales comenzando con el carácter ’~’. Porejemplo terminar la sesión con ’~.’, enviar un archivo con ’~p’ o recibir un archivo con ’~g’.

Dado que puede haber inconvenientes enviando o recibiendo archivos de 8 bits, los archivos(especialmente binarios) que envíe o reciba con tip debe codificarlos antes con uuencode ydecodificarlos después de transmitidos con uudecode. Para codificar un archivo prog.tgz y dejarlocodificado en prog.tgz.uue:

uuencode prog.tgz < prog.tgz > prog.tgz.uue

posteriormente para decodificarlo:

uudecode prog.tgz.uue

El inconveniente del método descrito es que tip no verifica la información transmitida. Una alternativa esemplear un protocolo como Zmodem. Para eso instale tanto en cliente como en servidor el paquetezmtx-zmrx (o lrzsz). Cuando desee transmitir un archivo del servidor al cliente, inicie la transmisiónen el servidor:

zmtx Mattich2.pdf

y en el cliente desde tip use ~C zmrx. Para enviar un archivo del cliente al servidor ejecute en elservidor: zmrx y después desde tip use: ~C zmtx miarchivo.txt

2.1.4. PPP sobre Módem NuloUna vez esté conectado un cliente con un servidor OpenBSD, es posible emplear el protocolo PPP parapermitirle al computador cliente acceder a Internet o a la red a la que esté conectado el servidor.

PPP es un protocolo especificado en el RFC 1661.

Una forma posible para lograr conectividad a Internet en una Intranet es asignando una dirección estáticade la red al cliente y empleando el servidor para que actúe como proxy a nivel ARP.

En el servidor asegurese de tener en el archivo /etc/ppp/ppp.conf:

default:set log Phase Chat LCP IPCP CCP tun commandset device /dev/cua00set speed 115200set ctsrts onset dial ""

modemnulo:set timeout 0set lqrperiod 10enable proxyenable lqraccept lqr

4

Page 9: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

allow users SuLogin

Remplazando SuLogin, SuClave y las direcciones de red por las apropiadas. Por su parte el archivo/etc/ppp/ppp.conf del cliente debe contener:

default:set log Phase Chat LCP IPCP CCP tun commandset device /dev/cua00set speed 115200set ctsrts onset dial ""

modemnulo:set dial ""set authkey SuClaveset login "TIMEOUT 3 ogin:-\\r-login: SuLogin word: \\P $ ppp\\s\\-direct\\smodemnulo\\r"set lqrperiod 10set timeout 0set ifaddr 192.168.16.20 192.168.16.131add default HISADDRenable lqraccept lqrenable dns

Después pude iniciar la comunicación desde el cliente con:

ppp -ddial modemnulo

2.1.5. Referencias y lecturas recomendadasPuede consultar más sobre la conexión física de un módem nulo en [CablesModemNulo]. Puedeconsultar sobre comunicaciones seriales en FreeBSD (similar a OpenBSD) en el capítulo "SerailCommunications" de [FreeBSDHandbook] Para emplear un sistema OpenBSD mínimo como consola dealgunos eventos de un servidor OpenBSD puede consultar [SerialOpenBSD]. La configuración delservidor OpenBSD que le permite atender conexiones por el puerto serial puede verse en las sugientespáginas man: init(8), ttys(5) y getty(8). La configuración de un cliente OpenBSD para funcionar comoconsola puede consultarse en: tip(1) y remote(5). Para conocer más sobre PPP puede consultarse el RFC1661 (ftp://ftp.rfc-editor.org/in-notes/rfc1661.txt), la implementación particular de el protocolo deusuario en OpenBSD en la página del manual. El archivo de configuración por defecto también cuentacon comentarios que ayudan.

5

Page 10: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

2.2. Conexión a Internet con un módem o modem ISDNEs posible conectar un sistema OpenBSD a Internet empleando un modem o un modem ISDN. Para estoel módem que se emplea debe estar soportado y debe configurarse ppp para realizar la conexión.

Hay diversos tipos de módems (tarjetas ISA, PCI, módems externos USB o seriales), los módemsexternos que se conectan a puerto serial son los más fáciles de configurar, algunos módems USB tambiénson soportados (los que tengan comandos y datos multiplexados –como indica la página del manual delcontrolador umodem) y eventualmente es posible hacer funcionar tarjetas ISDN ISA o PCI(http://people.freebsd.org/~hm/i4b-home/).

Los modems y los modems ISDN reciben comandos AT y se configuran de la misma forma, empleandoppp. Por ejemplo el archivo /etc/ppp/ppp.conf podría incluir porciones como las siguientes(remplazando el número de teléfono, el nombre de la cuenta y la clave por los correctos):

default:set log Phase Chat LCP IPCP CCP tun commandset device /dev/cua01set speed 115200set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT \

OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"

PAP:set phone 019478909891set authname [email protected] authkey laclaveusadaset timeout 120add default HISADDRenable dns

Para conectarse ejecute /usr/sbin/ppp -ddial PAP desde una cuenta que pertenezca al grupo network.Cuando se establezca la conexión quedará asociada una dirección IP a una interfaz tun (e.g a tun0).Puede también emplear el siguiente script para realizar la conexión:

#!/bin/sh# Dominio público. 2004.

# Usa configuracion de /etc/ppp/ppp.conf regla PAP

netw=‘groups | sed -e "s/.*network.*/1/g"‘;if (test "$netw" != "1") then {echo "Para usar PPP debe ser del grupo network";exit 1;} fi;

IP=‘/sbin/ifconfig tun0 | tail -n 1 | sed -e "s/.*inet \([.0-9]*\) .*/\1/g"‘;esta=‘echo $IP | sed -e "s/^[0-9][.0-9]*$/SI/g"‘if (test "$esta" = "SI") then {echo "Ya está conectado, IP es $IP";exit 0;} fi;

6

Page 11: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

/usr/sbin/ppp -ddial PAPwhile (test "$esta" != "SI") ; dosleep 1;IP=‘/sbin/ifconfig tun0 | tail -n 1 | sed -e "s/.*inet \([.0-9]*\) .*/\1/g"‘;esta=‘echo $IP | sed -e "s/^[0-9][.0-9]*$/SI/g"‘done

echo "Conectado. La IP es $IP";

Y el siguiente que facilita la desconexión:

pid=‘ps ax | grep "[p]pp" | sed -e "s/^[ ]*\([0-9]*\) .*$/\1/g"‘;espid=‘echo $pid | sed -e "s/^[0-9][0-9]*$/SI/g"‘;if (test "$espid" != "SI") then {

echo "No está conectado";exit 1;

} fi;kill -HUP $pidecho "Desconectado";

2.2.1. Resolviendo problemas de conexion con Supercable enOpenBSD

Conectándose con Supercable en Bogotá se presenta un problema con el nombre del servidor de DHCP.Cuando la maquina intenta conectarse por dhcp presenta el mensaje de "Bogus server name". Se trata deuna falla del proveedor y hasta tanto este no lo resuelva toca hallarle una solución. Esta es una soluciónpropuesta: bajar src.tar.gz, modificar el programa dhclient.c y recompilar.

Bajar y descomprimir src.tar.gz

cd /usr/srcwget ftp://rt.fm/pub/OpenBSD/3.6/src.tar.gztar -zxvf src.tar.gz

Buscar dhclient.c

find /usr/src -name dhclient

dhclient.c esta en sitio diferente según la version de OpenBSD.

7

Page 12: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

Editar dhclient.c

cd sbin/dhclient

Cambiar la rutina res_hnok. Esta debe retornar 1 siempre

Compilar dhclient.c

make

Copiar dhclient a /sbin/dhclient

cp /usr/src/sbin/dhclient/dhclient /sbin/

2.2.2. Referencias y lecturas recomendadasPágina del manual ppp.

2.3. Uso y configuración en una red LAN EthernetCada computador de una LAN debe tener al menos una tarjeta de red y debe estar intercontectado con elresto de la red por ejemplo con un hub o un switch (también es posible interconectar dos computadoresusando un cable cruzado).

En cada computador, cada dispositivo de interconexión se asocia a una interfaz de red cuando esdetectado en el momento del arranque (o por demanda como en el caso de tun0). Estas interfaces seadministran con ifconfig, por ejemplo para listarlas todas utilice:

ifconfig -a

Los dispositivos reconocidos en el momento del arranque a los que se les puede asociar una interfazpuede verlos con

dmesg | less

Un ejemplo típico de una tarjet Ethernet configurada es:

sis0 at pci0 dev 1 function 1 "SIS 900 10/100BaseTX" rev 0x83: irq 9, address 00:d0:09:9d:3f:a4

Note que se lista el nombre de la interfaz (i.e sis0), los recursos de hardware que emplea y la direcciónMAC (i.e 00:d0:09:9d:3f:a4).

8

Page 13: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

OpenBSD incluye documentación completa para cada tipo de dispositivo detectado (por ejemploopciones); para el caso del controlador del ejemplo anterior puede verse con:

man sis

2.3.1. Configuración de una interfaz de redDebe configurar cada interfaz de red en un archivo con un nombre de la forma/etc/hostname.interfaz. Por ejemplo para el caso de la tarjeta con controlador sis e interfazasignada por el kernel en el arranque sis0, seria /etc/hostname.sis0.

Como se explica en man hostname.if en el caso de una red IPv4, tal archivo debe tener en una líneaseparados por un espacio los siguientes datos (en este orden):

• Familia de direcciones. Tìpicamente inet

• IP (e.g 192.168.1.4)

• Mascara de red (e.g 255.255.255.0)

• Dirección de broadcast (e.g. 192.168.1.255) o la palabra NONE

• Eventualmente opciones

por ejemplo:

inet 192.168.1.4 255.255.255.0 NONE

La IP de la compuerta de su red se configura en /etc/mygate.

Después de hacer cambios a la configuración de red puede reiniciar el sistema de redes con:

# sh /etc/netstart

2.3.2. Protocolo ARPLa tabla del protocolo ARP asocia direcciones físicas de tarjetas de red conectadas a su red condirecciones IP. Para examinar tal tabla use:

arp -a

es posible agregar entradas de manera permanente o eliminarlas con las opciones -s y -d

respectivamente.

9

Page 14: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 2. Dispositivos de interconexión

2.3.3. EnrutamientoLa tabla de enrutamiento se usa para determinar a donde dirigir paquetes IP que vayan a salir de unservidor. Tal tabla se adminsitra con el programa route. Por ejemplo para examinar la tabla use:

# route show

o bien:

# netstat -rn

2.3.4. NombresPara no tener que emplear direcciones MAC se usa ARP que las transforma a direcciones IP, para noemplear direcciones IP puede:

• Poner un nombre a su máquina en el archivo /etc/myname

• Listar nombres de otros computadores y la IP corrspondiente en el archivo /etc/hosts (cada líneadebe tener la IP y a continuación la lista de nombres separados con espacio)

• Configurar un servidor de DNS en el archivo /etc/resolv.conf, por ejemplo si hay un servidor deDNS configurado en el servidor con IP 192.168.1.1:

nameserver 192.168.1.1

Para configurar su propio servidor DNS puede ver Sección 4.1

2.3.5. Referencias

• FAQ de OpenBSD Sección 6.

• Páginas man de arp, route, ifconfig, hostname.if

10

Page 15: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 3. Direcciones, enrutamiento,transporte y contrafuegos

La funcionalidad de redes de OpenBSD se puede controlar con sysctl y con pf. El primero puedeconfigurarse de manera permanente en el archivo /etc/sysctl.conf y el segundo en /etc/pf.conf

(o el archivo especificado en la variable pf_rules de rc.conf.local o rc.conf). Para que pf entreen operación en cada arranque del sistema, agregué a rc.conf.local la línea:

pf=""

3.1. NAT (Network Address Translation)Puede emplear NAT para que un computador conectado a una red privada y que se conecte a Internet,pueda emplearse como puente para que los computadores de la red privada empleen Internet.

Para activarlo debe estar corriendo pf (como se explica al comienzo de este capítulo) y debe activarreenvio de IP con:

sysctl -w net.inet.ip.forwarding=1

o mejor aún de manera más permanente verificando que el archivo /etc/sysctl.conf tenga la línea:

net.inet.ip.forwarding=1

Como el computador que hará NAT debe tener dos interfaces de red una para conectarlo a la red internaty otra para conectarlo a Internet, configure las variables ext_if e int_if con los nombres de lasinterfaces externa (conectad a Internet) e interna respectivamente. Después quite el comentario de la línea

nat on $ext_if from !($ext_if) to any -> ($ext_if)

del archivo /etc/pf.conf.

3.1.1. Referencias y lecturas recomendadasLas siguientes páginas man: pf(4), pfctl(4).

Guía del usuario de PF [PF].

3.2. ContrafuegosUn contrafuegos permite filtrar tráfico que puede llegar o salir a un computador conectado a una redcomo Internet.

11

Page 16: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 3. Direcciones, enrutamiento, transporte y contrafuegos

El siguiente ejemplo presenta una porción del archivo /etc/pf.conf que permitiría todo tráfico salientey bloquear todo tráfico entrante excepto: SMTP (25), ssh (22), web (80), pop3s (995) y Tomcat (8080):

block in log all

antispoof quick for lopass in on $ext_if proto tcp from any to $ext_if port 25 keep statepass in on $ext_if proto tcp from any to $ext_if port 22 keep statepass in on $ext_if proto tcp from any to $ext_if port 80 keep statepass in on $ext_if proto tcp from any to $ext_if port 995 keep statepass in on $ext_if proto tcp from any to $ext_if port 8080 keep statepass out on $ext_if proto { tcp, udp } all keep state

El siguiente ejemplo presenta como configurar un servidor NAT para que permita toda conexión quesalga de la red privada hacia Internet, y para que bloquee toda conexión que llegue excepto tráfico TCPpor los puertos para web (80), ssh (22), smtp (25), pop3s (995) y dns (53), también permite llegada detráfico UDP por el puerto 53 y tráfico ICMP (para responder ping):

block in log allpass out keep state

pass quick on { lo $int_if }antispoof quick for { lo $int_if }

pass in on $ext_if proto tcp from any to ($ext_if) port ssh keep statepass in log on $ext_if proto tcp from any to ($ext_if) port smtp keep statepass in on $ext_if proto tcp from any to $ext_if port 80 keep statepass in on $ext_if proto tcp from any to $ext_if port 995 keep statepass in on $ext_if proto { tcp, udp } from any to $ext_if port 53 keep statepass out on $ext_if proto { tcp, udp } all keep state#pingpass in inet proto icmp all icmp-type echoreq keep state

3.2.1. Referencias y lecturas recomendadasLas siguientes páginas man: pf(4), pfctl(4).

Guía del usuario de PF [PF].

3.3. Control de ancho de bandaEl siguiente ejemplo presenta como puede configurarse un servidor NAT para controlar ancho de bandade diversos computadores de la red interna.

altq on $int_if bandwidth 256Kb cbq queue { dflt_in, uext1_in, uext2_in,uext3_i

12

Page 17: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 3. Direcciones, enrutamiento, transporte y contrafuegos

n, uext4_in}altq on $ext_if bandwidth 128Kb cbq queue { dflt_out }

queue dflt_in cbq(default)queue dflt_out cbq(default)

queue uext1_in bandwidth 15%queue uext2_in bandwidth 15%queue uext3_in bandwidth 15%queue uext4_in bandwidth 15%

uext1="192.168.1.70" # 404uext2="192.168.1.23" # 604uext3="192.168.1.95" # 602uext4="192.168.1.30" # 603

3.3.1. Referencias y lecturas recomendadasLas siguientes páginas man: pf(4), pfctl(4).

Guía del usuario de PF [PF].

13

Page 18: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

4.1. Servidor DNS

4.1.1. Resolución de nombresPara resolver nombres OpenBSD emplea rutinas propias de resolución incluidas en la librería de C, seconfiguran en /etc/resolv.conf. Este archivo puede incluir, dominio (domain), lista de servidores(nameserver), orden de fuentes donde buscar (lookup), lista de dominios en los cuales buscar(search), retornar direcciones IP en orden (sortlist), opciones (options). Un ejemplo del archivo/etc/resolv.conf es:

search miescuela.edu.conameserver 192.168.16.1lookup file bind

lookup permite especificar un orden para hacer resolución de acuerdo a uno o más de los siguientesargumentos separados por espacio:

• bind que indica usar servidor de nombres (named)

• file que indica buscar en /etc/hosts

• yp que indica emplear el sistema YP si ypbind está corriendo.

4.1.2. namedOpenBSD incluye entre sus componentes básicos parte del servidor BIND 9, bajo el nombre named, quepor defecto corre con chroot en el directorio /var/named.

Puede configurarse y probarse antes de iniciarlo en cada arranque. Para configurarlo por primera vezpueden seguirse primero los pasos de /etc/rc. El archivo de configuración es/var/named/etc/named.conf. Se sugiere que se agregue información de zonas de las cuales esmaestro en en archivos del directorio /var/named/master. Pueden configurarse archivos como dice en[AA_Linux] por ejemplo los datos un servidor DNS primario del dominio miescuela.edu.co puedenquedar en el archivo /var/named/master/miescuela.edu.co:

@ IN SOA @ root.localhost. (48 ; Serial de Zona1D ; Refesco secundario6H ; Retintento secundario40D ; Expiración secundaria1D ) ; Cache de registros de recurso

14

Page 19: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

NS @

A 65.8.9.234

MX 5 correo.miescuela.edu.co.

correo IN A 65.8.9.234

www CNAME miescuela.edu.co.

Note que se declara el mismo dominio como servidor de nombre autoritario, se relaciona con la IP(65.8.9.234), el nombre correo.miescuela.edu.co identificara la misma máquina y es el nombreque se usará para intercambiar correos; el nombre www.miescuela.edu.co será un alias para el mismoservidor. Note que todo nombre que no termine con punto (.), será completado por bind con el dominio(i.e www será completado a www.miescuela.edu.co, si se olvida el punto después decorreo.miescuela.edu.co, bind lo completará acorreo.miescuela.edu.co.miescuela.edu.co). Recuerde aumentar el número serial cada vezque haga algún cambio, para que la información pueda ser actualizada en los servidores secundarios.Puede probar cada archivo de zonas que haga con:

named-checkzone /var/named/master/miescuela.edu.co

Agregue una referencia al archivo de zonas maestro en /var/named/etc/named.conf, en la secciónpara zonas maestras algo de la forma:

zone "miescuela.edu.co" {type master;file "master/miescuela.edu.co";

Si desea que un servidor sea secundario de algun servidor primario, agregue en/var/named/etc/named.conf en la sección para zonas esclavas algo como:

zone "miescuela.edu.co" {type slave;file "slave/miescuela.edu.co";masters { 65.8.9.234; };

}

Cuando named lea de nuevo sus archivos de configuración traerá la información del servidor primario yla dejará en el archivo slave/miescuela.edu.co.

El servidor se inicia con

named -t /var/named

Los errores que se produzcan antes de hacer chroot son enviados a /var/log/daemon. Para probar elfuncionamiento antes de modificar /etc/resolv.conf puede usar:

dig @localhost miescuela.edu.co

15

Page 20: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

Si requiere volver a leer los archivos de configuración (por ejemplo después de cambiar los archivos dezonas) puede enviar la señal SIGHUP al proceso con:

pkill -HUP named

o con

rndc reload

Una vez compruebe que su servidor DNS está operando correctamente puede indicar que se inicie encada arranque agregando a /etc/rc.conf.local:

named_flags=""

4.1.3. Referencias y lecturas recomendadasSección sobre DNS de las guías Aprendiendo a aprender Linux. [AA_Linux] Referencia paraadministradores de BIND 9 [bind9arm]. Ayudas para configurar Bind incluido en OpenBSD []. Lassiguientes páginas man: named(8). dig(8).

4.2. Servidor sshAl instalar OpenBSD con soporte de red, tendrá la oportunidad de activar o no el servidor de OpenSSHsshd.

El servidor OpenSSH soporta bien un modo especial llamado "de separación de privilegios" sólo enOpenBSD y NetBSD. Este modo ha mostrado ser más seguro que el modo normal1.

Tenga en cuenta revisar el archivo de configuración del servidor (/etc/ssh/sshd_config) y adaptarloa sus necesidades.

4.2.1. Referencias y lecturas recomendadasLas siguientes páginas man: sshd(8).

1. Este modo ha tenido menos vulnerabilidades que el modo normal. Ver http://www.counterpane.com/alert-openssh.html

16

Page 21: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

4.3. Servidor ntpEl protocolo NTP permite mantener sincronizado el reloj de un computador con otro donde corra unservidor NTP.

Hay varios servidores en Internet que proveen este servicio públicamente, algunos están conectados arelojes de alta precisión

OpenBSD (dese la versión 3.6) incluye una implementación del cliente y servidor de este protocolollamada OpenNTPD. Para configurar un cliente basta editar /etc/rc.conf.local para agregar:

ntpd_flags=""

lo cual empleará el archivo de configuración /etc/ntpd.conf que por defecto especifica:

servers pool.ntp.org

con lo cual actua como cliente empleando aleatoriamente alguno de los servidores de NTP disponiblesmundialmente en pool.ntp.org.

4.3.1. Referencias y lecturas recomendadasDocumentación disponible en http://www.openntpd.org.

4.4. Configuración de correoOpenBSD incluye una versión auditada de sendmail, para usarla con una configuración por defecto quepermite enviar y recibir correos a otras máquinas, agregue la siguiente línea a /etc/rc.conf.local:

sendmail_flags="-L sm-mta -C/etc/mail/sendmail.cf -bd -q30m"

Con esta configuración sendmail funcionará como MTA y esperará conexiones SMTP en el puerto 25 yen el puerto 587 (el segundo se espera que sea empleado por usuarios locales y que esté bloqueado alexterior, mientras que el primero por usuarios que deseen reenviar correo desde otros computadores).

4.4.1. Relevo de CorreoComo se explica en el FAQ de OpenBSD, si planea emplear su servidor para hacer relevo de correo(relay), basta que agregue los dominios o IPs de las cuales recibir correo para reenviar en el archivo/etc/mail/relay-domains (o el que la siguiente instrucción indique: grep relay-domains/etc/mail/sendmail.cf ) Un ejemplo de tal archivo es:

miescuela.edu.co # Acepta de todos los computadores del dominio192.168.1 # Acepta de todos las IPs de la forma 192.168.1.x

17

Page 22: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

4.4.2. Cambiar puerto SMTPSi desea cambiar el puerto en el que sendmail espera conexiones SMTP, emplee las fuentes del sistema:

# cd /usr/share/sendmail/cf# vi openbsd-proto.mc

Busque y modifique la línea:

DAEMON_OPTIONS(‘Family=inet, Address=0.0.0.0, Name=MTA’)dnlDAEMON_OPTIONS(‘Family=inet6, Address=::, Name=MTA6, M=O’)dnl

agregandoles un puerto no estándar:

DAEMON_OPTIONS(‘Family=inet, Address=0.0.0.0, Port=2000, Name=MTA’)dnlDAEMON_OPTIONS(‘Family=inet6, Address=::, Port=2000, Name=MTA6, M=O’)dnl

Después genere el archivo de configuración /etc/mail/sendmail.cf con:

# make# make distribution

finalmente reinicie sendmail o enviele una señal para que lea nuevamente archivos de configuración:

# pkill -HUP sendmail

4.4.3. Dominios virtualesSi un mismo servidor atiende diversos dominios DNS, puede lograr que se acepte correo para cadadominio. Para esto:

• Asegurese de tener un registro MX para el dominio que indique que su servidor es el servidor decorreo del dominio. i.e en el archivo maestro del dominio (digamos/var/named/master/miescuela.edu.co) algo como:

MX 5 correo.miescuela.edu.co.correo IN A 65.167.89.169

¡No omita el punto que va a continuación del nombre del servidor MX!

• Agregue el dominio (e.g miescuela.edu.co) a los archivos /etc/local-host-names y/etc/mail/relay-domains

• Reinicie sendmail con:

pkill -HUP sendmail

Con esta configuración todo correo a una dirección de la forma [email protected] seráenviado a la cola de correos del usuario local pablo. Si lo requiere es posible agregar direcciones que seenvien a otro usuario local, agregando entradas al archivo /etc/mail/virtusertable, por ejemplo:

18

Page 23: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

[email protected] pablo

reenviará todo correo dirigido a [email protected] al usuario local pablo.

4.4.4. POP3 y POP3SPOP3 (Post Office Protocol) es un protocolo que permite sacar correos de un servidor para llevarlos aotro computador donde podrán examinarse con un MUA.

Para que los usuarios puedan emplear clientes de correo que soporten POP3, es necesario configurar unservidor de este protocolo. OpenBSD incluye entre sus componente básicos un servidor de POP3(popa3d), que puede activar agregando la siguiente línea al archivo /etc/inetd.conf:

pop3 stream tcp nowait root /usr/sbin/popa3d popa3d

Tenga en cuenta que POP3 transmite claves como texto plano y estas podrían ser interceptadas. Pararemediar la situación, si cuenta con un cliente de correo que soporte POP3 sobre SSL, es posible emplearel protocolo POP3S, que es el mismo POP3 pero encriptado con SSL.

Para activar POP3S sugerimos instalar el paquete stunnel y después:

1. Genere un certificado SSL que usted mismo podría firmar:

# cd /etc# mkdir stunnel# cd stunnel# cat > stunnel.conf « EOF

cert = /etc/stunnel/stunnel.pempid = /var/run/stunnel.pidsetuid = _stunnelsetgid = _stunnel

# Some debugging stuffdebug = 7output = stunnel.log

[pop3s]accept = 995connect = 110

[imaps]accept = 993connect = 143

[ssmtp]accept = 465connect = 25

[s1]accept = 5000

19

Page 24: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

connect = mail.osw.pl:110# delay = yes

[s2]accept = 5001connect = mail.osw.pl:25

[req]default_bits = 1024default_keyfile = privkey.pemdistinguished_name = req_distinguished_nameattributes = req_attributesx509_extensions = v3_ca

dirstring_type = nobmp

[ req_distinguished_name ]countryName = Country Name (2 letter code)countryName_default = COcountryName_min = 2countryName_max = 2

localityName = Locality Name (eg, city)

organizationalUnitName = Organizational Unit Name (eg, section)

commonName = Common Name (eg, YOUR name)commonName_max = 64

emailAddress = Email AddressemailAddress_max = 40

[ req_attributes ]challengePassword = A challenge passwordchallengePassword_min = 4challengePassword_max = 20

[ v3_ca ]subjectKeyIdentifier=hashauthorityKeyIdentifier=keyid:always,issuer:alwaysbasicConstraints = CA:true

EOFopenssl req -config stunnel.conf -new -x509 -days 365 -nodes -out stunnel.pem -keyout stunnel.pem

2. Una vez creado el certificado cree el archivo /etc/stunnel/pop3s.conf con el siguientecontenido:

cert = /etc/stunnel/stunnel.pemexec = /usr/sbin/popa3dexecargs = popa3d

20

Page 25: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

Puede probar hasta aquí ejecutando:

/usr/local/sbin/stunnel /etc/stunnel/pop3s.conf

que debe esperar algunas líneas que usted teclee (inicio del protocolo) y después salir.

3. Emplee inetd para atender conexiones al puerto apropiado (995 por defecto). Para esto agregue lasiguiente línea al archivo /etc/inetd.conf:

pop3s stream tcp nowait root /usr/local/sbin/stunnel \stunnel /etc/stunnel/pop3s.conf

Tras modificar /etc/inetd.conf haga que inetd vuelva a leer el archivo de configuración con:

kill -HUP ‘cat /var/run/inetd.pid‘

Puede probar que el servidor esta operando ejecutando:

telnet localhost 995

y finalmente configurando su cliente de correo.

4.4.4.1. Referencias y lecturas recomendadas

El protocolo POP3 se describe en el RFC 1939 http://www.faqs.org/rfcs/rfc1939.html Las siguientespáginas del manual: ssl, stunnel. Puede ver más sobre generación de certificados y stunnel en:http://www.stunnel.org/faq/certs.html

4.4.5. OpenwebmailPara instalar openwebmail en un servidor Openbsd que ya tenga sendmail corriendo hay que tener encuanta lo siguiente.

Por omisión, la partición donde se monta el directorio /var/ se hace nosuid para que no admitaarchivos ejecutables SUID en esta partición. Para correr exitosamente openwebmail en un servidorOpenBSD es necesario eliminar esta restricción. Inicialmente se puede tener un archivo para montarparticiones /etc/fstab como este:

/dev/wd0a / ffs rw 1 1/dev/wd0f /home ffs rw,nodev,nosuid 1 2/dev/wd0d /usr ffs rw,nodev,nosuid 1 2/dev/wd0e /var ffs rw,nodev,nosuid 1 2

es necesario cambiar la ultima línea eliminando la opción nosuid. Esta quedaría así:

/dev/wd0e /var ffs rw,nodev 1 2

21

Page 26: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

Después de cambiar esta opción, es necesario reiniciar el equipo para que monte la partición /var coneste cambio. Una vez reinicializado se puede instalar openwebmailmail ejecutando el comando deinstalacion pkg_add openwebmail-x.tgz

Una vez instalado se revisan los permisos de los archivos presentes en el directorio/var/www/cgi-bin/openwebmail. Los archivos *.pl deben tener estos permisos -r-sr-xr-x Paralograrlo haga:

chmod 4555 /var/www/cgi-bin/openwebmail/*.pl

El dueño de estos archivos debe ser root y debe pertenecer al grupo _mail, por tanto hacer:

chown root._mail /var/www/cgi-bin/openwebmail/*.pl

Para cada usuario del sistema hay que crear su carpeta de correo con permisos 600 y dueño usuario.usuario. Hacer:

touch /var/mail/usuariochmod 600 /var/mail/usuariochown usuario.usuario /var/mail/usuario

4.4.6. Instalando Mailman (no chroot)Instalar paquete de mailman pkg_add $PKG_PATH/mailman-2.1.5p1.tgz que requiere python-2.3.4se crean automaticamente el grupo _mailman y el usuario _mailman

Leer /usr/local/share/doc/mailman/README.OpenBSD

Editar /var/www/conf/httpd.conf agregando la linea:

ScriptAlias /mailman/ "$mailmandir/cgi-bin/"

donde $mailmandir es /usr/local/lib/mailman/ agregar tambien:

<Directory "/usr/local/lib/mailman/cgi-bin">AllowOverride NoneOptions NoneOrder allow,denyAllow from all

</Directory>

ademas agregar las lineas:

Alias /pipermail/ "/var/spool/mailman/archives/public/"

22

Page 27: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

<Directory "/var/spool/mailman/archives/public/">Options FollowSymLinksAddDefaultCharset Off

</Directory>

al mismo archivo.

Copiar los iconos: cp /usr/local/lib/mailman/icons/* /var/www/icons/ Reiniciar el apachepara que cargue los cambios.

apachectl graceful

editar el archivo /usr/local/lib/mailman/Mailman/mm_cfg.py agregando las lineas

DEFAULT_EMAIL_HOST = ’dominio.net’DEFAULT_URL_HOST = ’www.dominio.net’DEFAULT_URL_PATTERN = ’http://%s/mailman/’add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)

Crear primera lista llamada mailman

/usr/local/lib/mailman/bin/newlist mailman

agregar a /etc/mail/aliases las lineas:

## mailman mailing listmailman: "|/usr/local/lib/mailman/mail/mailman post mailman"mailman-admin: "|/usr/local/lib/mailman/mail/mailman admin mailman"mailman-bounces: "|/usr/local/lib/mailman/mail/mailman bounces mailman"mailman-confirm: "|/usr/local/lib/mailman/mail/mailman confirm mailman"mailman-join: "|/usr/local/lib/mailman/mail/mailman join mailman"mailman-leave: "|/usr/local/lib/mailman/mail/mailman leave mailman"mailman-owner: "|/usr/local/lib/mailman/mail/mailman owner mailman"mailman-request: "|/usr/local/lib/mailman/mail/mailman request mailman"mailman-subscribe: "|/usr/local/lib/mailman/mail/mailman subscribe mailman"mailman-unsubscribe: "|/usr/local/lib/mailman/mail/mailman unsubscribe mailman"

Regenerar alias con newaliases

Poner en el crontab algunas lineas:

crontab -u _mailman /usr/local/lib/mailman/cron/crontab.in

Reiniciar mailman:

/usr/local/lib/mailman/bin/mailmanctl start

23

Page 28: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

Hacer que cada vez que se inicie el equipo corra mailman, agregnado al archivo /etc/rc.local laslineas:

if [ -x /usr/local/lib/mailman/bin/mailmanctl ]; thenecho -n ’ mailman’/usr/local/lib/mailman/bin/mailmanctl -s -q start

fi

Asignar password al sitio de mailman con

/usr/local/lib/mailman/bin/mmsitepass

4.4.6.1. Lecturas recomendadas

/usr/local/share/doc/mailman/README.OpenBSD

4.5. Configuración de un servidor ftpOpenBSD incluye un servidor de ftp auditado, para que los usuarios del sistema puedan emplearlo bastaagregar la siguiente línea al archivo /etc/rc.conf.local:

ftpd_flags="-D"

Si desea permitir conexiones anonimas (con el usuario anonymous y una clave arbitraria), además debecrear una cuenta ftp. Los detalles de creación al usar adduser se presentan a continuación:

Enter username []: ftpEnter full name []: FTP anonimoEnter shell csh ksh nologin sh [ksh]: nologinUid [1008]:Login group ftp [ftp]:Login group is “ftp”. Invite ftp into other groups: guest no[no]:Login class auth-defaults auth-ftp-defaults daemon default staff[default]: auth-ftp-defaultsEnter password []:Enter password again []:

Después puede ubicar lo que desee que aparezca en el servidor ftp en el directorio de tal cuenta (e.g/home/ftp) y quitar los permisos de escritura para todos los usuarios.

24

Page 29: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

4.5.1. Referencias y lecturas recomendadasLa página del manual de ftpd.

4.6. ApacheOpenBSD incluye una versión auditada de Apache como parte de los componentes básicos. Paraactivarla sin soporte para SSL agregue la siguiente línea en /etc/rc.conf.local:

httpd_flags=""

A partir de OpenBSD 3.3, Apache corre por defecto y para mayor seguridad con chroot en /var/www,puede evitar esto empleando:

httpd_flags="-u"

El archivo de configuración por defecto (/var/www/conf/httpd.conf) no incluye directorios parausuarios. A partir de OpenBSD 3.4 se recomienda que estos directorios se creen en /var/www/users,los activa estableciendo en el archivo de configuración:

UserDir /users

4.6.1. Dominios virtualesEmpleado dominios virtuales (del inglés Virtual Hosting) es posible manejar con un mismo servidordiversas direcciones DNS. Para activarlo:

1. En /var/www/conf/httpd.conf no emplee un alias para el directorio /

2. Si ejecuta Apache con chroot copie /usr/lib/apache/modules/mod_vhost_alias.so en/var/www/usr/lib/apache/modules/

3. Agregue en /var/www/conf/httpd.conf una línea del estilo:

NameVirtualHost 65.167.3.4

remplazando la IP por la de su servidor

Agregue un dominio virtual por cada dominio que maneje, por ejemplo:

<VirtualHost 65.167.63.234>ServerAdmin [email protected] /var/www/htdocsServerName www.miescuela.edu.coServerAlias miescuela.edu.coErrorLog logs/miescuela.edu.co-error_logOptions ExecCgi Includes MultiViews Indexes FollowSymlinks

25

Page 30: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

SymLinksIfOwnerMatchCustomLog logs/miescuela.edu.co-access_log common

</VirtualHost>

4.6.2. SSLPara emplear SSL con Apache pueden seguirse las instrucciones del FAQ de OpenBSD que se retoman acontinuación. Debe generar un certificado que pueda ser firmado por una Autoridad Certificadora o porquien genera el certificado (esta seguna práctica no se considera seguro):

# openssl genrsa -out /etc/ssl/private/server.key 1024# openssl req -new -key /etc/ssl/private/server.key \

-out /etc/ssl/private/server.csr

Tras el segundo paso debe ingresar el código del país (co para Colombia), el departamento en el que está,la organización, la unidad dentro de la organización y el nombre común (e.g la dirección web). Despuéspuede firmar el certificado con:

openssl x509 -req -days 365 -in /etc/ssl/private/server.csr \-signkey /etc/ssl/private/server.key -out /etc/ssl/server.crt

A continuación puede

• agregar entre las opciones de Apache -DSSL en /etc/rc.conf.local

• modificar /var/www/conf/http.conf para que al usar SSL se redireccione al directorio apropiado(digamos /var/www/users/sivel/), i.e algo como:

DocumentRoot /var/www/users/sivelServerName miServidorServerAdmin [email protected] logs/error_logTransferLog logs/access_log

• Reiniciar el servidor con las opciones apropiadas, por ejemplo:

# apachectl stop# /usr/sbin/httpd -DSSL

Finalmente puede probar abriendo desde un navegador https://jesus.miescuela.edu.co

26

Page 31: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

4.6.3. PHPInstale los paquete php4-core-4.3.8 y php4-extensions-4.3.8. Después copie el archivo deejemplo de php:

# cp /usr/local/share/doc/php4/php.ini-dist /var/www/conf/php.ini

ejecute:

# /usr/local/sbin/phpxs -s

y asegurese de que las dos siguientes líneas estén en /var/www/conf/http.conf:

LoadModule php4_module /usr/lib/apache/modules/libphp4.so

AddType application/x-httpd-php .php

Reinicie Apache (por ejemplo con apachectl graceful) y pruebe la instalación de PHP por ejemplocargando desde un navegador un archivo prueba.php con el siguiente contenido:

<?phpphpinfo();

?>

4.6.3.1. Soporte para PostgreSQL en PHP

Para activar el soporte para PostgreSQL (ver Sección 5.3en PHP instale el paquete php4-pgsql-4.3.8y ejecute:

/usr/local/sbin/phpxs -a pgsql

Puede comprobar que esta extensión funciona revisando la salida de la función phpinfo().

4.6.3.2. Lecturas recomendadas

Puede aprender sobre PHP en http://www.php.net

La configuración de PHP con PostgreSQL y Apache corriendo con chroot puede verse enhttp://www.bsdforen.org/foren/showtopic.php?threadid=773 o en la sección sobre PostgreSQL de estasguías (ver Sección 5.3

27

Page 32: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

4.6.4. TomcatTomcat es una implementación de estándares de Sun para soportar servlets (como CGIs escritos en Java)y JSP (para generar contenido dinámico al estilo de PHP pero programando en Java).

Para emplear la versión 4.x de tomcat, instale primero el paquete jdk-linux-1.3.1_11 y después elpaquete jakarta-tomcat, sugerimos que después, si no existe, cree un usuario _tomcat en el grupo_tomcat y que sea dueño de los archivos en /var/tomcat:

# chown -R _tomcat:_tomcat /var/tomcat

Después ejecute:

JAVA_HOME=/usr/local/jdk1.3.1-linux/ \/usr/local/jakarta-tomcat-4.0.6/bin/startup.sh

Si desea que Tomcat inicie cada vez que arranque el sistema agregue las siguientes líneas a/etc/rc.local:

if [ -x /usr/local/jakarta-tomcat-4.0.6/bin/startup.sh ]; thenJAVA_HOME=/usr/local/jdk1.3.1-linux/ \jakarta-tomcat-4.0.6/bin/startup.shecho -n ’tomcat’

fi

y para que sea apagado cada vez que se apaga el computador, agregue en /etc/rc.shutdown:

if [ -x /usr/local/jakarta-tomcat-4.0.6/bin/shutdown.sh ]; thenJAVA_HOME=/usr/local/jdk1.3.1-linux/ \

jakarta-tomcat-4.0.6/bin/shutdown.shfi

La configuración por defecto (modificable en /etc/tomcat/server.xml) le permite ver contenidos enel puerto 8080, siendo $CATALINA_HOME /var/tomcat. Si requiere instalar una aplicación enformato .war, agreguela en /var/tomcat/webapps y reinicie Tomcat.

Si una aplicación produce graficas usando clases awt.*, durante el arranque de Tomcat deberá ejecutarel servidor virtual /usr/X11R6/bin/Xvfb, puede hacerlo modificando el script/usr/local/jakarta-tomcat-4.0.6/bin/catalina.sh. Agregue al comienzo:

export DISPLAY=:1

Al comienzo de la sección de la opción start agregue:

/usr/X11R6/bin/Xvfb :1 &

y en la sección stop ejecute:

28

Page 33: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 4. Protocolos de soporte y de usuario

pkill -9 Xvfb

Las bitácoras quedan en /var/tomcat/logs.

4.6.4.1. Lecturas recomendadas

Puede aprender sobre Jakarta-Tomcat en http://jakarta.apache.org/tomcat/index.html

La configuración de Xvfb puede verse en http://www.javasource.org/GifServlet/linux.html

4.6.5. Server Side IncludeEl Apache incluído en OpenBSD tiene compilado como módulo estático mod_include.c (como puedecomprobarse ejecutando /usr/sbin/httpd -l). Por esto para activar SSI basta quitar los comentarios de lassiguientes líneas en /var/www/conf/httpd.conf:

AddType text/html .shtmlAddHandler server-parsed .shtml

y en el directorio o directorios desde los que se quieren usar páginas con SSI (extensión .shtml),agregar entre las opciones:

Option Includes

Si se desea que las páginas con extensión .html sean reconocidas por el servidor, de forma que puedanincluir directivas SSI, deles permiso de ejecución y agregué después del AddHandler antes mencionado:

XBitHack on

Tras reiniciar apache puede probar creando una página prueba.shtml por ejemplo con:

<html><head><title></title></head><body><!-#echo var="DATE_LOCAL" -></body></html>

Al abrirla debe presentar la fecha y hora del sistema.

4.6.5.1. Lecturas recomendadas

Hay información completa sobre SSI en el manual de Apachehttp://httpd.apache.org/docs/howto/ssi.html

29

Page 34: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestarel servidor

5.1. syslogsyslogd es un servidor que recibe mensajes de depuración y trazas de diversos programas. Su archivo deconfiguración es /etc/syslog.conf, cada línea de este archivo especifica que hacer con los mensajesrecibidos por uno o más programas.

Tras modificar /etc/syslog.conf puede obligarse a syslogd a leerlo de nuevo enviado la señal HUP,por ejemplo:

# ps ax | grep syslogd7723 ?? Is 0:00.06 syslogd# kill -HUP 7723

5.1.1. Referencias y lecturas recomendadasLas siguientes páginas man: syslog.conf(8), syslog(3), syslogd(8) y logger(1).

5.2. CuotasPueden emplearse cuotas para limitar el espacio en disco y la cantidad de archivos que un usuario o ungrupo puede tener.

Para usarlo debe: (1) especificar sistemas de archivos en los que se usará cuota (2) especificar cuota porusuario o grupo y (3) activar chequeo de cuota durante el arranque.

Indique los sitemas de archivos en los que usará cuota, en /etc/fstab agregando como opción delsistema de archivos: userquota y/o groupquota. Por ejemplo:

/dev/wd0d /home ffs rw,nodev,nosuid,userquota 1 2

Después active el sistema de cuotas con:

# quotaon -a

Para especificar la cuota por usuario o por grupo emplee edquota, por ejemplo:

30

Page 35: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

# edquota pabram

que lo dejará en un editor en el que podrá cambiar las especificaciones de la cuota en cada sistema dearchivos con cuotas:

Quotas for user pabram:/home: blocks in use: 1292980, limits (soft = 1000000, hard = 2000000)

inodes in use: 142318, limits (soft = 0, hard = 0)

el límite blando podrá extenderse para cada usuario por un periodo de tiempo (en este ejemplo), tras elcual se convertirá en un límite duro. Límites en 0 indican que no hay restricción.

Puede replicar la configuración de cuotas en otros usuarios con:

# edquota -p pabram pedgar juamar margo

Después de especificar las cuotas de los usuarios puede verificar la política de cuotas con:

# repquota -a

o chequear que se cumplan todas las cuotas con:

quotacheck -a

Para activar sistema de cuotas y que las cuotas sean verificadas cada vez que el sistema inicia agregue lasiguiente línea al archivo /etc/rc.conf.local:

check_quotas=YES

5.2.1. Referencias y lecturas recomendadasLas siguientes páginas del manula de OpenBSD: quota(1), edquota(8), quotaon(8), quotaoff(8),quotacheck(8) y repquota(8). En el FAQ de OpenBSD hay una sección sobre quotas:http://www.openbsd.org/faq/faq10.html#Quotas

5.3. RDBMS PostgreSQLPostgreSQL es un motor de bases de datos relacionales. En esta sección describimos brevemente lainstalación y uso en un sistema OpenBSD.

31

Page 36: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

5.3.1. Primera instalación del servidorPara emplearlo por primera vez instale el paquete postgresql (también es recomendablepostgresql-doc).

Este paquete deja instrucciones específicas para inicializar la base de datos, permitir conexiones de red einicializar la base de datos cada vez que arranque el sistema en:/usr/local/share/doc/postgresql/README.OpenBSD. Los pasos que este escrito describe son:

• Opcional. El paquete de PostgreSQL disponible con OpenBSD 3.6 crea el usuario _postgresql, sinembargo si está actualizando o lo requiere puede crearlo con:

# useradd -c "Administrador de PostgreSQL" -g =uid -m -d /var/postgresql \-s /bin/sh -u 503 _postgresql

# passwd _postgresql

• Opcional. El paquete inicializa la base, sin embargo si actualiza o lo requiere puede inicializarla así:

# su - _postgresql$ mkdir /var/postgresql/data$ initdb -D /var/postgresql/data

• Configurar scripts de arranque y detención del sistema para que inicien y detenga el servidor dePostgreSQL. En /etc/rc.local agregue:

if [ -x /usr/local/bin/pg_ctl ]; thensu -l _postgresql -c "/usr/local/bin/pg_ctl start \

-D /var/postgresql/data -l /var/postgresql/logfile \-o ’-D /var/postgresql/data’"

echo -n ’ postgresql’fi

y en /etc/rc.shutdown agregue:

if [ -f /var/postgresql/data/postmaster.pid ]; thensu -l _postgresql -c "/usr/local/bin/pg_ctl stop -m fast \

-D /var/postgresql/data"rm -f /var/postgresql/data/postmaster.pid

fi

Inicialmente el servidor queda configurado para permitir ser usando sockets Unix (solo desde la mismamáquina). Para modificar esto y agregar como protocolo TCP/IP (que puede implicar fallas de seguridad)edite /var/postgresql/data/pg_hba.conf y agregue por ejemplo máquinas y usuarios que puedanhacer conexiones. También edite /var/postgresql/data/postgresql.conf para que incluyaconfiguración como:

tcpip_socket = truemax_connections = 32superuser_reserved_connections = 2port = 5432hostname_lookup = falseshow_source_port = false

32

Page 37: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

Para mejorar desempeño especialmente en sitios que atiendan bastantes conexiones simultaneamente,consulte primero /usr/local/share/doc/postgresql/README.OpenBSD.

Si por seguridad (e.g cuando ejecuta Apache con chroot en /var/www) decide no permitir conexionesTCP/IP y emplea una ruta para los sockets diferente a la ruta por defecto (i.e /tmp), defina la nueva rutaen /var/www/postgresql/data/postgresql.conf en la variable unix_socket_directory.También tenga en cuenta que las diversas herramientas reciben como parámetro adicional -h ruta. Porejemplo si ejecuta Apache con chroot en /var/www/ puede tener configurado su directorio para socketsen /var/www/tmp, en ese caso puede iniciar psql con la base prueba con:

psql -h /var/www/tmp prueba

5.3.2. Creación de una base de datosPara crear la base de datos prueba desde la cuenta _postgresql o desde una cuenta que tenga permisopara crear bases de datos:

createdb testpsql test

Desde la interfaz psql, pueden darse comandos SQL y otros específicos de PostgreSQL (verSección 5.3.3). En particular la cuenta _postgresql y desde cuentas con permiso para crear usuarios,puede crear otros usuarios (globales para todas las bases de datos manejadas por el servidor). Porejemplo para crear un usuario normal sin clave:

CREATE USER usejemplo

El comando CREATE USER presentado puede ir seguido de CREATEUSER para crear un superusuaio (sinrestricción alguna), o CREATEDB para crear un usuario que pueda crear bases de datos o PASSWORD

’clave’ para crear un usuario con una clave (emplea autenticación configurada). Desde la línea decomandos puede crearse un usuario con:

createuser usejemplo

Para eliminar un usario desde psql se usa:

DROP USER usejemplo;;

y para eliminarlo desde línea de comandos:

dropuser usejemplo;;

33

Page 38: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

Puede ejecutarse un script SQL desde la línea de comandos a un base de datos con

psql -d test -U ejusuario -password -f crea.sql

5.3.3. Uso de una base de datosPuede emplear psql, la interfaz texto que acepta comandos SQL y que se distribuye con PostgreSQL.Para esto, entre a una base (digamos b1998) como un usuario (digamos u1998) con:

psql -U u1998 -d b1998

En esta interfaz puede dar comandos SQL y algunos comandos internos que puede listar con \h. Algunosejemplos de operaciones útiles son:

\dt

para ver tablas disponibles.

\d usuarios

Describe la estructura de la tabla usuarios

select victim_nombre,victim_apellido from victimas where victim_edad<=12;

Que muestre los nombres de niños de 12 años o menos listados en la tabla victimas

\h update

Da ayuda sobre el comando {\tt update} (que permite actualizar registros de una tabla.)

5.3.4. Referencias y lecturas recomendadas

• Documentación del paquete postgresql (README.OpenBSD, INSTALL).

• Documentación disponible en el paquete postgresql-doc (ver [postgresql-doc]).

• Páginas del manual de Unix: psql(1)

34

Page 39: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

5.4. MySQLDebe instalar mysql-server-version (al compilar el porte sólo se instala mysql-client-version), estepaquete por defecto ejecutará mysql_install_db. Después agregue a /etc/rc.local:

if [ -x /usr/local/bin/safe_mysqld ]; thenecho -n ’ mysqld’; /usr/local/bin/safe_mysqld &

fi

y ejecute el comando /usr/local/bin/safe_mysqld &como usuario root1 para iniciar el servidor (loserrores quedarán en /var/mysql/host.err). Después puede establecer una clave para el usuario root

de MySQL cuando ingresa desde localhost con:

/usr/local/bin/mysqladmin -u root password ’clave’

Después puede iniciar una sesión, crear bases de datos, crear usuarios y otorgarles privilegios. Porejemplo tras iniciar una sesión con:

mysql -u root -p

puede crear la base de datos datos, y un usuario erfurt que la pueda administrar (i.e con todos losprivilegios excepto GRANT) y con clave vsewf usando:

create database datos;GRANT ALL PRIVILEGES ON datos.* TO erfurt@localhost IDENTIFIED BY ’vsewf’;

Algunas operaciones usuales del administrador son:

SHOW DATABASES;

que muestra todas las bases disponibles.

USE base1;

que permite usar la base base1.

SHOW TABLES;

que muestra todas las tablas de la base activa.

DESCRIBE tabla;

1. safe_mysqld se encargará de iniciar el servidor desde el usuario _mysql, grupo _mysql creados automáticamente durante lainstalación del paquete.

35

Page 40: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

que presenta campos de la tabla tabla.

Para apagar el servidor mysql:

mysqladmin -u root -p shutdown

Si olvida la clave de root después de haberla establecido puede cambiarla entrando a la cuenta deadministrador:

• Detenga el servidor.

• Inicie el servidor con mysqld -Sg –user=root

• Ejecute:

# mysqlmysql> use mysqlmysql> update user set password=password(’supercosa’) where user=’root’;mysql> flush privileges;mysql> exit

• Vuelva a apagar el servidor y reinicielo con: /usr/local/bin/safe_mysqld &

Si desea usar mysql con php, instale además de los paquetes básicos de php (php4-core-v yphp4-extensions-v) el paquete (php4-mysql-v)

5.4.1. MySQL y Apache con chrootEl siguiente es un procedimiento que Mauricio Rivera realizó para instalar chroot un servidor mysql y lainstalación de los módulos que permiten al apache trabajar con php y con mysql.

Asumimos un servidor apache corriendo chroot en /var/www/ Nos proponemos instalar chroot en/var/www/ el servidor mysql.

He tomado como base el documento [SecMySQL] Este fue mi punto de partida, pero sobre la marchahubo que añadirle cosas a este procedimiento. A continuación traduzco la parte pertinente y escribo lasmodificaciones en naranja.

Nota: Este procedimiento surgió a través de un método de ensayo y error pero basándome en undocumento que explicaba como instalar el servidor mysql en un freebsd. Después de varias pruebaslogré correr el servidor mysql y conectarlo a traves de apache, seguramente la configuración no es laúnica ni la óptima pero fue una que me funcionó.

5.4.1.1. Volviendo chroot el servidor

El primer paso para volver seguro a MySQL es preparar el ambiente de cambio de directorio, ambienteen el cual el servidor MySQL irá a correr. En nuestro caso /var/www/ era el chroot.

36

Page 41: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

5.4.1.1.1. Sistema operativo

Como en artículos previos, el sistema operativo elegido es FreeBSD 4.7. Sin embargo, los métodospresentados deberán de poder aplicarse en la mayoría de sisitemas UNIX modernos.

5.4.1.1.2. 3.2 Preparar el ambiente chroot

En orden a preparar el ambiente chroot, debemos crear la siguiente estructura de directorios:

mkdir -p /var/www/devmkdir -p /var/www/etcmkdir -p /var/www/tmpmkdir -p /var/www/var/tmpmkdir -p /var/www/usr/local/mysql/libexec

mkdir -p /var/www/usr/local/share/mysql/englishmkdir -p /var/www/var/run/mysqlmkdir -p /var/www/var/mysql/

5.4.1.1.3. Establecer derechos de acceso

The access rights to the above directories should be set as follows:

chown -R root.daemon /var/www/chmod -R 755 /var/www/chmod 1777 /var/www/tmp

5.4.1.1.4. Crear estructura del directorio

A continuación, los siguientes archivos han sido copiados en la nueva estructura de directorio:

cp /usr/local/libexec/mysqld/var/www/usr/local/mysql/libexec/cp /usr/local/share/mysql/english/errmsg.sys/var/www/mysql/usr/local/share/mysql/english/cp /etc/hosts /var/www/etc/cp /etc/host* /var/www/etc/cp /etc/resolv.conf /var/www/etc/grep mysql /etc/group > /var/www/etc/groupgrep mysql /etc/master.passwd > /var/www/etc/master.passwordsgrep mysql /etc/passwd > /var/www/etc/passwd

37

Page 42: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

5.4.1.1.5. Filtrar archivos de passwords y grupos

De los archivos: /var/www/etc/passwords y /var/www/etc/group debemos eliminar todas laslíneas excepto las de la cuenta de mysql (este es _mysql). Esto ya se preparo con el grep anteriro. Luego,debemos construir la base de datos de contraseñas:

cd /var/www/etcpwd_mkdb -d /var/www/mysql/etc passwordsrm -rf /var/www/etc/master.passwd

5.4.1.1.6. Consideraciones especiales

Igual que en el caso del servidor Apache, debemos crear un archivo de dispositivo especial /dev/null:

ls -al /dev/nullcrw-rw-rw- 1 root sys 2, 2 Jun 21 18:31 /dev/nullmknod /var/www/dev/null c 2 2chown root.sys /var/www/dev/nullchmod 666 /var/wwww/dev/null

Debemos de copiar la base de datos mysql, la cual contiene tablas creadas durante la instalacion deMySQL:

cp -R /var/mysql/* /var/www/var/mysql/chown -R _mysql._mysql /var/www/var/mysql/

5.4.1.2. Corriendo el servidor

Ejecutamos la orden:

mysqld_safe -user=_mysql -chroot=/var/www -datadir=/var/mysql &

Comprobamos que el servidor MySQL ese corriendo:

ps -aux|grep -i mysql

Corremos el cliente mysql, tenemos decirle que use un diferente socket:

mysql -S /var/www/var/run/mysql/mysql.sock

aseguramos el acceso al servidor mysql con una clave:

mysqladmin -S /var/www/var/run/mysql/mysql.sock password ’clave_secreta’

38

Page 43: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

Hacemos que el servidor mysql arranque cada vez que arranque el servidor, agregamos la anterior lineaal final del archivo /etc/rc.local:

mysqladmin -S /var/www/var/run/mysql/mysql.sock password ’clave_secreta’

5.4.1.3. Habilitando php en el servidor apache

Instalar paquete principal de PHP:

pkg_add php4-core-4.3.5RC3.tgz

Crear directorios donde iran las librerias de php para apache:

mkdir -p /chroot/usr/local/lib/php

Copiar la libreria libphp4.so al directorio correspondiente en el /chroot:

cp -p /usr/local/lib/php/libphp4.so /chroot/usr/local/lib/php/

5.4.1.4. Habilitando mysql con php en el servidor apache

Instalar paquete php4-mysql-4.3.5RC3:

pkg_add php4-mysql-4.3.5RC3.tgz

Nota: A modo de prueba copié ciertas librerias mysql a chroot, que pueden necesitar en el chroot:

mkdir -p /chroot/usr/local/lib/mysql/cp -p /usr/local/lib/mysql/* /chroot/usr/local/lib/mysql/

5.4.2. Lecturas recomendadasReferencias:

• Una explicación de algo de la instalación y el uso de MySQL en OpenBSD:http://www.sancho2k.net/filemgmt_data/files/mysql_notes.html

• El manual de MySQL: http://www.mysql.com/documentation/mysql/bychapter/index.html

• Ayuda para cambiar clave de root en sistemas Linux: http://www.netadmintools.com/art90.html

39

Page 44: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Capítulo 5. Otros servicios que puede prestar el servidor

40

Page 45: Vladimir Támara Patiño Mauricio Riverastructio.sourceforge.net/guias/servidor_OpenBSD/... · Para enviar un archivo del cliente al servidor ejecute en el servidor: zmrx y después

Bibliografía

Traducción no oficial de dominio público de apartes de la Biblia.

World English Bible.

Aprendiendo a aprender Linux: guías de estudio para colegios.

PF: The OpenBSD Packet Filter.

Data communication cables.

Setting up a simple serial connection with OpenBSD.

FreeBSD Handbook.

Bind 9 Administrator Reference Manual.

Using OpenBSD for DNS and DHCP for a Lab or Home Network.

PostgreSQL 7.3.2 Documentation.

PF: The OpenBSD Packet Filter.

Securing MySQL: step-by-step.

Aprendiendo a aprender Linux: Guías para colegios con plataforma de referencia S-Helio 1.1http://structio.sourceforge.net Feb/2003

41