Trabalho final Serviços Integrados



Documentos relacionados
Departamento de Engª de Electrónica e das Telecomunicações. Engº Pedro Ribeiro. Aluno nº José Camacho Aluno nº Floriano Silva

Bases de Dados. Lab 1: Introdução ao ambiente

Guia de instalação para ambiente de Desenvolvimento LINUX

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Instalando servidor Apache

Configurando servidor de DNS no CentOS O Domain Name System Sistema de Nomes de Domínio é de fundamental importância em uma rede.

Universidade Católica de Brasília Pró-reitoria de Graduação Curso de Ciência da Computação

UM dos protocolos de aplicação mais importantes é o DNS. Para o usuário leigo,

Hotspot com Ubuntu Server Bits

Prática DNS. Edgard Jamhour

Serviço de Diretórios com OpenLDAP. Marcos Sungaila

Virtual Hosts. João Medeiros 1 / 12

Prof. Samuel Henrique Bucke Brito

Sistemas Operacionais Livres. Servidor Web Apache

Bases de Dados 2007/2008. Aula 1. Referências

LAB06 Configuração de um servidor de DNS Aplicação nslookup. Servidor BIND.

DNS Linux. Rodrigo Gentini

Projeto e Instalação de Servidores Servidores Linux Aula 3 - DNS

Autoridade de Certificação de uma infraestrutura de chave pública (PKI).

Programação para Internet I. 1. Servidores web. Nuno Miguel Gil Fonseca

Laboratório 3. Configurando o Serviço DNS

Sistemas Operacionais de Rede. Configuração de Rede

DNS Ubuntu Server 14.04

FACULDADE DE TECNOLOGIA SENAC GESTÃO DA TECNOLOGIA DA INFORMAÇÃO LABORATORIO DE REDE

MSN-Proxy v0.7 no Debian 5 (Atualizado)

Formador: Paulo Ramos IGRI13: Rui Bárcia Nº15. Windows 2008 Server. Módulo 16. Instalação e configuração

Configurando DNS Server. Prof. Armando Martins de Souza

Um dos serviços mais importantes numa rede TCP/IP é o serviço DNS. Porquê? Porque é muito mais fácil lembrar nomes do que números IP!

Redes de Computadores. Guia de Laboratório Configuração de Redes

Telefonia IP MOT. Prática 1

DNS Parte 2 - Configuração

Administração de Sistemas 2008/2009 (Trabalho de Administração de Sistemas) Docente: Armando Ventura

Instalação Apache + MySQL + PHPMyAdmin CentOS

Entendendo o OpenLDAP. Por GABRIEL STEIN

Entendendo como funciona o NAT

DNS - Domain Name System

Instalação e Configuração Servidor DNS

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Redes de Computadores

Modelo Cliente/Servidor Por HIARLY ALVES

Formação IPv6 Maputo Moçambique 26 Agosto 29 Agosto 08

Licenciatura em Eng.ª Informática Complementos de Redes - 3º Ano - 2º Semestre. Trabalho Nº 4 - VoIP

Ambiente LAMP. Introdução. LAMP MySQL Apache PHP. Camada Aplicacional PHPMyAdmin OPSView. Bibliografia

- O MySQL para além da sua utilização em modo linha de comandos, também pode ser utilizado através de ferramentas gráficas.

Bases de Dados. O ficheiro create-bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo ilustrada na figura 1.

Passos Preliminares: Acessando a máquina virtual via ssh.

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

Manual Gestix Confi gurar o Apache Manualmente. Gestix.com

Capítulo 5. nome. DNS ( Domain Name System ). O serviço BIND. Um dos serviços mais importantes numa rede TCP/IP é o serviço DNS.

COORDENAÇÃO DE TECNOLOGIA (COTEC) JUNHO/2010

Bases de Dados 1º semestre

Formação IPv6 Maputo Moçambique 26 Agosto - 29 Agosto 08 Configuração de Servidor WEB e FTP

Instalação e Configuração do Servidor HTTPD Apache

Configuração de um servidor DNS. Campus Cachoeiro Curso Técnico em Informática

Samba como PDC de um domínio Windows

INTRODUÇÃO: 1 - Conectando na sua conta

Migrando de rede NAT para rede roteada

Maker Planet Manual do Usuário

Instalando e Configurando o DNS Server

O que é uma rede de computadores?

SIMEC Sistema Integrado de Planejamento, Orçamento e Finanças

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

Relatório do Trabalho Prático nº 1. DNS e DHCP. Documento elaborado pela equipa: Jorge Miguel Morgado Henriques Ricardo Nuno Mendão da Silva

Manual Instalação e-cidade-transparência no Ubuntu Server

Guia de Laboratório de Redes 1º Laboratório: Introdução

Integração de Redes e Serviços. Trabalho Prático

Content Management Server. Gonçalo Barreira nº Henrique Lopes nº Tiago Estevão nº 28428

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Introdução ao Sistema. Características

SiGE - Sistema de Gerência de Eventos

