Montando um PDC com OpenBSD

16 09 2007

Introdução

Vamos começar lendo sobre OpenBSD e Samba.

O OpenBSD é um sistema operacional livre da família UNIX, multiplataforma. Seu time de desenvolvedores enfatiza a portabilidade, padronização, correção e segurança. Ele suporta emulação binária da maioria dos binários de SRV4 (Solaris), FreeBSD, Linux, SunOS e HP-UX e funciona nas plataformas i386, SPARC, hp300, Amiga, Mac68k, PowerPC, pmax, mvme68k. A versão mais atual é a 4.1.

Texto retirado de: AQUI

Samba é um programa de computador, utilizado em sistemas operacionais do tipo Unix, que simula um servidor Windows, permitindo que seja feito gerenciamento e compartilhamento de arquivos em uma rede Microsoft.

Texto retirado de: AQUI

Bom, acredito que se você tá lendo esse texto é porque já tem conhecimento sobre o que cada software faz, caso não, leia os sites indicados a cima para poder se interar melhor.

Começando a Instalação

Levando em conta que seu sistema já esteja instalado e configurado adequadamente para o seu uso, contendo as suas ferramentas preferidas para shell e edição de textos. Vamos começar:

OpenBSD 1

Primeiro vamos instalar o samba usando o ports do openbsd, poderiamos baixar o source do site e usa-lo, mas pelo ports iremos manter a robustez do OpenBSD, há quem diga que instalando pacotes via source a pureza do S.O. acaba se perdendo. hehehe. Como querendo um sistema puro e seguro, vamos usar o ports. Na verdade pelo ports, ele baixa o source sim, mas também aplica os patchs criados pela turma desenvolvedora do sistema.

# cd /usr/ports/net/samba/
# make install
(Dependendo de sua conexão e de sua maquina, isso pode ser um pouco demorado, eu aconselho um copo de sorvete de flocos pra esperar isso terminar)

Deve demorar caso o servidor esteja limpo ainda, sem muita coisa instalada ele vai baixar as dependencias.

openbsd2.jpg

Essa parte é simples, facil até. Terminando, vamos para a parte boa. Configurar.

Configurando smb.conf

Para configurar ele também segue o padrão do Linux. Vamos iniciar:

# cd /etc/samba
# cp smb.conf smb.conf-bkp

Agora vamos configurar o smb.conf por partes, abra ele com o seu editor preferido (se bem que no openbsd so vem instalado o vi por padrao… hehehe)

Apos abrir, vamos configura-lo:

# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
workgroup = minha-casa
– Aqui você altera o nome do workgroup para o nome do seu dominio.

# This option is important for security. It allows you to restrict
# connections to machines which are on your local network. The
# following example restricts access to two C class networks and
# the “loopback” interface. For more examples of the syntax see
# the smb.conf man page
hosts allow = 10.1.1. 127.
– Aqui você determina quais faixas de ip irão poder se conectar no pdc.

# Domain Master specifies Samba to be the Domain Master Browser. This
# allows Samba to collate browse lists between subnets. Don’t use this
# if you already have a Windows NT domain controller doing this job
domain master = yes
– isso é pra definir que o servidor será o controlador de dominio master

# WINS Server – Tells the NMBD components of Samba to be a WINS Client
# Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
wins server = 10.1.1.6 (ip do seu servidor)

O resto do arquivo são as definições de compartilhamento. Nelas você coloca da forma que achar melhor e de acordo com a organização de sua rede.

Abaixo segue o script logon.bat, que deve ficar dentro do diretório “netlogon”, ele é assim mesmo, com o # na frente mesmo, coloque essa linha no arquivo logon.bat e salve:

#net time \\pdc /set /yes

Depois disso, faça o seguinte, atribua permissões de execução ao arquivo:

# chmod +x logon.bat

Obs.: Esse arquivo bat deve ser criado no windows e copiado para estacao para que funcione corretamente. Caso contrario ele nao ira pegar o horario do servidor.

Lembrando que é preciso também criar o grupo “estacoes”:

# groupadd estacoes

Agora vamos ao mais “chatinho” que consigo, ficar adicionando as máquinas no domínio. Para cada máquina é necessário adicionar um usuário com um $ na frente, por exemplo:

# useradd -g estacoes -s /bin/false -d /dev/null maquina$
# smbpasswd -am maquina$

Deve aparecer a seguinte mensagem:

Added user maquina$

Agora para adicionar usuários na rede, é preciso fazer a seguinte seqüência:

