Archive for the 'Debian' Category

Gerênciando pacotes compilados com Checkinstall

August 27th, 2009 | Category: Debian, Red Hat, SUSE

Uma das maiores difículdades em sistemas Linux é o gerênciamento de pacotes compilados no sistema (são chatos de remover e complicados de atualizar).

Para corrigir este problema podemos utilizar o checkinstall, que faz com que pacotes compilados possam ser instalados, desinstalados e atualizados pelas ferramentas nativas para gerênciamento de pacotes (rpm, dpkg e pkgtool).
Read more

Comments are off for this post

Magic SysRq key

July 29th, 2009 | Category: Debian, Red Hat, SUSE

Visão geral

É um conjunto de teclas “mágicas” que faz com que o kernel responda independentemente que esta a fazer, a não ser que o mesmo esteja completamente bloqueado.
Isto faz com que possamos desligar o sistema sem corromper os file systems ou até mesmo descobrir a causa do kernel panic.
Read more

Comments are off for this post

SSH timeout for connection idle

June 01st, 2009 | Category: AIX, Debian, HP-UX, Red Hat, SUSE, Solaris

Recentimente percebi que em alguns servidores que eu estava logando quando uma conexão ssh ficava aberta por mais de 5 minutos sem que eu tomasse nenhuma ação, a mesma se encerrava automaticamente por inatividade.

Para solucionar este problema, encontrei duas opções:

1. Configuração realizada no servidor SSH
Read more

Comments are off for this post

SSH Tunnel Proxy

May 30th, 2009 | Category: AIX, Debian, HP-UX, Red Hat, SUSE, Solaris

O conceito é praticamento o mesmo do X11 Forward, com esta opcão do SSH direcionamos uma porta do servidor remoto para qualquer porta local.

Exemplo, para direcionar a porta 25 do servidor para a porta 3000 local mantendo a conexão por 60 segundos:
Read more

Comments are off for this post

SSH: X11 Forwarding

May 30th, 2009 | Category: AIX, Debian, HP-UX, Red Hat, SUSE, Solaris

Com esta opção no SSH podemos redicionar conexão ao X Window no servidor para o servidor X local.

Ao realizar a conexão no servidor X Remoto a conexão é direcionada por default ao DISPLAY :10

Para isto realizamos a seguinte configuração nos arquivos abaixo:
Read more

Comments are off for this post

SSH sem senha

May 30th, 2009 | Category: AIX, Debian, HP-UX, Red Hat, SUSE, Solaris

Primeiro precisamos gerar um par de chaves públicas/privadas para autenticar com chaves RSA2 ou DSA.

RSA:
ssh-keygen -t rsa
DSA:
ssh-keygen -t dsa

As chaves são gerados no $HOME do usuário que você esta utilizando.
Read more

Comments are off for this post

Chrooted Shell com PAM (Jail)

June 22nd, 2008 | Category: Debian

Primeiro instale o pacote libpam-chroot

# apt-get install libpam-chroot

Configure o ambiente chrooted. No exeplo estou utilizando o user admin e o jail em /home/chroot.
Adicione a linha abaixo em /etc/security/chroot.conf

admin   /home/chroot

Crie o usuário admin normalmente:

# useradd -d /home/admin -s /bin/sh admin
# passwd admin

Insira a linha abaixo nos arquivos /etc/pam.d/ssh e /etc/pam.d/login.

# Chroot features
session    required   pam_chroot.so debug

Depois finalizamos o ambiente chrooted executando scripts que se encontram em /usr/share/doc/libpam-chroot/examples/

# cd /usr/share/doc/libpam-chroot/examples/
# chmod 750 *.sh

Devemos fazer pequenas correções em dois scripts

1. No script setup-chrootdir-shell.sh

Alterar as linhas que contenham:

/bin/ln

por

/bin/cp

2. No script setup-chrootdir-template.sh

Alterar a variável DIRECTORIES para:

DIRECTORIES=”bin dev lib”

3. O scripts setup-chrootdir-rsync.sh, deve ser executado apenas se desejar utilizar o “rsync”

Executar os scripts como abaixo:

./setup-chrootdir-shell.sh /home/chroot/
./setup-chrootdir-template.sh /home/chroot/

Caso deseje utilizar rsync

./setup-chrootdir-rsync.sh /home/chroot/

