Tutoriais‎ > ‎

Servidores Linux

SSH e Kerberos

postado em 31 de jul de 2015 04:15 por Prof. Rodrigo Costa   [ 18 de ago de 2015 07:43 atualizado‎(s)‎ ]

Neste tutorial iremos demonstrar como configurar o servidor kerberos para ser um servidor de autenticação de um provedor de serviço de terminal seguro (SSH). 

Para isto, precisamos de três maquinas virtuais. Neste tutorial, foram usadas três maquinas virtuais lubuntu 14.10 e está organizado em 5 seções.

. Configuração inicial das máquinas

Antes de começar a configurar o Kerberos, provedor de serviço e cliente, é necessário fazer algumas alterações nos arquivos de configuração de todas as máquinas para que elas sejam capazes de se comunicarem através do nome. Neste teste, cada uma das máquinas será configurada com os seguintes nomes e ips descritos na tabela a seguir.
 Máquina   /etc/hostname  ip     
 Provedor de Serviço  ssh.com 192.168.235.137 
 Kerberos kerberos.com  192.168.235.138 
 Cliente      cliente.com 192.168.235.139 

Deve-se alterar o arquivo /etc/hosts e /etc/hostname. 

kerberos $ sudo su
kerberos # echo "<NOME_DA_MAQUINA>" > /etc/hostname
kerberos # echo "127.0.0.1 <NOME_DA_MAQUINA>" >> /etc/hosts
kerberos # echo "192.168.235.137  ssh.com ssh" >> /etc/hosts
kerberos # echo "192.168.235.138  kerberos.com  kerberos" >> /etc/hosts
kerberos # echo "192.168.235.139  cliente.com cliente " >> /etc/hosts

Depois dessas alterações, a conectividade entre elas deve ser testada através de um ping.
kerberos # ping kerberos.com 
kerberos # ping cliente.com 
kerberos # ping ssh.com
OBS: Essas configurações devem ser feitas em todas as máquinas.
OBS2: Depois dessas alterações, deve-se reiniciar a máquina.

2. Configurando o Servidor Kerberos

Após a configuração inicial das máquinas, inicia-se a configuração do servidor de autenticação (Kerberos). Primeiramente, instala-se o servidor kerberos através do apt-get.
kerberos $ sudo su
kerberos # apt-get install krb5-admin-server krb5-kdc

Durante a instalação é solicitado a inserção do domínio padrão (DEFAULT REALM). Deve-se inserir as informações do seu novo domínio KERBEROS.COM, conforme mostrado a seguir.


Depois disso, deve-se configurar o arquivo /etc/krb5.conf para as configurações do KERBEROS.COM

kerberos # nano /etc/krb5.conf

O arquivo krb5.conf deve ficar semelhante ao arquivo a imagem a seguir


Após esta alteração, deve-se iniciar o servidor kerberos através do comando krb5_newrealm. 
kerberos # krb5_newrealm

Após este comando, deve-se inserir as credenciais (senhas) do usuário administrador do domínio (REALM).

Perceba que os serviços agora estão ativos e o servidor está pronto para o uso. É necessário criar os usuários para poder prover o serviço de autenticação.
kerberos # kadmin.local
Authenticating as principal root/[email protected]
kadmin.local: addprinc root
<COLOCAR A SENHA>
kadmin.local: addprinc root/admin
<COLOCAR A SENHA>
kadmin.local: q


Para finalizar a configuração do servidor deve-se também alterar a lista de controle de acesso /etc/krb5kdc/kadm.acl, descomentando sua última linha

kerberos # nano /etc/krb5kdc/kadm.acl

Pronto, o servidor já está configurado, para testá-lo usa-se o kinit, klist.

kerberos # kinit root
<INSERIR A SENHA>
kerberos # klist -l

Para adiantar a autorização da máquina ssh.com, deve-se utilizar o utilitário kadmin.local e criar as credenciais para a máquina.

kerberos # kadmin.local
kadmin.local: addprinc -randkey host/ssh.com
kadmin.local: ktadd -k /tmp/ssh.com.keytab host/ssh.com
kadmin.local: quit

kerberos # cp /tmp/ssh.com.keytab /etc/krb5.keytab

Pronto, agora temos o servidor de autenticação kerberos configurado e já criamos as credenciais da estação do provedor do serviço. Agora podemos iniciar as configurações do provedor de serviço.

3. Configurando o Provedor de Serviço

No provedor do serviço, deve-se instalar o pacote krb5-config juntamente com o servidor SSH através do comando
ssh # apt-get install krb5-config openssh-server

Similarmente ao servidor Kerberos, deve-se inserir as mesmas configurações de domínio e alterar o arquivo krb5.conf . Após a instalação, deve-se alterar as configurações do servidor ssh, editando o arquivo /etc/ssh/sshd_config

ssh # nano /etc/ssh/sshd_config

Deve-se remover os comentários nas entradas relacionadas a autenticação GSSAPI

Após salvar as alterações, deve-se reiniciar o serviço ssh no servidor
ssh # service ssh restart

Para finalizar a configuração, deve-se copiar o arquivo keytab criado no servidor Kerberos para o servidor ssh. 

kerberos # scp /tmp/ssh.com.keytab <seu_usuario>@ssh.com:~/krb5.keytab

E no servidor ssh, deve-se colocar o arquivo no diretório etc. 

ssh # chown root.root krb5.keytab
ssh # chmod 400 krb5.keytab
ssh # cp krb5.keytab /etc/krb5.keytab

4. Configurando o Cliente

Para permitir o recebimento de Tickets de autenticação do Kerberos deve-se instalar o pacote krb5-user e repetir as configurações do domínio e alterar também o arquivo krb5.conf, similarmente ao realizado nas outras máquinas.
cliente # apt-get install krb5-user

