Pesquisar neste blog

quinta-feira, 30 de outubro de 2008

Monitoramento de MSN com msn-proxy

Distro: CentOS 4 ou 5



O msn-proxy é um serviço de proxy transparente para clientes do msn messenger, ele suporta todos os protocolos ativos ( todos clientes ), controla quem e como o msn messenger é usado em sua rede.

O texto acima é uma tradução da descrição escrita pelo autor no site do projeto.
O msn-proxy possui vários recursos tais como : Bloqueio de usuários, bloqueio de contatos, 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.

Pacotes de compilação
Para instalar os pacotes necessários para a compilação do msn-proxy execute o comando abaixo:
#yum install gcc gcc-c++ autoconf automake



Requisitos :
http://monkey.org/~provos/libevent/
https://sourceforge.net/projects/msn-proxy
PHP 4 ou 5
Apache 2
MySQL server 4 ou 5

Libevent
- esse pacote deve ser baixado pelo link acima

# yum install httpd php php-mysql mysql-devel mysql-server -y

Tendo todos os pacotes vamos por a mão na massa.
Primeiramente vamos descompactar o pacote libevent

# tar -xvzf libevent-1.4.5-stable.tar.gz
# cd libevent-1.4.5-stable
# ./configure && make
# make install

Depois que você tiver compilado e instalado, entre no arquivo
# vim /etc/ld.so.conf
e adicione as seguintes linhas:
/usr/local/lib
/usr/lib

salve o arquivo e saia.

Depois execute o comando:
# ldconfig

Feito, depois de compilado e instalado vamos agora ao msn-proxy.
Como estamos usando o mysql como base de dados, baixei o pacote com suporte ao mysql;
Vamos agora descompactar o pacote abaixo:
# tar -xvzf msn-proxy-0.6.3-mysql.tar.gz
# cd msn-proxy

Antes de começarmos a compilar o msn-proxy altere o caminho das libs do mysql, segue abaixo os caminhos corretos no centos:
# vim Makefile

MYSQLINC=/usr/local/include
MYSQLLIB=/usr/lib/mysql

Feche e salve o arquivo.
# make
# make install

Os arquivos de configuração do msn-proxy estão localizados em /usr/local/etc/msn-proxy

Confira se seu mysql esta rodando, caso não, execute o comando abaixo:
# service mysqld start

Vamos agora criar a base do msn-proxy executando o comando abaixo, se seu usuário root estiver sem senha ele vai logar normal no banco, senão use

root com senha
# mysql -uroot -psenha

root sem senha
# mysql
> create database `msn-proxy`;
> grant all privileges on `msn-proxy`.* to `msn-proxy`@localhost identified by 'secret';
> flush privileges;
>quit

Ok, base de dados criada!.


Agora vamos entrar na pasta mysql para editar os dados de conexão com o banco:
# cd /usr/local/etc/msn-proxy/mysql
# vim conf

O arquivo deverá ter o seguinte conteúdo

# "host or socketport (zero for socket)userpassdatabase name"

localhost|0|msn-proxy|secret|msn-proxy

Salve o arquivo e feche.


Agora vamos a página de monitoramento das conexões e dialogos feitos pelo daemon do msn-proxy. Mova a pasta php para o diretório raiz do seu apache

# mv php /var/www/html/msn-proxy

Vamos editar o arquivo msn-proxy/php/mysql.inc.php

# vim msn-proxy/php/mysql.inc.php

e altere os dados de conexão

$host = "localhost";
$user = "msn-proxy";
$pass = "secret";
$db = "msn-proxy";
$port = 3306;

Salve e feche o arquivo.


Agora vamos executar o daemon pela primeira vez para fazer a criação das tabelas e inserções iniciais na base;

# msn-proxy

Entre novamente no mysql e insira o ip do servidor
# mysql
# use msn-proxy;
> insert into defaults (internal_host) values ('192.168.0.1');
> quit

Pronto agora vamos colocar o msn-proxy para rodar em background
# msn-proxy -b


Agora vamos criar o pulo do gato, o cara que redireciona todas as conexões do msn para seu firewall
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1863 -j REDIRECT --to-port 1863


Nota: A interface informada na regra acima (eth0) é a interna da rede local.

# MSN
iptables -a INPUT -s 192.168.0.0/24 -p tcp --dport 1863 -j ACCEPT
iptables -a INPUT -s 192.168.0.0/24 -p tcp --dport 25000:30000 -j ACCEPT


Agora basta entrar via web e visualizar as conexões do msn:
http://ip-do-seu-servidor/msn-proxy


Para quem quiser baixar a última versão em desenvolvimento, é só usar o repositório cvs pelo comando abaixo:
# cvs -z3 -d:pserver:anonymous@msn-proxy.cvs.sourceforge.net:/cvsroot/msn-proxy co -P msn-proxy

ou

# svn co https://msn-proxy.svn.sourceforge.net/svnroot/msn-proxy msn-proxy

Para quem quiser saber mais informações sobre o msn proxy leia o artigo abaixo
Marcelo Torres Abaixo:
http://mundoopensource.blogspot.com/2008/08/controlando-o-uso-do-msn-com-o-msn.html

Prevenindo Ataques web com Apache - (Preventing Web Attacks with Apache)

Distro: CentOS 4.6
Apache: httpd 2.0.52
Módulo usado mod_proxy

Essa semana me deparei com uma série de acessos estranhos quando analisava os logs do cluster de servidores web. Porque ou que um tipo de conexão "CONNECT login.icq.com:443 HTTP/1.0" estaria sendo logada nos servidores web? Então fui-me a pesquisar na internet e me deparei com uma vulnerabilidade.

Alguém estava explorando uma vulnerabilidade dos servidores web, mais especificamente no módulo mod_proxy usado para habilitar um recurso de proxy reverso que permite que você conecte-se a outros servidores internos da sua rede usando um único endereço.


Abaixo vou mostrar como evitar isso e alguns exemplos (Antes e Depois)

Testar se as conexões estão sendo aceitas pelo proxy-reverso

[root@vmware01 scripts]# nc www.meuserverweb.com.br 80
CONNECT login.icq.com:443 HTTP/1.0
Host:login.icq.com:443

HTTP/1.0 200 Connection Established
Proxy-agent: Apache/2.0.52 (CentOS)
*}E
[root@vmware01 scripts]#

Se der a mensagem acima você está vulnerável, podem estar usando seu servidor web como
servidor proxy para navegar em outros sites, enviar spams, etc...


Configuração do apache antes


ProxyRequests On
ProxyPass /site1 http://10.1.2.1/site1
ProxyPass /site2 http://10.1.2.1/site2
ProxyPassReverse /site1 http://10.1.2.1/site1
ProxyPassReverse /site2 http://10.1.2.1/site2
ProxyVia On


Logs do apache antes