# useradd -g estacoes -s /bin/false -d /home/usuário usuário
# smbpasswd -a usuário

Nisso ele vai pedir pra inserir uma senha, essa senha será a senha para se usar para logar na rede.

Configurando Inicialização

Essa parte é um pouco chatinha, mas vamos lá, mão na massa.

Para que o samba seja inicializado “automagicamente” quando o servidor for ligado ou reinicializado por conta de queda de energia ou qualquer outra coisa, insira as seguintes linhas no /etc/rc.local

if [ -f /etc/samba/smb.conf -a X”${samba}” != X”NO” ]; then
if [ X”${smbd_flags}” != X”NO” -a -x /usr/local/libexec/smbd ]; then
echo -n ‘ smbd’; /usr/local/libexec/smbd ${smbd_flags}
fi
if [ X”${nmbd_flags}” != X”NO” -a -x /usr/local/libexec/nmbd ]; then
echo -n ‘ nmbd’; /usr/local/libexec/nmbd ${nmbd_flags}
fi
fi

Pra ele rodar com a flag -D, insira no /etc/rc.conf

smbd_flags=”-D”
nmbd_flags=”-D”

Agora vamos Iniciar o samba, pode escolher duas maneiras de faze-lo. Reiniciar o servidor ou mandar esses dois comandos.

# /usr/local/libexec/smbd -D
# /usr/local/libexec/nmbd -D

Pronto, agora ele estara rodando, por exemplo:

# ps aux | grep mbd
root 4638 0.0 1.5 2676 1980 ?? Is 12:29AM 0:00.04 /usr/local/libexec/smbd -D
root 2476 0.0 0.5 2676 592 ?? I 12:29AM 0:00.01 /usr/local/libexec/smbd -D
root 10081 0.0 1.0 1148 1292 ?? Ss 12:29AM 0:00.02 /usr/local/libexec/nmbd -D

Agora, vamos aos testes.

Testando o Servidor

O primeiro teste pode ser feito localmente, usando o smbclient, vamos primeiro definir a senha de root do samba.

# smbpasswd -a root

Agora vamos usar o smbclient para listar os compartilhamentos e infos do servidor

# smbclient -L 127.0.0.1 -U root

deve aparecer algo mais ou menos assim:

# smbclient -L 127.0.0.1 -U root
Password:
Domain=[MINHA-CASA] OS=[Unix] Server=[Samba 3.0.24]

Sharename Type Comment
——— —- ——-
PUBLICO Disk Diret_rio Publico
pchome Disk PC Directories
IPC$ IPC IPC Service (Controlador de Dom_nio Prim_rio (closedbox))
root Disk Diret_rio do Usu_rio
Domain=[MINHA-CASA] OS=[Unix] Server=[Samba 3.0.24]

Server Comment
——— ——-
PDC Controlador de Dom__rio (closedbox)

Workgroup Master
——— ——-
MINHA-CASA

Agora vamos adicionar uma maquina e um usuario no samba, para que possamos inserir essa maquina (Windows) no dominio e logar usando esse usuario.

# useradd -g estacoes -s /bin/false -d /dev/null myhome$
# smbpasswd -am myhome$

Agora vamos criar o usuario

# useradd -m -g estacoes -s /bin/false -d /home/thiago thiago
# smbpasswd -a thiago

Obs.: A opção -m ja vai criar a home na execução do comando.

Agora vamos inserir a maquina windows que se chama winteste no dominio.

win-dominio.jpg

Caso não saiba como fazer, siga o artigo de nosso companheiro srf
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1643

Instalando e configurando o Clamav

Apos o samba estar funcionando corretamente, vamos agora instalar o clamav, para que este possa verificar os arquivos compartilhados e usados pelo windows e assim evitar que tenhamos problemas com virus na rede. Uma grande mão na roda isso.

Vamos instala-lo via ports mesmo.

# cd /usr/ports/security/clamav
# make install

Depois de instalar ele, vamos agora adicionar a função para escanear arquivos arj e rar. Basta seguir as instruções no final da instaçalão:

— clamav-0.90.3 ——————-
Edit /etc/clamd.conf and /etc/freshclam.conf
to use ClamAV.

Use freshclam to install an up-to-date virus signature database.

If you want to scan RAR(2.0) and/or ARJ archives, you have to manually
build and install the archivers/unarj and archivers/unrar ports.

Vamos lá

# cd /usr/ports/archivers/unarj
# make install

# cd /usr/ports/archivers/unrar
# make install