Gonçalves, Adriel - Porto Alegre, RS Brazil. Guia de Configuração TACACS+ no NR2G-3200.

Forms Authentication em ASP.NET

Curso de Pós Graduação em Redes de Computadores. Módulo Laboratório de Linux Apostila 2. Serviço DNS

CET

Desenvolvendo Websites com PHP

Wireshark Lab: TCP. Versão KUROSE, J.F & ROSS, K. W. Todos os direitos reservados 2011 BATISTA, O. M. N. Tradução e adaptação para Wireshark.

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Iniciando o MySQL Query Brower

Tutorial para Instalação do Ubuntu Server 10.04

ZyXEL ZyWALL 5/35/70 e PRT662HW: VPN IPSec IPs públicos dinâmicos

Sensor de temperatura Parte 5 Cleiton Bueno Preparando o ambiente do Banco de dados Mysql

LEARNING NETWORK MANAGER 2007 MANUAL DE INSTALAÇÃO

Instalando e Configurando o DNS Server

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

PRÁTICA DE DNS - LINUX DIFERENÇAS NO ROTEIRO EM RELAÇÃO A IMAGEM DO DVD 1.A) INSTALAÇÃO DO SERVIDOR DNS INICIALIZAÇÃO DO AMBIENTE DO DVD

EIC. Projecto I. Manual do Utilizador. Vídeo Vigilância Abordagem Open Source. Curso: Engenharia de Informática e Comunicações Ano Lectivo: 2005/2006

Servidor DNS. João Medeiros Fatern / 15

GESTÃO DE SISTEMAS E REDES YNAMIC HOST CONFIGURATION PROTOCOL


Projeto Integrador Programação para Internet

Software Adobe DreamWeaver. Requisitos para criar aplicações Web

TUTORIAL INSTALAÇÃO DE IMPRESSORAS NO UEGLINUX

Configuração de DNS em Windows Servidor 2008

Prof. Samuel Henrique Bucke Brito

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Universidade Federal do Rio Grande do Norte

P S I 2. º A N O F 5 M E S T R E / D E T A L H E E P E S Q U I S A. Criar uma relação mestre-detalhe. Pesquisa de informação

Transcrição:

INSTITUTO SUPERIOR DE ENGENHARIA DE LISBOA Mestrado em Engenharia Informática e de Computadores DEETC Secção de Redes de Comunicação de Dados Integração de Redes e Serviços Trabalho final Serviços Integrados Realizado por: Nome Grupo: IRS03 Nº de aluno Javier Dercole 29590 Nuno Oliveira 23038 Janeiro - 2008

Índice Índice... 2 1. Objectivo... 3 2. Introdução... 4 2.1. Configurações básicas... 5 2.1.1. Configuração das interfaces de rede... 5 2.1.2. Configuração do servidor de SSH... 6 2.1.3. Definição das USE Flags... 6 3. Serviços... 7 3.1 DNS Primário... 7 3.1.1. Objectivo... 7 3.1.2. Configuração... 7 3.1.3. Testes... 11 3.2 MySQL... 11 3.2.1 Objectivo... 11 3.2.2 Configuração... 11 3.2.3. Testes... 12 3.3 Apache e PHP... 12 3.3.1 Objectivo... 12 3.3.2 Configuração... 13 3.3.3. Testes... 14 3.4 Radius... 14 3.4.1 Objectivo... 14 3.4.2 Configuração... 15 3.4.3. Testes... 19 3.5 LDAP... 20 3.5.1 Objectivo... 20 3.5.2 Configuração... 20 3.5.3. Testes... 24 3.6 Moodle... 26 3.6.1 Objectivo... 26 3.6.2 Configuração... 27 3.6.3 Testes... 28 4. Conclusão... 32 5. Referências... 33 6. Anexos... 34 2

1. Objectivo O presente trabalho é parte integrante do projecto de implementação de uma rede que disponibiliza um conjunto de serviços. Este relatório diz respeito à implementação dos serviços de DNS primário, base de dados MySQL com ferramenta de administração PhpMyAdmin, servidor Apache com PHP, servidor de RADIUS e LDAP, e por último, hosting do Moodle. 3

2. Introdução Este capítulo tem como objectivo apresentar um conjunto de aspectos necessários para dar início à elaboração do trabalho. Sendo o âmbito deste relatório a implementação de redes e serviços, vamos assumir que já se tem disponível uma instalação do Linux Gentoo com as respectivas partições criadas, kernel compilado e boot configurado, de acordo com o manual de instalação do Gentoo. Figura 1 Topologia de rede proposta De modo a disponibilizar todos os serviços requeridos no enunciado, foram distribuídos pelos grupos e atribuído um endereço IP da gama definida para a rede interna, tal como demonstra a tabela seguinte: IRS01 IRS02 IRS03 IRS04 Serviço Endereço IP Serviço EndereçoIP Serviço EndereçoIP Serviço EndereçoIP 4