96.229.41.9 - - [28/Oct/2008:13:44:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:43 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:43 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:44:50 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:45:03 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"
96.229.41.9 - - [28/Oct/2008:13:45:17 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 200 - "-" "-"



Configuração do apache depois

Altere o parametro ProxyRequests para Off evitando o uso pelos spammers


ProxyRequests Off
ProxyPass /site1 http://10.1.2.1/site1
ProxyPass /site2 http://10.1.2.1/site2
ProxyPassReverse /site1 http://10.1.2.1/site1
ProxyPassReverse /site2 http://10.1.2.1/site2
ProxyVia Off


Logs do Apache depois

96.229.41.9 - - [30/Oct/2008:06:20:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"
96.229.41.9 - - [30/Oct/2008:06:20:22 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"
96.229.41.9 - - [30/Oct/2008:06:20:28 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"
96.229.41.9 - - [30/Oct/2008:06:20:28 -0200] "CONNECT login.icq.com:443 HTTP/1.0" 302 - "-" "-"




Teste do acesso depois

[root@vmware01 scripts]# nc www.meuserverweb.com.br 80
CONNECT login.icq.com:443 HTTP/1.1
Host:login.icq.com:443

HTTP/1.1 302 Found
Date: Thu, 30 Oct 2008 07:53:30 GMT
Server: Apache/2.0.52 (CentOS)
X-Powered-By: PHP/4.4.7
Set-Cookie: PHPSESSID=
f77b4da01d008ef668e4102a504d1300; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
location: http://www.meuserverweb.com.br/
Content-Length: 0
Connection: close
Content-Type: text/html; charset=iso-8859-1

[root@vmware01 scripts]#

Conexão fechada

consulte os livros on-line de segurança

Fonte: http://my.safaribooksonline.com/0321321286/ch10lev1sec15

Comandos usados para filtrar e obter estatísticas top 10
>>Top Ten Attacker IP Addresses
# cat access_log | awk '{print $7}' | sort | uniq -c | sort -rn | head –10

# cat access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head –10

Extraindo os ips

# for f in `cat access_log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10 |
awk '{print $2}'`; do grep $f access_log | head –1 ; done


Serviços para checagem de proxy

http://www.google.com/search?hl=en&ie=UTF-8&oe=UTF-8&q=proxy+check
http://www.checker.freeproxy.ru/checker/
http://www.ip-adress.com/Proxy_Checker/


Observações
Module Name Description Security RiskRecommend
Mod_proxyThis module turns the apache web server into a web proxy server.Care should be taken with the configuration of proxy servers, as if the intent is to facilitate internal organization access to external web sites, there is a risk that the reverse could be enabled, allowing Internet users to potentially browse internal web servers.If this server is a normal web server, then this module is not required for the normal operation and it should be disabled. If this server is being used as a proxy or a reverse proxy, then this module must be enabled.





Algumas informações sobre o módulo
http://httpd.apache.org/docs/2.0/mod/mod_proxy.html
Descubra a localização de quem está realizando um ataque:
http://www.maxmind.com/

quarta-feira, 29 de outubro de 2008

Adicionando suporte ao Oracle no PHP

Distros: CentOS 4 ou 5
Versão do PHP: 4 ou 5

Para instalar o suporte a base de dados Oracle no PHP devemos ter os seguintes pacotes baixados e instalados:


http://www.oracle.com/technology/pub/notes/technote_php_instant.html

libaio-0.3.96-7.i386.rpm
oracle-instantclient-basic-10.2.0.3-1.i386.rpm
oracle-instantclient-devel-10.2.0.3-1.i386.rpm
oracle-xe-client-10.2.0.1-1.0.i386.rpm

após instalados, devemos setar as varáveis de ambiente no arquivo de configuração do apache:

vim /etc/httpd/conf/httpd.conf

SetEnv ORACLE_HOME /usr/lib/oracle/xe/app/oracle/product/10.2.0/client
SetEnv LD_LIBRARY_PATH /usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib

E também no arquivo /etc/init.d/httpd colocar o seguinte conteúdo:

LD_LIBRARY_PATH=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib
ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client
NLS_LANG="BRAZILIAN PORTUGUESE_BRAZIL.WE8ISO8859P15"

export LD_LIBRARY_PATH
export ORACLE_HOME
export NLS_LANG

Antes de começar a compilar o source do php devemos adicionar o camonho das libs do oracle client no arquivo /etc/ld.so.conf o conteúdo abaixo:

/usr/lib
/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib

e depois executar o comando ldconfig

Tudo certo agora mão na massa:

Para o que o suporte ao oracle seja ativado devemos baixar a versão estável do fonte do php. Após termos baixado devemos instalá-la:

rpm -ivh /root/programas/php-4.4.7-1.src.rpm

Entrar na pasta SPECS
#cd /usr/src/redhat/SPECS/
editar o arquivo php-4.4.7.spec
adicionar a seguinte linha no arquivo

--with-oci8=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client \
%{?_with_oci8:--with-oci8=shared} \
--with-oci8-instant-client \

após adicionar, salvar e sair.

Execute o comando abaixo para criar o pacote:
# rpmbuild -ba php-4.4.7.spec

e é só aguardar a criação dos novos pacotes com o suporte ao Oracle.

Após o termino os pacotes estarão disponíveis em:
/usr/src/redhat/RPMS/i386

-rw-r--r-- 1 root root 1530032 Out 6 07:51 php-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 5701838 Out 6 07:51 php-debuginfo-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 2068194 Out 6 07:51 php-devel-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 34047 Out 6 07:51 php-domxml-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 83103 Out 6 07:51 php-gd-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 34133 Out 6 07:51 php-imap-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 17639 Out 6 07:51 php-ldap-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 928404 Out 6 07:51 php-mbstring-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 666709 Out 6 07:51 php-mysql-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 22988 Out 6 07:51 php-ncurses-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 24672 Out 6 07:51 php-odbc-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 555029 Out 6 07:51 php-pear-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 34644 Out 6 07:51 php-pgsql-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 11169 Out 6 07:51 php-snmp-4.4.7-1.i386.rpm
-rw-r--r-- 1 root root 34974 Out 6 07:51 php-xmlrpc-4.4.7-1.i386.rpm

Se você já está com o php instalado basta atualizar a versão utilizando o comando:

# rpm -Uvh php-* --force --nodeps

depois de atualizado basta restartar o serviço do servidor apache e testar;

Para ter certeza de que o módulo do oracle foi adicionado ao php basta executarmos o seguinte comando:

[root@www1 i386]# php -m
[PHP Modules]
bcmath
bz2
calendar
ctype
curl
dba
dbx
dio
domxml
exif
ftp
gd
gettext
gmp
iconv
imap
ldap
mbstring
mime_magic
mssql
mysql
ncurses
oci8
odbc
openssl
overload
pcre
pgsql
posix
pspell
session
shmop
snmp
sockets
standard
sysvsem
sysvshm
tokenizer
wddx
xml
xmlrpc
yp
zlib

[Zend Modules]

Verifique se o módulo OCI8 está na listagem dos módulos acima.


Para você não perder mais tempo tendo que testar se realemente o PHP está conectando no Oracle ai vai um exemplo de código que faz a conexão com uma base de dados:



putenv("ORACLE_SID=ORACLE");
putenv("ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/client");

$ORACLE_SID = getenv("ORACLE_SID");
$ORACLE_HOME = getenv("ORACLE_HOME");

echo $ORACLE_SID."
";

echo $ORACLE_HOME."
";


$db ="(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 10.1.1.111)
(PORT = 1521)
)
(CONNECT_DATA = (SID = ORACLE))
)";

$c=ociplogon("manager","manager",$db);

if (!$c) {
echo "Problema na conexao: ".OCIError($c);
die();
} else { echo "Conexao oracle OK!!!";};
phpinfo();
?>


Os procedimentos acima foram testados com a versão 5 do php e funcionaram perfeitamente.

Baixando e Instalando o Winprint HylaFAX

Instruções de instalação

O Winprint HylaFAX é um monitor de impressões para windows designado para enviar FAXes diretamente para HylaFAX server.
Uma vez instalado, você pode imprimir no HylaFAX Server de qualquer aplicação e abrirá uma simples caixa de diálogo, permitindo que você entre com o número do destinatário do FAX. Isso permite a você uma forma rápida e fácil de enviar FAXes de qualquer aplicação windows.

O Winprint HylaFAX pode ser baixado aqui.




Em seguida, você será solicitado a escolher a porta a ser usada. Selecione Criar nova porta, "create a new port type." Se a instalação do Hylafax completou sem problemas, você deve ver "Winprint Hylafax" como uma das opções (provavelmente a última delas).





Em seguida, abrirá uma janela, para você colocar o nome da porta. Mantenha o nome HFAX1: que lhe ajudará a identificá-la futuramente.




A seguir, selecione o tipo da impressora. Selecione Apple LaserWriter 12/640 PS independente do tipo de impressora que você tenha acomplado ao seu computador.



Agora vamos dar um nome a nova impressora. Vamos chama-la de Winprint HylaFAX para que seja fácil você identificar que o que for impresso através dessa impressora virtual será enviado através do serviço HylaFAX.



NAO COMPARTILHE a impressora. É muito mais fácil e eficiente instalar o Winprint Hylafax em todos os computadores que você quer que envie fax.
Também, NÃO IMPRIMA PÁGINA DE TESTE, uma vez que ainda não terminamos a configuração da nova impressora.

Usando o mouse, clique com o botão direito sobre o nome da impressora e escolha PROPRIEDADES e clique sobre a aba Portas. Localize a porta que você criou HFAX1: e a selecione



Clique no botão "Configurar Porta" para configurar os parâmetros do serviço.




Se os dados de sua conta não estiverem corretos, incluindo o numero de sua conta e senha, você não conseguirá conectar no servidor HylaFAXax e conseqüentemente não poderá enviar seus faxes. Onde pede USERNAME, coloque o número de sua conta HylaFAX criado no servidor e onde pede PASSWORD, utilize sua senha de administração. Caso prefira, a senha (Password) pode ser deixada em branco e será solicitada a cada vez que você for enviar um fax.
Na opção addressbook, coloque o valor c:\faxes porém este diretório tem que ser criado anteriormente, este diretório, será utilizado para armazenar os números de contatos que você salvar clicando na opção Save Number.

Agora estamos prontos para um teste.
Escolha alguma coisa para imprimir e faça a impressão através da impressora Winprint HylaFAX.
Irá aparecer uma mensagem de erro, apenas pressione ok na mensagem
Uma caixa de dialogo irá aparecer:





O número do fax deve ser preenchido de acordo com a configuração da sua central asterisk. Após o HylaFAX ter entregue o seu fax, ou ter desistido por impossibilidade de entrega você receberá um email confirmando a entrega ou informando o erro de cada uma das 12 tentativas feitas antes de desistir.

Instalando Hylafax e Integrando ao Asterisk (Servidor de Fax)

Instalando Hylafax

O Hylafax é um projeto Open-Source que tem por objeto criar um servidor de fax, o hylafax
não tem nenhuma ligação com o Asterisk, ele foi desenvolvido para utilizar modens de Fax para
receber os mesmo. Mas através do software iaxmodem, essa integração se torna possível. Para
maiores informações sobre o Hylafax acesse http://www.hylafax.org/content/Main_Page

Passo 1: Instalando os pacotes necessários.
# yum install libstdc++-devel glibc glibc-common glibc-devel glibc-headers glibc-kernheaders gcc gcc-c++ libtiff-devel

Passo 2: Baixando e descompactando o IAXModem.

IAXmodem é um modem do software escrito em C que usa um canal de IAX (fornecida geralmente por um sistema do PBX do asterisco) em vez de uma linha e dos usos do traditionalphone uma biblioteca de DSP em vez dos chipsets da ferragem de DSP.。

# wget http://ufpr.dl.sourceforge.net/sourceforge/iaxmodem/iaxmodem-1.1.1.tar.gz
# tar -xvzf iaxmodem-1.1.1.tar.gz

Passo 3: Instalando e configurando o IAXModem.

# cd iaxmodem-1.1.0
# ./build static
# ./configure
# make
# cp iaxmodem.init.fedora /etc/rc.d/init.d/iaxmodem
# chmod 0755 /etc/rc.d/init.d/iaxmodem
# chkconfig --add iaxmodem
# chkconfig iaxmodem on
# cp iaxmodem /usr/sbin/iaxmodem
# mkdir /etc/iaxmodem
# vim /etc/iaxmodem/ttyIAX0

Dentro do arquivo que criamos (/etc/iaxmodem/ttyIAX0) vamos colocar as configurações para o Fax assim:

device /dev/ttyIAX0
owner uucp:uucp
mode 660
port 4570
refresh 60
server 127.0.0.1
peername nomedoUsuarioIAX
secret senhaDoUsuarioIAX
cidname nomeDoUsuarioIAX
cidnumber numerodeIdentificação
codec ulaw

Crie o Ramal IAX2 com as mesmas configurações que foi utilizada no arquivo ttyIAX0. Se você quiser criar mais de um ramal para fax, crie outros alterando os dando por exemplos: ttyIAX1, ttyIAX2, sem se esquecer de mudar o device /dev/ttyIAX1 etc...

Passo 4: Baixando e instalando o Ghostscript.

# yum install ghostscript ghostscript-fonts sharutils -y

Passo 5: Baixando e instalando o Hylafax.
# cd ..
# http://prdownloads.sourceforge.net/hylafax/
# rpm -ivh hylafax-5.2.7-1fc5.i386.rpm
#

Passo 6: Iniciando o Fax.

Acesse o arquivo /etc/rc.d/rc.local
# vim /etc/rc.d/rc.local

E acrescente no final do arquivo as seguintes linhas:
/usr/sbin/iaxmodem ttyIAX0 &
/usr/sbin/faxgetty ttyIAX0 &
# /etc/init.d/iaxmodem start
# /etc/init.d/hylafax start
# /etc/rc.d/rc.local

Passo 7: Configurar o sistema para receber fax:

# faxsetup
O Faxsetup fará varias perguntas, eu vou mencionar apenas as básicas para o funcinamento.
Coutry code [1]?55
Area code [000]?051
Serial port that modem is connected to []?ttyIAX0
Phone number of fax modem []?+55.51.3333.0001
Local identification string (for TSI/CIG) {"NothingSetup"]?NomedoFax
NOTA: O Fax's chegarão no seguinte diretório: /var/spool/hylafax/recvq

Para Enviar por E-mail, crie um arquivo na pasta /var/spool/hylafax/etc com o Nome FaxDispatch

Nesse arquivo coloque o seguinte:

FILETYPE=tif;
SENDTO=seuemail@dominio.com.br;

Se quiser ter varios fax`s e e-mail diferentes:

case "$DEVICE" in
ttyFax001) SENDTO=email001@domino.com;; # todos os faxes recebidos em ttyFax001
ttyFax002) SENDTO=email002@dominio.com;; # todos os faxes recebidos em ttyFax002
esac



Para certificar que o serviço está rodando execute o comando abaixo:
# faxstat -a -s

onde a seguinte mensagem deverá aparecer:

HylaFAX scheduler on : Running
Modem ttyS2 (): Running and idle


Adicione um usuário com o nome faxuser e sem senha para fazer alguns testes:
# faxadduser -u 100 faxuser -p 123456

O login dos usuários serão amrazenado no arquivo abaixo:
/var/spool/hylafax/etc/hosts.hfaxd



-------------------------------------------------------------------------------------

Vou postar também algumas dúvidas que tive antes de implementar

> Vamos ver se eu entendi. > Para receber, a pessoa liga para meu asterisk e no menu ela escolhe o ramal do fax e recebe o sinal e o arquivo cai na pasta /var/spool/hylafax/recvq
Correto


> Como faço para buscar o arquivo do fax no spooler? >
Você pode pegar o arquivo via SSH, Samba ou enviar por e-mail.


> Como faço para enviar um fax da minha aplicação, por exemplo, do word, adobe. Tenho que instalar algum software na minha estação? > Se eu tiver que mandar para uma pessoa que tem um aparelho de fax como fica? e eu não tenho o aparelho de fax e quero mandar do meu word por exemplo para uma pessoa tem o aparelho? como fica? >
Existem muitos programas para fazer isso. Creio que o mais fácil seria esse: http://winprinthylafax.sourceforge.net/
A pessoa que receberá o fax não faz idéia de como você está enviando.

------------------------------------------------------------------------------------
Olá,

Esse arquivo recebido que está no spooler do Hylafax pode ser
buscado por programas específicos que se conectam ao Hylafax e inclusive
enviam e mostram a situação do servidor, tal como o Gfax Facsimile. Pode
ainda configurar o Hylafax para enviar este arquivo por e-mail.

Para enviar, use um programa que faça isso, geralmente aceitam
arquivos texto, pdf e ps, ou uma impressora virtual que te forneça tal
recurso interagindo com o servidor Hylafax. Uma outra forma de enviar é
mandar por e-mail, onde o corpo será uma folha de rosto e um arquivo em
anexo será o restante, geralmente texto, pdf ou ps, ficando no assunto
o número do telefone, e então tratar esse e-mail de forma a enviá-lo
para o servidor Hylafax, um pouco trabalhoso, mas é uma boa alternativa.

Existem ainda softphones que enviam e/ou recebem fax, mas nunca
vi isso funcionar na prática. Com esses, não precisa de IAXmodem e nem
de Hylafax.

---------------------------------------------------------------------------------
Use o wintprinthylafax, ele instala uma porta virtual, crie uma impressora com suporte a PS (Appler Laser por exemplo), configure a porta com user/senha e host do seu servidor hylafax...
assim, q uando mandar imprimir ele vai te pedir o telefone, forneça o telefone e o asterisk ira fazer o resto, caso ja esteja configurado

Qualnto ao spooler dos arquivos recebidos, todos eles ficam no diretorio citada pelo nosso colega, no meu caso configurei o hylafax para converte-lo em PDF e enviar por email...
-----------------------------------------------------------------------------------------

Ativar SIGA-ME no Asterisk

uso o Asterisk 1.4.21.1 com o FreePBX 2.4.1.2 que instalei manualmente e o mesmo já vem com as funcionalidades do SIGA-ME;

Para ativar um SIGA-ME incondicional, ou seja, tanto faz se você estiver ocupado ao telefone, ausente ele vai encaminhar sua chamada para ramal programado.
Para ativar isso basta discar *72+numero do ramal desejado + #
Para desativar basta discar *73


Para ativar um SIGA-ME quando ocupado, ou seja, redireciona a ligação para o ramal programado quando você estiver ao telefone.
Para ativar isso basta discar *90+numero do ramal desejado + #
Para desativar basta discar *91


Para ativar um SIGA-ME quando não atende ou indiponível, ou seja, quando você não atender o telefone ou não estiver na sala a ligação será redirecionada para o ramal programado.
Para ativar isso basta discar *52+numero do ramal desejado + #
Para desativar basta discar *53




# Ativa desvio incondicional
[app-cf-on]
include => app-cf-on-custom
exten => *72,1,Answer
exten => *72,n,Wait(1)
exten => *72,n,Macro(user-callerid,)
exten => *72,n,Playback(call-fwd-unconditional)
exten => *72,n,Playback(please-enter-your&extension)
exten => *72,n,Read(fromext,then-press-pound,,,,)
exten => *72,n,Set(fromext=${IF($["foo${fromext}"="foo"]?${AMPUSER}:${fromext})})
exten => *72,n,Wait(1)
exten => *72,n(startread),Playback(ent-target-attendant)
exten => *72,n,Read(toext,then-press-pound,,,,)
exten => *72,n,GotoIf($["foo${toext}"="foo"]?startread)
exten => *72,n,Wait(1)
exten => *72,n,Set(DB(CF/${fromext})=${toext})
exten => *72,n,Playback(call-fwd-unconditional&for&extension)
exten => *72,n,SayDigits(${fromext})
exten => *72,n,Playback(is-set-to)
exten => *72,n,SayDigits(${toext})
exten => *72,n,Macro(hangupcall,)
exten => _*72.,1,Answer
exten => _*72.,n,Wait(1)
exten => _*72.,n,Macro(user-callerid,)
exten => _*72.,n,Set(DB(CF/${AMPUSER})=${EXTEN:3})
exten => _*72.,n,Playback(call-fwd-unconditional&for&extension)
exten => _*72.,n,SayDigits(${AMPUSER})
exten => _*72.,n,Playback(is-set-to)
exten => _*72.,n,SayDigits(${EXTEN:3})
exten => _*72.,n,Macro(hangupcall,)

# Desativa desvio incondicional
[app-cf-off]
include => app-cf-off-custom
exten => *73,1,Answer
exten => *73,n,Wait(1)
exten => *73,n,Macro(user-callerid,)
exten => *73,n,dbDel(CF/${AMPUSER})
exten => *73,n,Playback(call-fwd-unconditional&de-activated)
exten => *73,n,Macro(hangupcall,)
exten => _*73.,1,Answer
exten => _*73.,n,Wait(1)
exten => _*73.,n,Set(fromext=${EXTEN:3})
exten => _*73.,n,dbDel(CF/${fromext})
exten => _*73.,n,Playback(call-fwd-unconditional&for&extension)
exten => _*73.,n,SayDigits(${fromext})
exten => _*73.,n,Playback(cancelled)
exten => _*73.,n,Macro(hangupcall,)

; end of [app-cf-off]



segunda-feira, 27 de outubro de 2008

Configurando uma placa AEX800 no Asterisk

Antes de instalarmos e configurarmos uma placa para o asterisk devemos nos deter em alguns pontos importantes:

Hardware
Antes de comprarmos uma placa devemos ter em mente o número de ligações simultâneas e o tipo de codecs que iremos adotar.
O asterisk requer uso exclusivo do CPU para seu perfeito funcionamento, por tanto nunca instale serviços de banco de dados em um servidor asterisk, o aconselhado é que você tenha uma máquina exclusiva para o asterisk.

Use placas mães que tenham suporte a APIC, o que ajuda muito a evitar conflitos de IRQ;

Um outro conselho muito importante é sempre comprar harware de servidor compatível com as placas Zaptel.

Segue um link abaixo onde a Digium informa suas compatibilidades:
http://www.digium.com/en/docs/misc/compatibility_notes.php


Instalação da placa

No meu exemplo vou demonstrar a instalação de uma placa AEX800 PCI-Express (8 FXO)
com um servidor Dell PowerEdge 1900.

Segue link da documentação desta placa:
https://www.digium.com/en/supportcenter/documentation/viewdocs/AEX800

Configuração do arquivo zaptel.conf

Iramos usar o driver
wctdm24xxp, o mesmo utilizado para as placas abaixo
wctdm24xxp: 
* Digium TDM2400P/AEX2400: up to 24 analog ports
* Digium TDM800P/AEX800: up to 8 analog ports
* Digium TDM410P: up to 4 analog ports
* Digium TDM410P/AEX410: up to 4 analog ports
Esse módulo vem no pacote zaptel e é instalado após sua compilação.

Vamos carregar o driver da placa para iniciarmos a geração do arquivo de configuração.

[root@asterisk ~]# modprobe wctdm24xxp

Agora depois de termos carregado o driver da placa AEX800 vamos usar o utilitário
chamado
genzaptelconf para configurar a placa.

genzaptelconf -- generates zaptel configuration (TDM adaptors)

[root@asterisk ~]# genzaptelconf

Este comando irá parar o Asterisk e configurar todos os arquivos necessários para a placa Digium (zaptel.conf, zapata.conf e zapata-auto.conf). Ao final, ele põe o Asterisk novamente no ar e mostra o status da placa Digium configurada.

[root@asterisk1]# ztcfg
ztcfg - Lê e carrega o zaptel.conf
[root@asterisk1]# zttool
zttool - Zaptel Tool mostra o status das interfaces das placas digium.


Você pode digitar o comando ztcfg –vv para verificar as portas reconhecidas pelo Asterisk.

[root@asterisk ~]# ztcfg -vv

Zaptel Version: 1.4.11
Echo Canceller: MG2
Configuration
======================


Channel map:

Channel 01: FXS Kewlstart (Default) (Slaves: 01)
Channel 02: FXS Kewlstart (Default) (Slaves: 02)
Channel 03: FXS Kewlstart (Default) (Slaves: 03)
Channel 04: FXS Kewlstart (Default) (Slaves: 04)
Channel 05: FXS Kewlstart (Default) (Slaves: 05)
Channel 06: FXS Kewlstart (Default) (Slaves: 06)
Channel 07: FXS Kewlstart (Default) (Slaves: 07)
Channel 08: FXS Kewlstart (Default) (Slaves: 08)

8 channels to configure.

[root@vmware01 ~]# cat /etc/zaptel.conf

# Autogenerated by /usr/sbin/genzaptelconf -- do not hand edit
# Zaptel Configuration File
# This file is parsed by the Zaptel Configurator, ztcfg
# It must be in the module loading order
# Span 1: WCTDM/0 "Wildcard AEX800 Board 1" (MASTER)
fxsks=1
fxsks=2
fxsks=3
fxsks=4
fxsks=5
fxsks=6
fxsks=7
fxsks=8

# Global data

loadzone= br
defaultzone= br

Um utilitário muito bom para verificarmos problemas é o zttest, ele pode ser usado para verificar conflitos de interrupção. A qualidade do áudio também é por causa de conflitos e perdas de interruções.
O zttest pode verificar a quantidade de interrupções perdidas; Um número abaixo de 99,98% indica possíveis problemas.


Agora basta entrarmos na console do asterisk:

[root@asterisk ~]# asterisk -vvvvr

E executar o seguinte comando para certificar que seus canais estão sendo reconhecidos pelo asteris:

asterisk*CLI> zap show channels
Chan Extension Context Language MOH Interpret

pseudo from-pstn pt_BR default
1 from-pstn pt_BR default
2 from-pstn pt_BR default

3 from-pstn pt_BR default
4 from-pstn pt_BR default
5 from-pstn pt_BR default
6 from-pstn pt_BR default
7 from-pstn pt_BR default
8 from-pstn pt_BR default



Pronto.

Interfaces FXS, FXO

FX - são as portas usadas por linhas de telefonia analógica (também conhecidas por POTS – Sistema de Telefonia Tradicional )







Interfaces FXS (Foreign eXchange Station)

É uma interface que fornece sinalização, tom de discagem, corrente de energia e som para um telefone analógico ou digital.

Interfaces FXO (Foreign eXchange Office)

É a interface que recebe a linha analógica. É o plug no telefone ou aparelho de fax, ou os plugs no seu sistema de telefonia analógica. Indica se o telefone está no gancho/fora do gancho (circuito fechado). Como a porta FXO está ligada a um dispositivo, tal como fax ou telefone, esse dispositivo é normalmente chamado de ‘dispositivo FXO’.






Fonte:
http://pt.wikipedia.org/wiki/FXS

sexta-feira, 24 de outubro de 2008

Como enviar e-mail pelo comando mail do linux

# mail -s (Subject = assunto) "assunto do email" emails dos
destinatarios <>Este é o corpo do e-mail
>Aqui voce coloca
>sobre o que voce quer
>Falar
>Ok!
FIMMAIL
Pronto o e-mail será enviado!!!!

Segue um exemplo enviando um arquivo anexo


# mail -s "Assunto" email@mail.com < /home/usuario/arquivo.txt
Pronto!! Enviado.

quinta-feira, 23 de outubro de 2008

Adiciona Rota Padrao DOS - WINDOWS

Segue abaixo um exemplo rápido de como adicionar uma rota padrão na mão em ambiente MS-DOS:


ROUTE ADD 0.0.0.0 mask 255.255.255.0 10.1.1.254

Adicionando Novos Usuarios ao MySQL

Segue uma dica para você que quer adicionar novos usuários utilizando instruções GRANT:


GRANT ALL PRIVILEGES ON *.* TO "usuario" IDENTIFIED BY ''alguma_senha'' WITH GRANT OPTION;


mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ''alguma_senha'' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@''%'' IDENTIFIED BY ''alguma_senha'' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;

Estas instruções GRANT configuram três novos usuários:


Update user SET (Alterando a senha de um usuário no MySQL)

Logar no mysqlserver via linha de comando
mysql -uroot -psenha
mysql> UPDATE user SET Password=PASSWORD('nova_senha')
-> WHERE user='root';
mysql> FLUSH PRIVILEGES;

Os procedimentos acima alteram a senha do usuário root,
mas pode ser utilizado para qualquer usuário cadastrado.

Criando um pacote .deb

Vou dar um exemplo de como criar um pacote .deb usando como exemplo o pacote do php.

Baixe os arquivos necessários para criar o pacote:

Ex:

php4-dbase_4.1.orig.tar.gz
php4-dbase_4.1-1.dsc
php4-dbase_4.1-1.diff.gz

Executar o comando:
#dpkg-source -x php4-dbase_4.1-1.dsc
para extrair os arquivos do pacote para compilação.

#cd php4-dbase_4.1
dpkg-buildpackage -rfakeroot -uc -b

Para que o pacote seja auto-construído ao acabar de ser baixado, basta especificar -b na linha de comando, assim:

     $ apt-get -b source nomedopacote

Criando Superuser no PgSQL

Para criar um Superuser no postgre siga os passos abaixo:

[root@centos ~] # su - postgres
[postgres@centos ~]$ createuser -P
Digite o nome da role a ser adicionada: pgmaster
Digite a senha para a nova role:
Digite-a novamente:
A nova role poderá criar um super-usuário? (s/n) s
CREATE ROLE

Ou simplesmente digite:
sudo -u postgres createuser usuario -drs -P

converter formato de data-hora do squid para o formato padrao

Segue uma dica abaixo para usuários do squid que querem saber a data e hora dos acessos

Exemplos:
echo 1183480465.728 | awk '{print strftime("%c",$1),$2}'

tail -f /var/log/squid/access.log |awk -F" " '{print strftime("%c",$1),$3,$7}'

echo "1085173079" | awk '{print strftime("%F %H:%M:%S",$1)}'

2004-05-21 17:57:59

echo "1085173079" | awk '{print strftime("%F",$1)}'
2004-05-21
echo "1085173079" | awk '{print strftime("%F",$0)}'
2004-05-21



Como visualizar arquivos de configuração sem os comentários usando GREP

Segue abaixo um exemplo de como filtrar todos os comentário de um arquivo de configuração.
Isso é muito usado para deixar um arquivo mais limpo e melhor visualizar os parâmetros usados.

grep -v ^# squid.conf | sed -e '/^$/d'

Como conectar ao MSSQL pelo PHP

Segue abaixo um exemplo de como conectar a uma base mssql pelo php.
Tenha em mente de que você já tem o pacote Freetds instalado em sua distribuição e que o php já esteja com o módulo php_mssql.so já complilado.

if($con = mssql_connect('10.1.1.15','user','pass')) {
echo "Conectou!!";
$db = "basededados";
mssql_select_db($db);
$sql = mssql_query("SELECT * FROM funcionarios ORDER BY nome");

while($rg = mssql_fetch_assoc($sql))
{
echo $rg['NOME'];
}

}
else {
echo "no conectou!";
}
?>

Como dar privilégio para um usuário comum adicionar maquinas ao Domínio - SAMBA

Para que um usuário comum possa adicionar máquinas ao domínio sem que você precise passar a senha de root para ele existem algum comando provenientes do samba que nos ajudam a fazer isto.

Listando todos os direitos de um usuário

[root@centos ~]# net rpc rights list -U root
Password:
SeMachineAccountPrivilege Add machines to domain
SeTakeOwnershipPrivilege Take ownership of files or other objects
SeBackupPrivilege Back up files and directories
SeRestorePrivilege Restore files and directories
SeRemoteShutdownPrivilege Force shutdown from a remote system
SePrintOperatorPrivilege Manage printers
SeAddUsersPrivilege Add users and groups to the domain
SeDiskOperatorPrivilege Manage disk shares


Agora vamos ao comando poderoso para os administradores.
Essa linha abaixo dá poderes para todos os usuários do grupo Suporte a adicionarem máquinas ao domínio.

[root@centos ~]# net rpc rights grant "DOMINIO\Suporte" SeMachineAccountPrivilege -U root
Password:
Successfully granted rights.




Fonte: http://us1.samba.org/samba/docs/man/Samba-HOWTO-Collection/rights.html#id379021

quarta-feira, 22 de outubro de 2008

Howto - Instalando TomCat com Apache no CentOS

Vou demonstrar abaixo um passo-a-passo de como instalar o TomCat com Apache no CentOS.

Primeiro vamos baixar o pacote jdk direto do site da sim para a nossa distribuição:

Entre no site http://java.sun.com/javase/downloads/index_jdk5.jsp e clique no link abaixo
Get the JDK download

O tamanho do arquivo é de aproximadamente 62Mb.

Ok, então de pois de baixada a nova versão do jdk vamos verificar se nosso centOS possui uma versão antiga instalada:

[root@centos ~]# rpm -qa grep java
java-1.4.2-gcj-compat-1.4.2.0-27jpp

Parece estar instalada uma versão antiga, vamos proceder com a remoção desse pacote para a instalação da nova versão.

[root@centos ~]# yum -y remove java-1.4.2-gcj-compat
Setting up Remove Process
Resolving Dependencies
–> Populating transaction set with selected packages. Please wait.
—> Package java-1.4.2-gcj-compat.noarch 0:1.4.2.0-27jpp set to be erased
–> Running transaction check

Dependencies Resolved

=============================================================================
Package Arch Version Repository Size
=============================================================================
Removing:
java-1.4.2-gcj-compat noarch 1.4.2.0-27jpp installed 2.2 k

Transaction Summary
=============================================================================
Install 0 Package(s)
Update 0 Package(s)
Remove 1 Package(s)
Total download size: 0
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Removing : java-1.4.2-gcj-compat ######################### [1/1]
Removed: java-1.4.2-gcj-compat.noarch 0:1.4.2.0-27jpp
Complete!



Ok, após termos removido a versão antiga do pacote jdk vamos instalar a nova que baixamos direto do site da Sun.


[root@centos ~]# chmod +x jdk-6u3-linux-i586-rpm.bin

[root@centos ~]# ./jdk-6u3-linux-i586-rpm.bin


Aceite a licença para proceguir com a instalação


Depois de descompactado e instado o jdk, iremos editar o arquivo /etc/profile para informar ao sistema onde o java está instalado.


[root@centos ~]# vim /etc/profile


Vamos adicionar as seguintes linhas:


export JAVA_HOME=/usr/java/jdk1.6.0_03
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar


Agora, depois de editado o arquivo profile, vamos executar o comando source abaixo. Ele vai ler e executar todos os comandos do arquivo referenciado como argumento em um ambiente shell.


[root@centos ~]# source /etc/profile


Agora vamos testar o java criando um simples script para mostrar uma mensagem na tela:


[root@centos ~]# vim HelloWorld.java


Vamos adicionar as seguintes linhas ao arquivo:


public class HelloWorld{
public static void main(String[] args) {
System.out.println(”Hello World”);
}
}


OBS: O nome do arquivo deve ser o mesmo nome da public class senão não compila.


[root@centos ~]# javac HelloWorld.java


Após executado o comando acima vai ser criado um outro arquivo com a extensão .class
agora vamos rodar o arquivo pra ver:


[root@centos ~]# java HelloWorld

A saída do comando acima será Hello World


Feito o teste e tudo funcionando vamos ao que interessa, vamos baixar o TomCat direto do site da Unicamp:

[root@centos ~]# wget http://ftp.unicamp.br/pub/apache/tomcat/tomcat-6/v6.0.18/bin/apache-tomcat-6.0.18.tar.gz


Depois de baixado o arquivo vamos a descompactação do mesmo:


[root@centos ~]# tar -xvzf apache-tomcat-6.0.18.tar.gz
[root@centos ~]# mv apache-tomcat-6.0.18 /usr/local/tomcat


Depois de movida a pasta para o locar que especificamos acima iramos editar novamente o arquivo profile informando e declarando algumas vaiáveis de localização do timcat:


[root@centos ~]# vim /etc/profile


Vamos adicionar as seguintes linhas:


export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat
export CLASSPATH=$CLASSPATH:$CATALINA_HOME/common/lib



Vamos executar o comando source:


[root@centos ~]# source /etc/profile


Agora iramos criar um arquivo de inicialização para o tomcat:


[root@centos ~]# vim /etc/rc.d/init.d/tomcat


Com o seguinte conteúdo:


#!/bin/bash
#
# Startup script for the tomcat
#
# chkconfig: 345 80 15
# description: Tomcat is a Servlet+JSP Engine.
# Source function library.
. /etc/rc.d/init.d/functions

start(){
if [ -z $(/sbin/pidof java) ]; then
echo “Starting tomcat”
/usr/local/tomcat/bin/startup.sh
touch /var/lock/subsys/tomcat
else
echo “tomcat allready running”
fi
}



stop(){
if [ ! -z $(/sbin/pidof java) ]; then
echo “Shutting down tomcat”
/usr/local/tomcat/bin/shutdown.sh
until [ -z $(/sbin/pidof java) ]; do :; done
rm -f /var/lock/subsys/tomcat
else
echo “tomcat not running”
fi
}



case “$1″ in
start)
start
;;


stop)
stop
;;



restart)
stop
start
;;


