Perl + GSM + Imaginação = Coisas Legais

22 06 2008

Introdução

Estava procurando por algo para intermediar a comunicação entre meu Celular( Motorola v3 ) e o Linux/FreeBSD, quando por acaso encontrei um módulo em perl que não era bem o que eu queria mas achei bastante interessante. Vi a possibilidade de manipular os sms recebidos e formatar envio de sms o que pode ser bastante útil em um cenário em que a internet não está disponível ou a demanda de sms é baixa.

Instalação

No FreeBSD é necessário os módulos umodem e ucom, adicionamos então ao ‘/boot/loader.conf’:

ucom_load=”YES”
umodem_load=”YES”

Após reinicio( sim, reinicio, quando tentei carregar o módulo com o kldload deu panic ) do sistema, quando plugado o celular à USB veremos uma mensagem semelhante a essa na saída do comando ‘dmesg’.

ucom0: <Motorola Inc. Motorola Phone (V3), class 2/0, rev 1.10/0.01, addr 2> on uhub1

No Linux será necessário o modulo cdc_acm, dê uma olhada.

Pronto, tudo ‘ok’ para os próximos passos.

Perl:

Iremos instalar o módulo Device::Gsm que irá intermediar o processo, temos duas formas para isso.

  1. CPAN
  2. Instalação manual do módulo

1 – # cpan -i “Device::Gsm”

2 – # wget -c ‘http://search.cpan.org/CPAN/authors/id/C/CO/COSIMO/Device-Gsm-1.48.tar.gz’ && tar -zxvf Device-Gsm-1.48.tar.gz && cd Device-Gsm-1.48 && perl Makefile.PL && make && make install

Não irei me aprofundar na instalação do módulo perl, há bastante material na internet sobre o assunto, aqui ou aqui

Utilizando

Agora é o momento de soltar a criatividade, no source tem um diretório de exemplos com alguns scripts. A documentação dos métodos pode ser vista aqui.

Exemplo Nagios

A primeira coisa que pensei foi em usar junto com o nagios, quando pesquisei na documentação sobre notificações é sugerido o sms_client que parece ser interessante mas um pouco mais complicado.
Na área de desenvolvimente há também a gsmlib para o pessoal mais low-level.

O script que eu adaptei funcionou 100% com o v3 e o v550 da Motorola.

Script de exemplo adaptado.

O script em sim é auto-explicativo mas vamos lá.

# echo “Mensagem de exemplo” | perl script.pl numero*

*O numero é composto pelo DDD( 2 dígitos ) + número do celular( 8 dígitos ).

Conclusão

Quando me deparei com o módulo em Perl e não achei nenhuma informação sobre o mesmo em Português, senti-me motivado para escrever sobre o mesmo, achei o módulo bastante interessante e com diversas possibilidades de uso. Eu citei apenas um exemplo( Imaginei várias formas de uso mas optei por postar o mais coerente com a realidade) mas a medida que o pessoal for usando e criando seus próprios scripts, irei atualizando o artigo. Espero ter sido claro e objetivo, estou no aguardo por dúvidas, críticas e exemplos.

Gostaria de agradecer ao Redpill do #archlinux.br@irc.freenode.net que não quis testar o script.




Tomcat no slackware

16 04 2008

Sem achar muito sobre o tomcat e em sua grande maioria usando “gerenciadores de pacote”, resolvi postar algo um pouquinho mais detalhado sobre como configurar o tomcat no slackware.

Para leigos ou pessoas que não sabem nada sobre tomcat ou até mesmo o que significa tomcat.

Tomcat is a free, open-source implementation of Java Servlet and JavaServer Pages technologies developed under the Jakarta project at the Apache Software Foundation. Tomcat is available for commercial use under the ASF license from the Apache web site in both binary and source versions.

Sun adapts and integrates the Tomcat code base into the J2EE SDK and owns and evolves the JavaServer Pages and Java Servlets specifications under the Java Community Process.

Status

Tomcat is available at the Jakarta binary downloads page.

Tomcat 3 supports the Servlet 2.2 and JSP 1.1 specifications.

Tomcat 4 supports the Servlet 2.3 and JSP 1.2 specifications.

Tomcat 5 supports the Servlet 2.4 and JSP 2.0 specifications.

Especificando melhor podemos dizer que:

O Tomcat é um servidor de aplicações Java para web. É distribuído como software livre e desenvolvido como código aberto dentro do conceituado projeto Apache Jakarta e oficialmente endossado pela Sun como a Implementação de Referência (RI) para as tecnologias Java Servlet e JavaServer Pages (JSP). O Tomcat é robusto e eficiente o suficiente para ser utilizado mesmo em um ambiente de produção.