Deve-se também alterar o arquivo de configuração do cliente ssh para utilizar a autenticação GSSAPI
cliente # nano /etc/ssh_config

Altere as configurações ao final de arquivo para yes em ambas as opções da GSSAPI, conforme mostrado na figura a seguir


Para se conectar ao servidor ssh.com sem digitar a senha, basta fazer a autenticação no servidor KERBEROS.COM através do KINIT e depois disso, acessar o serviço através do ssh, conforme mostrado a seguir:
cliente # kinit root
Password for [email protected]:
cliente # ssh [email protected]

Pronto, o servidor está configurado, conforme mostrado na figura a seguir:

Para finalizar, dê o comando kdestroy e tente novamente se conectar para você perceber que o servidor irá solicitar o login e a senha.

Ainda não consegiu? Assita o vídeo a seguir disponível em meu canal do youtube.com/rodccosta

Zabbix com o Ubuntu 14.04 LTS

postado em 29 de mai de 2014 11:11 por Prof. Rodrigo Costa   [ 30 de mai de 2014 09:29 atualizado‎(s)‎ ]

Esta postagem tem como objetivo auxiliar aos alunos configurarem os serviços de gerenciamento de rede utilizando o Zabbix.

Antes de mais nada, para facilitar o acesso a informações importantes do host de servidor, deve-se modificar a tela de login do servidor para incluir dados como : endereço de IP e url para acesso do zabbix.
$ sudo su
# vim /etc/rc.local

