quarta-feira, 17 de novembro de 2010

Script stop|start red5

Senhores, a algum tempo precisei implementar um servidor com red5 (Open Source Flash Server) mais informações em: http://osflash.org/red5 http://www.red5.org/wiki/Download http://code.google.com/p/red5/

Então criei meu próprio script de stop start, é extremamente simples, portanto como sempre sugestões serão bem vindas, abraço.

https://github.com/abargiela/scripts/blob/master/init_red5.sh

http://pastebin.com/NtPXe90Q

=D

sexta-feira, 29 de outubro de 2010

ffmpeg_converter.sh | Exemplo de como utlizar um esquema de lock

Bom esse é um script que acredito que teve utilidade em um caso específico, assim sendo acredito que ele pode ser inútil para muitas pessoas, de qualquer forma estou postando, pois ele pode conter informações em algum momento que ajude, ou caso eu mesmo precise novamente e apenas necessite realizar alguma adaptação.
Ele ainda não está completo portanto fica a versão 0.01a e em breve pretendo postar uma versão um pouco mais elaborada, ou seja críticas construtivas serão muito bem vindas.

Nesse mesmo script temos uma implantação de um esquema de lock, para que não haja a execução do script um em cima do outro, espero que esse esquema seja útil e sugestões de melhorias sempre são muito bem vindas :D

O Script faz o seguinte:
O usuário posta um arquivo na pasta uploads ele pega esse arquivo converte para .flv e cria também um thumb para identificar o vídeo, é bem simples mesmo.

https://github.com/abargiela/scripts/blob/master/ffmpeg_converter.sh


Abraço =D

quarta-feira, 27 de outubro de 2010

Script para monitorar conexões

Bom, necessitei monitorar as conexões vinda de uma determinada porta, então criei um script monitora_conn.sh, coisa simples, ai vai ele:

https://github.com/abargiela/scripts/blob/master/monitora_conn.sh

http://pastebin.com/GDVxZb0H

Como eu precisei deixar esse script rodando durante um tempo eu executei ele da seguinte forma:

(sh /path/script/monitora_conn.sh &)


- Para verificar o log 
tail -f /tmp/log_conn_80.txt

- Caso precise que ele pare de rodar basta:
ps auxwww | grep -i monitora_conn.sh
root     24536  0.0  0.0  63864  1136 pts/0    S    15:57   0:00 sh /path/script/monitora_conn.sh

- Pegue o PID e mate o processo.
kill -9  24536 #Óbvio, mate o processo referente ao que estiver rodando no momento, o meu é apenas ilustrativo.


- Críticas construtivas serão muito bem vindas =D

quinta-feira, 19 de agosto de 2010

quarta-feira, 18 de agosto de 2010

Aula Faculdade BD 17-Aug-2010

