Instalando Syslog-ng com Mysql

1 – Primeiro instalamos os seguintes pacotes:

mysql-server-5.0
syslog-ng
php5
php5-mysql

2 – Usando o Debian:

apt-get install mysql-server-5.0 syslog-ng php5 php5-mysql

3 – Edite o arquivo /etc/php5/apache2/php.ini e descomente a linha extension=mysql.so

extension=mysql.so

4 –  Edite o arquivo /etc/default/syslog-ng descomentanto a seguinte linha:

CONSOLE_LOG_LEVEL=1

Configurando o syslog.conf

1 – Em seguida vamos para configuração do syslog-ng em /etc/syslog-ng/syslog-ng.conf e faça as seguintes alterações:

1.1)

#(this is equivalent to the "-r" syslogd flag)
# udp();

deixe assim:

# (this is equivalent to the "-r" syslogd flag)
udp();

1.2)

# enable or disable DNS usage
# syslog-ng blocks on DNS queries, so enabling DNS may lead to
# a Denial of Service attack
# (default is yes)
use_dns(no);

deixe assim:

# enable or disable DNS usage
# syslog-ng blocks on DNS queries, so enabling DNS may lead to
# a Denial of Service attack
# (default is yes)
use_dns(yes);
dns_cache(yes);

baixe o arquivo phpsyslogng-2.8 e descompacte dentro de /var/www/:

tar -xvzf phpsyslogng-2.8.tar.gz --directory=/var/www/

Renomei o pacote parar phpsyslogng:

mv phpsyslogng-2.8 phpsyslogng

Entre no diretorio script e edite os arquivos

cd /var/www/phpsyslogng/scripts

Adcione a seguinte configuração ao syslog-ng:

cat syslog.conf >> /etc/syslog-ng/syslog-ng.conf

Edite o script syslog2mysql deixando ele assim:

#!/bin/bash

if [ ! -e /var/log/mysql.pipe ]
then
mkfifo /var/log/mysql.pipe
fi
while [ -e /var/log/mysql.pipe ]
do
mysql -u root --password=SENHA syslog < /var/log/mysql.pipe >/dev/null
done

Adicione a o banco:

mysql -uroot -p < dbsetup.sql

Adicionando o script syslog2mysql.sh na inicialização

cp syslog2mysql.sh /usr/local/scripts/

ln -s /usr/local/scripts/syslog2mysql.sh /etc/init.d/syslog2mysql.sh

Então coloque-o em /etc/rc.local

/etc/init.d/syslog2mysql.sh &

Configurando O Cliente Linux

No cliente basta editar o arquivo /etc/syslog.conf adicionando a seguinte linha:

*.*      @vm-syslog-ng

e restartando o serviço de log:

/etc/init.d/sysklogd restart

Alterando a codificação do roundcubemail

roundcube

Recentemente tive alguns problemas com a codificação do Roundcube. Por Padrão ele vem com UTF-8 e precisei mudar para ISO-8859-1, pois alguns usuários estavam informando que, algumas mensagens enviadas pelo webmail para alguns remetentes estavam chegando “bagunçadas”.

Então fiz os seguintes passos:

Dentro do diretorio do roundcube edite o arquivo:

program/include/iniset.php

Alterar a linha

define('RCMAIL_CHARSET', 'UTF-8');

Por

define('RCMAIL_CHARSET', 'ISO-8859-1');

Depois basta reiniciar o servidor web.

/etc/init.d/apache2 restart

Comando ‘df’ diz que a partição está cheia, enquanto ‘du’ reporta espaço livre

1. Verificar o espaço em disco com o comando df:

/home/suporte# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda2              28G  1.8G   25G   7% /
tmpfs                 443M     0  443M   0% /lib/init/rw
udev                   10M   48K   10M   1% /dev
tmpfs                 443M     0  443M   0% /dev/shm
/dev/hda1             4.6G  150M  4.3G   4% /boot
/dev/hda3             3.7G   72M  3.5G   3% /tmp
/dev/hdb1              37G   37G       100% /var