Dentro do arquivo insere-se as linhas
IP=$(/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')
echo "eth0 IP: $IP\r\n URL ZABBIX: http://$IP:PORTA/" > /etc/issue

Existem diferentes formas de configuração e instalação do servidor devido a diferentes versões do zabbix server que utilizam servidores de banco de dados específicos (sqlite, postgres, mysql). Por causa disto, é necessário antes de mais nada escolher qual SGBD utilizar, bem como instalar as dependências. Neste artigo é apresentada a instalação usando o mysql como SGBD. 
$ sudo su
# apt-get update 
# apt-get install mysql-server-5.5 apache2 php5 php5-curl php5-dev php5-mysql php5-gd php5-xmlrpc openipmi libssh2-1 libssh2-1-dev 
libssh2-php fping libcurl3 libiksemel3 libiksemel-dev snmp libmysqld-dev libmysqld-pic libmysqlclient-dev make  dbconfig-common libodbc1

Durante o processo é solicitada a criação de uma senha de root para o mysql. Diferentemente das versões anteriores, a versão mais recente já tem o um instalador. Por exemplo, em um ubuntu server versão 14.04 de 32 bits foi baixado a versão correta e a seguinte instalação:
# wget -c http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix/zabbix-server-mysql_2.2.3-1+trusty_i386.deb
# dpkg -i *.deb
# apt-get -f install 
# apt-get update

Durante o processo de isntalação, é solicitado a escolha do modo de configuração. Aperte sim para ele criar automaticamente o banco de dados. As únicas informações pedidas são as senhas do root do mysql e a senha do usuario do banco de dados zabbix. Depois disto, baixa-se os dados do gerenciador web do zabbix.
# apt-get install zabbix-server-mysql zabbix-frontend-php
# cp /usr/share/doc/zabbix-frontend-php/examples/apache.conf /etc/apache2/conf-available/zabbix.conf
# a2enconf zabbix.conf
# cp /usr/share/doc/zabbix-frontend-php/examples/zabbix.conf.php.example /etc/zabbix/zabbix.conf.php

Após tudo isso, você deverá editar o arquivo  /etc/zabbix/zabbix.conf.php e alterar a linha $DB["PASSWORD"]                 = 'password' e inserir a senha criada para o seu usuário. Antes de reiniciar o apache, altere as configurações do arquivo /etc/php5/apache2/php.ini
php_value max_execution_time 300 
php_value memory_limit 128M 
php_value post_max_size 16M 
php_value upload_max_filesize 2M 
php_value max_input_time 300
date.timezone = America/Fortaleza

E reiniciar o apache.
# service zabbix-server start
# service apache2 restart
Após isto, o servidor encontra-se disponível em http://<ip de seu servidor>/zabbix. E você pode efetuar o login:

Para visualizar a informação do próprio host, basta instalar o agente do zabbix
# apt-get install zabbix-agent

Eu criei para meus alunos um appliance para facilitar a configuração do laboratório de ensino utilizando este tutorial. Atualmente, a zabbix oferece um download de diversos tipos de appliance, até mesmo um live cd.
Ou seja, depois do trabalho todo e que você já sabe configurar o zabbix, vc pode fazer o download da solução pré-configurada.


Package Release Date Release Notes Download
VMware / VirtualBox (.vmdk) 2.2.2 17 February, 2014 Download
KVM 2.2.2 17 February, 2014 Download
Open virtualization format (.ovf) 2.2.2 17 February, 2014 Download
Live CD/DVD (.iso) 2.2.2 17 February, 2014 Download
Preload ISO 2.2.2 17 February, 2014 Download
USB stick / hard disk image 2.2.2 17 February, 2014 Download
Xen guest 2.2.2 17 February, 2014 Download
Microsoft VHD 2.2.2 17 February, 2014 Download
Preload USB Image 2.2.2 17 February, 2014 Download

Configurando Apache2 para acessar a public_html do usuário com senha.

postado em 10 de abr de 2014 15:46 por Prof. Rodrigo Costa   [ 10 de abr de 2014 15:47 atualizado‎(s)‎ ]

Apache é um dos servidores http mais utilizados atualmente e está presente em cerca de 60% de todos os Web sites na Internet.  Este servidor agrega características de ser 
extremamente configurável, robusto, além de possuir um código aberto. 

Neste tutorial, será apresentado o passo-a-passo para configurar os sites locais do usuário (local site = public_html) e fazer com que cada usuário possa gerenciar suas próprias configurações como, autenticação de usuário, controle de acesso, dentre outras necessidades configuráveis pelo .htaccess.

Inicialmente, deve-se instalar o apache2
$ sudo su
# apt-get install apache2 apache2-utils

Foi solicitado a instalação do pacote apache2-utils pois no exemplo mostrado no tutorial será necessário o comando htpasswd para configurar uma página web com autenticação por arquivo (autenticação básica). A partir do apache configurado, podemos inicialmente configurar os sites locais dos usuários e depois sobrescrever as configurações do site utilizando o .htaccess para 

Configurando os sites do usuário 

Para habilitar os sites do usuário
# a2enmod userdir

para evitar que ao criar um usuário o mesmo tenha que criar a pasta public_html. Para evitar que o usuário tenha que criar sua própria página public_html, temos que criar as estruturas na pasta /etc/skel.  

# mkdir /etc/skel/public_html
# touch /etc/skel/public_html/index.html
# echo "<html> <body><h1> welcome to local user site </h1>this is a sample page, create yours</body></html>" >> /etc/skel/public_html/index.html

Com isto, o site do usuário está disponível e pronto para ser editado. O mesmo acessa o servidor via SSH ou FTP e altera seus arquivos, inserindo no site o seu conteúdo.
 

Usuário inserindo suas próprias configurações

O arquivo .htaccess faz com que uma diretório gerenciado pelo apache sobrescreva as configurações padrão do apache, dando ao usuário a possibilidade de ter configurações adicionais como controle de acesso.
Para fazer isto, o usuário deve criar um arquivo .htaccess na sua public_html
<seu usuario> ~ touch ~/public_html/.htaccess

No arquivo o usuário pode utilizar qualquer diretriz do apache, por exemplo, com o código a seguir é possivel controlar o acesso a página raiz de seu site local, ou colocando o .htaccess em um diretório específico, controlar o acesso.  

AuthType Basic
AuthName "Restricted Files"
# (Following line optional)
AuthBasicProvider file
AuthUserFile /home/<seu usuario>/passwords
Require valid-user

Depois disto, é so criar o arquivo com passwords através dos comandos
<seu usuario> ~ htpasswd -c ~/passwords usuario
para criar o arquivo ou para inserir um novo usuario
<seu usuario> ~ htpasswd ~/passwords usuario
 
Depois disto, o usuário poderá controlar o acesso ao seu site, de forma simples e objetiva.









Firescrum

postado em 17 de nov de 2013 02:27 por Prof. Rodrigo Costa   [ 17 de nov de 2013 02:30 atualizado‎(s)‎ ]

O Firescrum é um aplicativo de gerenciamento de projetos ágeis criado pelo CESAR.

Ele foi totalmente desenvolvido por brasileiros, mas desde 2011 não são lançados novos arquivos.

Um grande diferencial do Firescrum é a possibilidade de realizar reuniões de planejamento de sprint remotamente através do uso de videoconferência na própria aplicação, conforme mostrado a seguir.

Sua instalação é simples, mas devido ser um pacote antigo, foi compilado para versões antigas e que sofreram grandes modificações. Por exemplo,
 DependênciaVersão NecessáriaVersão Atual Exemplos de Modificações 
 Red5 0.71.0.1  http://red5.5842.n7.nabble.com/Major-source-changes-td3996.html
 Spring-core 2.0.8     3.1.1    http://www.infoq.com/presentations/Whats-New-in-Spring-3.0

Então para funcionar o firescrum, bastaria baixar a versão 0.7 do Red5, mas para nossa grata surpresa..... os arquivos da versão 0.7 do Red5 não estão disponíveis no servidor do desenvolvedor.
Testei instalar o firescrum utilizando as versões mais recentes do red5 e não funcionou, pelo contrário, atrapalhou os serviços que estavam rodando no Red5.

Mas como sou brasileiro e não desisto nunca... kkk... após várias páginas de pesquisa no google, encontrei um site A-B-E-N-Ç-O-A-D-O que tinha o arquivo necessário.
http://linux.shslzx.cn/ubuntu_soft/red5-0.7.0.tar.gz

Depois de obtê-lo ficou fácil, conforme descrito a seguir

1. Instalação das dependências do Firescrum no Ubuntu 12.04 LTS

Primeiramente deve-se instalar as dependências do Firescrum através do comando:
$  sudo apt-get install tomcat7 postgresql unzip

Deve-se obter os arquivos do Red5 através do comando
$  wget -c http://linux.shslzx.cn/ubuntu_soft/red5-0.7.0.tar.gz
Depois disto, deve-se configurar o red5 em sua máquina. Para isto, deve-se criar uma pasta para o red5 em um local de sua preferência, por exemplo /usr/local/red5, extrair os arquivos do arquivo baixado e modificar as permissões dos arquivos:
$  sudo su
#  mkdir /usr/local/red5
#  cd /usr/local/red5
#  tar -zxf <caminho_do_arquivo_red5-0.7.0.tar.gz>
#  useradd red5
#  chmod u+x *.sh
#  find /usr/local/red5/webapps/ -type d -exec chown red5 {} \;

Para executar o red5, deve-se criar o arquivo red5 no diretório /usr/init.d para criar o serviço red5 através de:
#  touch /etc/init.d/red5
#  chmod u+x /etc/init.d/red5
#  vim /etc/init.d/red5

deve-se colocar o seguinte conteúdo no arquivo red5 recém criado:
# /bin/sh
#
# Author: Jake Hilton [hidden email]
# /etc/init.d/red5
#
# Check for missing file
RED5_DIR=/usr/local/red5
test -x $RED5_DIR/red5.sh || exit 5

case "$1" in
    start)
        echo -n "Starting Red5 Service"
        echo -n " "
        cd $RED5_DIR
        su -s /bin/bash -c "$RED5_DIR/red5.sh &" red5
        sleep 2
        ;;
    stop)
        echo -n "Shutting down red5"
        echo -n " "
        cd $RED5_DIR
        su -s /bin/bash -c "$RED5_DIR/red5-shutdown.sh &" red5
        sleep 2
    restart)
        ## Stop the service and regardless of whether it was
        ## running or not, start it again.
        $0 stop
        $0 start
        ;;