Bom, eu assim como muitos outros brasileiros estou fazendo faculdade obviamente visando me formar para ter uma carreira de sucesso na área que atuo, já fiz 2 anos na Universidade São Judas Tadeu de ciencia da computação(ah que saudade, bons tempos e fiz grandes amigos (Erick Vitor de Barros http://erickvitor.wordpress.com/ e Adriano Urbano Esposito http://4works.com.br/), porém parei por motivos maiore$$$$, voltei fiz 2 anos na unip, porém tive que parar pois o trabalho estava consumindo todo o meu tempo(Uma das coisas que mais me arrependo é ter parado, deveria ter tentado me formar a qualquer custo, portanto que isso sirva de lição a todos que lerem esse post), mas tudo nessa vida serve de lição e é comum aprendermos com ela. Porém agora voltei, e dessa vez é para me formar c Deus quiser e ele quer pode crer! rs

Aproveitando que reativei o blog vou postas as aulas em laboratório aqui, isso servirá tanto para que eu possa estudar quando eu quiser quanto para consulta de quem acessar esse blog, portanto estou anexando a aula dada e a resolução, abraço a todos(as).

#Aula
http://www.scribd.com/doc/36057582/document2010-08-18-082905

#Resolução
http://pastebin.com/r2UyNdLv

Lembrando que a forma que resolvi possivelmente pode ser melhorada, portanto críticas construtivas são sempre bem vindas :D

Ps.: Estou colocando a aula de java do dia 11 08 2010 de laboratório, pois não havia postado.
http://pastebin.com/gCj6Jwj5
Abs.

terça-feira, 17 de agosto de 2010

Dica: Remover scripts malicioso

Tempo atrás enfrentei alguns problemas de segurança em um ambiente com (LAMP), nos quais o atacante conseguia colocar c99shell.php c100.php whatever.php com conteúdo malicioso ou injetar um código malicioso no meio da pagina que geralmente retornava a seguinte tela para o usuário final:


Antes de instalarmos ossec, ajustes finos de segurança no PHP, foram tomadas algumas atitudes, então gostaria de compartilhar algo que parece óbvio porém acredito que mesmo assim pode ser útil.


Ajustes de permissão:
A não ser locais aonde precisam-se ser feito upload de arquivos(mesmo assim sugiro que seja feita uma verificação via programação para que verifique se o arquivo que está sendo enviado seja realmente o que você aceita) adicionar nessas pastas um .htaccess contendo
php_flag engine off
isso fará com que dentro dessa pasta não seja permitido executar nenhum .php o que aumenta a segurança do diretório.

Quanto a permissão sugiro as seguintes permissões:
Pastas que não precisam ser inseridos dados - 555
Arquivos que não precisam ser alterados - 444
Pastas que precisam ser inseridos dados - 775
Arquivos que precisam ser alterados - 664
Usar usuário.grupo (Usuário e grupo do webserver)
http://pt.wikipedia.org/wiki/Chown

Algumas dicas para ajustar a permissão mais facilmente:
find /path1/path2/ -type d -exec chmod 0555  {} \; #Pastas
find
/path1/path2/ -type f -exec chmod 0444  {} \; #Arquivos

find
/path1/path2/ -type d -exec chmod 0775  {} \; #Pastas que podem ser alteradas
find
/path1/path2/ -type f -exec chmod 0664  {} \; #Arquivos que podem ser alteradas


Com esses pontos já temos um grande avanço na segurança, porém pretendo em breve aumentar essa documentação relatando mais coisas que foram feitas para ajustar o ambiente e estabiliza-lo.

Caso você já esteja com o script infiltrado em seu servidor uma alternativa para localiza-lo é procura-lo por palavras chaves que possivelmente encontrariamos dentro dos .php como:

find /path1/path2/ -name "*.php" -exec grep "Liloss" {} \; -print
find /path1/path2/  -name "*.php" -exec grep -i "Adobe FlashPlayer" {} \; -print
find /path1/path2/  -name "*.php" -exec grep -i "system(" {} \; -print
find /path1/path2/ -name "*.php" -exec grep -i "s0n_g0ku" {} \; -print

Sendo que esses valores podem ser alterados analise o que está acontecendo em sua infra e ajuste o find para ela.

abs a todos.
:D

Dica: Erro mysql

Hoje realizando o backup de um ambiente obtive o seguinte erro:

mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `EVENTS`': Cannot proceed because system tables used by Event Scheduler were found damaged at server start (1577)

Pesquisando encontrei a solução do meu problema, executei um:

mysql_upgrade -u root -p xxx
depois
/etc/init.d/mysql stop
/etc/init.d/mysql start 
e meu problema foi resolvido, fica a dica, abs.
:D


Referências:
man mysql_upgrade

quarta-feira, 11 de agosto de 2010

Dica: HIDS - Samhain

Ontem um grande amigo Erick Vitor de Barros( http://erickvitor.wordpress.com/ ) me passou um artigo sobre invasão de rede:
http://www.eriberto.pro.br/blog/?p=376

- Lá ví uma ferramenta que o Eriberto utilizou chamada SAMHAIN para monitorar as alterações quaisquer feita, achei muito interessante e juntamente com um outro grande brother Ricardo Silveira(http://lostsoulis.blogspot.com/ | http://dominiodesconhecido.com.br/), ele implementou em seu servidor VPS, realizamos alguns testes como alteração do passwd, instalação/remoção de software e todas as mudanças foram reportadas por e-mail para ele pelo samhain, então acho que é uma leitura válida, por isso estou repassando a dica:
http://www.la-samhna.de/samhain/s_download.html

PS.: Temos uma opção nacional para isso (http://www.ossec.net/), vale a pena também pesquisar sobre ele, já utilizei e ele realmente é ninja.

Abs a todos.

:D

Dica: Mudar cor da barra superior do GNOME

- Estava eu aqui sentado, quando um brother haruo chegou comentando sobre colocar Timestamp no dmesg de um servidor, estavamos analisando quando ele falou ao ver minha barrinha superior do desktop um pedaço transparente, um pedaço na cor antiga:



"Ow Jovem não quer deixar ela transparente?", Pensei claro porque não?! Topei na hora!

É simples, ele me explicou:

- Olhe qual tema você está utilizando. O meu é o o Ambience.
- Para verificar vá em:
System -> Preferences -> Appearance, aba Theme



- Feito isso, abra um terminal e bora fazer a mágica.
vim /usr/share/themes/THEME/gtk-2.0/gtkrc
- No meu caso:
vim /usr/share/themes/Ambiance/gtk-2.0/gtkrc

- Procure pela linha:
bg_pixmap[NORMAL] = "panel_bg.png"
- Comente ela com um # na frente, salve e saia, nada mudou ainda correto?! Seguinte, para por em prática a alteração existem 2 formas:


- Trocar o tema por outro, e logo após voltar para o tema que foi feita a modificação ou fazer um logout e login novamente :D

PS.: Quanto ao timestamp que foi o objetivo da conversa, também foi ajustado :D
Uma das referências para ajustar o que ele precisava foi:
http://www.linuxtopia.org/online_books/linux_kernel/kernel_configuration/ch09s07.html
http://www.digitalprognosis.com/linuxtips/timestamping-linux-kernel-printk-output-in-dmesg-for-fun-and-profit/
- Fica ae para compartilhar com todos :D

[[ Tks D. Haruo ]]

Configuração feita em:
OS: Ubuntu 10.04
Gerenciador: GNOME 2.30.2

segunda-feira, 9 de agosto de 2010

Dica: Criar novo usuário MySQL e dar permissões nos DBs.

- Bom essa é uma dica utilizando INSERT para se adicionar um usuário ao MySQL, poderia também fazer a partir de GRANT, porém não é o assunto que vou abordar na dica.
- Basicamente você tem o que precisa ser alterado bem claro escrito em Portugues e em negrito para ser alterado, quanto ao Y or N, depende de sua necessidade alterar ou não, aconselho a nunca dar a permissão no user, mas sempre no db, acredito que isso facilita a administração, pelo menos facilita para mim, caso algum DBA veja essa dica e queria fazer alguma crítica construtiva será muito bem vinda :D



use mysql
INSERT INTO user(Host,
            User,
            Password,
            Select_priv,
            Insert_priv,
            Update_priv,
            Delete_priv,
            Create_priv,
            Drop_priv,
            Reload_priv,
            Shutdown_priv,
            Process_priv,
            File_priv,
            Grant_priv,
            References_priv,
            Index_priv,
            Alter_priv,
            Show_db_priv,
            Super_priv,
            Create_tmp_table_priv,
            Lock_tables_priv,
            Execute_priv,
            Repl_slave_priv,
            Repl_client_priv,
            Create_view_priv,
            Show_view_priv,
            Create_routine_priv,
            Alter_routine_priv,
            Create_user_priv,
            ssl_type,
            ssl_cipher,
            x509_issuer,
            x509_subject,
            max_questions,
            max_updates,
            max_connections,
            max_user_connections)
           
VALUES            ('%',
            'USUARIOdesejado',
            PASSWORD('COLOCARsenhaAQUI'),
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            '',
            '',
            '',
            '',
            0,
            0,
            0,
            0);

INSERT INTO db        (Host,
            Db,
            User,
            Select_priv,
            Insert_priv,
            Update_priv,
            Delete_priv,
            Create_priv,
            Drop_priv,
            Grant_priv,
            References_priv,
            Index_priv,
            Alter_priv,
            Create_tmp_table_priv,
            Lock_tables_priv,
            Create_view_priv,
            Show_view_priv,
            Create_routine_priv,
            Alter_routine_priv,
            Execute_priv)

VALUES            ('%',
            'NOMEdoBANCO',
            'NOMEdoUSER',
            'Y',
            'Y',
            'Y',
            'Y',
            'Y',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N',
            'N');


flush privileges;

sexta-feira, 6 de agosto de 2010

Script para instalar APC automaticamente

- Maiores informações sobre o que é o APC http://en.wikipedia.org/wiki/Alternative_PHP_Cache#Alternative_PHP_Cache

- Eu estava querendo automatizar o processo de instalação do apc, e como estava afim de fazer um script, então está ai o script, espero que seja útil para você assim como foi para mim.

- Teoricamente ele pode ser executado em qualquer distribuição linux, porém apenas testei em debian com com o php compilado(funcionou), e um fedora13 instalado a partir do yum, em ambos os casos com as dependências supridas, funcionou sem problemas, portanto caso alguém tenha coragem de testar em outras distros por favor poste para que possamos melhora-lo, abs a todos.

- Explicação básica de como utilizá-lo:
Basta copiar o conteúdo abaixo e jogar em um arquivo ex.: 

install_apc_auto.sh
chmod 755 install_apc_auto.sh
./nomeQualquer.sh
IMPORTANTE: Ter as dependências instaladas, para o funcionamento correto.
Ter acesso a internet.

https://github.com/abargiela/scripts/blob/master/install_apc.sh

http://pastebin.com/wJHCvti6

terça-feira, 20 de julho de 2010

Memcached daemon + memcache com php

Tempos atrás eu me deparei com um problema de alto consumo do banco de dados e uma das alternativas para amenizar o problema foi utilizarmos o memcached, agora a pouco tempo tive que realizar uma nova configuração do mesmo e então resolvi documentar para que tanto eu, quanto todos que acessem esse blog possam ter como base essa implementação e assim ter algum tipo de auxilio, ou sugerir melhorias para essa minha implementação.

O memcached é uma ferramenta openSource que visa a alta performance do servidor, fazendo com que tanto a aplicação quanto o servidor passem a ter uma performance satisfatória.

Aqui falaremos sobre o Daemon do memcached, e logo após do módulo do memcache para o  PHP que prove um meio de se programar de forma mais simples utilizando funções do mesmo.


####################
# MENCACHED DAEMON #
####################

- Acesse:
http://code.google.com/p/memcached/downloads/list
- Faça o download da última versão estável.

wget -c http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar -xzvf memcached-1.4.5.tar.gz

- Acesse a pasta do memcached:
cd /home/user/memcached-1.4.5/

- Para compilar você pode ajustar para uma forma que mais se ajuste para seu ambiente, você pode verificar os parâmetros através de:
./configure --help

- Em meu caso, para atender o que necessito bastou:
./configure  --prefix=/opt/memcached-1.4.5 --enable-64bit

- Enquanto compilava obtive o seguinte erro:

checking for libevent directory... configure: error: libevent is required.  You can get it from http://www.monkey.org/~provos/libevent/
If it's already installed, specify its path using --with-libevent=/dir/

- Como estou utilizando em meu ambiente debian bastou utilizar um apt-get install libevent-dev e solucionou meu problema, porém basta verificar o gerenciador de pacotes de você utiliza e adequar, ou então passar o diretório caso você possua a libevent já instalada em algum lugar de seu servidor.


- Se nenhum outro warning aparecer, basta executar um:
make && make install

- E sucesso, seu memcached está instalado em /opt/memcached-1.4.5

- Agora você se pergunta.... o que fazer?

- Vamos dar um start no serviço! Para isso existem diversos scripts espalhados na internet, e também o próprio script que está no .tar.gz do memcached.
Eu optei nessa dica por criar um script simples, portanto ele precisa de melhorias e está aberto a criticas construtivas.

Link para o script:
https://github.com/abargiela/scripts/blob/master/init_memcached.sh
- Mova o script memcached-init para /etc/init.d/memcached-init, e faça um link simbolico para o seu rc, para verificar qual você utiliza, de um rulevel:
N 2
ln -s /etc/init.d/memcached-init  /etc/rc2.d/S99memcached-init

Considero as 2 formas acima correta, portanto verifique qual a melhor para você.

- Ajuste a permissão para nobody.
chown nobody.root /opt/memcached-1.4.5/

- Caso queria verificar o log, ele se encontra em /opt/memcached-1.4.5/log/memcached_log.txt
- É basicamente isso não tem muito segredo, qualquer dúvida estamos ai.



#####################
# Extension MEMCACHE PHP  #
#####################

- Acesse http://pecl.php.net/package/memcache
- Faça o download da ultima versão estável.

wget -c http://pecl.php.net/get/memcache-2.2.5.tgz

- Descompacte o pacote:
tar -xzvf memcache-2.2.5.tgz

- Acesse a pasta:
cd  memcache-2.2.5

- Agora o processo é simples, mantenha-se dentro da pasta do memcache, e execute:
--> phpize (obs.: caso você tenha compilado o php e especificado o prefix, o caminho do phpize pode variar)
- No meu caso:
/opt/php/bin/phpize
- Depois:
./configure --with-php-config=/opt/php/bin/php-config (também é necessário especificar)
--> Peguei um erro de compilação pois o memcache necessitava da ZLIB instalei zlib1g-dev  e compilou normalmente, portante fique atento antes de continuar a compilação para corrigir os eventuais erros.
- Caso não de erro:

make && make install

- Ao final irá aparecer algo como:
Installing shared extensions:     /opt/php/lib/php/extensions/no-debug-non-zts-20060613/

- Pegue esse caminho pois o memcache.so estará la vamos até o php.ini:
/opt/php-5.2.6/lib/php.ini (no meu caso esse é o path do php.ini)
- Vá até a parte das extensions e adicione:
extension=/opt/php-5.2.6/lib/php/extensions/no-debug-non-zts-20060613/memcache.so
- Salve e saia.
- Reinicie seu apache.
/opt/apache/bin/apachectl restart
- Para verificar se o memcache está funcionando como o esperado:
/opt/php/bin/php -i | grep -i --color memcache
- O retorno do comando acima deverá ser algo similar a:
memcache
memcache support => enabled
memcache.allow_failover => 1 => 1
memcache.chunk_size => 8192 => 8192
memcache.default_port => 11211 => 11211
memcache.default_timeout_ms => 1000 => 1000
memcache.hash_function => crc32 => crc32
memcache.hash_strategy => standard => standard
memcache.max_failover_attempts => 20 => 20

Referencias:
http://pecl.php.net/package/memcache
http://code.google.com/p/memcached/wiki/NewStart?tm=6
http://www.php.net/memcache

:D

Testa multiplos host telnet bash

Tive que realizar alguns testes em um servidor para ver se as regras de firewall haviam sido liberadas de acordo com o que havia sido solicitado, porém eram 5 servidores e  15 hosts diferentes, sendo que teria que testar porta 80 e 443 de cada um deles, então resolvi tornar automático. É um script extremamente simples, porém acho que nunca é demail compartilhar.

https://github.com/abargiela/scripts/blob/master/telnet_test.sh