Depois disso, vamos configurar o Clamav e atualiza-lo.

Edite o arquivo /etc/clamd.conf com seu editor preferido.

# Comment or remove the line below.
Example
– nessa linha comente o Example, colocando um # na frente dele.

# Uncomment this option to enable logging.
# LogFile must be writable for the user running daemon.
# A full path is required.
# Default: disabled
#LogFile /var/log/clamd.log
– Aqui remova o # da frente do LogFile para que o log possa ser gerado e a gente curiar depois.

Agora vamos editar o FreshClam para que possa ser feita a atualização.

Edite o arquivo /etc/freshclam.conf com seu editor preferido.

– Basimente basta comentar a linha Example, que segue:
# Comment or remove the line below.
Example
– Comentando ele, ja vai conseguir atualizar mas recomendo uma leitura no arquivo de configuração para que você ative apenas o que deseja da forma que deseja.

Agora vamos atualizar o clamav.

# freshclam

Pronto, seu clamav vai estar atualizado. Agora para rodar ele, use o comando:

# clamd

Para colocar ele iniciando quando a maquina for ligada, altere o arquivo /etc/rc.local, colocando a linha

/usr/local/sbin/clamd

Pronto, ele estara rodando. Agora vamos instalar o samba-vscan e configura-lo.

Instalando e configurando o Samba-vscan

Antes de instalar o samb-vscan, vamos instalar os seguintes pacotes:

– autoconf
– libmagic
– gmake
– bzip2

Provavelmente um ou outro já devem estar instalado, mas para ter certeza vamos fazer um por um.

# cd /usr/ports/devel/autoconf
# make install

# cd /usr/ports/devel/libmagic
# make install

# cd /usr/ports/devel/gmake
# make install

# cd /usr/ports/devel/bzip2
# make install

Feito isso, vamos agora fazer uma pequena adaptação no source do samba para que tudo corra bem, leia, adaptação, nada de gambiarras… hehehehe

Edite o arquivo:

/usr/ports/net/samba/w-samba-3.0.24/samba-3.0.24/source/autogen.sh

Levando em conta que a versão do samba é a 3.0.24.

TESTAUTOHEADER=”autoheader autoheader-2.53 autoheader2.50 autoheader-2.59″
TESTAUTOCONF=”autoconf autoconf-2.53 autoconf2.50 autoconf-2.59″

Depois disso, vamos rodar o make proto no source pra podermos conseguir instalar o samba-vscan.

no diretorio /usr/ports/net/samba/w-samba-3.0.24/samba-3.0.24/source/

rode:

# ./autogen.sh
# ./configure
# make proto

Agora vamos baixar o samba-vscan mais novo. No link abaixo:

http://www.openantivirus.org/projects.php#samba-vscan

# ftp http://ufpr.dl.sourceforge.net/sourceforge/openantivirus/
samba-vscan-0.3.6b.tar.bz2
# bunzip2 samba-vscan-0.3.6b.tar.bz2
# tar xf samba-vscan-0.3.6b.tar
# cd samba-vscan-0.3.6b
# ./configure –with-samba-source=/usr/ports/net/samba/w-samba-3.0.24/
samba-3.0.24/source/
# gmake clamav
# cp vscan-clamav.so /usr/local/lib/samba/vfs/
# cp clamav/vscan-clamav.conf /etc/samba/

Agora sim. Instalado, vamos configura-lo.

Edite o arquivo /etc/samba/vscan-clamav.conf com seu editor favorito.

Altere o seguinte:
; where to put infected files – you really want to change this!
quarantine directory = /var/clamav/quarantine
– assim ele copia pro quarantine os arquivos possivelmente infectados.

; socket name of clamd (default: /var/run/clamd). Setting will be ignored if
; libclamav is used
clamd socket name = /tmp/clamd
– Assim o socket sera encontrado, senao vai dar erro e acesso negado nos arquivos ja criados.

Agora vamos editar o smb.conf e adicionar as linhas seguintes para que ele seja ativado quando o samba iniciar.

Se quiser que o vscan roda para todos os compartilhamentos (o que demanda ter uma boa maquina) coloque as seguintes linhas no global. Caso contrario, coloque apenas no compartilhamento que deseja que o vscan fique escaneando.

vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf

Assim, podemos verificar seu funcionamento.

# tail -f /var/log/messages

Deve aparecer a seguinte mensagem quando alguem acessar algum arquivo ou cria-lo.