Tecnicamente o Tomcat é um container Web, cobrindo parte da especificação J2EE com tecnologias como Servlet e JSP, e tecnologias de apoio relacionadas como Realms e segurança, JNDI Resources e JDBC DataSources. O Tomcat tem a capacidade de atuar também como servidor web/HTTP, ou pode funcionar integrado a um servidor web dedicado como o Apache httpd ou o Microsoft IIS.

Texto: Wikipedia

 Nesse exato momento estamos na versão 6.0.16 do tomcat e Java SE 6 Update 6. Como já sabemos o que significa tomcat vamos agora diferenciar os tipo de pacotes do java que vamos utilizar.

Temos o livre arbítrio de escolher entre JRE e JDK. Para isso vamos mensionar as características de cada um:

O JDK (Java Development Kit) é um grande “pacote” com tudo o que o desenvolvedor necessita para trabalhar com Java, como por exemplo, o compilador Java (javac), Java Debugger (javadb) e a JVM (Java virtual Machine). O JDK contém em seus pacotes o JRE.

O JRE (Java Runtime Environment) é um pacote mais restrito, utilizado apenas para executar aplicações Java. É composto principalmente pela JVM, e vem com a biblioteca padrão.

 Agora que sabemos o que significa JRE e JDK vou optar pelo JDK pois contém tudo que precisamos para um desenvolvimento. Não é necessário ter o JDK se você apenas quiser executar as aplicações Java. Se quiser apenas executar essas aplicações você pode optar pelo JRE sem problema. Vou disponibilizar os links diretos para o JDK e o JRE cabendo a você alterar apenas o necessário de acordo com nosso tutorial. O tomcat vamos usar como base a versão 5.5.26, mas colocarei também o link para a versão 6.0.16.

Vamos utilizar as seguintes versões de sistema e softwares:

  • Slackware 12 Kernel 2.6.21.5
  • JDK 6u6
  • Tomcat 5.5.26

Baixando os Softwares

 Com tudo em mãos vamos agora para a parte prática de tudo.

Sempre quando instalo um slackware procuro deixa-lo o mais enxuto possível. Caso você tenha instalado o slackware full vamos remover o jre-1.5 de nosso sistema. Vamos utilizar como diretório de download, instalação o /opt

Obs:. Caso não tenha o JRE siga para o passo 2.

1- Removendo o JRE default do sistema:

# removepkg jre

2- Instalando o JDK 6u6 (baixado dentro de /opt);

# chmod +x jdk-6u6-linux-i586.bin

# ./jdk-6u6-linux-i586.bin

Nessa parte vamos ler o contrato por completo ou simplesmente ir até o fim do mesmo e digitar yes e enter duas vezes para finalizar.

3- Configurando nosso Profile;

# vi /etc/profile

Adicione as seguintes linhas no final do arquivo:

export JAVA_HOME=/opt/jdk1.6.0_06
export CLASSPATH=JAVA_HOME/lib/:$CLASSPATH
export PATH=$JAVA_HOME/bin/:$PATH
export MANPATH=$JAVA_HOME/man:$MANPATH
export CATALINA_HOME=/opt/tomcat
export CATALINA_BASE=/opt/tomcat
export CATALINA_TMPDIR=/opt/tomcat/temp
export JRE_HOME=/opt/jdk1.6.0_06

Salve e saia do arquivo. E reinicie seu micro ou simplesmente re-lei o profile da seguinte forma:

# source /etc/profile

4- Configurando o Tomcat (baixado dentro de /opt);

# tar zxvf apache-tomcat-5.5.26.tar.gz

# mv apache-tomcat-5.5.26 tomcat

# cd tomcat/bin

# chmod +x *.sh

Para verificar se o tomcat rodou perfeitamente podemos fazer o seguinte:

# ./catalina.sh run

Ele deve mostrar uma imagem semelhante a seguinte:

catalina.sh run

Percebemos que tudo ocorreu bem e que podemos iniciar o tomcat realmente usando:

# ./catalina.sh start

ou

# ./startup.sh

Agora verificamos apenas com um simples nmap localhost se temos a porta 8009 e 8080 levantadas.

8009/tcp open     ajp13
8080/tcp open     http-proxy

5- Abrindo o Tomcat na WEB;

Entre no seu browser preferido e digite:  http://ip_do_servidor:8080/

Teremos uma imagem semelhante a seguinte:

tomcat na web

6- Como configurar um administrador;

Entre no diretório conf do tomcat

# cd /opt/tomcat/conf

E edite o arquivo tomcat-users.xml colocando semelhante as configurações abaixo:

<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
  <role rolename=”manager”/>
  <role rolename=”cleison”/>
  <role rolename=”admin”/>
  <user username=”cleison” password=”123456″ roles=”cleison”/>
  <user username=”cleison” password=”123456″ roles=”admin,manager”/>
</tomcat-users>

Onde cleison é o nome do administrador, a senha será 123456 e terei permissão de acesso em duas sessões chamada manager e admin (ambas ficam localizadas na página do seu tomcat na web).

Entretanto a parte Tomcat Administration precisará de novos arquivos pois não vem junto com o tomcat. Para isso vamos baixar o apache-tomcat-5.5.26-admin.tar.gz

# wget http://archive.apache.org/dist/tomcat/tomcat-5/v5.5.26/bin/apache-tomcat-5.5.26-admin.tar.gz

# tar zxvf apache-tomcat-5.5.26-admin.tar.gz

# cp -R apache-tomcat-5.5.26/* tomcat

Agora entre no diretório bin do tomcat e finalize o serviço para que possa re-ler o admin quando subir novamente.

# cd tomcat/bin

# ./shutdown.sh

# ./catalina.sh start

Agora temos acesso a parte Tomcat Administration precisando só colocar nosso login e senha já configurados anteriormente.

Na sessão de administração podemos adiconar usuários mais facilmente, assim como grupos, comentários, etc.

Um ótimo frontend para o nosso tomcat é o lambda probe que nesse exato momento está na versão 1.7b. Seu site se encontra no seguinte endereço: http://www.lambdaprobe.org

Bom fico por aqui…

Att. Cleison Monteiro

Apocalipse @ irc.freenode.net





Configurando o CACIC no Slackware

31 03 2008

Primeiramente vamos explicar o que significa CACIC.

Segundo o DATAPREV:

“O Cacic é capaz de fornecer um diagnóstico preciso do parque computacional e disponibilizar informações como o número de equipamentos e sua distribuição nos mais diversos órgãos, os tipos de softwares utilizados e licenciados, configurações de hardware, entre outras. Também pode fornecer informações patrimoniais e a localização física dos equipamentos, ampliando o controle do parque computacional e a segurança na rede.”

Objetivos

  • Coletar informações sobre os componentes de hardware instalados em cada computador e disponibilizá-las aos administradores de sistemas;
  • Alertar os administradores de sistemas quando forem identificadas alterações na configuração dos componentes de hardware de cada computador;
  • Coletar diversas informações sobre os softwares instalados em cada computador e disponibilizá-las aos administradores de sistemas;
  • Configurar programas em cada computador, de acordo com regras pré-estabelecidas pelos administradores de sistemas;
  • Transferir arquivos para os computadores da rede, ocupando o mínimo possível da largura de banda;
  • Instalar novos softwares nos computadores gerenciados, tais como atualizações de programas ou patches de segurança;
  • Identificar diretórios compartilhados considerados inseguros e aplicar as restrições de segurança necessárias;
  • Coletar informações de Patrimônio (PIB, localização, etc.) de cada computador e disponibilizá-las aos administradores de sistemas;
  • Alertar os administradores de sistemas quando forem identificadas alterações na localização física do computador;
  • Permitir aos administradores de sistemas o envio de pequenas mensagens administrativas aos usuários de um computador específico ou usuários de um grupo de computadores.

Promete… Mas será que é tudo isso mesmo?

Para saber como ele funciona precisamos compilar e para isso vamos baixar os softwares: apache, php, mysql, mcrypt e proftp.

Não vou explicar muito sobre a combinação AMP (apache + mysql + php) pois já temos um tutorial sobre isso no seguinte link: http://powerguide.wordpress.com/2007/09/03/apache-mysql-php-no-slackware/

Mesmo já existindo aqui um tutorial sobre o AMP vamos ter que fazer algumas modificações para poder dar suporte ao mcrypt. Para poder utilizar o mcrypt vamos precisar compilar também o libmcrypt e habilitar o mcrypt no PHP.

Vamos utilizar as seguintes versões de sistema e softwares:

  • Slackware 12 kernel 2.6.21.5
  • libmcrypt 2.5.8
  • mcrypt 2.6.7
  • apache (httpd) 2.2.8
  • mysql 5.0.37
  • php 5.2.4
  • proftpd 1.3.0a
  • cacic 2.2.2

Ao instalar o slackware podemos optar por não instalar/compilar o apache e php deixando apenas o mysql e o proftp no sistema. Caso você já tenha o apache e php vamos remover e compilar os softwares nas suas últimas versões (release).

Obs:. Se não tiver apache e php no sistema pode ir direto para o passo 2;

1- Removendo os softwares:

# remove httpd

# remove php

# rm -rf /etc/apache

