domingo, 18 de outubro de 2015

Estamos de volta!!!


Saudações povo da Terra!

    
Após alguns anos de ausência, peregrinando por galáxias distantes, volto com novidades, com uma série de artigos novos, sendo alguns atualização dos antigos. Caminharemos por várias galáxias como Banco de dados PostgreSQL, Mysql e Sqlite e quem sabe Nosql e MongoDB. Visitaremos os Planetas Slackware, Django e as estrelas ITIL e Cobit.



Então prepare-se pegue a sua mochila, e bem-vindo a bordo!!!



terça-feira, 19 de agosto de 2014

Configuração do Spamassassin

Introdução
 
O objetivo deste artigo não é descrever as funcionalidades do spamassassin, mas vou comentar as principais configurações do conf. Eu traduzi as funcionalidades de cada configuração, sendo assim o conf ficou auto-explicativo:

# vi /etc/mail/spamassassin/local.cf


#!/bin/bash
##############################
# Arquivo: /etc/mail/spamassassin/local.cf
# Funcao: Configuracao do SpamAssassin
##############################

# Redes Confiaveis

trusted_networks XXX.XXX.XXX.XXX (coloque o IP da sua lan aqui)

# Score para conteudo Interno (Confiavel)
score ALL_TRUSTED -100

# Quantidade de pontos(Score) a serem atingidos para uma mensagem ser considerada SPAM
required_hits           12.0

# Texto a ser adicionando ao assunto de cada mensagem categorizada como SPAM
rewrite_header Subject  xxx::SPAM::xxx

# Encaminhamento do SPAM como anexo
report_safe             1

# Configuracao da Tecnologia de aprendizagem Bayes => /var/lib/nobody/.spamassassin => Bayes Database
bayes_path /etc/mail/spamassassin/bayes/bayes
bayes_file_mode 0777
use_bayes               1
use_bayes_rules         1
bayes_min_ham_num 60
bayes_min_spam_num 100
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.1
bayes_auto_learn_threshold_spam 4.5
bayes_learn_to_journal 0

# Mensagem de Alerta quando um SPAM e filtrado
clear_report_template
report Aqui você coloca o que será escrito no corpo da mensagem identificada como Spam

# Habilita ou disabilita as tecnologias de checagem
skip_rbl_checks       0
use_razor2              1
use_pyzor               0

# Habilita o funcionamento do Bogofilter (Inteligencia de checagem)
header    BOGOFILTER  X-Spam-Bogofilter =~ /yes/
describe  BOGOFILTER  Message has too many bogons.
score     BOGOFILTER  5.0

# Scores Customizados => ASTARO Settings
# Astaro score settings
score DRUGS_ERECTILE 2
score DRUGS_ANXIETY_EREC 2
score HTML_MIME_NO_HTML_TAG 1
score HTML_MESSAGE 0.0
score HTML_FONT_BIG 1
score RCVD_NUMERIC_HELO 2
score RCVD_BY_IP 1

# Astaro extra adjust for Asia emails
score MIME_BASE64_TEXT 0.5

Aumentando a Segurança do Lampp, parte 1


Introdução

Segurança em aplicativos que ficam a disposição pública nunca é demais, em paginas de internet principalmente, porque existem diversos "aspirantes" hackers, querendo invadir, danificar ou fazer qualquer coisas que você não vai gostar depois que descobrir da maneira mais chata, que é saber que seu site ou servidor foi comprometido. Abaixo será descrito algumas medidas de segurança, algumas maneira de dificultar qualquer maneira de ataque.



Proteção:


Há diversas maneiras de fazer proteção dos dados e integridade de uma aplicação web, a primeira delas é a boa escolha de uma boa linguagem de programação e fazer um código bem estruturado, deve-se ter cuidado com excesso de segurança pois pode deixar a aplicação lenta, abaixo segue uma medida de segurança básica:
crie nos diretórios que você quer proteger da sua aplicação um arquivo .htaccess (do mesmo jeito que está descrito aqui com o ponto no inicio, que transforma em arquivo oculto no linux) exemplo:
/opt/lampp/htdocs/sua_aplicação/.htaccess ou subdiretórios /opt/lampp/htdocs/sua_aplicação/arquivos/.htaccess, o conteúdo desse arquivo:

AuthType Basic
AuthName "Documentos Protegidos"
AuthUserFile /opt/lampp/etc/users.apache
Require valid-user

Feito o passo anterior, agora vamos fazer umas mudanças no httpd.conf que fica no diretório /opt/lampp/etc/, porem as configurações já vêem prontas vou mostra-las para efeito de continuidade do processo.