Observe que o /var está cheio com 100% de uso.

2. Entao vamos verificar dentro do /var o que está consumindo tanto espaço com o comando du:

/var# du -shxc *
2.7M      backups
384M      cache
872M      lib
4.0K      local
24K      lock
5.4G      log
16K      lost+found
43M      mail
4.0K      opt
176K      run
207M      spool
8.0K      tmp
4.3G      virtualmail
4.6G      www
16G      total

Veja que o diretorio /var tem apenas 16G ocupado e não os 37G ditos pelo comando df.

Isso acontece pelo fato de apesar dos arquivos não aparecerem mais num ls ou du, eles ainda estão no sistema de arquivos até que o processo os libere. Quando um determinado processo for reiniciado ele usará as novas bibliotecas e o sistema então removerá as antigas definitivamente.

Corrigindo o problema

3. Com o comando lsof podemos identificar os arquivos,que apesar de apagados, ainda podem
estar em uso e assim combinando com outros comandos mata-los.

lsof | awk '$9 ~ /\/var\// {system("if ! [ -e " $9 " ]; then kill -HUP " $2 " ; fi ")}'

Onde $9 é o arquivo e $2 o PID do processo. E é importante entender
como o processo se comporta diante do sinal HUP. Na maioria dos leva o
processo a re-ler seu arquivo de configuração.

4.Após este procedimento use o comando df e veja o resultado:

/home/suporte# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hda2              28G  1.8G   25G   7% /
tmpfs                 443M     0  443M   0% /lib/init/rw
udev                   10M   48K   10M   1% /dev
tmpfs                 443M     0  443M   0% /dev/shm
/dev/hda1             4.6G  150M  4.3G   4% /boot
/dev/hda3             3.7G   72M  3.5G   3% /tmp
/dev/hdb1              37G   16G  19G    46% /var

5. Em ultimo caso, se os procedimentos acima não tenham dado resultados positivos, reinicie o servidor e realize o procedimento de numero 4.

Passei por esse problema nos ultimos dias, espero que sirva de ajuda para outra pessoa =)

Servidor DHCP e Compartilhando a Internet.

Segue um Breve tutorial sobre o compartilhamento de Internet e uma configuração rapida e simples de um servidor DHCP em uma maquina rodando Debian.

Vamos começar instalando o pacote equivalente ao servidor DHCP.

#apt-get install dhcp3-server

A configuração principal de seu servidor está no dhcpd.conf;

#vim /etc/dhcp3/dhcpd.conf

O Exemplo de uma configuração no dhcpd.conf:

ddns-update-style none;
default-lease-time 600; #Controla o tempo de renovação de IP(600 = tempo em segundos)
max-lease-time 7200; # tempo maximo em que uma maquina pode usar determinado IP (7200 = tempo em segundos)

authoritative;

subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.1 192.168.1.20; # O Range determina a faixa de IP reservada, geralmente usada para ip fixos.
option routers 192.168.1.1; # Gateway da rede.
option domain-name-servers 200.177.250.12,200.204.0.10; # Endereço dos seus servidores dns.
option broadcast-address 192.168.1.255; #broadcast da rede.
}

Após feita a configuração, e importante lembrar que a configuração esta utilizando 2 placas de rede e deve-se adicionar a placa que irá compartilhar a Internet em /etc/default/dhcp3-server na linha:

INTERFACES="eth1"

obs: eth1 no caso será sua placa com endereço de rede interno.

Logo em seguida basta reiniciar para o servidor DHCP atualizar todas as configurações;

#/etc/init.d/dhcp3-server restart

Com o servidor devidamente configurado, vamos agora compartilhar a Internet. O compartilhamento e feito através do iptables com os seguintes comandos;

#modprobe iptables_nat
#echo 1 > /proc/sys/net/ipv4/ip_forward
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

Obs: eth0 é a interface de rede que recebe a Internet.

Para facilitar a vida de todo mundo e mais interessante criar um script para que as regras sejam habilitadas automaticamente no Boot;

#vim /etc/init.d/compartilha_internet.sh