esac

A qualquer momento, o usuário pode inicializar ou finalizar o red5 através dos comandos sudo service red5 start/stop. Depois disto é só colocar inserir o script de inicialização do red5 na autoinicialização do ubuntu através do comando
#  update-rc.d red5 defaults
 
Pronto, o red5 já está instalado, vamos agora proceder a instalação do firescrum 

2. Instalando o Firescrum

Deve-se iniciar realizando o download da versão 1.0 beta 5 do Firescrum e extraí-lo para uma pasta de sua conveniencia
$  wget -c http://switch.dl.sourceforge.net/project/firescrum/FireScrum%20Bin/1.0%20Beta%205/firescrum_1.0_beta_5.zip
$  unzip firescrum_1.0_beta_5.zip

Pare ambos os servidores de aplicação (tomcat e red5) para iniciar o deploy
$  sudo service red5 stop
$  sudo service tomcat7 stop

Mova os arquivos do firescrum para os servidores de aplicação
$  cd firescrum_1.0_beta_5
$  sudo cp firescrum.war /var/lib/tomcat7/webapps
$  sudo cp -R firescrumServer/ /usr/local/red5/webapps/firescrumServer

Para instalar o firescrum deve-se reiniciar os serviços
$  sudo service red5 start
$  sudo service tomcat7 start

após o comando é feito o deploy, o usuário deve aguardar alguns instantes para o deploy ser concluído.
Após isto, crie o banco de dados que será utilizado pelo firescrum através do comando
$  sudo su postgres -c psql

e insira os seguintes comandos
postgres=# CREATE USER firescrum WITH PASSWORD 'secret';
# CREATE DATABASE firescrum WITH OWNER firescrum;
# GRANT ALL PRIVILEGES ON DATABASE firescrum to firescrum;
# \q

Para finalizar a configuração do firescrum, deve-se alterar o arquivo application.context do firescrum para utilizar as credenciais do banco de dados criado. 
Lembre-se que você deve ter alterado o arquivo /etc/postgresql/9.1/main/pg_hba.conf para receber as conexões de usuários através de autenticação por senha md5.

Edite o arquivo  applicationContext.xml
# vim /var/lib/tomcat7/webapps/firescrum/WEB-INF/applicationContext.xml

e altere as linhas  19 à 21 para:
<property name="url" value="jdbc:postgresql://127.0.0.1/firescrum" />
<property name="username" value="firescrum" />
<property name="password" value="secret" />

verifique se na linha 39 está configurada conforme mostrado a seguir para criar o banco de dados
<prop key="hibernate.hbm2ddl.auto">create</prop>

Reinicie o tomcat para criar as tabelas e popular o banco de dados
$ sudo service tomcat7 restart

Depois disso, se logue no banco de dados e altere a configuração do RTMP_CONNECTION_STRING
$ psql -U firescrum
Password for user firescrum:
psql (9.1.9)
Type "help" for help.

firescrum=> update config set value='rtmp://<ip do servidor>/firescrumServer/' where id=6;

abra novamente o arquvio applicationContext.xml e altere a linha 39 para
<prop key="hibernate.hbm2ddl.auto">update</prop>

Reinicie o tomcat e o firescrum estará pronto para o uso.
$ sudo service tomcat7 restart


Protegendo o acesso a algumas pastas ou diretórios no Apache

postado em 11 de out de 2013 08:11 por Prof. Rodrigo Costa   [ 10 de abr de 2014 15:47 atualizado‎(s)‎ ]

Em alguns momentos é interessante controlar o acesso de diretórios ou arquivos presentes em um servidor WEB. Por padrão, quando você coloca algo no diretório seu diretório compartilhado através do http, qualquer usuário pode ter acesso a esse arquivo, mediante a permissão do sistema de arquivo. 

Por exemplo, ao acessar a pasta /share em um determinado servidor, obtem-se o seguinte resultado

Para acessar qualquer arquivo, o usuário www-data deve ter explicitamente a permissão de leitura, mas se o arquivo pertencer a um usuário qualquer, o mesmo pode ser acessível quando os usuários comuns (others) possuem permissão de leitura é suficiente para um arquivo poder ser lido. No sistema de arquivo que está armazenada a pasta share, os arquivos possuem as seguintes permissões:

$  ls -la
total 456
drwxr-xr-x 2 www-data www-data   4096 Out 11 12:04 .
drwxr-xr-x 8 root     root       4096 Out 11 12:02 ..
-rwxr-x--x 1 www-data www-data 454656 Out 11 12:04 putty.exe
-rw-r----- 1 root     root         70 Out 11 12:02 telefones.csv

apesar de ambos os arquivos não possuirem permissão de leitura para os usuários comuns, devido ao apache rodar sob o usuário www-data, o mesmo consegue acesso ao arquivo putty.exe, mas não dá acesso ao arquivo telefones.csv, pois o dono do arquivo é o root, resultando em um erro conforme mostrado a seguir.