Aug 19 21:55:50 closedbox smbd_vscan-clamav[27411]: samba-vscan (vscan-clamav 0.3.6b) registered (Samba 3.0), (c) by Rainer Link, OpenAntiVirus.org
Aug 19 21:55:50 closedbox smbd_vscan-clamav[27411]: samba-vscan (vscan-clamav 0.3.6b) connected (Samba 3.0), (c) by Rainer Link, OpenAntiVirus.org
Aug 19 21:55:50 closedbox smbd_vscan-clamav[27411]: INFO: connect to service PUBLICO by user root

Pronto.

Samba-vscan funcionando.

Alternativas para uso do Clamav

Podemos também usar outras alternativas para usar o clamav e assim eliminar os virus que aparecerem em nosso servidor. Como por exemplo agendar no cron para que seja feito varreduras em horarios determinados, por exemplo as 12:00 horas e as 18:00 horas, caso alguém trabalhe até mais tarde, colocamos ele pra varrer no horario apos essa pessoa sair ou então a 00:00.

A sintaxe do clamav para fazer a varredura é:

# clamdscan -r –move=/var/clamav/quarantine /diretorios_para_varrer

Então no cron, pode ficar mais ou menos assim.

# crontab -e

adicionar as linhas

00 00 * * * /usr/local/bin/clamscan -r –move=/var/clamav/quarantine /dir_para_varrer
00 12 * * * /usr/local/bin/clamscan -r –move=/var/clamav/quarantine /dir_para_varrer
00 18 * * * /usr/local/bin/clamscan -r –move=/var/clamav/quarantine /dir_para_varrer

E pronto. A proteção contra virus estara um pouco maior.

Também uma boa ideia é fazer atualizações automaticas todas as noites usando o freshclam. Ficando mais ou menos assim.

00 1 * * * /usr/bin/freshclam 1> /dev/null

Assim todos os dias a 1 hora da manhã ele ira fazer a atualização.

Conclusão

Bom, assim terminamos o nosso artigo. Espero ter correspondido a expectativa criada no inicio do mesmo quando a instalação e configuração.

Qualquer duvida, não hesitem em perguntar.

Agradecimentos

Pessoal do #linuxajuda na irc.freenode.net
Minha namorada que me deixou escrever esse artigo nesse domingo, claro que deixei ela vendo filme, assim nem sentiu minha falta… hehehehe

Sites recomentados e consultados para escrever o artigo:

http://swik.net/Samba
http://swik.net/OpenBSD
http://swik.net/Openbsd+samba

Enfim, tendo em vista que não encontrei nenhum artigo em pt_BR que falassem bem sobre o assunto, resolvi escreve-lo, espero ajudar muita gente e quem sabe aumentar a popularidade do openbsd para outros serviços, senão o de firewall.

Para isso pretendo ir escrevendo mais textos a respeito de OpenBSD e suas incriveis funcionalidades.

OpenBSD
Free, Functional & Secure

Thiago A. dos Santos
thiago[arroba]gmail.com
cvs @ #linuxajuda – irc.freenode.net





Servidor Web com NetBSD (Apache + PHP + MySQL + *)

16 09 2007

Para quem não sabe o NetBSD é o precursor do OpenBSD. Vou contar a historia aqui resumidamente e pelo ponto de vista de alguém que não está muito por dentro.

Começou tudo com o NetBSD, um dos fundadores não muito contente com o rumo tomado pelos demais desenvolvedores do S.O. resolveu sair do projeto e fundou o OpenBSD e nisso o NetBSD continuou nesse rumo e hoje é o que é, roda até em torradeira.

Pra quem quiser saber mais sobre NetBSD, acesse o link:

Iniciando da base em que você já tem o sistema instalado e configurado para o seu uso. Vamos iniciar a instalação dos pacotes.

Instalaremos o MySQL usando o pkgsrc, para isso faça o seguinte:

# cd /usr/pkgsrc/databases/mysql5-server
# make install

Agora é esperar. Dependendo da máquina isso pode demorar, também depende um pouco de conexão, tendo em vista que o pacote do mysql é um tanto quanto grande.

Após concluir a instalação, vamos configurar o mysql.

# mysql_install_db
# chown -R mysql /var/mysql
# mysqld_safe &
# mysql_secure_installation

Usando o script de instalação segura deixará seu banco um pouco mais seguro. As opções básicas são.

  1. Quando perguntar a senha atual apenas aperte enter, pois não tem senha ainda o banco.
  2. Coloque uma senha difícil de ser descoberta.
  3. A maioria das opções default são as melhores opções, aconselho acatar todas.