O script pode ficar bem simples assim;

#!/bin/bash
modprobe iptables_nat  #comando que ativa o modulo iptables_nat responsavel pelo suporte ao roteamento de pacotes.
echo 1 > /proc/sys/net/ipv4/ip_forward #esse comando ativa o ip_forward que é responsavel pelo encaminhamento de pacotes.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #regra de roteamento

Vamos torna-lo executavel.

chmod +x /etc/init.d/compartilha_internet

Após feito o script basta adicionar a linha ”/etc/init.d/compartilha_internet” no final do ”/etc/rc.local”.Assim sempre será executado no Boot.

=) acho que ficou legal!

Arquivos e suas permissões no Linux!

Arquivos

No linux todos os arquivos e diretórios possuem permissões específicas para diferenciar à que grupo e usuário pertence um determinado arquivo ou diretório. Com o comando ‘ls’ pode-se observar como funciona a tipagem de arquivos e suas permissões.

Por exemplo :

bjunior@rasta:~$ ls -l
drwxr-xr-x 2 bjunior bjunior      4096 2007-11-20 16:31 Music
drwxr-xr-x 2 bjunior bjunior      4096 2007-11-20 16:31 Pictures
drwxr-xr-x 2 bjunior bjunior      4096 2007-11-20 16:31 Public

Primeiramente, é analisar a primeira coluna, pois é onde mostra que tipo de arquivo ele é.
Seguindo a descrição a baixo pode-se observar facilmente o tipo do arquivo:

* – Arquivo comum
* b – Dispositivo de bloco(armazenamento)
* c – Dispositivo de caracter(serial)
* d – Diretório
* l – Link simbólico
* s – Socket de comunicação entre processos
* p – Pipe de comunicação entre processos

Como falei anteriormente, basta observar a primeira coluna para saber qual o tipo do arquivo, no caso do exemplo, todos os arquivos são diretórios.

Permissões

Agora que já sei qual o tipo de um determinado arquivo, vou mostrar a forma que acho mais simples de definir permissões a um arquivo e tentar explica-las. As permissões no linux são atribuídas a três níveis específicos,são eles:

*O Dono do arquivo, que é o usuário que criou o arquivo,Apenas pode ser alterado pelo root.
*O grupo dono do arquivo, Geralmente é o grupo do usuário criador, também só pode ser alterado pelo root.
*Outros, são os usuários que não criaram o arquivo nem fazem parte do grupo do criador.

Como as permissões são atribuídas aos três níveis citados acima, onde cada nível irá possui uma combinação de “r(Leitura)”,”w(escrita)” e “x(execução)”. veja o exemplo;

drwxr-xr-x 2 bjunior bjunior      4096 2007-11-20 16:31 Public

Seguindo a linha temos:

d - Informando que o arquivo é um diretório.
 rwx - Informando que o dono do arquivo tem permissão de leitura,escrita e execução.
 r-x - Informando que o grupo dono do arquivo tem permissão apenas de leitura e execução.
 r-x - Informando que outro usúarios que desejam acessar o arquivo tem permissão apenas   de leitura e execução.

Como altero as permissões?

Na minha opinião a forma que irei mostrar é a mais simples para quem está começando no linux, que é pelo método da atribuição direta, onde as alterações são realizadas com o sinal de (=)com o uso das letras “r”,”w” e “x” indicando as permissões com o uso do comando chmod, lembrando que as permissões de um arquivo apenas pode ser alterado pelo dono do arquivo ou o usuário root.

Exemplo:

drwxr-xr-x 2 bjunior bjunior 4096 2007-11-20 16:31 Public

# chmod u=r,g=rwx,o=w /home/bjunior/Public
# ls -l
# dr--rwx-w- 2 bjunior bjunior 4096 2007-11-20 16:31 Public

*Observe as alterações.

Sendo:

u - Representando o nível de usuário dono do arquivo.
g - Representando o nível de grupo do dono do arquivo.
o - Representando todos os outros usuários.

Espero que sirva como auxílio para alguém. =)