sábado, 30 de mayo de 2009

Instalación y Configuración de PureFTPD con validación y configuración de usuarios a través de OpenLDAP en Ubuntu 9.04

Aclaraciones antes de utilizar esta guia:
Esta guía fue construida para un proyecto de un curso de Redes Locales.No se consideran ningún tipo de configuraciones para seguridad, lo único requerido es que funcione. Además, no soy ningún experto en Linux ni servidores FTP, por lo que cualquier error u omisión que haya cometido, bienvenida sea la corrección, al igual que cualquier otro aporte. Con esta guia, el servidor FTP funciona, pero por razones que desconozco, no permite subir archivos. Si alguien sabe la razón por favor agregue la correcion en los comentarios.
Siéntase en libertad de utilizar esta información de la manera que necesite,siempre y cuando haga la correspondiente cita.


Esta guía supone que ya existe un servidor OpenLDAP instalado, con el dominio "dominio.net" y la clave administrado "ldap", Consulte mi post previo sobre como instalar el servidor OpenLDAP si no tiene uno instalado.
Además, para mantener orden en el servidor LDAP, crearemos un grupo donde agregaremos los usuarios del ftp.
PureFTPD utiliza un esquema especial llamado PureFTPdUser para guardar los datos necesarios para la administración de cada usuario. Dentro de los atributos exitentes en este esquema están el límite de almacenamiento, anchos de banda para carga y descarga, cantidad maxima de archivos,login y contraseña, etc. Aquí se explicará como agregar el esquema al servido LDAP y como agregar los usuarios de este tipo al grupo de usuarios del ftp.

1. Instalación de PureFTPD con soporte para LDAP:
  • Ejecutar el siguiente comando: sudo apt-get install pure-ftpd-ldap
2. Crear un grupo para los usuarios del FTP en el LDAP:
  • Haga un archivo de texto llamado grupoftp.ldif con la siguiente información:
dn: cn=grupoftp,dc=dominio,dc=net
objectClass: posixGroup
objectClass: top
cn: grupoftp
gidNumber: 100
description: Grupo de usuarios FTP

  • Luego es necesario detener el servidor LDAP con este comando: sudo /etc/init.d/slapd stop
  • Ahora agregamos el grupo ejecuntando el siguiente comando: sudo slapadd -v -l grupoftp.ldif
  • El servidor debe responder “added posixgroup= grupoftp,dc=domino,dc=net”
  • Reiniciamos el servidor mediante el siguiente comando: sudo /etc/init.d/slapd start
3. Agregar el esquema PureFTPduser al LDAP:
  • Abrir el archivo descargado y buscar el archivo “pureftpd.schema”, y luego extráigalo en /etc/ldap/schema
  • Haga un archivo llamado schema_convert.conf y agregue la siguiente información:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/pureftpd.schema
  • Luego, cree la carpeta /tmp/ldif_output
  • Despues, abra un terminal y ejecute este comando: sudo slaptest -f schema_convert.conf -F /tmp/ldif_output
  • Abra el archivo /tmp/ldif_output/cn=config/cn=schema/ cn={12}pureftpd.ldif
  • Cambie las lineas que dicen:
“dn: cn={12}pureftpd
…….
cn: {12}pureftpd”
por:
“dn: cn=pureftpd, cn=schema,cn=config
……..
cn: pureftpd”
  • Y elimine las líneas (los valores pueden variar):
structuralObjectClass: olcSchemaConfig
entryUUID: 10dae0ea-0760-102d-80d3-f9366b7f7757
creatorsName: cn=config
createTimestamp: 20080826021140Z
entryCSN: 20080826021140.791425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080826021140Z
  • Ahora ejecute el siguiente commando: sudo ldapadd -x -D cn=admin,cn=config -W -f /tmp/ldif_output/cn\=config/cn\=schema/cn\=\{12\}pureftpd.ldif
  • Revise con algunas de las herrmientas de administracion del servidor LDAP si el esquema PureFTPdUser está en lista de esquemas.

4. Agregar un usuario tipo PureFTPdUser al grupo de usuarios del FTP:
  • Crear un archivo de texto llamada ftpuser1 y agregue los siguientes datos:
dn: cn=ftpuser1,cn=grupoftp,dc=dominio,dc=net
objectClass: PureFTPdUser
objectClass: posixAccount
cn: ftpuser1
uid: ftpuser1
uidNumber: 501
gidNumber: 100
homeDirectory: /home/ftproot/usuario1
userPassword: 123
FTPStatus: enabled
FTPQuotaFiles: 1000
FTPQuotaMBytes: 50
FTPDownloadBandwidth: 100000
FTPUploadBandwidth: 100000
FTPDownloadRatio: 5
FTPUploadRatio: 5

El atributo uid es el más importante pues es el parámetro que utiliza PureFTPD para hacer la búsqueda de usuarios.
  • Ejecutar el siguiente comando para agregar al usuario (recuerde detener el servidor LDAP antes de ejecutar el comando y reiniciarlo después de ejecutarlo): sudo slapadd -l ftpuser1.ldif

5. Crear el archivo de configuración para conectar a PureFTPD con LDAP:
  • Haga un archivo de texto con el nombre pureftpd-ldap.conf en la carpeta /etc.
  • Incluya la siguiente información:
LDAPServer localhost
LDAPPort 389
LDAPBaseDN cn=grupoftp,dc=dominio,dc=net
LDAPBindDN cn=admin,dc=dominio,dc=net
LDAPBindPW ldap
LDAPDefaultUID 500
LDAPDefaultGID 100
  • Mate el proceso pure-ftpd en caso de que el servidor FTP este corriendo con este comando: sudo pkill pure-ftpd
  • Levantar el servidor PureFTPD con el archivo de configuración para LDAP con este comando: sudo /usr/sbin/pure-ftpd-ldap -l ldap:/etc/pureftpd-ldap.conf &
  • Pruebe el servidor con nautilus escribiendo en la barra de dirección: ftp://ftpuser1@localhost
  • Suministre la clave que le asigno al usuario y listo.
Para monitorear la actividad del ftp, se puede utilizar la aplicación “pureadmin”. Esta permite ver los usuarios que están en sesión, los archivos que se están subiendo o bajando y todo los registros que se van agregando al log.

Referencias:
  • http://download.pureftpd.org/pub/pure-ftpd/doc/README.LDAP
  • http://www.linuxquestions.org/questions/linux-server-73/how-to-add-a-new-schema-to-openldap-2.4.11-700452/



Instación y configuración de OpenLDAP en Ubuntu 9.04


Aclaraciones antes de utilizar esta guia:
Esta guía fue construida para un proyecto de un curso
de Redes Locales.No se consideran ningún tipo de
configuraciones para seguridad, lo único requerido es
que funcione. Además, no soy ningún experto en Linux
ni servidores LDAP, por lo que cualquier error u omisión
que haya cometido, bienvenida sea la corrección, al
igual que cualquier otro aporte.
Siéntase en libertad de utilizar esta información de la
manera que necesite,siempre y cuando haga la
correspondiente cita.

Instalación y configuración del
servidor LDAP