domingo, 6 de maio de 2012

Virtualização?!?!

        Introdução

          Quando ouvi falar de virtualização, achei que era coisa de filme de ficção cientifica, pensei tambem que era mais uma moda passageira, pois no mundo da informatica tivemos muitas modas e modistas, essas pessoas transformavam pequenos conceitos na "solução para falta de agua no mundo", exageros a parte são pessoas que classifico como bons propagandistas pois vendem bem uma ideia que nunca fora testada por eles ( acho que esse pessoal estão na profissão errada), fora isso, percebi que não era modismo quando tive o meu primeiro contato com o VMWARE, na época quando usava dual boot na minha maquina, WinXP e Slack 12.1, confesso que utilizei ele pirata por alguns meses, até aí tudo bem, depois conheci o VirtuaBox, esse é livre, além de ter removido o WinXP da minha maquina foi junto o VMWARE, adotei literalmente a filosofia de não usar mais nada pirata na minha maquina pessoal.
           Voltando ao assunto principal, o meu maior interesse pelo assunto foi quando na empresa onde trabalho adquiriu um servidor bi-processado com cada processador de 2 núcleos e 4GiB de Memória, então pensei que seria um desperdício de maquina usando ela para somente servir um sistema com banco-de-dados firebird, além do mais após ter lido um artigo da revista Linux Magazine sobre TI Verde ( 49, Dezembro de 2008) daí a minha consciência ficou pesada, pois resolvi fazer uma analise no bicho e percebi que nele tinha uma media de 75 usuário conectados simultaneamente, seu pico máximo foi de 120 usuários, apesar disso nunca chegou a usar nem 10% do segundo processador, eis que li mais uma vez o artigo e vi que a melhor solução era virtualizar ou em outras palavras transformar um servidor de grande porte trabalhar por mais de um, por exemplo: pegar esse servidor e fazer ele rodar por 4 servidores, isso seria a melhor forma de-se utilizar os recursos desse servidor pois assim estaria usando toda a sua performance, economizando em Hardware, pois não seria necessário adquirir mais maquinas, economia de energia, economia de ar-condicionado, pois não seria necessário dimensiona-lo para mais frio, facilidade de gerencia e backup e recuperação de problemas muito mais fácil, esses conceitos mencionados serão papo para outros artigos.
           Apesar de tudo isso que disse anteriormente a virtualização é um assunto antigo começou com a IBM na década de 60, e vem crescendo muito nos dias de hoje, temos soluções abertas, proprietárias de diversas modalidades.

          Diferença entre Virtualização e Emulação.

          Emulação: Normalmente nesse processo, os programas criam uma camada entre o Sistema Operacional e o programa a ser emulado, não criando um ambiente virtual completo, essa camada cria uma espécie de ambiente com bibliotecas para o programa rodar normalmente, esse programa a ser rodado normalmente é de outra plataforma como por exemplo do Windows rodando no Linux.

        O que é virtualização.

          Virtualização, basicamente, é a técnica de separar Aplicação e Sistema Operacional dos componentes físicos. Por exemplo, uma Máquina Virtual possui Aplicação e Sistema Operacional como um Servidor Físico, mas estes não estão vinculados ao Hardware e pode ser disponibilizado onde for mais conveniente. Uma aplicação deve ser executada em um Sistema Operacional em um determinado Hardware. Com Virtualização de Aplicação ou Apresentação, estas aplicações pode rodar em um servidor ou ambiente centralizado e ser portada para outros Sistemas Operacionais e Hardwares.
Fonte: http://pt.wikipedia.org/wiki/Virtualiza%C3%A7%C3%A3o

Tipos de Virtualização.

Simulação: quando utilizado em TI significa imitar um processo ou uma operação do mundo real.

Emulação: mais uma vez este termo quando aplicado em TI significa reproduzir as funções de um determinado ambiente. Um exemplo fácil de assimilar são os emuladores de fliperama ou videogames antigos.

Virtualização: abstrair as características físicas de uma maquina.

Em computação, virtualização é um termo genérico utilizado para se referir da abstração dos recursos do computador. Uma boa definição seria: “uma técnica para mascarar as características físicas dos recursos do computador de forma que outros sistemas, aplicações ou usuários finais possam interagir com tais recursos”.

Existem algumas definições que são importantes quando falamos de virtualização:
Hypervisor
-
Constitui o componente principal que gerencia as maquinas virtuais hospedadas por ele.