Agora vamos instalar o próximo pacote…

Agora vamos instalar o php.

# cd /usr/pkgsrc/www/ap-php
# make install

Agora nessa brincadeira ele vai instalar o PHP e o Apache. Só esperar.

Depois que terminar a instalação, vamos instalar o módulo do mysql para o php.

# cd /usr/pkgsrc/databases/php-mysql
# make install

Configurando Apache:

Depois que terminar vamos configurar o apache:

Edite o arquivo /usr/pkg/etc/httpd/httpd.conf.

Adicione as seguintes linhas nos lugares pertinentes:

LoadModule php5_module /usr/pkg/lib/httpd/mod_php5.so
AddType application/x-httpd-php .php

Altere a opção DirectoryIndex no arquivo, adicionando o index.php, ficando assim:

DirectoryIndex index.html index.htm index.phtml index.php

Salve e saia do arquivo.

Configurando php.ini:

Agora vamos editar o php.ini adicionando o suporte ao mysql. Edite o arquivo que se encontra em /usr/pkg/etc/php.ini.

Adicione a linha:

extension=mysql.so

No lugar pertinente. Também edite a opção “short_open_tag = Off” para On, assim você poderá usar as tags <? ?> que no caso no php5 vem desativado por default e assim só funcionara se usar <?php . Tive uma dor de cabeça por conta disso.

Agora salve o arquivo e saia.

Testando

Crie o arquivo de testes:

# echo “<?php phpinfo(); ?>” > /usr/pkg/share/httpd/htdocs/teste.php

Inicie o apache:

# apachectl start

E acesse http://ip-do-servidor/teste.php

Deve aparecer algo assim.

Adicionando mais módulos ao PHP:Para isso basta saber onde entrar e o que instalar no pkgsrc. Muito simples, uma forma rápida de descobrir os módulos que poderão ser adicionados é fazer o seguinte comando:

# find /usr/pkgsrc -iname php-*

Isso vai listar todos os módulos possíveis e também alguns já instalados. Vamos por exemplo procurar mais algum outro banco de dados para o servidor. Faça o seguinte.

# cd /usr/pkgsrc/databases
# ls | grep php-

Deve aparecer algo semelhante a isso:

# ls | grep php-
php-dba
php-dbase
php-dbx
php-filepro
php-ldap
php-mssql
php-mysql
php-odbc
php-oracle
php-pdo
php-pdo_dblib
php-pdo_mysql
php-pdo_odbc
php-pdo_pgsql
php-pdo_sqlite
php-pgsql
php-sqlite

Basta entrar no diretório desejado e digitar “make install” e ele irá instalar os pacotes necessários para adicionar o suporte e ao final irá lhe falar como proceder para ativar o suporte a tal módulo no php.ini.

Vamos dar um exemplo simples, por exemplo, suporte a postresql:

# cd /usr/pkgsrc/databases/php-pgsql
# make install

Quando terminar deve aparecer algo como:

“$NetBSD: MESSAGE.module,v 1.2 2004/11/05 21:50:11 jdolecek Exp $

To enable this module, add the following to /usr/pkg/etc/php.ini:

extension=pgsql.so

and make sure extension_dir points to the dir where pgsql.so is.

Then restart your PHP5-enabled HTTP server to load this module.”

Então só adicionar a linha citada no php.ini e buenas… 😀

Adicionando módulos no Apache.

No apache também vai seguir o mesmo roteiro, só que os módulos ficam em: /usr/pkgsrc/www/

Para saber quais usar:

# ls | grep ap2
ap2-auth-ldap
ap2-auth-mysql
ap2-auth-pgsql
ap2-auth-radius
ap2-auth-xradius
ap2-bw
ap2-chroot
ap2-fastcgi
ap2-fcgid
ap2-jk
ap2-perl
ap2-python
ap2-subversion
ap2-suphp
ap2-transform
ap2-xslt2

Escolher o que precisa, instalar e correr para o abraço. Boa sorte.

Bom, assim encerramos nosso pequeno artigo.Espero sanar as dúvidas de todos que tem curiosidade em usar um BSD para servir alguma coisa e não apenas ficar instalando ele pra ficar dando “uname -a” em canais de irc, né Ldap?

hehehehehe

Qualquer coisa, comente, pergunte, mande e-mail.

Leitura recomendada:

Thiago Alves dos Santos aka cvs
cvs @ irc.freenode.net @ #linuxajuda
thiago[arroba]gmail.com