1. Instalar OpenLDAP:
Abrir un terminal y ejecutar el siguiente comando:
• sudo apt-get install slapd ldap-utils
2. Configurar el servidor LDAP:
Ejecutar el siguiente commando:
• sudo dpkg-reconfigure slapd
Este comando ejecutara un wizard para la configuración
del servidor LDAP.
Configure las opciones según la siguiente lista:
• Omit OpenLDAP server configuration? NO
• DNS Domain Name: dominio.net
• Name of your organization: tec
• Admin password: ldap
• Confirm password: ldap
• Database: BDB
• Do you want your database to be removed when slapd
is purged? NO
• Move old database? YES
• Allow LDAPv2 Protocol? NO
Terminado este wizard, tenemos entonces la cuenta por
defecto “admin” con la contraseña "ldap"
3. Agregar objetos al LDAP :
Algunos de los objetos más comunes que se administran
en un servidor LDAP son grupos y personas. En estos
ejemplos veremos cómo crear una unidad organizacional
y agregar personas a esta unidad:
• Unidad organizacional:
o Haga un archivo de texto llamado grupo1.ldif con
la siguiente información:
dn: ou=grupo1,dc=dominio,dc=net
objectClass: top
objectClass: organizationalUnit
ou: grupo1
description: Grupo de prueba
o Luego es necesario detener el servidor LDAP
con este comando:
sudo /etc/init.d/slapd stop
o Ahora agregamos la OU ejecutando el siguiente
comando:
sudo slapadd -v -l grupo1.ldif
o El servidor debe responder “added ou= grupo1,
dc=dominio,dc=net”
o Reiniciamos el servidor mediante el siguiente
comando:
sudo /etc/init.d/slapd start
Persona
o Haga un archivo de texto llamado persona.ldif
con la siguiente información:
dn: cn=Diego,ou=grupo1,dc=dominio,dc=net
objectclass: top
objectclass: person
objectclass: organizationalPerson
sn: apellido
cn: Diego
o Luego es necesario detener el servidor LDAP
con este comando:
sudo /etc/init.d/slapd stop
o Ahora agregamos la persona ejecutando el
siguiente comando:
sudo slapadd -v -l persona.ldif
o El servidor debe responder “added person= Diego,
ou=grupo1,dc=dominio,dc=net”
o Reiniciamos el servidor mediante el
siguiente comando:
sudo /etc/init.d/slapd start

Luego de ejecutar estos comandos tendremos una unidad
organizacional (grupo1) y una persona(Diego) que pertenece
a esta unidad organizacional en el servidor LDAP.

Herramientas gráficas para administrar
el servidor LDAP:

Para escritorio, existe la aplicación GQ LDAP Client.
Esta permite ver el árbol de objetos guardados en la
base de datos, realizar búsquedas entre los objetos
y ver los esquemas disponibles con sus atributos.
También permite, luego de configurar el login y password
del servidor, agregar, modificar y eliminar objetos
de la base de datos.
Para ambiente web, existen las opciones phpLDAPadmin
y webmin. El primero es 100% orientado a la administración
de LDAP, el webmin es una herramienta de administración
para varios tipos de servicios de servidor.
Las funcionalidades son muy similares a las ofrecidas
por GQ LDAP Client.

Referecias:
  • http://en.opensuse.org/Howto_LDAP_server
  • http://www.debuntu.org/ldap-server-and-linux-ldap-clients


lunes, 11 de mayo de 2009

Resume Capitulo 7 de CodeV2

Lo que se ha considerado como amenazas a la libertad han sido razones diferentes dependiendo del contexto en que se ubique. Liberalismo en la actualidad considera al gobierno como una amenaza a la libertad. En la segunda mitad del siglo 19, con la obra de Marcus Miller, se ve un significado de Liberalismo similar, pero la amenaza la representa no solo el gobierno si no que también las normas, pues en aquella época en Inglaterra, esa era la verdadera amenaza a la libertad.
Cuando pensemos en amenazas a la libertad, debemos enfocarnos en amenazas particulares en un tiempo y espacio particular, y esto es especialmente cierto con el ciberespacio. El ciberespacio crea una nueva amenaza a la libertad, la regulación, y esta regulación se dará gracias al poder del “Código”, quien puede regir el ambiente y la arquitectura del ciberespacio.
¿Cómo funciona esta regulación?
Imaginemos un punto (representa cualquier persona), el cual está regulado (restringido) por 4 tipos de restricciones:

• Ley: legislaciones que regulan la conducta
• Normas: regulaciones establecidas por la dinámica social
• Mercado: precio y disponibilidad de los bienes y servicios
• Arquitectura: tecnología y características físicas que limitan el uso de las cosas

La regulación del punto entonces es la suma de estos 4 tipos de restricciones. Estas restricciones son interdependientes. Cambios en uno afectan a los otros, sea apoyando o reforzando o también debilitando. Cada una funciona de forma distinta, y afecta a las demás en diferentes formas. Cada tipo de restricción tiene un peso distinto en la regulación del punto. Podemos llamar a cada tipo de restricción un Regulador.