Virtualização Completa (Full Virtualization)- Um sistema operacional Guest não-modificado sendo executado em um  Hypervisor. Na virtualização completa o Hypervisor mascara completamente a virtualização para o SO Guest para obter o máximo de facilidade de utilização.
Para-virtualização (Para-virtualization / Enlightenment)
- Um sistema operacional modificado sendo executado em um hypervisor. Na para-virtualização o SO Guest e o Hypervisor colaboram para obter o máximo em desempenho.

Virtualização de Aplicação
- Um método para mascarar e executar aplicações em um SO ou vindo de um SO, tanto local quanto via rede através de streaming

Virtualização de Apresentação
- Neste modelo de virtualização apenas a camada de apresentação de um aplicativo é executada na maquina cliente. O processamento e uso de memória ficam no servidor que estiver provendo esta modalidade de virtualização

Hosted Virtualization
- Uma  virtualização de aplicação, que executa um SO não-modificado , executando no topo de um sistema operacional padrão.

Hardware Virtualization Assistance
- Melhoramentos no processador que suportam guests não-modificados (full virtualization)
-  Intel-VT / AMD-V
Fonte: http://www.baboo.com.br/conteudo/modelos/Virtualizacao-Parte-1_a34531_z0.aspx 

Agora basta vocês escolher o que te serve melhor.


Instalar impressora Multifuncional Epson Stylus CX3500

            Introdução

          Tenho duas impressoras uma Epson Stylus CX3500 que é multifuncional e uma HP 3820, eu usava mais a HP, até que surgiu a necessedade de usar o scanner da Epson, como eu só usei ela quando tinha Windows instalado no meu micro, então resolvi reativar a impressora, cá entre nós a qualidade de impressão da Epson é superior a da HP, outra, porque a HP quebrou, pois ela tem um defeito de fabrica que quebra uma engrenagem do kit de limpeza, mais isso é assunto para outro artigo.

          Requisitos
           Todo o procedimento foi feito no Slackware 13.1

          Tenha os seguintes pacotes instalados:
          CUPS:
          XSANE:



http://localhost:631

no seu navegador e seguindo as instruções que não vou detalhar aqui.


Configurando o scanner

Como esta impressora é um modelo relativamente novo, o scanner do modelo Stylus CX3500 ainda não é reconhecido, mas o da Stylus CX3200 já é, por isso tudo que devemos fazer é identificar a diferença entre a CX3500 e a CX3200 e alterar dois arquivos. Vamos lá.

Para identificar sua impressora (pode ser uma multifuncional de qualquer marca), digite como root, ou no caso do Ubuntu usando o sudo:

$ sudo lsusb

Isto deve dar uma resposta, mostrando os periféricos USB conectados no computador, no caso de uma Stylus CX3500 existirá uma linha parecida com esta:

Bus 002 Device 001: ID 04b8:080e

O que nos interessa é o endereço ID, que neste caso é o 04b8:080e

Agora é necessário editar o arquivo /etc/hotplug/usb/libsane.usermap. Neste arquivo procure pela linha que identifica um modelo próximo ao de sua impressora (no nosso caso a Stylus CX-3500):

# Epson Corp.|Stylus CX3200
libusbscanner             0x0003      0x04b8   0x0802    0x0000       0x0000    0x00         0x00            0x00            0x00            0x00    0x00               0x00000000

E então copie estes dados para o fim do arquivo e altere para:

# Epson Corp.|Stylus CX3500
libusbscanner             0x0003      0x04b8   0x080e    0x0000       0x0000    0x00         0x00            0x00            0x00            0x00    0x00               0x00000000

Note que as únicas alterações feitas foram mudar de CX3200 para CX3500 e 0x0802 para 0x080e, conforme identificamos com o comando lsusb. Caso sua impressora seja de outra marca, identifique um modelo próximo a sua e faça o mesmo procedimento, digitando o resultado de seu lsusb nos campos correspondentes.

