Post em Destaque

Palestra da HP sobre desenvolvimento usando software Open Source

Na próxima segunda-feira ocorrerá mais uma sessão do Ciclo de Seminários Virtuais promovido pela HP América Latina, em parceria com a CapacitaciónIT. O tema será uso de software Open Source na HP e o ministrante será Carlos Santos, participante da FUG-BR (FreeBSD User Group do Brasil). A...

Leia mais...

Saiu do forno o iRedMail 0.8.0!

Posted by gondim | Posted in Dicas, FreeBSD, Software Livre | Posted on 12-05-2012

Tags:, , , , , , ,

19

Para quem ainda não conhece o projeto iRedMail, ele é composto por um script que faz toda a instalação e configuração de um servidor de e-mail completo. Facilitando muito a vida de quem precisa de um servidor de e-mail estável e rápido. Conta ainda com o suporte excelente em seu fórum próprio. Sempre fui muito bem respondido por eles.

O iRedMail possui instalação para muitas plataformas e logicamente não poderia faltar para o FreeBSD. A versão recém lançada 0.8.0 conta com os seguintes softwares instalados além do postfix e outros como clamav, amavisd, policyd, dentre outros:

  • Roundcube -> 0.7.2
  • MySQL -> 5.5 (FreeBSD)
  • Dovecot -> 2.0 (FreeBSD)
  • iRedAdmin -> 0.1.7. agora com suporte ao PostgreSQL.
  • iRedAPD -> 1.3.7. agora com suporte ao PostgreSQL, e com um novo plugin “ldap_expired_password” para esquema OpenLDAP, serve para forçar um usuário de e-mail trocar a senha em 90 dias.

O iRedMail pode ser instalado em 3 esquemas diferentes, MySQL, OpenLDAP ou PostgreSQL que deverá ser escolhido na própria instalação.

A documentação para instalação pode ser encontrada aqui.

A documentação para quem já tem uma versão instalada e quer atualizar está aqui.

Para baixar a versão 0.8.0 aqui.

A documentação de instalação é muito simples e rápido de instalar. Todos os pacotes são baixados usando o ports, compilados e instalados.

Para quem tiver dúvidas se esse servidor realmente aguenta o tráfego, aqui está o link para os casos de sucesso deles.

Por enquanto é isso. Be happy!

Share Button

PHP 5.3.13 !!!

Posted by gondim | Posted in Dicas, FreeBSD, Segurança | Posted on 09-05-2012

Tags:, , ,

0

Para aqueles que estavam esperando uma correção para algumas recentes vulnerabilidades no PHP5, saiu a versão 5.3.13 e pode ser atualizado usando sua forma preferida ou de uma outra maneira prática que é a que eu uso com o portmaster.

Para instalar o portmaster:

# portsnap fetch update

# cd /usr/ports/ports-mgmt/portmaster/

# make install clean

Para atualizar o PHP5 usando o portmaster:

# portmaster php5

That´s all folks

Share Button

BSD Magazine de maio saiu do forno.

Posted by gondim | Posted in Dicas, FreeBSD, Segurança, Software Livre, Tecnologia | Posted on 07-05-2012

Tags:, ,

0

BSD Magazine é uma revista mensal de excelente qualidade técnica, visual e gratuita para todo e qualquer profissional que queira ficar bem informado sobre tecnologia e informação utilizando BSD e outros Softwares Livres.

A revista encontra-se em idioma Inglês e para baixá-la basta informar o seu e-mail e clicar para baixar. Todas as outras edições anteriores também podem ser baixadas. Seu formato está em pdf.

BSD Magazine Maio       Conteúdo

– A Fresh Look at the Warden for PC-BSD 9.1

– A Web Application Firewall for Nginx

– Mysql-zrm: Enterprise Level Backups for MySQL

– PostgreSQL: Server-Side Programming

– Anatomy of FreeBSD Compromise Part 5