Irs01.lrcd.local 10.64.74.1 Irs02.lrcd.local 10.64.74.6 Irs03.lrcd.local 10.64.74.11 Irs04.lrcd.local 10.64.74.16 Relay-in 10.64.74.2 dnsfw1 10.64.74.7 Moodle 10.64.74.11 dnsfw2 10.64.74.17 Dhcp 10.64.74.3 relay-out 10.64.74.8 NS 10.64.74.12 imap 10.64.74.18 Webmail 10.64.74.4 web 10.64.74.9 BD 10.64.74.13 smtp 10.64.74.19 nas 10.64.74.10 RADIUS 10.64.74.14 ftp 10.64.74.20 LDAP 10.64.74.15 Tabela 1 Serviços disponibilizados na rede privada Como requisitos mínimos de hardware destacam-se os seguintes aspectos: Dois interfaces de rede, um conectado à rede interna do laboratório de redes, de agora em diante referido como interface 0 ou eth0, e um segundo interface conectado à rede do ISEL, de agora em diante referido como interface 1 ou eth1 2 GB de espaço em disco. 2.1. Configurações básicas Antes de proceder a configuração e disponibilização dos serviços, é necessário efectuar algumas configurações de serviços básicos no ambiente Linux. 2.1.1. Configuração das interfaces de rede A primeiro configuração a efectuar no ambiente é a dos interfaces de rede. O interface eth0, que é o que se encontra ligado á rede do laboratório, é o interface que será usado para a disponibilização dos serviços, o qual terá um IP por serviço. Esta configuração é feita no ficheiro /etc/conf.d/net: config_eth0=( "10.64.74.{11..15}" ) routes_eth0=( "default via 10.64.74.30" ) Por ultimo, basta configurar o interface eth0 para arrancar automaticamente com o Linux. cd /etc/init.d ln s net.lo net.eth0 rc-update add net.eth0 default 5

2.1.2. Configuração do servidor de SSH O servidor de ssh é útil para facilitar a tarefa de administração do ambiente, assim como para permitir a várias pessoas em simultâneo o acesso ao ambiente. emerge openssh cd /etc/init.d rc-update add sshd default 2.1.3. Definição das USE Flags As USE flags são usadas pelo GENTOO Linux para a instalação e configuração dos packages, nomeadamente pelo emerge. A USE flag mysql indica por exemplo que um determinado pacote deve ser configurado e compilado com suporte para a base de dados MySQL. No Gentoo Linux existem 3 formas distintas de especificar USE flags: 1. Como variável de ambiente. 2. Em ficheiro de configuração específico por package 3. Em ficheiro de configuração para todos os packages do sistema. No nosso caso, optamos por colocar as seguintes flags globais no ficheiro /etc/make.conf: USE Flags a adicionar: mysql Adicionar suporte para a base de dados MySQL aos componentes BIND php Adicionar suporte para PHP ao Apache odbc Suporte para ligações ODBC ao BIND e ao LDAP dlz Suporte para Dinamic Loading Zone para o DNS ctype pcre session unicode Flags necessaries para o PHPMyAdmin apache2 Adicionar suporte para o Apache2 ao PHP xml xmlreader xmlrpc xmlwriter Flags necessarias para o PHP. 6

Ficheiro /etc/make.conf USE= mysql php odbc dlz ctype pcre session unicode apache2 xml xmlreader xmlrpc xmlwriter E as seguintes flags específicas por package no ficheiro /etc/portage/package.use: dev-lang/php ldap Compila o PHP com suporte para usar o LDAP como back-end dev-db/myodbc doc Instala a documentação do unixodbc Ficheiro /etc/portage/package.use dev-lang/php ldap dev-db/myodbc doc 3. Serviços. 3.1 DNS Primário 3.1.1. Objectivo Disponibilização de um servidor DNS primário no IP 10.64.74.12 para o dominio lrcd.local. O servidor de DNS deve utilizar como base não o tradicional ficheiro, mas sim uma base de dados MySQL para carregamento dinâmico das zonas. 3.1.2. Configuração Instalação do BIND emerge bind 7

De forma a evitar alguma confusão com a nomenclatura BIND e NAMED, vamos criar alguns symbolic links para os ficheiros e directoria de configuração. ln -sf /etc/bind /etc/named ln -sf /var/bind /var/named A configuração do BIND foi feita em duas fases. A primeira fase consistiu em por o servidor a funcionar utilizando como suporte para as entradas do DNS o habitual ficheiro, tornando desta forma a configuração inicial mais simples. Na segunda fase, depois de configurado e testado, foi alterado o back-end para uma base de dados MySQL. De seguida serão descritas as configurações feitas em ambas as fases. A configuração do servidor é feita no seguinte ficheiro: /etc/bind/named.conf options { directory "/var/bind"; listen-on-v6 { none; }; listen-on { 10.64.74.12; }; pid-file "/var/run/named/named.pid"; } //1ª FASE - Configurção para a zona lrcd.local usando o ficheiro db.lrcd.local zone "lrcd.local" { type master; file "db.lrcd.local"; }; De forma a podermos usar o nosso servidor de DNS para resolver os nomes do domínio localmente, adicionamos a própria máquina ao resolv.conf. /etc/resolv.conf search nb.isel.ipl.pt. nameserver 193.137.220.20 nameserver 193.137.220.19 nameserver 127.0.0.1 8

