Archive for the 'Debian' Category
Gerênciando pacotes compilados com Checkinstall
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
Magic SysRq key
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
SSH timeout for connection idle
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
SSH Tunnel Proxy
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
SSH: X11 Forwarding
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
SSH sem senha
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
Chrooted Shell com PAM (Jail)
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_*
Comments are off for this post# cp /lib/libnss_* lib/
Chrooted Shell com RSSH (Jail)
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:
Por último vamos criar o usuário.
# useradd -d /home/chroot/home/admin -s /usr/bin/rssh
# password adminCaso 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”:
Comments are off for this postUsePrivilegeSeparation yes
para
UsePrivilegeSeparation no
How to Find
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 postBackup centralizado com rsync
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
Comments are off for this postrsync -Cravzp /diretorio/current /diretorio/sync