– Introduction to DNSSEC

– Hardening FreeBSD with TrustedBSD and Mandatory Access Controls

– Introducing EasyPBI – Making PBI Modules With a Few Mouse Clicks

– Intro to DTrace

 

Share Button

Vulnerabilidade no PHP < 5.3.12 e < 5.4.2 pode expor código fonte do site

Posted by gondim | Posted in Dicas, Segurança | Posted on 06-05-2012

Tags:, ,

0

Essa vulnerabilidade no PHP permite ver código fonte mas nem todos estão vulneráveis. Se você usar mod_php ou php-fpm no nginx, não estará vulnerável mas se usar  mod_cgi aí sim a coisa fica ruim e seus fontes ficarão expostos.

Para saber se você está com essa vulnerabilidade basta colocar ?-s no fim de qualquer url do seu site, se aparecer o código fonte então você está vulnerável, se abrir o site normalmente então pode ficar tranqüilo.

Estranhamente parece que o Facebook está mas eles devem consertar logo:

http://www.facebook.com/?-s

<?php

include_once 'https://www.facebook.com/careers/department?dept=engineering&req=a2KA0000000Lt8LMAS';

Se você tiver vulnerável pode atualizar para as versões que corrigem esse problema: 5.3.12 e 5.4.2
Mais informações nos links abaixo:
PHP_NET
VuXML
Share Button

Melhorando a segurança no FreeBSD com securelevel + chflags

Posted by gondim | Posted in Dicas, FreeBSD, Segurança | Posted on 04-05-2012

Tags:,

4

Um dos recursos muito interessante que o FreeBSD possui é o Secure Level que bloqueia até mesmo o root de executar certas funções. O FreeBSD possui 5 níveis.

-1 e 0 (Permanently Insecure Mode e Insecure Mode): são os níveis mais inseguros, permitem que o root faça qualquer coisa no sistema. O default do sistema é -1.

1 (Secure Mode): nesse nível já existe uma melhora na segurança pois as flags append-only dos arquivos não podem ser alteradas, /dev/kmem e /dev/mem não podem ser abertos para escrita, /dev/io não pode ser aberto para nada e modulos de kernel não podem ser carregados ou descarregados.

2 (Highly Secure Mode): faz tudo que o Secure Mode faz e mais… discos não podem ser abertos para escrita exceto pelo mount. Protege o sistema de arquivos mesmo com este desmontado e não aceita usar o newfs em modo multi-usuário. Tentativas de ajustar data e hora do sistema geram logs e não são aceitas com diferanças superiores à 1 segundo.

3 (Network Secure Mode): faz tudo que o Highly Secure Mode faz e mais… não permite qualquer mudança nas regras de firewall e controle de banda.

Os modos podem ser alterados de 2 formas: através do /etc/sysctl.conf ou pelo /etc/rc.conf. No sysctl.conf seria usando kern.securelevel e no /etc/rc.conf usando as entradas abaixo como exemplo:

kern_securelevel_enable=”YES”

kern_securelevel=”2″

Usando o sysctl você pode alterar em tempo de execução o secure level. Um exemplo abaixo:

# sysctl kern.securelevel=2

kern.securelevel: -1 -> 2

Outro detalhe importante: depois que você sobe de level não é possivel descer:

# sysctl kern.securelevel=-1

sysctl: kern.securelevel: Operation not permitted

Se você acrescentou no /etc/sysctl.conf ou no /etc/rc.conf o secure level e quiser voltar para algum level específico, então você vai precisar alterar o arquivo que você editou e re-iniciar o sistema para que tenha efeito.

Até aqui nada de muito extraordinário e você deve estar se perguntando: ah mas aí e se o cara invadir, basta alterar o arquivo e re-iniciar? Sim mas aí entra um outro recurso do FreeBSD chamado flags e que pode ser alterado com o chflags. O chflags permite mudarmos as características dos arquivos e deixá-los como por exemplo append-only e até imutáveis. Nesse caso se tiver usando secure level de 1 à 3, eles não poderão ter essas flags removidas dos arquivos. Vamos dizer que queremos colocar nosso sistema com secure level 2 e adicionamos as linhas mencionadas acima no /etc/rc.conf. Agora fazemos isso:

# chflags schg /etc/rc.conf

# chflags schg /etc/sysctl.conf

Os comandos acima transformam esses 2 arquivos em imutáveis, ou seja, não poderão ser alterados. Após re-iniciado o sistema além deles estarem imutáveis, estaremos usando secure level 2. Nesse caso um  invasor não poderia alterar esses arquivos e o único jeito seria re-iniciando o sistema, entrar em modo single-user, aí sim alterar com o chflags esses arquivos e editá-los. Reparem que essa tarefa não é nada boa para manutenções remotas e por isso muito cuidado.

Junto à isso imaginem fazer coisas como:

# chflags schg /usr/local/bin/*
# chflags schg /bin/*
# chflags schg /usr/local/sbin/*
# chflags schg /usr/sbin/*
# chflags schg /sbin/*

# chflags schg /usr/lib/*
# chflags schg /usr/local/lib/*
# chflags schg /usr/libexec/*
# chflags schg /usr/local/libexec/*

Dessa forma em uma invasão mesmo o cara sendo root não conseguria alterar esses arquivos acima pois estariam imutáveis. O mesmo pode ser feito com logs usando o parâmetro sappnd no lugar de schg que faz o arquivo se tornar append-only. Para remover essas flags é necessário estar em level -1 ou 0 e o parâmetro seria noschg ou nosappnd. Exemplo abaixo:

# chflags noschg /usr/local/bin/*
# chflags noschg /bin/*
# chflags noschg /usr/local/sbin/*
# chflags noschg /usr/sbin/*
# chflags noschg /sbin/*

# chflags noschg /usr/lib/*
# chflags noschg /usr/local/lib/*
# chflags noschg /usr/libexec/*
# chflags noschg /usr/local/libexec/*

Fazendo a proteção acima lembrem-se que sempre que forem atualizar o sistema, seja usando o cvsup ou pacotes do ports, removam as flags de proteção dos arquivos porque senão vários erros ocorrerão por tentarem alterar os arquivos protegidos.

Mais informações sobre Secure Level e chflags usem o man: man security e man chflags.

Be happy!!!

 

Share Button

Testando a performance da sua rede com o iperf

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 27-04-2012

Tags:, ,

0

Hoje veremos uma ferramenta muito interessante chamada iperf que nos permite testar a nossa taxa de transferência entre 2 pontos na nossa rede. Dessa forma poderíamos, por exemplo, testar quanto um equipamento está suportando transferir tanto em download quanto em upload.

O iperf pode ser encontrado para BSD no ports, Linux, Windows usando cygwin e Mac OS. Ele é uma ferramenta cliente/servidor onde o cliente envia os pacotes para o servidor descartar e assim fazer a análise da performance.

Abaixo vou dar um exemplo, mas fazendo: man iperf vais encontrar uma excelente documentação sobre os parâmetros existentes.

Vamos pegar 2 máquinas rodando FreeBSD e instalar o iperf em cada uma delas através do ports:

# cd /usr/ports/benchmarks/iperf

# make install clean distclean

O iperf pode fazer testes individuais como somente de upload, download ou ambos bi-direcionalmente. Vamos escolher uma máquina para ser o cliente e a outra para rodar como server. O cliente é quem envia os pacotes e por isso testa o upload mas em modo bi-direcional o mesmo faz o envio e também recebe do server testando assim upload e download.

Em uma máquina de IP 192.168.0.1 vamos rodar assim:

# iperf -s

Isso faz com que ele rode em modo server, esperando as conexões.

Na outra máquina de IP 192.168.0.2 rodaremos como client assim de exemplo:

# iperf -c 192.168.0.1 -t 60 -f m -d -L 3000 -P 10

Nesse exemplo acima estamos dizendo para o iperf enviar os pacotes para o IP 192.168.0.1 que é nosso server de testes, tempo de teste de 60 segundos, o “-d” diz que será bi-direcional o teste (download e upload), “-L 3000” diz a porta que o server vai usar para fazer o acesso contrário para o teste bi-direcional, o “-P 10” diz quantas conexões simultâneas, nesse caso coloquei 10 e o “-f m” para mostrar os resultados em mbps.

Por padrão o protocolo usado é o TCP mas pode ser usado UDP também.

Abaixo a saída do teste:

# iperf -c 192.168.0.1 -t 60 -f m -d -L 3000 -P 10

————————————————————
Server listening on TCP port 3000
TCP window size: 0.06 MByte (default)
————————————————————
————————————————————
Client connecting to 192.168.0.1, TCP port 5001
TCP window size: 0.03 MByte (default)
————————————————————
[ 14] local 192.168.0.2 port 15056 connected with 192.168.0.1 port 5001
[  8] local 192.168.0.2 port 14193 connected with 192.168.0.1 port 5001
[  7] local 192.168.0.2 port 11420 connected with 192.168.0.1 port 5001
[ 11] local 192.168.0.2 port 37950 connected with 192.168.0.1 port 5001
[ 12] local 192.168.0.2 port 28811 connected with 192.168.0.1 port 5001
[ 13] local 192.168.0.2 port 16575 connected with 192.168.0.1 port 5001
[  3] local 192.168.0.2 port 46848 connected with 192.168.0.1 port 5001
[  9] local 192.168.0.2 port 44703 connected with 192.168.0.1 port 5001
[ 10] local 192.168.0.2 port 38972 connected with 192.168.0.1 port 5001
[  4] local 192.168.0.2 port 27373 connected with 192.168.0.1 port 5001
[  6] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 55321
[ 17] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 37120
[ 16] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 51996
[ 15] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 51216
[ 18] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 17844
[ 19] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 53913
[ 22] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 38914
[ 21] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 61725
[ 20] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 33246
[ 23] local 192.168.0.2 port 3000 connected with 192.168.0.1 port 18179

[ ID] Interval       Transfer     Bandwidth
[  9]  0.0-60.1 sec   172 MBytes  24.0 Mbits/sec
[ 23]  0.0-60.1 sec   151 MBytes  21.0 Mbits/sec
[  8]  0.0-60.1 sec   178 MBytes  24.9 Mbits/sec
[  7]  0.0-60.1 sec   207 MBytes  28.9 Mbits/sec
[ 11]  0.0-60.1 sec   165 MBytes  23.1 Mbits/sec
[ 12]  0.0-60.1 sec   124 MBytes  17.3 Mbits/sec
[  4]  0.0-60.1 sec   148 MBytes  20.7 Mbits/sec
[ 15]  0.0-60.1 sec   141 MBytes  19.6 Mbits/sec
[ 22]  0.0-60.1 sec   109 MBytes  15.2 Mbits/sec
[ 20]  0.0-60.1 sec   120 MBytes  16.7 Mbits/sec
[ 13]  0.0-60.2 sec   146 MBytes  20.3 Mbits/sec
[ 10]  0.0-60.2 sec   162 MBytes  22.6 Mbits/sec
[ 21]  0.0-60.2 sec   163 MBytes  22.7 Mbits/sec
[  3]  0.0-60.3 sec   140 MBytes  19.5 Mbits/sec
[  6]  0.0-60.3 sec   133 MBytes  18.5 Mbits/sec
[ 16]  0.0-60.3 sec   121 MBytes  16.9 Mbits/sec
[ 14]  0.0-60.3 sec   131 MBytes  18.2 Mbits/sec
[SUM]  0.0-60.3 sec  1573 MBytes   219 Mbits/sec
[ 17]  0.0-60.3 sec   125 MBytes  17.3 Mbits/sec
[ 19]  0.0-60.5 sec   121 MBytes  16.7 Mbits/sec
[ 18]  0.0-64.7 sec   104 MBytes  13.4 Mbits/sec
[SUM]  0.0-64.7 sec  1286 MBytes   167 Mbits/sec