Filizando copiamos o passwd  e o PAM

# cd /home/chroot
# mkdir -p etc/pam.d/
# cp /etc/passwd etc/
# cp -r /etc/pam.d/* etc/pam.d/

OBS.: Se estive utilizando o shell “/bin/sh”

# cd /home/chroot
# cp /bin/sh bin/
# ldd bin/sh
linux-gate.so.1 =>  (0xffffe000)
libncurses.so.5 => /lib/libncurses.so.5 (0xb7efd000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7ef9000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7dc7000)
/lib/ld-linux.so.2 (0xb7f46000)
# cp /lib/libncurses.so.5 lib/
# cp /lib/ld-linux.so.2 lib/

Se durante o logon a conexão finalizar com a seguinte mensagem “Conection Closed”, altere o /etc/ssh/sshd_config conforme abaixo”:

UsePrivilegeSeparation yes

para

UsePrivilegeSeparation no

NOTA:

Algumas vezes faz se necessário as bibliotecas libnss_*

# cp /lib/libnss_* lib/

Comments are off for this post

Chrooted Shell com RSSH (Jail)

June 22nd, 2008 | Category: Debian

Primeiro vamos instalar o pacote do rssh.

# apt-get install rssh

Depois criamos a seguinte configuração no arquivo /etc/rssh.conf:

logfacility = LOG_USER
allowscp
allowsftp
umask = 022
user=admin:011:00011:”/home/chroot”

Onde os paramêtros são:

user=<login>:<umask>:<service>:”<chroot directory>”

Verifique se no arquivo /etc/shells existe a entrada “/usr/bin/rssh”.

Agora montamos o ambiente do usuário em chroot (Jail)

# mkdir /home/chroot
# cd /home/chroot
# mkdir bin/
# mkdir dev/
# mkdir -p etc/pam.d
# mkdir -p home/admin
# mkdir -p usr/bin
# mkdir -p lib/tls/i686/cmov
# mkdir -p usr/lib/rsh
# mkdir -p usr/lib/openssh
# mkdir -p usr/lib/i686/cmov

Depois é necessário copiar os programas e as bibliotecas correspondentes de cada um.

# cp /etc/passwd etc/
# cp -r /etc/pam.d/* etc/pam.d/
# cp /usr/bin/scp usr/bin/
# cp /usr/bin/sftp usr/bin/
# cp /usr/bin/rssh usr/bin/
# cp /usr/lib/rssh_chroot_helper usr/lib/
# cp /usr/lib/rssh/rssh_chroot_helper usr/lib/
# cp /usr/lib/sftp-server usr/lib/
# cp /usr/lib/openssh/sftp-server usr/lib/openssh/

Agora basta copiar as bibliotecas referente a cada programa, para isto use o comando “ldd”. De acordo com o exemplo abaixo

# ldd /usr/bin/scp
linux-gate.so.1 =>  (0xffffe000)
libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7f75000)
libcrypto.so.0.9.8 => /usr/lib/i686/cmov/libcrypto.so.0.9.8 (0xb7e3b000)
libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7e36000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7e22000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7e0c000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb7dde000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb7dc2000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb7d46000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7d20000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb7d1d000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb7d18000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7be7000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7be3000)
/lib/ld-linux.so.2 (0xb7f90000)
#

Como processo é demorado e repedito, utilize o script no link abaixo:

Download make_jail.sh

Por último vamos criar o usuário.

# useradd -d /home/chroot/home/admin -s /usr/bin/rssh
# password admin

Caso user já exista

# usermod -d /home/chroot/home/admin -s /usr/bin/rssh admin

OBS.:

Lembre-se de atualizar o passwd para o ambiente chrooted.

Finalizamos com o restart do ssh.

service sshd restart

NOTA:

Algumas vezes faz se necessário as bibliotecas libnss_*

# cp /lib/libnss_* lib/

Colocar permissão de SUID para o arquivo rssh_chroot_helper

# chmod 4755 /usr/lib/rssh_chroot_helper
# chmod 4755 /usr/lib/rssh/rssh_chroot_helper

Caso contrário teremos a seguinte mensagem no syslog.

Jun 21 18:01:17 server rssh_chroot_helper[3120]: chroot() failed, 2: Operation not permitted

