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:
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:
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.
Sendmail: My unqualified host name …
Geralmente encontramos no Sendmail o error log abaixo:
Nov 15 08:19:56 server sendmail[314]: [ID 702911 mail.crit] My unqualified host name (localhost) unknown; sleeping for retry Nov 15 08:19:56 server sendmail[315]: [ID 702911 mail.crit] My unqualified host name (localhost) unknown; sleeping for retry Nov 15 08:20:57 server sendmail[314]: [ID 702911 mail.alert] unable to qualify my owndomain name (localhost) -- using short name Nov 15 08:20:57 server sendmail[315]: [ID 702911 mail.alert] unable to qualify my owndomain name (localhost) -- using short name
Red Hat 5: Missing ext2online
No RHEL 5 a funcionalidade do comando ext2online foi migrada para o comando resize2fs.
Portanto, ainda podemos realizar o aumento dos file systems on-line, conforme abaixo:
resize2fs /dev/rootvg/tmplv
OBS.:
Porém, reduzir file system que encontra-se em uso apenas off-line.
Solução para mensagem “Terminal too wide”
No Solaris algumas vezes encontramos este erro quando utilizamos o editor VI:
Terminal too wide
Utilizamos o comando abaixo:
# /usr/openwin/bin/resize
Se mesmo assim não funcionar, para solucionar este problema precisamos incrementar o número de colunas utilizando o comando abaixo:
# stty columns 120
OBS.:
Uma melhor solução é instalar o VIM
Administração de usuários HP-UX
Abaixo segue uma descrição dos principais comandos de administração de usuários no HP-UX (estes comandos são semelhantes aos demais Sistemas Operacionais Unix).
- Criar novos usuários
# useradd -m login
- Modificar conta de usuário (modifica grupo sencundário de um determinado login)
# usermod -G sencond_group login
- Removendo uma conta de usuário
# userdel login
# userdel -r login (remove também o home do usuário)
- Criar novo grupo
# groupadd group
- Modificar grupo
# groupmod -n groupname newgroupname
- Excluir um grupo
# groupdel groupname
- Checar erro de syntaxe no arquivo /etc/passwd
# pwck
- Checar erro de syntaxe no arquivo /etc/group
# grpck
- Configurando password para uma conta de usuário
# passwd login
- Configurando null password para uma conta de usuário
# passwd -d login
- Forçar troca de password no próximo login
# passwd -f login
- Bloqueio de uma conta de usuário (disable/lock)
# passwd -l login
ou
# /usr/lbin/modprpw -l -x login
- Liberação de uma conta de usuário (enable/unlock)
# /usr/lbin/modprpw -l -k login
- Reset de password
# /usr/lbin/modprpw -x login
- Reset do Password Age
# /usr/lbin/modprpw -v login
OBS.:
/etc/profile - sistema de login script
~/.profile - user login script
~/.shrc OR ~/.kshrc OR ~/.cshrc - shell startup script (executado sempre que usuário efetua um login)
/etc/skel/ - Diretório padrão de onde todos os arquivos são copiados quando um novo usuário é criado.
Configurando Automount
Para este exemplo vou utilizar um file system exportado via NFS e outro via SAMBA.
Editamos o arquivo auto.master, para definir time out e onde os compartilhamentos serão montados.
No exemplo abaixo, todos os compartilhamentos configurados no arquivo auto.nfs serão montados em /mnt/shared e com um time out de 60 segundos.
/mnt/shared /etc/auto.nfs --timeout 60
/mnt/shared /etc/auto.smbfs --timeout 60
Feito isso editamamos o arquivo auto.nfs que contém todos os mapeamentos exportados via NFS.
/www -rw,soft,intr server:/exports/www
Depois editamamos o arquivo auto.smbfs que contém todos os mapeamentos exportados via SAMBA.
/SMB -fstype=smbfs,username=xxxx,password=xxxx ://server/shared
Finalizando basta realizar um start no daemon autofs.
service autofs start
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_*
# 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":
UsePrivilegeSeparation yes
para
UsePrivilegeSeparation no