Com esta configuração, a fase 1 da configuração do DNS encontra-se terminada. Para a fase 2 da configuração foi necessário fazer as seguintes alterações: Adicionar a USE flags de suporte a MySQL Adicionar a USE flag de suporte a DLZ (Dynamic Loading Zone) Recompilar o BIND. Criar a base de dados para o DNS, utilizador e respectivas tabelas Reconfigurar a zona lrcd.local para usar DLZ Para o back-end MySQL do servidor de DNS foi criada uma base de dados com o nome DNS e um utilizador com o login dns. mysql u root -p CREATE DATABASE dns; GRANT ALL ON dns.* TO 'dns'@'localhost' IDENTIFIED BY 'irs03'; A estrutura das tabelas para a base de dados DNS foi criada com o seguinte DDL: CREATE TABLE `records` ( `id` int(10) unsigned NOT NULL auto_increment, `zone` varchar(255) NOT NULL, `ttl` int(11) NOT NULL default '86400', `type` varchar(255) NOT NULL, `host` varchar(255) NOT NULL default '@', `mx_priority` int(11) default NULL, `data` text, `primary_ns` varchar(255) default NULL, `resp_contact` varchar(255) default NULL, `serial` bigint(20) default NULL, `refresh` int(11) default NULL, `retry` int(11) default NULL, `expire` int(11) default NULL, `minimum` int(11) default NULL, PRIMARY KEY (`id`), KEY `type` (`type`), KEY `host` (`host`), 9

); KEY `zone` (`zone`) CREATE TABLE `xfr` ( `zone` varchar(255) NOT NULL, `client` varchar(255) NOT NULL, KEY `zone` (`zone`), KEY `client` (`client`) ); O DML usado para o carregamento dos dados da zona encontra-se em anexo. Para usar o back-end MySQL basta substituir a configuração da zona lrcd.local no ficheiro /etc/bind/named.conf pela seguinte configuração. //2ª FASE - Configuração para a zona lrcd.local usando o back-end mysql dlz "lrcd.local" { database "mysql {host=localhost dbname=dns user=dns pass=irs03} {SELECT zone FROM records WHERE zone = '%zone%'} {SELECT ttl, type, mx_priority, IF(type = 'TXT', CONCAT('\"',data,'\"'), data) AS data FROM records WHERE zone = '%zone%' AND host = '%record%' AND type <> 'SOA' AND type <> 'NS'} {SELECT ttl, type, data, primary_ns, resp_contact, serial, refresh, retry, expire, minimum FROM records WHERE zone = '%zone%' AND (type = 'SOA' OR type='ns')} {SELECT ttl, type, host, mx_priority, IF(type = 'TXT', CONCAT('\"',data,'\"'), data) AS data, resp_contact, serial, refresh, retry, expire, minimum FROM records WHERE zone = '%zone%' AND type <> 'SOA' AND type <> 'NS'} {SELECT zone FROM xfr where zone='%zone%' AND client = '%client%'}"; }; 1 0

3.1.3. Testes Para testar o servidor DNS para a zona lrcd.local podemos fazer uma query usando o nslookup no próprio ambiente Linux: nslookup - localhost >bd.lrcd.local O resultado esperado é a tradução do nome bd.lrcd.local para o IP, nomeadamente: 10.64.74.13 Como segundo testes, podemos verificar o MX record usando o NSLOOKUP do Windows nslookup server 10.64.74.12 set type=mx lrcd.local O resultado esperado é o endereço do relay-in. 3.2 MySQL 3.2.1 Objectivo Disponibilização de uma base de dados MySQL com a tabela dos utilizadores válidos no domínio lrcd.local, assim como a disponibilização da base de dados para qualquer serviços implementados pelos clientes. 3.2.2 Configuração Instalação do software: emerge mysql 1 1

A configuração da instância da base de dados é feita no ficheiro /etc/mysql/my.cnf. A configuração por omissão é suficiente, e apenas tivemos que especificar o endereço ao qual o serviço deveria ficar binded. Bind-address = 10.64.74.13 Criação da base de dados: /usr/bin/mysql_install_db /etc/init.d/mysql start /usr/bin/mysqladmin -u root password irs03' rc-update add mysql default 3.2.3. Testes Para testar, basta tentar fazer uma ligação à base de dados. mysql -u root -p 3.3 Apache e PHP 3.3.1 Objectivo Disponibilização de um servidor http para suportar o software de administração da base de dados PHPMyAdmin, assim como o Moodle. O PHPMyAdmin deve ficar no endereço http://bd.lrcd.local e o Moodle devera ser acessível através do endereço http://moodle.lrcd.local. Como ambos as aplicações são implementadas em PHP, é necessária a instalação deste pacote. 1 2