2- Compilando o apache;

# wget http://ftp.unicamp.br/pub/apache/httpd/httpd-2.2.8.tar.gz

# tar zxvf httpd-2.2.4.tar.gz

# cd httpd-2.2.4

# ./configure –enable-so –prefix=/etc/apache –enable-ssl –with-ssl=/usr/include/openssl

# make ; make install

# cp /etc/apache/bin/apachectl /usr/bin

# apachectl start

3- Configurando o mysql;

# cd /usr/share/mysql

# cp my-small.cnf /etc/my.cnf

# mysql_install_db

# cp mysql.server /etc/rc.d/rc.mysqld

# chmod a+x /etc/rc.d/rc.mysqld

# chown mysql.mysql /var/lib/mysql -R

# /etc/rc.d/rc.mysqld start

# mysql_secure_installation

Como é nossa 1ª configuração do mysql, o mesmo estará sem senha de root. Vamos responder da seguinte forma para as perguntas:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALLMySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH
STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current password for the root user. If you’ve just installed MySQL, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.Enter current password for root (enter for none):como nao colocamos senha apenas dê um enter
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL root user without the proper authorization.Set root password? [Y/n] [Y]Y
New password: (Digite aqui aquela que será a sua senha)
Re-enter new password: (Redigite a senha)
Password updated successfully!
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y
Success!

4- Compilando a libmcrypt;

# wget http://ufpr.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.bz2

# tar -vxjpf libmcrypt-2.5.8.tar.bz2

# cd libmcrypt-2.5.8

# ./configure ; make ; make install

# ldconfig

5- Compilando o mcrypt;

# wget http://ufpr.dl.sourceforge.net/sourceforge/mcrypt/mcrypt-2.6.7.tar.gz

# tar zxvf mcrypt-2.6.7.tar.gz

# cd mcrypt-2.6.7

# ./configure ; make ; make install

6- Compilando o PHP;

Com o mcrypt compilado podemos compilar o php com suporte a mcrypt. O cacic requer o mcrypt por isso precisamos dele compilado no nosso sistema.

# wget http://br2.php.net/distributions/php-5.2.4.tar.gz

# tar zxvf php-5.2.4.tar.gz

# cd php-5.2.4

# ./configure –with-apxs2=/etc/apache/bin/apxs –prefix=/etc/php5 –with-mysql \

–with-gettext –with-pear –with-iconv –with-gd –with-openssl –with-mhash \

–enable-ftp –with-mcrypt=/usr

# make ; make install

# cp php.ini-dist /etc/php.ini

Agora edite o /etc/php.ini alterando a linha register_globals = Off e coloque On.

Fora isso verifique no arquivo /etc/apache/conf/httpd.conf se temos as seguintes linhas:

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php .phtml

DirectoryIndex index.html index.htm index.php

# apachectl restart

7- Configurando o proftpd;

Faça uma conf semelhante a nossa em /etc/proftpd.conf:

configuração do proftpd

Crie um usuário chamado cacic no sistema e inicie o proftp com o seguinte comando:

# proftpd &

Caso encontre um erro relativo a IPv6 insira a seguinte linha em /etc/hosts:

1:: localhost nome_do_seu_host endereço_do_seu_host

E tente iniciar novamente o proftpd.

8- Baixando e configurando o cacic;

Nosso primeiro passo aqui será criar um cadastro no site: http://www.softwarepublico.gov.br/register/user-new

Com o cadastro efetuado podemos logar no site e baixar a versão mais nova cacic2-v222-final.tar.gz.

O passos apartir de agora são simples. Descompacte o cacic2 e ponha-o no diretório /etc/apache/htdocs e restarte seu apache com o comando: apachectl restart

Com isso vamos acessar o seguinte endereço http://ip_do_servidor/cacic2/instalador/index.php e iremos configurar o cacic2 com todas as opções que desejamos como nome da base, administrador do sistema, etc.

Lembrando que podemos configurar banco, usuário do banco, senha, porta no arquivo /etc/apache/htdocs/cacic2/include/config.php para isso faça:

# cp /etc/apache/htdocs/cacic2/include/config.php.Original /etc/apache/htdocs/cacic2/include/config.php

Bom fico por ak :D

Att. Cleison Monteiro

Apocalipse @ irc.freenode.net





Msn-proxy no FreeBSD e Linux

4 12 2007

Introdução

O msn-proxy é um proxy transparente leve para clientes do msn messenger. Suporta todos os protocolos ativos ( todos clientes ). Controla quem e como o msn messenger é usado em sua rede. Cheio de recursos.

O texto acima é uma tradução da descrição escrita pelo autor no site do projeto.