Se durante o logon a conexão finalizar com a seguinte mensagem “Conection Closed”, altere o /etc/ssh/sshd_config conforme abaixo”:

UsePrivilegeSeparation yes

para

UsePrivilegeSeparation no

Comments are off for this post

How to Find

April 30th, 2008 | Category: AIX, Debian, HP-UX, Red Hat, SUSE, Solaris

Busca por nome de arquivos e/ou diretórios (pode-se realizar busca com expressões regulares)

  • Case sensitive

# find / -name “*.sh” -print
# find / -name apache2 -print
# find / -name “[Bb]ind*” -print

  • Case insensitve

# find / -iname “*lock*” -print

Busca com dois parâmetros (AND/OR)

  • Arquivos .sh e .ksh

# find / \( -name \*.sh -a -name \*.ksh \) -print

  • Arquivos .sh ou .ksh

# find / \( -name \*.sh -o -name \*.ksh \) -print

Busca por owner

  • User ID

# find / -user www

  • Group ID

# find / -group bin

Busca por tipo de permissões

  • Octal

# find /usr/sbin/ -perm +0500
# find /usr/sbin/ -perm -0664
# find /usr/sbin/ -perm 0775

  • Symbolic

# find /usr/sbin/ -perm +ug=rx
# find /usr/sbin/ -perm -u=rw
# find /usr/sbin/ -perm o=r

Busca apenas no diretório corrente

# find /usr -name “*.txt” -maxdepth 1 -print

Busca no diretório corrente e desce um subdiretório

# find /usr -name “*.txt” -maxdepth 2 -print

Busca apenas no file system corrente (existindo por exemplo um file system /usr/aap, este será excluído da busca)

# find /usr -xdev -name “*.txt” -print

Busca mantendo no diretório corrente (não é preciso utilizar -depth)

# find /usr -name “*.txt” -prune

Busca por tipo

  • Somente arquivos

# find / -name apache2 -type f -print

  • Somente diretórios

# find / -name apache2 -type d -print

  • Somente links

# find / -name apache2 -type l -print

  • Arquivos no home do usuário com 2 hard links

# find $HOME -type f -links 2

  • Arquivos no home do usuário com mais de 1 hard link

# find $HOME -type f -links +1

Busca por tamanho de arquivo

  • Arquivos maiores que 5M

# find / -size +5000 -print

  • Arquivos menores que 5M

# find / -size -5000 -print

  • Arquivos exatamente igual a 5M

# find / -size 5000 -print

Busca de arquivos por data de: acesso, criação e modificação

  • Arquivos acessados com mais de 3 dias

# find /etc -atime +3 -print

  • Arquivos acessados com menos de 3 dias

# find /etc -atime -3 -print

  • Arquivos modificados com mais de 5 dias

# find /etc -mtime +5 -print

  • Arquivos modificados com menos de 5 dias

# find /etc/ -mtime -5 -print

  • Arquivos criados com mais de 10 dias

# find /var -ctime +10 -print

  • Arquivos criados com menos de 10 dias

# find /var -ctime -10 -print

  • Arquivos modificados exatamente há 7 dias

# find /etc -mtime 7 -print

  • Arquivos acessados nas útimas 24 horas

# find /etc -atime 0 -print

Busca de arquivos e/ou diretórios com exceção (imprime tudo exceto parâmetro informado)

# find /usr ! -name “*lib*” -print
# find /usr -not -name “*lib*” -print

Busca com execução de comandos na saída

  • Lista detalhe dos arquivos encontrados (equivalente a opção “ls -dils”)

# find /var/log/ -name “*.log” -ls

  • Excluir todos os arquivos no /tmp com mais de 3 dias

# find /tmp/ -ctime +3 -exec rm -rf {} \;

  • Excluir todos arquivos no /tmp com extensão .lock sem confirmação

# find /tmp/ -name *.lock -exec rm -rf {} \;

  • Exlcluir todos arquivos no /tmp com extensão .lock com confirmação

# find /tmp/ -name *.lock -ok rm -rf {} \;

  • Excluir arquivos com nome core (-delete apenas para GNU find)

# find / -name “*core*” -type f -delete

  • Compactar todos arquivos no /tmp com extensões .tmp e .bak

# find /tmp/ \( -name \*.tmp -o \*.bak \) -exec gzip {} \;

  • Busca arquivos dentro do homedir com permissões 664 e altera para 775