Contudo, o apache tem a possibilidade de fazer o controle da acesso de diretórios mediante a login e senha, pois o protocolo oferece um código de resposta de comunicação 401 - Não Autorizado, ou seja, quem tem as credenciais para o diretório acessa e quem não tem, não acessa.

Neste tutorial serão mostradas duas formas de disponibilizar um controle de acesso através das configurações do APACHE 

Ambiente de Teste

Este tutorial foi testado em um computador com as seguintes configurações
  • Ubuntu 12.04 
  • Apache versão 2.2.22

Configurando o acesso através de controle de senha por arquivo

Para configurar um diretório com controle de acesso por arquivo você deve inserir em seu arquivo de configuração do apache a personalização do controle de acesso do diretório, para isto, basta você editar um dos sites-available do apache através de 
$  vim /etc/apache2/sites-available/default
em qualquer parte do arquivo, para você colocar o controle de acesso a um determinado diretório, basta criar uma configuração de <Location nome> dentro do <Virtualhost>

Por exemplo, foi inserido a seguinte configuração
<Location /share>
    AuthType basic
    AuthUserFile /caminho/para/um/arquivo/que/contem/as/senhas/nome_do_arquivo
    AuthName "Acesso Privado, favor digitar seu login e senha para acessar os arquivos"
    Require valid-user
</Location>
em que:
  • AuthType basic: é a forma de autenticação, no caso utilizamos uma autenticação simples, mas o apache permite as seguintes configurações de tipos de autenticação digest para configuração com usuário pertencente a um domínio com senha criado em um arquivo ou LDAP, com senha em um Active Directory (AD).
  • AuthUserFile : arquivo que será utilizado para controlar o acesso. O administrador pode escolher qualquer arquivo, basta criá-lo corretamente através do htpasswd. Deverá ser informado o diretório e o nome do arquivo que possui as senhas
  • AuthName : Forma de apresentação do sistema de controle de acesso, o administrador pode colocar qualquer mensagem, no idioma de preferência.
  • Require valid-user é para informar ao apache que só permitirá o acesso a usuários autenticados.
Para criar o arquivo de senha, você deve entrar na pasta escolhida e em seguida chamar o comando htpasswd, conforme mostrado a seguir.
# mkdir /etc/apache2/senhas
# cd /etc/apache2/senhas
# htpasswd -c nome_do_arquivo nome_do_usuario
New password:
Re-type new password:
Adding password for user <nome_do_usuario>
Para inserir novos usuários, basta remover o parâmetro -c do htpasswd
# htpasswd nome_do_arquivo nome_do_usuario
New password:
Re-type new password:
Adding password for user <nome_do_usuario>
Desta forma, agora basta só solicitar a recarga do apache2 para que ele coloque em execução as configurações de controle de acesso.
# a2enmod auth_basic
# a2enmod authn_file
# a2enmod authz_user
# service apache2 restart

Com isto, o controle de acesso fica ativo e ao acessar a pasta share, será solicitado as credenciais do usuário.

ao acessar a página, é solicitado ao usuário a digitação de sua credencial

caso as credenciais digitadas não estejam no arquivo de texto, o navegador irá retornar o seguinte código de erro.

Parabéns, com isso qualquer arquivo com permissão de leitura para o usuário www-data poderá ser compartilhado em uma pasta em um servidor web apache2 mediante a senha gravada em um arquivo de texto. Perceba que nos testes foi feito a configuração do <Location> em um virtualhost atendendo a porta 433 (https), ou seja, além de uma autenticação por senha, você pode também transferir seus dados de forma criptografada.

Controle de Usuários em banco de dados (falta ainda testar ok?)

Além de um arquivo de texto, a autenticação básica permite também o controle de usuários através do SQL, por exemplo, um postgres.
Para isto, deve-se criar ao final do arquivo /etc/apache2/httpd.conf
DBDriver pgsql
DBDParams "host=localhost dbname=mydb user=usuariodobanco password=secret"
DBDMax 10

depois disto, basta criar o usuário banco de dados indicado, e o usuário com a senha informada para acessar o banco de dados criado através do comando:
# psql -u postgres
CREATE USER usuariodobanco WITH PASSWORD 'secret';
CREATE DATABASE mydb;
GRANT ALL PRIVILEGES ON DATABASE mydb to usuariodobanco;
DATABASE mydb
CREATE TABLE authn (
    id          integer PRIMARY KEY AUTOINCREMENT,
    username    varchar(40) NOT NULL,
    password    varchar(40) NOT NULL
);

Com isto, basta inserir as informações de autenticação no Location
<Location /share>
    AuthType basic
    AuthName "Acesso Privado, favor digitar seu login e senha para acessar os arquivos"
    AuthBasicProvider dbd
    AuthDBDUserPWQuery \
    "SELECT password FROM authn WHERE user = %s"
    Require valid-user
</Location>
Feito isto, basta criar os usuários no banco utilizando um insert into 
INSERT INTO authn (usuario,senha)
Desta forma, agora basta só solicitar a recarga do apache2 para que ele coloque em execução as configurações de controle de acesso.
# a2enmod auth_basic
# a2enmod authn_dbm
# a2enmod authz_user
# service apache2 restart

IceScrum

postado em 8 de out de 2013 03:06 por Prof. Rodrigo Costa   [ 8 de out de 2013 14:48 atualizado‎(s)‎ ]

A gerência de projetos é uma arte. No PMBOOK são descritas uma série de boas práticas para o gerenciamento de projetos. 

Contudo, existe uma realidade alternativa para o gerenciamento de projetos de forma ágil. O Scrum é um método ágil que é utilizado por grandes empresas como Microsoft, Google, Nokia, Siemens, e também, em várias empresas nacionais de  desenvolvimento em TI.