O msn-proxy possui recursos como: Bloqueio de usuário, controle da lista de amigos dos usuários, log de conversação, aviso em chat sobre o monitoramento, bloqueio de transferência de arquivos, entre outros.

Ambiente Testado

Freebsd 7.0 Beta 3:

  • gcc version 4.2.1 20070719
  • MySQL version 5.0.45
  • libevent version 1.3d
  • Apache version 2.0.61
  • PHP version 4.4.7

Slackware 11:

  • gcc version 3.4.6
  • MySql version 5.0.24a
  • libevent version 1.3d/1.3b
  • Apache version 1.3.37
  • PHP version 5.2.5

Instalação

LibEvent:

FreeBSD:

# cd /usr/ports/devel/libevent/

# make install clean

Linux:

# wget -c ‘http://monkey.org/~provos/libevent-1.3d.tar.gz

# tar -zxvf libevent-1.3d.tar.gz

# cd libevent-1.3d/

# ./configure && make && make install

ou

# wget -c ‘http://lp.slackwaresupport.com/Slackware-11.0/martijn/libevent-1.3b-i486-1McD.tgz

# installpkg libevent-1.3b-i486-1McD.tgz

msn-proxy:

Linux/FreeBSD:

# wget -c ‘http://internap.dl.sourceforge.net/sourceforge/msn-proxy/msn-proxy-0.5.tar.gz

# tar -zxvf msn-proxy-0.5.tar.gz

# cd msn-proxy

# make¹

# make install