# find $HOME -xdev type f -perm 664 -exec chmod 775 {} \;

Nota: Abaixo seguem alguns exemplos de expressões regulares e formatação do resultado da busca.

  • Busca todos arquivos criados com menos de 5 dias, exceto arquivos que contenham “svn” no nome.

# find . -ctime -5 -not -regex ‘.*svn.*’ -print

  • Busca arquivos modificados a mais de uma semana e que tenham as extensões .csh ou .ksh

# find . -mtime +7 -regex ‘.*[ck]sh*’

  • Formanto da saída da busca

# find . -printf “%TY%TW:%p\n”
# find . -printf ‘%TY-%Tm-%Td %TH:%TM:%TS %p\n’
# find . -printf ‘%p %a %m\n’
# find . -printf ‘Name: %16f Size: %6s\n’

Importante: Descrição dos comandos acima.

%Ax – data do último acesso ao arquivo, formato da mesma definido em “x”.
%Tx – data da última modificação do arquivo, formato da mesma definido em “x”.

d – dia do mês
D – data (dd/mm/aa)
h – mês (nome)
H – hora
m – mês (número)
M – minutos
S – segundos
T – hora (hh:mm:ss)
w – dia da semana
W – número da semana no ano
y – ano (2 digítos)
Y – ano (4 digítos)

%a – data e hora do último acesso ao arquivo
%f – nome do arquivo (exclui PATH)
%m – permissões do arquivo (symbolic)
%p – nome do arquivo (inclui PATH)
%s – tamanho do arquivo (bytes)

\n – quebra de linha
\t – tabulação horizontal
\v – tabulação vertical

OBS.: Neste artigo coloquei os arquivos que tenho utilizado diariamente, pois o comando find tem inúmeras possíbilidades, para explorá-las, basta dar uma lida no man. E lembrar também que todos os comandos poder ser mesclados, exemplos: busca por extensão de arquivo, permissão e mais de x dias acessados ou, busca por extensão x e y, tamanho e tipo de arquivo e etc…

Comments are off for this post

Backup centralizado com rsync

October 17th, 2007 | Category: Debian

Primeiro precisamos instalar o servidor de backup rsync

apt-get install rsync

Depois insira as configurações abaixo em /etc/rsyncd.conf

vim /etc/rsyncd.conf
# user/group de execução do daemon
uid = user
gid = user
log file = /var/log/rsyncd.log
# módulo de backup
[modname]
# diretório do backup, se necessário crie outros módulos
path = /home/user/backup
# usuários autorizados para o backup
auth users = user
# arquivo de usuário e senha
secrets file = /etc/rsyncd.secrets
# permite gravação
read only = false
# evita que as sessões de backup sejam listadas para outros usuários
list = false
hosts allow = 192.168.0.0/24
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
# eof

Depois de finalizada as confs, é necessário criar usuário e senha.

vim /etc/rsyncd.secrets
user:senha
chmod 600 /etc/rsyncd.secrets
chmod 600 /etc/rsync.conf

E por último habilite a inicialização do servidor rsync

vim /etc/default/rsync
RSYNC_ENABLE=true

Basta apenas inicializar o seu servidor de backup

/etc/init.d/rsyncd start

Para o rsync client não é necessário realizar nenhuma configuração, crie um arquivo com a senha do usuário de backup no rsync server

vim /etc/rsync.secrets
senha
chmod 600 /etc/rsync.secrets

Depois execute o comando para backup

rsync -Cravzp –delete –password-file=/etc/rsync.secrets /backupdir user@host::modname/

OBS.:

* Para cliente rsync Windows pode-se utilizar o DeltaCopy

* É possívelo realizar as criações de mais diretórios de backup, crie mais uma sessão no seu arquivo de configuração com por exemplo “[modname2]” e realize pequenas alterações como diretório para backup, usuário e senha. Não sendo necessário a criação de outro arquivo rsyncd.secrets, pois os usuários serão controlados através da permissões de acesso e da diretiva “auth users”.

* Também é possível realizar cópias com o rsync através do ssh com o seguinte comando:

rsync -Cravzp /diretorio_origem sshuser@host:/diretorio/destino

* É por útimo podemos também sincronizar diretórios locais

rsync -Cravzp /diretorio/current /diretorio/sync

Comments are off for this post

Next Page »