3.3.2 Configuração Instalação do php emerge php Instalação do Apache emerge apache2 Instalação do PhpMyAdmin emerge phpmyadmin Configuração do Apache para suportar PHP. Adicionar ao ficheiro /etc/conf.d/apache2, no parâmetro APACHE2_OPTS o suporte para PHP5 APACHE2_OPTS="-D DEFAULT_VHOST -D INFO -D LANGUAGE -D SSL -D SSL_DEFAULT_VHOST -D SUEXEC -D PHP5" De forma a disponibilizar as duas aplicações em dois endereços diferentes, fizemos uso dos Virtual Hosts do Apache. A configuração dos vhosts encontra-se no seguinte ficheiro: /etc/apache2/vhosts.d/00_default_vhosts.conf <VirtualHost *:80> ServerName bd.lrcd.local ServerAlias irs03.lrcd.local Include /etc/apache2/vhosts.d/default_vhost.include <IfModule mpm_peruser_module> ServerEnvironment apache apache </IfModule> </VirtualHost> </IfDefine> <VirtualHost *:80> ServerName moodle.lrcd.local DocumentRoot /var/www/localhost/htdocs/moodle DirectoryIndex index.php index.html install.php 1 3

<IfModule mpm_peruser_module> ServerEnvironment apache apache </IfModule> <Directory "/var/www/localhost/htdocs/moodle"> AllowOverride All Options Indexes FollowSymLinks Order allow,deny Allow from all </Directory> </VirtualHost> A configuração do PhpMyAdmin foi feita via browser. 3.3.3. Testes A forma mais simples de testar a configuração do Apache + PHP + PHPMyAdmin é acedendo ao seguinte URL: http://bd.lrcd.local 3.4 Radius 3.4.1 Objectivo O objectivo é de disponibilizar um servidor RADIUS no endereço 10.64.74.14. Para tal usou-se o FreeRadius 1.1.7 que pode trabalhar com uma vasta lista de servidores SQL, entre eles o MySQL. O protocolo RADIUS permite authentication e accounting para utilizadores remotos. Permite também gerir de forma centralizada informação sobre autenticação, tais como usernames e passwords. Quando um utilizador pretende efectuar o login num cliente RADIUS (e.g. um router), esse cliente envia um pedido de autenticação para o servidor RADIUS. A comunicação entre o cliente e o servidor é autenticada e cifrada através do uso de shared secret, que não é transmitido pela rede. O servidor RADIUS pode guardar a informação de autenticação de forma local, mas também pode guardá-la numa base de dados SQL externa, em que neste trabalho foi escolhido o MySQL. 1 4