status)
/usr/local/tomcat/bin/catalina.sh version
;;

*)

echo “Usage: $0 {startstoprestartstatus}”
esac
exit 0



[root@centos ~]# chmod +x /etc/rc.d/init.d/tomcat


Vamos iniciar o serviço

[root@centos ~]# /etc/rc.d/init.d/tomcat start


Starting tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.6.0_03



Agora vamos configurar o serviço para inicializar automaticamente.


[root@centos ~]# chkconfig –add tomcat
[root@centos ~]# chkconfig tomcat on
[root@centos ~]# chkconfig –list tomcat
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off


Agora vamos instalar o conector JK2 que faz a integração entre o Tomcat e o Apache


Iremos precisar instalar o pacote httpd-devel


[root@centos ~]# yum -y install httpd-devel


ok, instalado agora vamos baixar o fonte do jakarta-tomcat

[root@centos ~]# wget http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/source/jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz


Depois de baixado, iremos agora descompactá-lo:


[root@centos ~]# tar -xvzf jakarta-tomcat-connectors-jk2-2.0.4-src.tar.gz

Entrar na pasta abaixo informada:

[root@centos ~]# cd jakarta-tomcat-connectors-jk2-2.0.4-src/jk/native2/


Antes de começar a configuração e compilação do jakarta vamos precisar dos pacotes de compilação executando o comando abaixo:


[root@centos native2]# yum install gcc gcc-c++ autoconf automake
[root@centos native2]# ./configure –with-apxs2=/usr/sbin/apxs && make
[root@centos native2]# cd ../build/jk2/apache2
[root@centos apache2]# apxs -n jk2 -i mod_jk2.so
[root@centos apache2]# cp ../../../conf/workers2.properties /etc/httpd/conf/
[root@centos apache2]# cd


Vamos agora editar o arquivo de configuração do jakarta:

[root@centos ~]# vim /etc/httpd/conf.d/jk2.conf


adicione a seguinte linha no arquivo

LoadModule jk2_module modules/mod_jk2.so


Agora vamos editar o arquivo

[root@centos ~]# vim /etc/httpd/conf/workers2.properties


e adicionar as seguintes linhas


[uri:/servlets-examples/*]
[uri:/jsp-examples/*]


Abra o arquivo de configuração do apache a adicione as seguintes linhas no fim do arquivo para conclusão da interoperabilidade do apache com o tomcat:

[root@centos ~]# vim /etc/httpd/conf/httpd.conf


JkSet config.file /etc/httpd/conf/workers2.properties



Agora vamos restartar o serviço do apache

[root@centos ~]# service httpd restart


Vamos agora editar o arquivo abaixo:

[root@centos ~]# vim /usr/local/tomcat/conf/server.xml


Mais especificamente na seção
adicione o seguinte bloco:


maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />

Vamos restartar o serviço do tomcat agora:

[root@centos ~]# /etc/init.d/tomcat restart

E vamos aos testes.




PRONTO, SERVIDOR RODANDO TOMCAT INTEGRADO COM APACHE.

Servidor CentOS release 5.2 (Final)






quinta-feira, 16 de outubro de 2008

WIRELESS - Aprenda e evitar certos problemas e melhorar seu sinal

Veja as principais barreiras que podem afetar a propagação do sinal Wireless

  • Antenas Baixas

Um dos mantras repetidos à exaustão pelos manuais de pontos de acesso se refere a localização do equipamento. Quanto mais altas as antenas estiverem posicionadas, menos barreiras o sinal encontrará no caminho até os computadores. Trinta centímetros podem fazer enorme diferença.

  • Telefones sem fio

Nas casas e nos escritórios, a maioria dos telefones sem fio operam na freqüência de 900Mhz. Mas há modelos que já trabalham na de 2.4GHz, justamente a mesma usada pelos equipamentos 802.11b e 802.11g. Em ambientes com esse tipo de telefone, ou próximos a áreas com eles, a qualidade do sinal Wireless pode ser afetada. Mas isso não acontece necessariamente em todos os casos.

  • Concreto e Trepadeira

Eis uma combinação explosiva para a rede Wireless. Se o concreto e as plantas mais vistosas já costumam prejudicar a propagação das ondas quando estão sozinhos, imagine o efeito somado. Pode ser um verdadeiro firewall...

  • Microondas

A lógica é a mesma dos aparelhos de telefone sem fio. Os microondas também usam a disputada freqüência livre de 2,4GHz. Por isso, o ideal é que fiquem isolados do ambiente onde está a rede. Dependendo do caso, as interferências podem afetar apenas os usuários mais próximos ou toda a rede.

  • Micro no Chão

O principio das antenas dos pontos de acesso que quanto mais alta melhor, também vale para as placas e os adaptadores colocados nos micros. Se o seu desktop é do tipo torre e fica no chão e o seu dispositivo não vier acompanhado de um fio longo, é recomendável usar um cabo de extensão USB para colocar a antena numa posição mais favorável.

  • Água

Grandes recipientes com água, como aquários e bebedouros, são inimigos da boa propagação do sinal de Wireless. Evite que esse tipo de material possa virar uma barreira no caminho entre o ponto de acesso é as maquinas da rede.

  • Vidros e Árvores

O vidro é outro material que pode influenciar negativamente na qualidade do sinal. Na ligação entre dois prédios por wireless, eles se somam a árvores altas, o que compromete a transmissão do sinal de uma antena para outra.

Gerenciando usuários com comando NET SAM - Samba 3.0.28

Segue abaixo todos os comandos disponíveis pelo samba via linha de comando para gerenciar usuários:

SAM CREATELOCALGROUP
Create a LOCAL group (also known as Alias). This command requires a running Winbindd with idmap allocation properly configured. The group gid will be allocated out of the winbindd range.

SAM DELETELOCALGROUP
Delete an existing LOCAL group (also known as Alias).

SAM MAPUNIXGROUP
Map an existing Unix group and make it a Domain Group, the domain group will have the same name.

SAM UNMAPUNIXGROUP
Remove an existing group mapping entry.

SAM ADDMEM
Add a member to a Local group. The group can be specified only by name, the member can be specified by name or SID.

SAM DELMEM
Remove a member from a Local group. The group and the member must be specified by name.

SAM LISTMEM
List Local group members. The group must be specified by name.

SAM LIST [verbose]
List the specified set of accounts by name. If verbose is specified, the rid and description is also provided for each account.

SAM SHOW
Show the full DOMAIN\NAME the SID and the type for the corrisponding account.

SAM SET HOMEDIR
Set the home directory for a user account.

SAM SET PROFILEPATH
Set the profile path for a user account.

SAM SET COMMENT (comment)
Set the comment for a user or group account.

SAM SET FULLNAME
Set the full name for a user account.

SAM SET LOGONSCRIPT (script)
Set the logon script for a user account.

SAM SET HOMEDRIVE
Set the home drive for a user account.

SAM SET WORKSTATIONS
Set the workstations a user account is allowed to log in from.

SAM SET DISABLE
Set the "disabled" flag for a user account.

SAM SET PWNOTREQ
Set the "password not required" flag for a user account.

SAM SET AUTOLOCK
Set the "autolock" flag for a user account.

SAM SET PWNOEXP
Set the "password do not expire" flag for a user account.

SAM SET PWMUSTCHANGENOW [yesno]
Set or unset the "password must change" flag fro a user account.

SAM POLICY LIST
List the avilable account policies.

SAM POLICY SHOW
Show the account policy value.

SAM POLICY SET
Set a value for the account policy. Valid values can be: "forever", "never", "off", or a number.

SAM PROVISION
Only available if ldapsam:editposix is set and winbindd is running. Properly populates the ldap tree with the basic accounts (Administrator) and groups (Domain Users, Domain Admins, Domain Guests) on the ldap tree.

Group Mapping - Associando grupos linux ao windows

Ao instalar o samba usando o modo controlador de domínio com passdb smbpasswd conforme abaixo:

security = user
passdb backend = smbpasswd


Temos que basicamente criar nossos grupos primários compatíveis com os grupos do windows e para isso vou dar algumas dicas de como fazer isso com os principais, vamos lá então:

1 - Temos no windows alguns grupos e seus respectivos SIDs:

Domain admins - 512
Domain users - 513
Domain guests - 514
Domain computers - 515


existem outros, mas fica a critério vou trabalhar com os grupos acima.

O primeiro passo é criarmos grupos grupos unix com os mesmos SIDs dos informados pelo windows, para isso iremos executar os seguintes comandos abaixo:

# groupadd -g 512 domain_admins
# groupadd -g 513 domain_users
# groupadd -g 514 domain_guests
# groupadd -g 515 domain_computers


Após execurtar os comandos acima os grupos já estaram gravados no arquivo /etc/group,
para ter certesa que foram gravados ou queira visualizá-lo execute o seguinte comando:

# cat /etc/group

2 - Com os grupos padrões criados agora nosso segundo passo vai ser mapear esses grupos unix, ou seja, converter em grupos do domínio mantendo os mesmos SIDs através do uso da ferramente net groupmap.
Irei mostrar abaixo os comando para fazer isso:

Aqui segue os parâmetros do comando

[root@servidor scripts]# net groupmap addUsage: net groupmap add {rid=sid=} unixgroup= [type=] [ntgroup=] [comment=]

Vamos aos mapeamentos:

[root@servidor samba]# net groupmap add rid=512 unixgroup="domain_admins" ntgroup="domain_admins"
Successfully added group domain_admins to the mapping db as a domain group

[root@servidor samba]# net groupmap add rid=513 unixgroup="domain_users" ntgroup="domain_users"
Successfully added group domain_users to the mapping db as a domain group

[root@servidor samba]# net groupmap add rid=514 unixgroup="gomain_guests" ntgroup="domain_guests"
Successfully added group domain_guests to the mapping db as a domain group

[root@servidor samba]# net groupmap add rid=515 unixgroup="domain_computers" ntgroup="domain_computers"
Successfully added group domain_computers to the mapping db as a domain group

3 - Após feito feitos os mapeamentos dos grupos podemos executar uma série de comando que nos ajudam a veriricar a existência e gerenciamento dos mesmos, demostrarei abaixo alguns comando para isso:

PARA LISTAR TODOS OS GRUPOS MAPEADOS PARA O DOMÍNIO

root# net groupmap list
Domain Admins (S-1-5-21-391507597-2097566357-2340928898-512) -> -1
Domain Users (S-1-5-21-391507597-2097566357-2340928898-513) -> -1
Domain Guests (S-1-5-21-391507597-2097566357-2340928898-514) -> -1
Domain Computers (S-1-5-21-391507597-2097566357-2340928898-515) -> -1

PARA TERMOS UMA VISÃO MAIS DETALHADA DE UM DETERMINADO GRUPO

[root@servidor scripts]# net groupmap list verbose ntgoup="domain_admins"
Domain_Admins SID : S-1-5-21-3471986706-3557788503-1336542095-512
Unix gid : 512
Unix group: Domain_Admins
Group type: Domain Group
Comment : Domain Unix group

PARA DELETAR UM DETERMINADO GRUPO

root# net groupmap delete ntgroup="domain_admins"

Referências:

http://www.devshed.com/c/a/Administration/Authorizing-Users-in-Samba/
http://www.debianfordummies.org/wiki/index.php/Samba_PDC_Howto

quarta-feira, 15 de outubro de 2008

Starting and Stopping Oracle

Para que o Oracle inicie ou pare ao ligar ou desligar seu servidor iremos criar o script abaixo que resolverá nosso problema.

Para isso precisaremos editar o arquivo /etc/oratab e criar o respectivo script de inicialização.

Primeiro edite o arquivo /etc/oratab. O formato deste arquivo é:

SID:ORACLE_HOME:AUTO_START

Digite Y no campo AUTO_START da base de dados que você quer iniciar automaticamente, e um N para as outras que você não quer. Seu arquivo informa que vai iniciar as bases test1 and test2, e não inicia a test3:

test1:/u01/app/oracle/product/10.1.0/db_1:Y
test2:/u01/app/oracle/product/10.1.0/db_1:Y
test3:/u01/app/oracle/product/10.1.0/db_1:N

Agora nos precisamos criar o script de inicialização chamado /etc/init.d/oracle:

#!/bin/bash
# Run-level Startup script for the Oracle Instance and Listener
# chkconfig: 345 91 19
# description: Startup/Shutdown Oracle listener and instance
ORA_HOME="/u01/app/oracle/product/10.1.0/Db\_1"
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi

# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNR -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORA_OWNR -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNR -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "OK"
;;
reloadrestart)
$0 stop
$0 start
;;

*)
echo "Usage: $0 startstoprestartreload"
exit 1
esac
exit 0

Para que o script rode no boot, e você poça tratá-lo como serviço "service oracle startstop", faça o seguinte:


ln -s /etc/init.d/oracle /etc/rc.d/rc2.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc3.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc4.d/S99oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc0.d/K01oracle
ln -s /etc/init.d/oracle /etc/rc.d/rc6.d/K01oracle

Como eu adiciono o X em meu servidor

O caminho mais fácil para instalar o X ou uma GUI é usando o yum groupinstall feature.


Primeiro você pode sever todos os grupos disponíveis com o comanado:

# yum grouplist

Você pode instalar o X e o Gnome ou KDE assim:

# yum groupinstall "X Window System" "GNOME Desktop Environment"

ou

#yum groupinstall "X Window System" "KDE (K Desktop Environment)"

Você também pode querer adicionar outros grupos da lista como "Graphical Internet" or "Office/Productivity"

Instalando Oracle 10g no CentOS 5

Este artigo descreve a instalação do oracle 10g no centOS 5. Segundo a documentação do software o requisito mínimo de sistema é 1024Mb de memória RAM e 2048Mb de SWAP, SELINUX desativado e os seguintes grupos de pacotes instalados:


* GNOME Desktop Environment
* Editors
* Graphical Internet
* Text-based Internet
* Development Libraries
* Development Tools
* Legacy Software Development
* Server Configuration Tools
* Administration Tools
* Base
* Legacy Software Support
* System Tools
* X Window System

Download do Oracle

Oracle Database 10g Release 2 (10.2.0.1) Software
http://www.oracle.com/technology/software/products/database/oracle10g/index.html

Configurando o sistema para instalação

alterar o arquivo ''/etc/sysctl.conf'' com as configurações abaixo:

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000

Execute o seguinte comando para alterar os parametros do kernel:

# /sbin/sysctl -p

Adicione as seguintes linhas no arquivo /etc/security/limits.conf :

* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536

Desabilite o secure linux alterando o arquivo /etc/selinux/config:

SELINUX=disabled

Instalação de requisitos básicos para instalação do oracle

Obs: nesse exemplo o yum esta configurado com repositorios DAG e DRIES.

yum install compat-db compat-libgcc compat-libstdc++ gcc gcc-c++ glib-devel gnome-libs libaio libaio-devel openmotif21 make orbit-devel gtk+-devel imlib-devel gnome-libs-devel xorg-x11-deprecated-libs xorg-x11-deprecated-libs-devel libgcc libstdc++ binutils

Criar grupos e usuarios necessario

groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba oracle
passwd oracle

Criar os diretorios do software

mkdir -p /home/oracle/app/oracle/product/10.2.0/db_1
chown -R oracle.oinstall /home/oracle/

Editar o arquivo /etc/redhat-release substitua o conteúdo por:

redhat-4

Edite o arquivo /home/oracle/.bash_profile como usuario oracle

# su - oracle
#vi /home/oracle/.bash_profile

inserir esse conteudo no fim do arquivo .bash_profile

# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/home/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH

#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi


Instalação do Oracle 10g

Logar no Linux em algum terminal grafico como root (Ex. VNC, NX, ou localmente KDE ou GNOME), abra um terminal de console

cd /home/oracle
tar -xvzf 10201_database_linux32.zip
chown oracle -R /oracle
Executar como root: xhost + localhost
su - oracle
cd /home/oracle/database
./runInstaller

Após a execução do comando acima, aai abrir uma tela grafica com o processo de instalação, vá procedendo a instalção conforme a sua necessidade.

Finalizando instalação

Editar o arquivo /etc/oratab para iniciar o banco no startup do oracle
trocar onde esta 'N' para 'Y' no banco que deseja iniciar no dbstart ex:
dbteste:/home/oracle/app/oracle/product/10.2.0/db_1:Y
Criar o Arquivo /etc/init.d/oracle para iniciar o oracle no boot
vi /etc/init.d/oracle

colocar o seguinte conteudo no arquivo:


#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#

# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.

ORA_HOME=/home/oracle/app/oracle/product/10.2.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart

;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
;;
esac