En el ciberespacio existen estos Reguladores:
•A nivel de leyes, existen los derechos de autor y leyes contra la difamación y la obscenidad.
•A nivel de normas, existen diferentes esquemas de políticas aplicadas en las diferentes comunidades que se forman en línea
•A nivel comercial, están las restricciones por el precio de los servicios y los sistemas de Publicidad
•A nivel de arquitectura, el “Código”.

Los Gobiernos y vías para la regulación:
La Ley es quizá el regulador más poderoso de los 4.
Imaginemos una situación como el robo de radios de autos. El gobierno podría poner una ley para castigar de por vida a quienes cometan este crimen, pero por las normas sociales, esto sería barbárico. El gobierno también podría modificar la arquitectura de los radios para que solo funcionen en un auto específico. Ambas regulaciones podrían funcionar, pero con costos distintos.
Comúnmente cuando se habla de leyes, se deja de lado a los otros Reguladores, como si no tuvieran importancia ni fueran afectados por las leyes, como si fueran estáticos. Pero sabemos que tal aseveración es absurda. La ley afecta directamente al resto de reguladores, los cuales pueden ser tan dinámicos como la ley misma.
Un claro ejemplo es el Libre Comercio, el cual está directamente regulado por las leyes no solo en sus elementos sino también en sus efectos.
En arquitectura, están las leyes que exigen a las construcciones ser aptas para los discapacitados, las especificaciones de diseño para obras públicas, etc.
En las normas sociales, la ley puede cambiarlas mediante las políticas educativas (acerca de educación sexual por ejemplo).
En cada caso, la ley puede decidir si actúa de forma directa (cambiando directamente el comportamiento del individuo) o indirecta (cambiar el comportamiento del individuo a través de la regulación de otro elemento), la pregunta es ¿Cuál de las dos logra el objetivo de forma más eficiente de acuerdo con las restricciones (normativas o materiales) que el regulador debe conocer?
El autor argumenta que “Cualquier análisis de estrategias de regulación debe considerar estas diferentes modalidades”. Más orientado al ciberespacio: “propuestas legales sin pronósticos de la respuesta tecnológica están profundamente incompletas”.

La interacción entre estas modalidades es dinámica, y requieren consideración no solamente de los ajustes legales, sino también predecir los efectos que tales cambios generan. El regulador debe buscar equilibrio, siempre considerando los compromisos entre modalidades de regulación.
Por ejemplo, con los cinturones de seguridad. El gobierno puede imponer una ley que obligue el uso de cinturones, o puede hacer campañas para crear conciencia, o puede bonificar a las aseguradoras para reducir los seguros a quienes usan cinturón, o puede obligar a los fabricantes implementar mecanismos que obliguen a los pasajeros a usar el cinturón. Todos pueden lograr el objetivo, pero el gobierno debe decidir cuál es menos costosa.
Cuando se ve la regulación desde una perspectiva más general, vemos como la falta de regulación en el ciberespacio es contingente. Se obtiene además, un mayor entendimiento de cómo el Estado puede intervenir para hacer posible la regulación, y de los peligros que este sentido de regulación más expansivo genera.
Los problemas de la indirección:
Existe un problema cuando el gobierno trata de hacer regulación de forma indirecta. Al utilizar otras estructuras de regulación para afectar restricciones que podrían afectar de forma directa, confunde las responsabilidades sobre esa regulación y socava la redición de cuentas políticas. Este es el peor enemigo de la transparencia. Un ejemplo puede ser las políticas acerca del aborto. El gobierno podría hacer campañas contra el aborto (regulación directa), pero prefiere regular a los doctores, estableciendo la política de no recomendar el aborto (regulación indirecta). Aquí no solo no queda claro quién es responsable por la opinión expresada, sino que también no se sabe es una opinión en sí. El gobierno no debería ocultar sus planes de regulación, sean directas o indirectas.

Hacia donde nos lleva esto:
El punto en general al que el autor desea llegar es que el gobierno puede hacer regulación indirecta en el ciberespacio regulando directamente el “código”. El gobierno podría tener toda una agenda de regulaciones ocultas en el “código”. Esto debería preocuparnos mucho, primero porque es difícil protestar contra una mala regulación que esta oculta, y después, porque desconocemos que valores estarán en riesgo con la eficiencia de esta regulación.