3.4.2 Configuração Instalação do package FreeRadius: emerge -pv freeradius Criação da base de dados radius no MySQL e dum utilizador com permissões para essa base de dados (username: radius, password: irs03 ): mysql -uroot -p CREATE DATABASE radius; GRANT ALL ON radius.* TO radius@localhost IDENTIFIED BY "irs03"; exit Criação do schema para a base de dados radius utilizando o script SQL para o MySQL. Com a execução desse script foram criadas várias tabelas na base de dados incluindo as seguintes: Usergroup: entradas que correspondem o nome da conta do utilizador a um nome de grupo; Radcheck: entradas para cada nome de utilizador em que o atributo Cleartext- Password corresponde à password do utilizador; Radreply: entradas para cada atributo radius correspondendo a um username; Radgroupreply: entradas com atributos radius a serem obtidas para todos os membros de um grupo. cd /usr/share/doc/freeradius-1.1.7/examples/ mysql -uroot -p radius < mysql.sql Editar o ficheiro /etc/raddb/sql.conf e introduzir os detalhes referentes ao servidor, username e password, para ligação ao servidor SQL e à base de dados criada para o RADIUS: sql { # Database type 1 5

# Current supported are: rlm_sql_mysql, rlm_sql_postgresql, # rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc, rlm_sql_freetds driver = "rlm_sql_mysql" # Connect info server = "localhost" login = "radius" password = "irs03" # Database table configuration radius_db = "radius" # If you want both stop and start records logged to the # same SQL table, leave this as is. If you want them in # different tables, put the start table in acct_table1 # and stop table in acct_table2 acct_table1 = "radacct" acct_table2 = "radacct" # Allow for storing data after authentication postauth_table = "radpostauth" authcheck_table = "radcheck" authreply_table = "radreply" groupcheck_table = "radgroupcheck" groupreply_table = "radgroupreply" usergroup_table = "usergroup" Editar o ficheiro /etc/raddb/radiusd.conf e adicionar o endereço reservado para o serviço RADIUS de modo a fazer bind com o endereço IP externo. Verificar se inclui referência para o ficheiro de configuração sql.conf. Adicionar sql há secção authorize{} e accounting{} para informar o FreeRadius para guardar a informação de authentication e accounting em SQL. Adiciona-se ainda sql às secções session{} para activar a detecção Simultaneous-Use, e post-auth{} para fazer logging de todas as tentativas de autenticação para SQL. # bind_address: Make the server listen on a particular IP address, and send replies out from that address. This directive is most useful 1 6

# for machines with multiple IP addresses on one interface. It can either contain "*", or an IP address, or a fully qualified # Internet domain name. The default is "*". bind_address = 10.64.74.14 # Include another file that has the SQL-related configuration. This is another file only because it tends to be big. # The following configuration file is for use with MySQL. # For Postgresql, use: ${confdir}/postgresql.conf # For MS-SQL, use: ${confdir}/mssql.conf # For Oracle, use: ${confdir}/oraclesql.conf $INCLUDE ${confdir}/sql.conf authorize { # Look in an SQL database. The schema of the database is meant to mirror the "users" file. # See "Authorization Queries" in sql.conf sql } accounting { # Log traffic to an SQL database. See "Accounting queries" in sql.conf sql } # Session database, used for checking Simultaneous-Use. Either the radutmp # or rlm_sql module can handle this. session { radutmp # See "Simultaneous Use Checking Querie" in sql.conf sql } # Post-Authentication # Once we KNOW that the user has been authenticated, there are # additional steps we can take. post-auth { # After authenticating the user, do another SQL query. See "Authentication Logging Queries" in sql.conf sql } 1 7

Inserir informação de teste na base de dados radius. Para exemplo de teste, introduziu-se informação correspondente a um utilizador: mysql> select * from radcheck; +----+----------+--------------------+----+-------+ id UserName Attribute op Value +----+----------+--------------------+----+-------+ 1 fredf Cleartext-Password := wilma +----+----------+--------------------+----+-------+ 1 row in set (0.02 sec) mysql> select * from radgroupreply; +----+-----------+--------------------+----+---------------------+ id GroupName Attribute op Value +----+-----------+--------------------+----+---------------------+ 34 dynamic Framed-Compression := Van-Jacobsen-TCP-IP +----+-----------+--------------------+----+---------------------+ 1 row in set (0.02 sec) mysql> select * from radreply; +----+----------+-------------------+----+---------+ id UserName Attribute op Value +----+----------+-------------------+----+---------+ 1 fredf Framed-IP-Address := 1.2.3.4 +----+----------+-------------------+----+---------+ 1 row in set (0.13 sec) mysql> select * from usergroup; +----------+-----------+----------+ UserName GroupName priority +----------+-----------+----------+ fredf dynamic 0 +----------+-----------+----------+ 1 row in set (0.02 sec) Adicionar ao ficheiro /etc/raddb/clients.conf o grupo de clientes da rede interna e o share secret que esses clientes vão utilizar: 1 8

# You can now specify one secret for a network of clients. client 10.64.74.0/24 { secret = radiussecret shortname = lrcd.local } Iniciar o servidor RADIUS em modo debug de modo a mostrar a conexão à base de dados SQL: radiusd -X Adicionar o RADIUS ao boot: rc-update add radiusd default 3.4.3. Testes Para testar a configuração, utiliza-se o comando radtest a partir da linha de comandos para simular um cliente RADIUS. Este comando envia pacotes ao servidor de RADIUS configurado de modo a testar uma conta determinada conta. Para efeitos de teste, utilizou-se o comando com a seguinte configuração: localhost ~ # radtest fredf wilma 10.64.74.14 10 radiussecret Sending Access-Request of id 206 to 10.64.74.14 port 1812 User-Name = "fredf" User-Password = "wilma" NAS-IP-Address = 255.255.255.255 NAS-Port = 10 rad_recv: Access-Accept packet from host 10.64.74.14:1812, id=206, length=32 Framed-IP-Address = 1.2.3.4 Framed-Compression = Van-Jacobson-TCP-IP Para testar de forma mais elaborada as características de authentication e accounting do RADIUS, é necessário existir um cliente RADIUS. Como tal, para este trabalho, disponibilizou-se o serviço de Moodle que será configurado para se comportar como um cliente RADIUS de forma a 1 9

autenticar os utilizadores. A descrição deste serviço em conjunto com a componente RADIUS será descrita no capítulo 3.6. 3.5 LDAP 3.5.1 Objectivo O objectivo é disponibilizar um servidor LDAP no endereço 10.64.74.15. Para tal usou-se o Openladp 2.3.35-r1 em que o backend será a base de dados MySQL previamente instalada. O LDAP é um protocolo multi-plataforma para comunicar com um directory server e contém um modelo de representação de dados optimizado para suportar queries arbitrárias. Uma directoria é uma colecção de objectos hierárquicos e dos seus atributos. O conceito de directoria não é o mesmo que uma base de dados, porque os objectos podem ter atributos que variam, bem como o número dos mesmos atributos, ao contrário da estrutura de colunas de uma tabela duma base de dados SQL. Os directory servers são tipicamente optimizados para um ratio muito elevado de pesquisas a alterações. 3.5.2 Configuração unixodbc O unixodbc é um módulo para Unix / Linux que permite a qualquer aplicação utilizar uma ligação ODBC em ambiente Unix. Neste caso em particular, como para o OpenLDAP aceder ao backend em MySQL necessito de uma ligação ODBC, é necessário instalar este módulo previamente. Instalação do módulo unixodbc: emerge unixodbc 2 0

Instalação dos drivers específicos ODBC para a base de dados MySQL emerge dev-db/myodbc Configuração do módulo unixodbc A configuração deste módulo é feita em dois ficheiros. O primeiro é o odbcinst.ini. Este ficheiro contêm toda a informação sobre o driver que deve ser carregado pelo unixodbc DriverManager no momento da invocação. O segundo ficheiro, com o nome odbc.ini, contem apenas as entradas DSN e os respectivos parâmetros da base de dados, como user, password, servidor, nome, etc. Para o nosso caso, a configuração final é: /etc/unixodbc/odbc.ini [MySQL-ldap] Description = MySQL test database Trace = Off TraceFile = stderr Driver = MySQL SERVER = localhost USER = root PASSWORD = irs03 PORT = 3306 DATABASE = ldap /etc/unixodbc/odbcinst.ini [MySQL] Description = MySQL driver Driver = /usr/lib/libmyodbc3.so Setup = /usr/lib/odbc/libodbcmys.so UsageCount = 1 Testar o unixodbc: Para testar a ligação à base de dados MySQL por ODBC usamos a ferramenta isql que é fornecida com o package unixodbc. 2 1

localhost ~ # isql MySQL-ldap -v +---------------------------------------+ Connected! sql-statement help [tablename] quit +---------------------------------------+ SQL> show tables +-----------------------------------------------------------------+ Tables_in_ldap +-----------------------------------------------------------------+ authors_docs certs documents institutes ldap_attr_mappings ldap_entries ldap_entry_objclasses ldap_oc_mappings persons phones referrals +-----------------------------------------------------------------+ SQLRowCount returns 11 11 rows fetched Instalação do package Openldap. É necessário activar o suporte para ODBC, de forma que o Openldap permita o backend MySQL. Editar o ficheiro /etc/make.conf e adicionar odbc à lista de parâmetros. Instalar o package Openldap que assim irá instalar também o package unixodbc: USE="x86 -oss -cups -gtk -gtk2 -kde -gnome -motif -opengl -qt -x -jcpd -snmp -slang -spell ctype pcre session unicode mysql odbc dlz xml xmlreader xmlrpc xmlwriter" emerge pv openldap 2 2

Editar o ficheiro /etc/openldap/slapd.conf que é o ficheiro de configuração do servidor de LDAP de modo a alterar a password por omissão no parâmetro passwd para teste, e alteração do backend para a base de dados MySQL: # $OpenLDAP: pkg/ldap/servers/slapd/back-sql/rdbms_depend/mysql/slapd.conf,v 1.6 2005/01/05 15:23:00 ando Exp $ # See slapd.conf(5) for details on configuration options. This file should NOT be world readable. include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema modulepath /usr/lib/openldap/openldap moduleload back_sql.so pidfile argsfile /var/run/openldap/slapd.pid /var/run/openldap/slapd.args ####################################################################### # sql database definitions ####################################################################### database sql #suffix "o=sql,c=ru" suffix "dc=example,dc=com" rootdn "cn=manager,dc=example,dc=com" rootpw teste dbname MySQL-ldap dbuser ldap dbpasswd irs03 subtree_cond "ldap_entries.dn LIKE CONCAT('%',?)" insentry_stmt "INSERT INTO ldap_entries (dn,oc_map_id,parent,keyval) VALUES (?,?,?,?)" has_ldapinfo_dn_ru no Criação da base de dados ldap no MySQL e dum utilizador com permissões para essa base de dados (username: ldap, password: irs03 ): mysql u root -p CREATE DATABASE ldap; GRANT ALL ON radius.* TO ldap@localhost IDENTIFIED BY "irs03"; exit 2 3

Criação do schema para a base de dados ldap utilizando os script de teste SQL para o MySQL localizados em (openldap source)/servers/slapd/back-sql/rdbms_depend/mysql: testdb_create.sql, testdb_data.sql, backsql_create.sql e testdb_metadata.sql. Com a execução destes scripts foram criadas as tabelas ldap_* e inserida a informação necessária para teste. Editar o ficheiro /etc/conf.d/slapd que contém os parâmetros a enviar para o daemon slapd. Foi adicionado o parâmetro "-h ldap://10.64.74.15 ldaps://10.64.74.15" para garantir que o serviço LDAP fazem bind com endereço reservado. # conf.d file for openldap OPTS="-h 'ldaps://10.64.74.15 ldap://10.64.74.15 ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'" Editar o ficheiro /etc/openldap/ldap.conf para introduzir o endereço reservado para o serviço e a root da directoria. Este ficheiro de configuração é usado para atribuir defaults de sistema a serem aplicados quando se executam clientes LDAP: # LDAP Defaults HOST 10.64.74.15 BASE dc=example,dc=com Iniciar o servidor LDAP: /etc/init.d/slapd tart Adicionar o serviço LDAP ao boot: rc-update add slapd default 3.5.3. Testes Para testar a configuração, utiliza-se o comando ldapsearch a partir da linha de comandos para mostrar toda a informação da árvore de directoria a partir da root: Para efeitos de teste, utilizou-se o comando com a seguinte configuração: 2 4

localhost ~ # ldapsearch -x -b 'dc=example,dc=com' 'objectclass=*' # extended LDIF # LDAPv3 # base <dc=example,dc=com> with scope subtree # filter: objectclass=* # requesting: ALL # book1, example.com dn: documenttitle=book1,dc=example,dc=com objectclass: document description: abstract1 documenttitle: book1 documentauthor: cn=mitya Kovalev,dc=example,dc=com documentauthor: cn=torvlobnor Puzdoy,dc=example,dc=com documentidentifier: docume # book2, example.com dn: documenttitle=book2,dc=example,dc=com objectclass: document description: abstract2 documenttitle: book2 documentauthor: cn=mitya Kovalev,dc=example,dc=com documentidentifier: docume # search reference ref: ldap://localhost:9012/dc=example,dc=com??sub # example.com dn: dc=example,dc=com objectclass: organization objectclass: dcobject o: Example dc: example # Mitya Kovalev, example.com dn: cn=mitya Kovalev,dc=example,dc=com objectclass: inetorgperson cn: Mitya Kovalev sn: Kovalev seealso: documenttitle=book1,dc=example,dc=com seealso: documenttitle=book2,dc=example,dc=com givenname: Mitya userpassword:: bwl0 telephonenumber: 222-3234 telephonenumber: 332-2334 2 5

# Torvlobnor Puzdoy, example.com dn: cn=torvlobnor Puzdoy,dc=example,dc=com objectclass: inetorgperson cn: Torvlobnor Puzdoy sn: Puzdoy seealso: documenttitle=book1,dc=example,dc=com givenname: Torvlobnor telephonenumber: 545-4563 # Akakiy Zinberstein, example.com dn: cn=akakiy Zinberstein,dc=example,dc=com objectclass: inetorgperson objectclass: pkiuser cn: Akakiy Zinberstein sn: Zinberstein givenname: Akakiy # search result search: 2 result: 0 Success # numresponses: 8 # numentries: 6 # numreferences: 1 Para testar de forma mais elaborada as características do LDAP configurou-se o serviço Moodle suportar autenticação através de LDAP. A descrição deste serviço em conjunto com a componente LDAP será descrita no capítulo 3.6. 3.6 Moodle 3.6.1 Objectivo O objectivo é de disponibilizar o serviço do Moodle no endereço moodle.lrcd.local, ter como backend a base de dados MySQL, e permitir ser cliente RADIUS e/ou LDAP para autenticação dos utilizadores. 2 6

3.6.2 Configuração Download e instalação do software Moodle: cd /var/www/localhost/htdocs/ wget http://download.moodle.org/stable18/moodle-latest-18.tgz tar -zxvf moodle-latest-18.tgz Criação da base de dados moodle no MySQL e dum utilizador com permissões para essa base de dados (username: moodle, password: irs03 ) através do PhpMyAdmin. Adicionar ao ficheiro de configuração para o vhost (0_default_vhost.conf) localizado em /etc/apache2/vhosts.d/ a informação do Virtual Host para o endereço moodle.lrcd.local: # Virtual Hosts <VirtualHost *:80> ServerName moodle.lrcd.local #Serveralias www.moodle.lrcd.local DocumentRoot /var/www/localhost/htdocs/moodle DirectoryIndex index.php index.html install.php #ErrorLog /var/log/apache2/domain2.tld-error #CustomLog /var/log/apache2/domain2.tld-access combined <IfModule mpm_peruser_module> ServerEnvironment apache apache </IfModule> <Directory "/var/www/localhost/htdocs/moodle"> AllowOverride All Options Indexes FollowSymLinks Order allow,deny Allow from all </Directory> </VirtualHost> A configuração inicial do Moodle é feita através do endereço http://moodle.lrcd.local onde o administrador passa por diversas janelas de configuração, entre as quais: criação das tabelas 2 7

necessárias, texto que irá aparecer na página principal, e setup do profile para o administrador (username: admin, password: irs03 ). 3.6.3 Testes Para ilustrar o sucesso da configuração, apresentamos a página principal do Moodle: Figura 2 Página principal do serviço Moodle Em relação ao test case utilizando o RADIUS para autenticação dos utilizadores, não foi possível concluir com sucesso devido a um erro aquando da configuração dos detalhes da comunicação 2 8

com o servidor RADIUS, relativamente ao módulo Auth_RADIUS. Até à elaboração deste relatório não foi possível identificar a razão pela qual o problema ocorre nem a sua solução ainda que com bastante persistência. A figura abaixo ilustra o problema descrito. Figura 3 Problema na configuração RADIUS no Moodle 2 9

No test case envolvendo o LDAP, também não foi possível concluir com sucesso devido ao facto de não se ter conseguido encontrar uma configuração que permitisse conjugar Moodle/LDAP/MySQL para autenticação dos utilizadores. Mais uma vez, foi com bastante persistência que se tentou encontrar uma solução. Figura 4 Página de configuração do servidor LDAP no Moodle 3 0