¹ O FreeBSD por usar o gcc4 foi necessário editar o arquivo Makefile e mudar a CCFLAGS, o processo é simples, apenas comentar( adicionar o # do inicio da linha) o CCFLAGS do gcc3 na linha 13 e descomentar( retirar o # do inicio da linha) o CCFLAGS do gcc4 na linha 17.

Configurando

Primeiro arquivo a ser configurado é o /usr/local/etc/msn-proxy/mysql/conf, é nesse arquivo que ficam os dados para a conexão entre o msn-proxy e o banco mysql.

Sintaxe:

(Host ou Socket)|(Port)|(usuario)|(senha)|(bando de dados)

Padrão:

/tmp/mysql.sock|0|msn-proxy|secret|msn-proxy

Após isso iremos criar o banco do dados e criar o usuário para o msn-proxy.

MySQL:

> create database `msn-proxy¹`;
> grant all privileges on `msn-proxy¹`.* to `msn-proxy²`@localhost identified by ’secret³‘;
> flush privileges;

¹ Banco de dados
² Usuário
³ Senha

Após ter feito os passos anteriores, iremos rodar pela primeira vez o msn-proxy que irá criar as tabelas no banco.

# /usr/local/bin/msn-proxy

Se tudo ocorrer bem terá a seguinte mensagem:

PUBLIC ACCESS on /usr/local/etc/msn-proxy/mysql/conf should be removed !!!¹
fail to read mysql config (check defaults table)²

¹Avisa que o arquivo está com acessos demais.
² Não há host default configurado na tabela.

Retirar acesso público do arquivo de configuração:

# chmod 600 /usr/local/etc/msn-proxy/mysql/conf

Inserindo ip real do servidor proxy na tabela do mysql:

MySQL:

> insert into defaults (internal_host) values (‘192.168.0.1¹‘);

¹192.168.0.1 deve ser o ip real.

Feita as alterações o seu msn-proxy está configurado e pronto para receber conexões.

# /usr/local/bin/msn-proxy &

Interface Web

Junto ao source do msn-proxy acompanha o diretório ‘php’ que é um utilário web para a configuração e gerenciamento do seu msn-proxy.

Edite o arquivo mysql.inc.php e edite as variavéis $host,$user,$pass,$db,$port de acordo com os dados usados no servidor mysql, após a edição, copie o diretório php para sua pasta web e sete as restrições de acesso necessárias, saiba como aqui.

Port Forwarding

É necessário fazer um redirecionamento das conexões vindas de sua rede, para que o proxy funcione de forma transparente.

Linux:

# iptables -t nat -I PREROUTING -i eth0¹ -p tcp –dport 1863 -j REDIRECT –to-port 1863

FreeBSD:

ipfw

ipfw add X¹ fwd 127.0.0.1,1863 ip from any to any dst-port 1863 src-ip 192.168.0.0/24²

¹Número da rega no ipfw

²Faixa de Rede Local

pf.conf

rdr on vr0¹ inet proto tcp from any to any port 1863 -> 127.0.0.1 port 1863

¹Interface de rede local.

Conclusão

Chegamos ao fim do artigo, espero ter conseguido transmitir de forma mais clara possivél os passos usados por mim para a instalação desse exceletente software.

Se mesmo após instalado e configurado seu msn-proxy não inciar, teste rodar com a opção ‘-d’(debug) para maiores informações do seu problema.

Em caso de dúvida não temam em perguntar.

Links

http://sourceforge.net/projects/msn-proxy/

http://www.mysql.com/

http://httpd.apache.org/

http://monkey.org/~provos/libevent/

http://www.linuxpackages.net/

http://focalinux.cipsga.org.br/

http://get.live.com/messenger/overview

Autor

Diego Pitombeira dos Prazeres a.k.a pitombera





O quanto vale seu serviço

28 11 2007

Para Refletir…

Saber Fazer …

Dizem que não se cobra pelo que se faz, mas pelo que se sabe!
Um especialista foi chamado para solucionar um problema com computador de grande porte e altamente complexo… um computador que vale 12 milhões de dólares. Sentado em frente ao monitor, pressionou algumas teclas, balançou a cabeça, murmurou algo para si mesmo e desligou o computador. Tirou uma chave de fenda de seu bolso e deu uma volta e meia em um minúsculo parafuso. Então ligou o computador e verificou que tudo estava funcionando perfeitamente. O presidente da empresa se mostrou surpreendido e ofereceu pagar a conta no mesmo instante.
- Quanto lhe devo? – perguntou.
- São mil dólares, por favor.
- Mil dólares? Mil dólares por alguns minutos de trabalho? Mil dólares por apertar um parafuso? Eu sei que meu computador vale 12 Milhões de dólares, mas mil dólares é um valor absurdo! Pagarei somente se receber uma nota fiscal com todos os detalhes que justifique tal valor.
O especialista balançou a cabeça e saiu. Na manhã seguinte, o presidente recebeu a nota fiscal, leu com cuidado, balançou a cabeça e saiu para paga-la no mesmo instante sem reclamar.
A nota fiscal dizia:
Serviços prestados:
Apertar um parafuso —– 1 dólar
Saber qual parafuso apertar —- 999 dólares.
“O saber não ocupa lugar…”

Fonte: DESCONHECIDA





OpenVPN no Slackware

17 09 2007

Em primeiro lugar vamos explicar o que seria VPN e qual iriamos usar.

Uma Rede Privada Virtual (Virtual Private NetworkVPN) é uma rede de comunicações privada normalmente utilizada por uma empresa ou um conjunto de empresas e/ou instituições, construída em cima de uma rede de comunicações pública (como por exemplo, a Internet). O tráfego de dados é levado pela rede pública utilizando protocolos padrão, não necessariamente seguros.

VPNs seguras usam protocolos de criptografia por tunelamento que fornecem a confidencialidade, autenticação e integridade necessárias para garantir a privacidade das comunicações requeridas. Quando adequadamente implementados, estes protocolos podem assegurar comunicações seguras através de redes inseguras.

Deve ser notado que a escolha, implementação e uso destes protocolos não é algo trivial, e várias soluções de VPN inseguras são distribuídas no mercado. Adverte-se os usuários para que investiguem com cuidado os produtos que fornecem VPNs. Por si só, o rótulo VPN é apenas uma ferramenta de marketing.

Fonte: Wikipédia, a enciclopédia livre.

A partir do momento que sabemos o que é uma VPN teremos um novo problema.

Qual solução usar já que temos inumeras possibilidades de implementação.

Isso é uma questão muito parecida com religião e prefiro nem discutir sobre qual delas usar.

Minha escolha em VPN foi para o OpenVPN entre os motivos destaco alguns:

1- Criptografia de chaves ao invés de usuário e senha para fechar um túnel de VPN;

2- Plataformas: Linux, Windows 2000/XP ou superior, OpenBSD, FreeBSD, NetBSD, Mac OS X, e Solaris;

3- Fácil configuração através de firewalls e roteadores que fazem NAT;

4- Open Source licenciado pela GPL;

Já que temos um inicio promissor vamos dar ênfase a toda configuração.

Como sempre vou utilizar o slackware para fazer nosso server… O mesmo passos são utilizados para clientes, assim como para clientes de outras distribuições e plataformas.

Vale lembra que o slackware 12 já vem com o OpenVPN em seus pacotes, o que iria nos economizar em compilar o OpenVPN. Mas como a utilidade desse tutorial é mostrar toda a configuração inclusive a compilação do OpenVPN.

Vamos primeiro baixar um pacote para lzo que comprimi os dados tornando assim os tuneis da nossa VPN mais rápida. Estarei usando aqui as últimas versões de cada software.

LZO

# wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz

# tar zxvf lzo-2.02.tar.gz
# cd lzo-2.02
# ./configure
# make && make install

Obs:. O openvpn utiliza o TUN/TAP e dará erro na sua compilação caso não aja no seu sistema o suporte a TUN/TAP. Caso não tenha recompile o kernel e ative como módulo:

<M>   Universal TUN/TAP device driver support

No caso do slackware 10.2 11 e 12 já temos o TUN/TAP e vamos apenas subir:

modprobe tun

Agora vamos baixar e compilar o OpenVpn:

wget http://openvpn.net/release/openvpn-2.0.9.tar.gz

# tar zxvf openvpn-2.0.9.tar.gz
# cd openvpn-2.0.9
# ./configure
# make && make install

Vamos criar o diretório para colocarmos as configurações da nossa VPN. Pode ser escolhido qualquer local:

# mkdir /etc/openvpn
# chmod 755 /etc/openvpn
# cd /etc/openvpn

Criaremos agora o nosso .conf iremos chama-lo de matriz.conf. Use seu editor preferido vi, pico, mcedit, etc… E adicione no arquivo as seguintes linhas:

dev tun
ifconfig 10.0.0.1 10.0.0.2
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Agora vou explicar cada linha do nosso .conf:
dev tun: abilita suporte ao drive TUN/TAP;
ifconfig: cria nosso ip da matriz (10.0.0.1) com suporte ao ip da filial (10.0.0.2);
secret: comando para chamar nossa chave criptografada e o local dela;
comp-lzo: ativa suporte a compressão;
user e group: isso é bem óbvio;
port: porta que a OpenVpn vai rodar;
verb: nível para depuração de erros;
ping: testa a conexão de 10 em 10 segundos;

Agora vamos criar nossa chave criptografada:
# openvpn –genkey –secret vpn.key

Nossa VPN está praticamente pronta. Vamos agora apenas rodar o daemon e por ela para funcionar:

# openvpn –config /etc/openvpn/matriz.conf –daemon

Com isso nossa VPN está rodando, basta conferir digitando ifconfig e teremos uma interface a mais chamada de tun0.

Na filial faremos a mesma coisa que fizemos agora, iremos apenas mudar algumas coisas no nosso .conf e chamaremos de filial.conf:

dev tun
remote 200.200.200.200
ifconfig 10.0.0.2 10.0.0.1
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Obs:. Em remote coloque o IP ou DNS válido para poder achar a VPN da matriz.

E iniciamos da mesma forma da matriz mudando apenas o arquivo de configuração. Dessa forma que fizemos aqui só temos acesso de servidor para servidor e não teremos acesso na rede interna. Para conseguir esse acesso teremos que fazer as rotas:

# route add –net rede_local_filial/24 gw 10.0.0.2

E na filial faremos o mesmo:

# route add –net rede_local_matriz/24 gw 10.0.0.1

Se usarmos o OpenVPN para windows… Criariamos a rota da seguinte forma:

C:\> route add rede_da_matriz mask 255.255.255.0 10.0.0.1

Podemos criar um arquivo dentro de /etc/openvpn com o nome rotas e adicionar a rota nele e chamar da seguinte forma na conf do openvpn em baixo do nosso ifconfig:

up /etc/openvpn/rotas

Ficando semelhante a essa conf da matriz:

dev tun
ifconfig 10.0.0.1 10.0.0.2
up /etc/openvpn/rotas
secret /etc/openvpn/vpn.key
comp-lzo
user nobody
group nobody
port 5000
verb 3
ping 10

Faremos o mesmo na filial… Mudando óbvio a rota.

E para ativar a VPN na filial fazemos:

# openvpn –config /etc/openvpn/filial.conf –daemon

Com isso já temos uma VPN funcional e segura. Vale ressaltar que temos muitas outras opções para usarmos no OpenVPN como por exemplo opções de dhcp e usuário/senha.

No caso de se usar usuário/senha teriamos que usar o PAM. Logo teriamos que compilar o slackware com suporte a PAM o que não vem ao caso nesse artigo.

Outras opções interessantes são as de log. Podemos criar um diretório em /var/log com o nome openvpn por exemplo e logarmos tudo da nossa VPN. Para isso abra os arquivos de conf do OpenVPN e adicione:

status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn-append.log

Novamente lembrando temos muitas outras configurações… Nada melhor do que ler o howto.

Cleison Monteiro
cleisonmonteiro[arroba]gmail.com
Apocalipse @ #linuxajuda – irc.freenode.net





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… :D

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





Apache + mysql + php no slackware

3 09 2007

Bom primeiro vamos baixar os softwares necessários.

http://ftp.unicamp.br/pub/apache/httpd/httpd-2.2.8.tar.gz

http://br2.php.net/distributions/php-5.2.4.tar.gz

O mysql mantivemos a versão que já vem com o nosso slackware.

1- Compilando o Apache

Caso seu sistema tenha o apache e o php instalado remova-os e compile as novas versões. Se você já tiver as novas versões poderá manter ou mesmo versões mais antigas, isso vai de sua preferência. Lembre-se também se você estiver mechendo em um servidor de produção faça sempre backups das bases do mysql, das suas pages assim como alguma configuração especifica do apache e do php.ini. Como mencionado vamos remover o apache e php caso exista no sistema:

# removepkg httpd

# removepkg php

# removepkg mod_ssl

# rm –rf /etc/apache

Feito isso podemos começar:

# tar jxvf httpd-2.2.8.tar.bz2

# cd httpd-2.2.8

# ./configure –enable-so –prefix=/etc/apache –enable-ssl –with-ssl=/usr/include/openssl

# make

# make install

# cp /etc/apache/bin/apachectl /usr/bin

# apachectl start

Comentando as opções:

enable-so = Carrega os módulos na inicialização ou na reinialização do Apache;

enable-ssl = Ativa suporte a SSL;

A opções para compilação são inumeras… Usei apenas 2 que são uteis para a maioria dos casos.

2- Configurando o MySQL

O MySql no slackware pode ser instalado já com o sistema ou posteriormente tanto utilizando os pacotes .tgz como utilizando os sources.Supondo que já temos ele no sistema vamos apenas deixá-lo funcional.

# cd /usr/share/mysql/
# cp my-small.cnf /etc/my.cnf
# mysql_install_db
# cp mysql.server /etc/rc.d/rc.mysqld
# chmod a+x /etc/rc.d/rc.mysqld
# chown mysql:mysql /var/lib/mysql/ -R

# /etc/rc.d/rc.mysqld start
# mysql_secure_installation

Vamos receber as seguintes informação. Vamos respondendo tudo de acordo como está em negrito:

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALLMySQL SERVERS IN PRODUCTION USE! PLEASE READ EACH
STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current password for the root user. If you’ve just installed MySQL, and you haven’t set the root password yet, the password will be blank, so you should just press enter here.Enter current password for root (enter for none):como nao colocamos senha apenas dê um enter
OK, successfully used password, moving on…
Setting the root password ensures that nobody can log into the MySQL root user without the proper authorization.Set root password? [Y/n] [Y]Y
New password: (Digite aqui aquela que será a sua senha)
Re-enter new password: (Redigite a senha)
Password updated successfully!
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y
Success!

Com o MySql pronto e funcional vamos apenas configurar o local dos nossos logs para isso edite o my.cnf em /etc e adicione a seguinte linha:

[mysqld]

log=/var/log/mysql/mysqld.log

Veja que temos o [mysqld] e vamos apenas colocar o local dos nossos logs. Agora vamos criar o diretório dos logs e dar permissão:

# mkdir /var/log/mysql
# chown mysql:mysql /var/log/mysql# killall mysqld
# /etc/rc.d/rc.mysqld start

# cat /var/log/mysql/mysqld.log

/usr/libexec/mysqld, Version: 5.0.37-log (Source distribution). started with:
Tcp port: 3306 Unix socket: /var/run/mysql/mysql.sock
Time Id Command Argument

Com isso já temos o nosso MySql rodando e totalmente funcional.Vamos partir para o PHP.

3- Compilando o PHP

Agora vamos compilar o nosso PHP:

# tar jxvf php-5.2.4.tar.bz2

# cd php-5.2.4

# ./configure –with-apxs2=/etc/apache/bin/apxs –prefix=/etc/php5 \

–with-mysql –with-pear –with-gettext –with-iconv –with-gd \

–with-openssl –enable-ftp –with-mhash

# make

# make install

Agora copie o php.ini para /etc

# cp php.ini-dist /etc/php.ini

 

Verifique se o httpd.conf tem as seguintes linhas. Se não tiver vamos adicioná-las:

LoadModule php5_module modules/libphp5.so

AddType application/x-httpd-php .php .phtml

DirectoryIndex index.html index.htm index.php

Agora crie um arquivo com o nome index.php contendo o seguinte conteúdo:

<?php

phpinfo();

?>

# apachectl restart

Agora podemos acessar nosso browser preferido e conferir o suporte do nosso apache e php:http://seu_site/index.php ou http://localhost/index.php

Pronto…. Com isso já temos nosso apache + mysql + php no slackware…

Testado com sucesso no slackware 10.2, 11 e 12.Vale lembrar que as opções na compilação são inumeras.

Att.Cleison Monteiro

Apocalipse @ irc.freenode.net