A visão geral desta ferramenta é mostrada na figura a seguir. 
fonte: http://alanbraz.wordpress.com/2011/05/17/precisa-se-de-projetos-scrum/
Fonte: http://alanbraz.files.wordpress.com

O projeto é iniciado a partir das especificações do Dono do Produto. Estas especificações compõem  uma lista de requisitos de todos os entregáveis, conhecido como o backlog do produto.  Através de uma reunião de planejamento de uma iteração trabalho (sprint), parte do backlog do produto é selecionado, definindo as atividades que serão desenvolvidas durante o sprint. Cada  sprint tem duração de 2 à 4 semanas e a cada dia tem-se uma reunião diária para replanejar  as atividades. Ao final do sprint, uma reunião acontece para apresentar as funcionalidades implementadas no sprint, discussões para alimentar o próximo sprint.

Existem diversas ferramentas para o gerenciamento de projetos ágil, a forma mais tradicional para isto é o KANBAN CARD WALL, geralmente fixado em uma parede onde todos os membros do projeto podem observá-lo e ter uma visão do andamento das atividades do projeto.

Esta forma de trabalho através de um KANBAN físico é ideal para equipes centralizadas que trabalham no mesmo ambiente, mas em equipes geograficamente distribuída, faz-se necessário o uso de ferramentas web que simulem o KANBAN e possibilitem o acesso da informação contida no KANBAN em qualquer lugar.
Existem várias ferramentas para tal, como:
  • ICESCRUM - http://www.icescrum.org/
  • Firescrum - http://sourceforge.net/projects/firescrum/
  • Digaboard - http://www.digaboard.net/
  • PPTS - http://ses-ppts.sourceforge.net/
Neste post serão descritos o passo a passo para instalação do ICESCRUM no ubuntu 13.04

ICESCRUM