O primeiro [SUM] é o somatório referente ao upload que no meu caso deu 219Mbps de transferência porque eu já tinha um tráfego saindo no momento do meu teste e porque desses 2 equipamentos que usei, um deles é o meu router em outra Cidade. O outro [SUM] de 167Mbps é referente ao tráfego de download. Você também pode acompanhar o consumo total de banda usando um outro aplicativo como nload que também pode ser encontrado no ports do FreeBSD.

Fica aqui mais esse ferramenta importante para avaliarmos nossa rede. Be happy!

 

Share Button

Como saber de forma rápida e prática se perdeu alguma lib importante

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 22-04-2012

Tags:,

8

Uma das coisas que mais acontecem quando atualizamos determinados pacotes ou até mesmo o sistema FreeBSD é alguma lib que já existia ser atualizada e os programas que já haviam sido instalados e compilados com aquela lib antiga, darem pau.

Normalmente isso ocorre com alguma lib muito utilizada como foi o caso recentemente do pacote pcre-8.30_1 que vem a libpcre que contém funções de expressões regulares e que são utilizadas por aplicações importantes como: Postfix e PHP

Nesse caso todos os pacotes que estavam usando a libpcre após a atualização, quebraram e você não percebeu. Vai perceber quando os serviços caírem e não levantarem mais. Por isso é sempre bom fazer uma checagem após as atualizações e existe um pacote muito importante que pode lhe ajudar nessa tarefa de checar todos os pacotes instalados no sistema e lhe dizer quem precisa ser recompilado.

O nome do “santo” aqui é o bsdadminscripts que possui algumas ferramentas e a que vamos usar é a pkg_libchk. Mãos à obra:

# cd /usr/ports/sysutils/bsdadminscripts

# make install clean distclean

Após a instalação o comando à seguir vai ler todos os pacotes instalados e se tiver algum quebrado será mostrado:

# pkg_libchk -q -r

Com a lista de pacotes quebrados você já saberá o que precisa ser recompilado. Como eu utilizo o portmaster para gerenciar meus pacotes, o trabalho fica bem mais tranquilo. Mas cada um usa o que achar melhor, o importante é saber o que consertar.

É isso aí pessoal.

Share Button

Quando serviços ficam caindo… o que fazer até a solução chegar?

Posted by gondim | Posted in Dicas, FreeBSD | Posted on 22-04-2012

Tags:, , ,

3

Serviços rodando não deveriam cair simplesmente do nada. Muitos deles informam a causa em seus logs ou tentam pelo menos dar uma dica do problema. Pode estar relacionado muitas das vezes com problemas de memória como os segfaults (signal 11) mas as vezes os segfaults podem indicar um bug na aplicação que em algum momento esta simplesmente fecha. O fato é que você precisa investigar o que esta causando o problema mas enquanto isso você precisa garantir que o serviço não pare. Existe uma ferramenta chamada daemontools que monitora um determinado serviço que desejar e se o mesmo cair, instantaneamente o daemontools trata de levantá-lo. É a famosa “gambiarra”.

Para instalarmos o daemontools farei com exemplo o serviço do radius, pois se este cair a autenticação de vários clientes parariam aqui no meu caso:

# cd /usr/ports/sysutils/daemontools

# make install clean distclean

Após instalarmos criaremos o diretório de monitoramento do nosso serviço de exemplo, o radius:

# mkdir -p /var/service/radius

Dentro desse diretório que criamos, você criará um arquivo chamado run com o seguinte conteúdo:

#!/bin/sh
exec fghack /usr/local/sbin/radiusd

Nesse caso o daemontools vai iniciar o /usr/local/sbin/radiusd. Não vamos habilitar o radius no /etc/rc.conf porque o próprio daemontools vai se encarregar de levantar o serviço. Veja que estou dando um exemplo com o radiusd mas que pode ser aplicado à outros serviços.

# chmod 755 /var/service/radius/run

Não podemos deixar de dar permissão de execução para o nosso script. O nome dele precisa ser run. Ok?

Se for monitorar outros serviços basta criar outros subdiretórios dentro do /var/service e os devidos arquivos run.

Para finalizarmos nosso exemplo colocamos a seguinte configuração no /etc/rc.conf:

svscan_enable=”YES”
svscan_servicedir=”/var/service”

Agora podemos iniciar o daemontools e quando fizermos isso, todos os serviços que ele estiver monitorando serão levantados:

# /usr/local/etc/rc.d/svscan start

Vejamos o que ele fez:

# ps afx|grep radius
1587  ??  I         0:00.12 supervise radius
35029  ??  I         0:00.00 fghack /usr/local/sbin/radiusd
35031  ??  Ss       57:22.67 /usr/local/sbin/radiusd

O PID 35031 é o nosso radius rodando propriamente dito, os outros são o daemontools fazendo seu papel. Se quiser fazer um teste basta fazer um kill -9 no 35031 e verá que o mesmo será levantado instantaneamente. 🙂

Bem é isso, be happy!

PS: Sempre verifique o motivo das quedas, veja nos logs, contate o mantenedor do port, busque a solução e não a gambiarra.  🙂

Share Button

Comandos que todo bom admin deveria saber

Posted by gondim | Posted in Dicas | Posted on 19-04-2012

Tags:, , ,

0

Esse documento não é novo mas muitos que estão chegando ainda não leram e acredito que ele seja muito importante na vida de qualquer administrador de sistemas. É um guia de referência pra qualquer hora do dia ou quando necessitar. O man também é muito importante na dúvida de um comando.

Aqui está o Unix Toolbox.

Share Button

Instalação AMP

Posted by lgvalentim | Posted in Dicas, FreeBSD | Posted on 16-04-2012

Tags:

0

Sei que para muitos parece simples, mas para os que estão chegando também temos que dar atenção.

Neste guia será apresentada uma instalação básica de Apache, MySQL e PHP no FreeBSD

MYSQL
Acessar o  ports do MySQL

cd /usr/ports/databases/mysql50-server

2. Compilar e instalar o port

make && make install

3. Editar o ficheiro /etc/rc.conf e acrescentar a seguite linha para garantir que o MySQL inicie automaticamente

mysql_enable=”YES”

4. Reiniciar o sistema

shutdown -r now

5. Definir um password para o utilizador root do MySQL

mysqladmin -u root password ‘nova password’

APACHE

Acessar o ports do Apache

cd /usr/ports/www/apache22

2. Compilar e instalar o apache

make && make install

3. Na listagem de opções não esquecer de confirmar a opção MySQL

4. Editar o ficheiro /etc/rc.d e adicionar a seguinte linha

apache22_enable=’YES’

PHP

1. Acessar o port do php

cd /usr/ports/lang/php5

2. compilar

make && make install

3. confirmar a opção para compilar o modulo para o Apache

4. Acessar o port  php5-extensions

cd /usr/ports/lang/php5-extensions

5. compilar

make && make install

6. Copiar o ficheiro de configuração do php

cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

7.Editar o ficheiro de configuração do Apache (/usr/local/etc/apache22/httpd.conf) e acrescentar as seguintes linhas:

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

8.Procurar a linha:

DirectoryIndex index.html

e alterar para:

DirectoryIndex index.php index.html

9.Iniciar o Servidor de Apache

/usr/local/etc/rc.d/apache22 start

 

Bem… #ficaadica

Share Button