Agora edite o arquivo /etc/sane.d/epson.conf e comente (ponha um # no início da mesma) a linha "scsi EPSON", ficando "#scsi EPSON" e altere a linha "usb" para "usb 0x04b8 0x080e". Caso sua impressora seja outra, veja o resultado do lsusb novamente. Não sei se este passo é realmente necessário, mas eu o executei e a minha CX-3500 está funcionando perfeitamente. Caso queira, pode tentar sem a alteração deste arquivo e caso não funcione, alterá-lo depois do boot.

Agora é só abrir o XSane e testar e usar.


Mysql, comando via console, a saga continua! parte 3

Quando eu administrava os servidores de uma empresa que eu trabalhava, 
certo dia uma parte do site parou de funcionar, quando vi foi uma tabela 
que corrompeu (não me pergunte como!), depois de uma busca na 
internet consegui montar o seguinte material:
 
comando para reparar uma tabela: 
 
# mysqlcheck -h localhost -p database tabela --auto-repair
 


Usei o mysqlcheck pra ver o status das tabelas, e também reparar. Nesse documento tem detalhados os procedimentos:
Resumindo o conteúdo do link acima, normalmente o mysqlcheck -c nomedobanco já faz o check. e o mysqlcheck -r nomedobanco repara.
Tem casos onde o root não tem acesso ao banco, aí tem que usar a seguinte sintaxe:

# mysqlcheck -c -u nomedousuario -p –databases nomedobanco

O parametro -p é pra solicitar a senha.
Caso tenha algum banco que não está ok, o resultado desse comando já vai informar o banco, e a tabela com problema. Depois é só executar o mesmo comando alterando -c por -r de repair

mysqlcheck -r -u nomedousuario -p –databases nomedobanco



Abaixo segue um artigo semelhante:

 http://portugalcode.com/index.php?topic=326.0
Autor: @Scroll

Já se tornou um hábito: DBF corrompe. O que muitos não sabem é que os DBF do Visual Fox Pro sobre DBC são muito mais seguros que os DBF em clipper, ainda mais se usando buferização e transações. Mas mesmo assim, os DBF trafegam pela rede, e uma rede mal projetada conseqüentemente fará com que os problemas aconteçam.

Um dia o programador resolve migrar para a arquitetura client/servidor e escolhe por motivos diversos o MySql. Um ótimo banco, mas com o passar do tempo verifica que servidores resetados, problemas no HD e muitas outras coisas fazem com que os arquivos do MySql também corrompam.

O problema é que normalmente você terá que acessar algum font-end do Mysql e rodar uma rotina de reparação do banco de dados. É um processo simples, mas que muitas vezes torna-se complicado porque quem esta na outra ponta é um usuário básico, e acaba-se tomando um grande tempo do suporte para resolver.

O que alguns programadores não sabem é que esse reparo do banco é na verdade um comando nativo do MySql que pode ser dado diretamente pela linguagem de programação, fazendo com que a manutenção no banco MySql possa ser quase transparente para o usuário.

A sintaxe do comando é simples:

Repair table

Mas como saber qual a tabela que esta com problema, e também como saber se ela esta com problemas?

Se uma tabela não esta funcionando corretamente o comando SQL retorna erro e na captura desse erro sempre terá a inscrição MYI (comigo sempre), com isso em mãos podemos fazer na nossa rotina de tratamento dos comandos SQL que ao verificar este erro faça uma manutenção em todo o banco para repará-lo no momento que ocorre o erro. Veja o seguinte processo:
Código:
Function executa_sql

Parameters m.lcsql As String

Local m.lnSucesso As Integer

m.lnSucesso=SQLExec(m.IDSQL,m.lcsql)

If m.lnSucesso=-1

      =Aerror(laErroSQL)

      If "MYI" $ Upper(m.laErroSQL(1,3))

            =Messagebox("O banco necessita de manutenção neste momento, 
aguarde até o final do processamento.")

            SQLExec(m.IDSQL,"show tables from ","cReparar")

            Select cReparar

            Scan All

                  Wait Window At 0,0 "Verificando tabela "+Padl(Recno("cReparar"),4,"0")+" 
de "+Padl(Reccount("cReparar"),4,"0") Nowait Noclear

                  SQLExec(This.Id,"REPAIR TABLE "+Alltrim(cReparar.tables_in_))

            Endscan

            Wait Clear

            =Messagebox("Verificação completa.")

            executa_sql(m.lcExec)

      Endif

Endif

Endfunc


Agora quando a mensagem de erro de tabelas do MySql for detectada o processo repara automaticamente o banco. Note que chamamos a função de forma recursiva para que o comando que falhou agora possa ser executado com sucesso.

Mysql, administração via console parte 4

Fazendo Backup de Tabelas Mysql



Ensino aqui como fazer um backup de segurança de suas tabelas mySQL.

É muito simples, entre no shell do Mysql e digite o comando SQL: 

MYSQL> BACKUP TABLE tabela TO '/diretorio/de/destino'

No diretório escolhido será criado um arquivo chamado tabela.myd.





























É muito simples, mas antes note que:
  • esse comando só funciona com tabelas do tipo MyISAM.
  • o MySQL não sobrescreverá uma tabela existente.
Mas vamos lá.

O comando é:

MYSQL> RESTORE TABLE tabela FROM 'diretorio_onde_esta_copia'

Espero que isso complete as necessidades de backup de todos vocês.