O Icescrum (http://www.icescrum.org) é um aplicativo web open source desenvolvido em Grails/Java capaz de fornecer um ambiente para gerenciar os pilares do gerenciamento de projetos ágeis através do SCRUM:
  • Gerenciamento do Product Backlog: através do ICESCRUM podem ser cadastradas as os casos de uso do produto (user stories) e que formarão o conjunto de requisitos que serão posteriormente escolhidas
  • Gerenciamento da Sprint: uma parte do Product backlog é escolhida e a partir daí são definidas atividades que serão desenvovlvidas dentro da interação de trabalho
Um exemplo do funcionamento do Icescrum é mostrado na Figura a seguir

Ambiente de Implantação

Neste tutorial, o Icescrum foi instalado na versão 12.10 do Ubuntu Server 64bits. Como o Icescrum roda sobre um servidor de aplicação, é necessário instalar a Java, bem como algumas dependências de uso desta ferramenta.

 Instalando Pré-requisitos

Para rodar o icescrum deve-se ter instalado os seguintes pacotes
  • apache2: servidor http no linux
  • tomcat7: versão mais recente do servidor de aplicação baseado no apache2
  • openjdk-7: versão da máquina virtual java
  • mysql: banco de dados mysql para criação de usuários
  • unzip: para extrair o arquivo do icescrum baixado no site.
para instalação de todas estas dependências, chame o seguinte comando
$ sudo su
# apt-get install openjdk-7-jdk default-jdk tomcat7 apache2 libtomcat7-java mysql-server-5.5 mysql-client unzip

  Após a instalação de todos os pacotes é solicitada a senha de root do mysql

Neste momento, o usuário deve digitar a senha de root do mysql.

Para a utilização do icescrum, será criado o banco de dados e um usuário icescrum para acessar apenas o banco de dados criado.

$ mysql -u root -p
Enter password: <digite a senha de root do mysql>

Após a digitação da senha o usuário terá acesso ao gerenciamento do mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.32-0ubuntu0.12.10.1 (Ubuntu)

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> CREATE DATABASE IF NOT EXISTS icescrum; GRANT ALL PRIVILEGES ON icescrum.* TO 'icescrum'@'localhost'IDENTIFIED BY 'senha do icescrum';
mysql> FLUSH PRIVILEGES;
mysql> quit;

Após a criação do banco de dados podemos dar continuidade fazendo algumas configurações importantes do tomcat7 para rodar o icescrum. Sabendo que as configurações do tomcat encontram-se na pasta  /var/lib/tomcat7/ é necessário modificar a forma de acesso do tomcat para uma compatível com o icescrum.
$ sudo su
# vim /var/lib/tomcat7/conf/server.xml

comente a linha 72 e insira uma nova configuração de conexão
<!--<Connector port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            URIEncoding="UTF-8"
            redirectPort="8443" />-->
<Connector port="8080"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           connectionTimeout="2000"
           maxThreads="500"
           URIEncoding="UTF-8"/>
obs: inserindo um texto entre <!-- --> faz com que uma parte do arquivo xml seja comentada. Inseri <!-- antes do <connector e um --> após o />
 
Depois disto, inseri algumas variáveis de ambiente diretamente na configuração do tomcat para tornar possível a devida configuração, bem como, funcionamento correto do Icescrum em questão de uso de memória. Para isto, chama-se o seguinte comando:
# vim /etc/default/tomcat7

No arquivo inseri as seguintes entradas
icescrum_config_location=/usr/share/tomcat7/icescrum/config.groovy

CATALINA_OPTS="-Dicescrum.log.dir=/usr/share/tomcat7/icescrum -Duser.timezone=UTC -Dicescrum_config_location=/usr/share/tomcat7/icescrum/config.groovy -Xmx512m -XX:MaxPermSize=256m"

Após isto, o tomcat7 está pronto para receber o icescrum.

Configurando o ICESCRUM

Antes de mais nada, é necessário configurar o icescrum. Uma coisa que o tutorial do site não fala é que devemos criar a pasta onde haverá as configurações, nem  passa ao usuário as configurações de forma intuitiva. Então vamos lá. 
# mkdir /usr/share/tomcat7/icescrum
# touch /usr/share/tomcat7/icescrum/config.groovy
# chown tomcat7.tomcat7 -R /usr/share/tomcat7/icescrum
# mkdir /home/icescrum
# chown tomcat7.tomcat7 -R /home/icescrum

Depois disto, é necessário editar o arquivo /usr/share/tomcat7/icescrum/config.groovy e colocar todas as configurações do icescrum.
icescrum.project.import.enable = true
icescrum.project.export.enable = true
icescrum.project.creation.enable = true
icescrum.project.private.enable = true

icescrum.gravatar.secure = false
icescrum.gravatar.enable = false
icescrum.registration.enable = true
icescrum.login.retrieve.enable = true

icescrum.auto_follow_productowner = true
icescrum.auto_follow_stakeholder  = true
icescrum.auto_follow_scrummaster  = true
icescrum.alerts.errors.to = "[email protected]"
icescrum.alerts.subject_prefix = "[icescrum]"
icescrum.alerts.enable = true
icescrum.alerts.default.from = "[email protected]"

grails.serverURL = "http://<ip do servidor>:8080/icescrum"
                   /* Changing the port will require to change
                     it in the Tomcat server.xml Connector*/
icescrum.debug.enable = false
icescrum.securitydebug.enable = false
icescrum.baseDir = "/home/icescrum"

icescrum.cors.enable = true  /* CORS is enabled by default
                                However, it's enabled only for projects
                                where web services are enabled */
icescrum.cors.allow.origin.regex = "*"  /* Use double backslash for escaping
                                           e.g. (http://|.+\.)mydomain\.com */

dataSource.dialect = "org.hibernate.dialect.MySQL5InnoDBDialect"
dataSource.driverClassName = "com.mysql.jdbc.Driver"
dataSource.url = "jdbc:mysql://localhost:3306/icescrum?useUnicode=true&characterEncoding=utf8"
dataSource.username = "icescrum"
dataSource.password = "password"
OBS: atente para configurar da forma correta os trechos de código em vermelho.

Depois disto, você pode baixar o icescrum através do comando.
# wget -c http://www.icescrum.org/downloads/icescrum_R6_9_war.zip

depois disto, extraia o arquivo através do comando
# unzip icescrum_R6_9_war.zip

depois disto, copie o arquivo extraído para a pasta webapps do tomcat. mas antes é altamente recomendável parar o tomcat
# service tomcat7 stop
# mv icescrum.war /var/lib/tomcat7/webapps
Para evitar problemas com o mysql-conector, copie da pasta do icescrum para a pasta do tomcat o mysql conector.
# cp /var/lib/tomcat7/webapps/icescrum/WEB-INF/lib/mysql-connector-java-5.1.18.jar /usr/share/tomcat7/lib/
e depois reinicie o tomcat
# service tomcat7 start


Depois disto, o tomcat faz a sua parte fazendo o deploy do icescrum, extraindo o arquivo war e iniciando o tomcat.

Para verificar o status do icescrum, configure o tomcat-users para verificar o webadmin do tomcat. Inserindo as seguintes linhas no arquivo /var/lib/tomcat7/conf/tomcat-users.xml na penúltima linha do arquivo.
<role rolename="manager-gui"/>
<user username="admin" password="pass" roles="manager-gui"/>

Ao fazer o login, você perceberá que o icescrum já está em execução
 

depois disto, é só chamá-lo através de http://ip_do_seu_servidor:8080/icescrum
Ao clicar em connect, vc vai ser guiado a tela de login e poderá criar seu usuário no sistema.


Por fim, para tornar transparente ao usuário o uso da porta 8080, basta ativar em seu apache2 o módulo proxy através do comando
# a2enmod a2enmod proxy proxy_http

depois disto, edite o arquivo de configuração padrão do apache2
# vim /etc/apache2/sites-available/default

e insira logo no início do <Virtualhost *:80>
ProxyRequests Off
ProxyPreserveHost On
ProxyStatus On
ProxyPass       /icescrum/         http://localhost:8080/icescrum/
ProxyPassReverse    /icescrum/         http://localhost:8080/icescrum/

Pronto, agora vc vai ter também o icescrum de forma transparente, sem chamar o :8080, assim, seu icescrum será acessível através do
http://ip_do_seu_servidor/icescrum

Servidor de FTP com Web Management

postado em 8 de mar de 2013 08:51 por Prof. Rodrigo Costa   [ 8 de mar de 2013 09:00 atualizado‎(s)‎ ]

A utilização de usuários locais como forma de autenticação de serviço FTP é a forma padrão e a mais simples que existe.

Mas isto gera grandes problemas quanto à segurança de acesso. O usuário pode modificar sua senha e esta ser insegura, possibilitando com que o servidor possa ser acessado por pessoas mal  intencionadas.

Pode-se proteger um pouco mais colocando o terminal do usuário como /bin/false, mas você ainda tem que se logar no servidor e criar um usuário local.

Neste tutorial será descrito o passo a passo para configurar um servidor ftp com autenticação local.

Informações do Servidor

  • Foi utilizado um servidor UBUNTU SERVER 64 bits versão 12.10
  • O pacote pureftpd-mysql será utilizado como servidor ftp
  • Utilização de um gerenciador web do pureftpd, disponível em http://machiel.generaal.net/index.php?subject=user_manager_pureftpd

1. Instalando pré-requisitos

  1. sudo su 
  2. apt-get install apache2 # preciso disso para o gerenciador web
  3. apt-get install mysql-server
  4. apt-get install php5 php5-mysql 

2. Instalando os pacotes necessários


      1. apt-get install  pure-ftpd-mysql
      2. wget http://machiel.generaal.net/files/pureftpd/ftp_v2.1.tar.gz
      3. tar -zxf ftp_v2.1.tar.gz
      4. abra o arquivo ftp/install.php 
        • vim ftp/install.php
        • na linha 958 troque  TYPE=MyISAM por ENGINE=MyISAM
        • na linha 978 troque  TYPE=MyISAM por ENGINE=MyISAM
        • salve e feche o arquivo
      5. Para dar mais segurança ao seu sistema, vá no arquivo ftp/config.php e mude a senha do usuário ftp
        • vim ftp/config.php
        • modifique a senha na linha 16
          $DBPassword = "escolha sua senha";
      6. mv ftp /var/www
      7. chown -R www-data:www-data /var/www/ftp

                3. Configurando o servidor

                  1. agora acesse seu browser http://ip/ftp/install.php
                  2. Na primeira tela é mostrado que você tem todos os requisitos para instalar o servidor e vc vai em CONTINUE
                  3. Na tela 2, você deve colocar a senha do seu servidor mysql que foi configurado no passo e clicar em connect
                  4. Depois clique em continue. o sistema irá ler o arquivo config.php. verifique se conferem os dados preenchidos dos mostrados. e clique em STEP4S
                  5. Salve as configurações no arquivo config.php e clique em step5

                  6. O seu gerenciador irá lhe solicitar para criar os usuários que administram o ftp e em seguida vc conclui a instalação apertando step6

                  7. Edite o arquivo /etc/pureftpd/db e cole o conteúdo do arquivo mysql.conf mostrado na págic/na web dentro do arquivo
                     mv mysql.conf mysql.conf.old
                    vim /etc/pure-ftpd/db/mysql.conf
                  8. sudo service pure-ftpd-mysql restart

                  Pronto, tudo está configurado, agora pode usar o ambiente

                  4. Configurando usuários e acessando o servidor pela 1ª vez

                  Pronto agora, é so seguir os simples passos no próprio navegador http://seuip/ftp
                  1. Autenticando o usuário e criando um usuário

                  2. Acessando com um usuário
                  Espero que tenha dado certo!!

                  Sendmail + Gmail

                  postado em 10 de nov de 2012 14:25 por Prof. Rodrigo Costa

                  Olá,

                  Esta postagem tem como objetivo ajudar meu amigo Newton Dore.  Usando o tutorial disponível na net no ubuntu server 12.10, ao chamar o envio do email, o servidor fica demorando para enviar a mensagem e não consegue. 

                  Nesta seção, está descrita uma adaptação do método descrito a seguir.

                  1. Verifique seu arquivo /etc/hosts

                  Abra o arquivo $ sudo vim /etc/hosts e veja se a sua máquina está completamente qualificada (nome e domínio), similar ao mostrado a seguir
                  10.1.1.X       maquina.dominio   maquina

                  2. Configurando os serviços

                  1. Baixe os arquivos necessários
                     apt-get install mailutils sendmail sasl2-bin
                  2. Na linha 7 do arquivo /etc/default/saslauthd troque START=no por START=yes
                    vim /etc/default/saslauthd 
                  3. Iniciar os serviços e fazer o backup das configurações inciais
                    service saslauthd start
                    sudo cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.orig
                    sudo vi /etc/mail/sendmail.mc

                  3. Configurando o login e a senha

                  1. Crie o arquivo que conterá as informações de login
                    mkdir /etc/mail/auth
                    touch /etc/mail/auth/client-info
                    echo 'AuthInfo:smtp.gmail.com "U:root" "I:[email protected]" "P:suasenha" "M:PLAIN" '>> /etc/mail/auth/client-info
                    echo 'AuthInfo:smtp.gmail.com:587 "U:root" "I:[email protected]" "P:suasenha" "M:PLAIN" '>> /etc/mail/auth/client-info
                  2. Crie o arquivo de configuração de senha
                    cd /etc/mail/auth
                    makemap -r hash client-info.db < client-inf
                    chmod 700 /etc/mail/auth
                    chmod 600 /etc/mail/auth/*

                  4. Criando o certificado

                  1. Criando os certificados
                    mkdir /etc/mail/certs
                    cd /etc/mail/certs
                    openssl dsaparam 1024 -out dsa1024 -out dsa1024.pem
                    openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem
                  2. Digite os campos do certificado e finalize a criação dos arquivos
                    ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem
                    openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out /etc/mail/certs/mycert.pem
                  3. Modificando as permissões de acesso do certificado
                    chmod 700 /etc/mail/certs
                    chmod 600 /etc/mail/certs/*

                  5. Modificando as configurações do sendmail

                  1. Abrindo o arquivo /etc/mail/sendmail
                    cd /etc/mail
                    vim /etc/mail/sendmail.mc
                  2. Eu inseri as linhas a seguir após a linha 98
                    include(`/etc/mail/tls/starttls.m4')dnl
                    define(`SMART_HOST',`smtp.gmail.com')dnl
                    define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
                    define(`RELAY_MAILER_ARGS', `TCP $h 587')
                    define(`ESMTP_MAILER_ARGS', `TCP $h 587')
                    FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
                    define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')
                    define(`confCACERT_PATH', `CERT_DIR')
                    define(`confCACERT', `CERT_DIR/CAcert.pem')
                    define(`confSERVER_CERT', `CERT_DIR/mycert.pem')
                    define(`confSERVER_KEY', `CERT_DIR/mykey.pem')
                    define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')
                    define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')
                  3. Criando o certificado
                    m4 sendmail.mc > sendmail.cf
                  4. Re-configurando o sendmail
                    make
                    /etc/init.d/sendmail reload
                    sendmailconfig





                  1-8 of 8