Servidor SFTP(chrooted, sem shell) – Somente SFTP

O artigo original foi conseguido no site do Dicas-L da Unicamp

Colaboração: Jean Carlos Oliveira Guandalini (http://www.linuxbsd.com.br)

O SFTP criptografa o tráfego de informações de sua máquina com o servidor,
aumentando sua segurança contra intrusos que possam pegar as informações no
meio do caminho, já que o FTP convencional trabalha com o clear text ou
seja sem nenhum tipo de criptografia nas informações.

Este tutorial baseia-se que você já tenha instalado um servidor openssh
funcionando corretamente. Não iremos fazer uma explicação de como instalar
um servidor desse tipo, por já vir instalado em vários servidores por padrão
e também ter bastante documentação sobre o mesmo.

Estou utilizando um Gentoo Linux, mas vou procurar fazer o melhor possível
para que possa ser aplicado em outras distribuições.

Primeiramente instale o rssh(Restricted RSSH Shell), e adicione uma lista
de shells.

No Gentoo:
==========

# emerge rssh

Debian
======

# apt-get install rssh

Em outras distribuições que não tiverem binários você pode baixar os fontes
do rssh e compilar ele:

# links http://www.pizzashack.org/rssh/downloads.shtml

Leia a documentação dele que você irá saber como instalá-lo, não tem segredo
algum.

Depois do programa instalado vamos jogar o rssh para as shell válidas:

# echo /usr/bin/rssh >> /etc/shell

E vamos modificar o arquivo de configuração dele para que possa funcionar
em nosso projeto:

/etc/rssh.conf
logfacility = LOG_USER
allowscp
allowsftp
umask = 022
chrootpath=”/home”

OBS: Caso você queira desabilitar o sftp ou scp, basta comentar as linhas referentes à eles.

Agora iremos fazer nosso ambiente chroot:

Os arquivos envolvidos devemos copiar para nosso /home/bart o qual é nosso diretório chrooted .

# cd /home/bart
# mkdir p usr/bin
# cp /usr/bin/scp usr/bin
# cp /usr/bin/rssh usr/bin
# mkdir p usr/libexec
# mkdir p usr/lib/misc
# cp /usr/lib/misc/rssh_chroot_helper usr/lib/misc
# cp /usr/lib/misc/sftp-server usr/lib/misc

OBS: Os paths dos programas e arquivos podem variar de acordo com cada
distribuição.

Agora que você copiou os arquivos vamos copiar as bibliotecas que estes
programas utilizam, e faremos isso com o programa ldd:

# ldd /usr/bin/scp
linux-gate.so.1 => (0xffffe000)
libresolv.so.2 => /lib/libresolv.so.2 (0xb7f07000)
libcrypto.so.0.9.7 => /usr/lib/libcrypto.so.0.9.7 (0xb7e05000)
libutil.so.1 => /lib/libutil.so.1 (0xb7e01000)
libz.so.1 => /lib/libz.so.1 (0xb7def000)
libnsl.so.1 => /lib/libnsl.so.1 (0xb7dda000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7dac000)
libc.so.6 => /lib/libc.so.6 (0xb7c90000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c8b000)
/lib/ld-linux.so.2 (0xb7f1e000)

OBS: Essa saída do ldd pode variar de com cada distribuição.

Vamos copiar as bibliotecas para os diretórios corretos:

# cd /home/bart
# mkdir lib
# cp /lib/libresolv.so.2 lib/
# cp /lib/libutil.so.1 lib/
# cp /lib/libz.so.1 lib/
# cp /lib/libnsl.so.1 lib/
# cp /lib/libcrypt.so.1 lib/
# cp /lib/libc.so.6 lib/
# cp /lib/libdl.so.2 lib/
# cp /lib/ld-linux.so.2 lib/
# mkdir -p usr/lib
# cp /usr/lib/libcrypto.so.0.9.7 usr/lib

Agora rode o ldd para os outros programas copiados para seu ambiente chroot:

# ldd /usr/bin/rssh
# ldd /usr/lib/misc/rssh_chroot_helper
# ldd /usr/lib/misc/sftp-server

Normalmente vão ser as mesmas bibliotecas, algumas que podem faltar são as seguintes:

# cp /lib/ld-linux.so.2 lib
# cp /lib/libcrypt.so.1 lib

Finalmente vamos criar nosso usuário:

# useradd d /home/bart s /usr/bin/rssh bart

Caso você já tenha esse usuário no servidor basta modificar o shell dele:

# usermod s /usr/bin/rssh bart

Agora quando você acessar o servidor via sftp seu usuário ficara trancado
no seu diretório home para enviar e receber arquivos e quando ele tentar
acessar o servidor via ssh normal aparecerá a seguinte mensagem:

This account is restricted by rssh.
Allowed commands: scp sftp

If you believe this is in error, please contact your system administrator.

Por enquanto é isso aí pessoal, em caso de dúvidas procure nosso fórum para
mais esclarecimentos: http://www.linuxbsd.com.br/forum

Este conteúdo é uma tradução com alguns comentários meus baseado no wiki do
gentoo: http://gentoo-wiki.com/HOWTO_SFTP_Server_(chrooted,_without_shell)

Posted in Sem categoria

Samba como PDC da Rede

Artigo retirado do site Dicas-L

Hoje falarei mais um pouco sobre o Samba, desta vez com ele atuando como PDC da rede: Como validar usuário/senha, colocar um máquina com Windows XP na rede e permitir que o usuário altere sua senha.

Usei o Red Hat 8.0 rodando o Samba 2.2.8a. Abaixo segue meu /etc/samba.conf:

####################################
# Arquivo de Configuracao do SaMBa
# Por Tiago Cruz
# tiagocruz (a) linuxdicas.com.br
# Atualizado em 03/10/2003
####################################

[global]
# Grupo de trabalho/ Dominio
workgroup = TUX
# Nome da maquina do ambiente de rede
netbios name = MAQ_100
netbios aliases = MAQ_100
# Comentario no ambiente de rede
server string = Servidor de dados – Samba Server %v
# Desabilitando o UTF (/etc/sysconfig/i18n) somado a estas opções o SaMBa 2.x
# consegue trabalhar corretamente com a acentuação dos arquivos no RH
client code page = 850
character set = ISO8859-1
# Para conexoes com maquinas > W95
encrypt passwords = Yes
# Tamanho minimo da senha
min passwd length = 4
# Para alterar a senha pela estacao
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %nn *Retype*new*password* %nn *passwd:*all*authentication*tokens*updated*successfully*
# Sincronizar a senha do SaMBa com a do Linux. Desabilite caso tenha problemas
# com a sincronizacao em maquinas W2k
unix password sync = Yes
# Local do arquivo de log
log file = /var/log/samba/%m.log
# Tamanho maximo do mesmo
max log size = 100
# Desempenho
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# Arquivo de lote que sera executado no logon
logon script = todos.bat
# Opcoes para PDC da rede
domain logons = Yes
os level = 64
preferred master = Yes
domain master = Yes
printing = lprng
# Para que os arquivos criados fiquem em minusculo
preserve case = no
short preserve case = no
default case = lower

# Diretorio onde ficara o arquivo de lote definido acima
[netlogon]
comment = Network Logon Service
path = /home/netlogon
write list = tiago
guest ok = Yes

# Diretorio /home/usuario, somente o dono do mesmo pode acessar
[homes]
comment = Home Directories
valid users = %U
read only = No
force create mode = 0755
force directory mode = 0755
browseable = No

[log]
comment = Log’s de Backup
path = /dados/log

[CdRom]
comment = Drive de CD-ROM do Servidor
path = /mnt/cdrom

[Drive_f]
comment = Drive de Dados do Servidor
path = /dados/drive_f
force user = nobody
force group = nobody
read only = No
force create mode = 0777
force directory mode = 0777
guest only = Yes

# Aqui deve ser aplicado algumas restricoes por usuario
[GPS614]
comment = Drive de Dados da GPS
path = /dados/GPS614
valid users = tiago,marcio,andrea,ricardo,regina,mislaine
force group = gps
read only = No
force create mode = 0770
force directory mode = 0770

Aqui cabe uma observação que recebi do Sr. Ronaldo Yoyart:

“Gostaria de acrescentar que nos últimos exemplos citados do smb.conf, não menciona um linha importantíssima, na qual permite que o samba crie usuário no linux (apenas cria o usuário sem senha e direciona o terra (null)) automaticamente.

Isso serve quando uma maquina Windows2000 ou XP, entra para um domínio, após clicar para entrar no dominio, o windows pergunta um usuário e senha, mas se a maquina (nome da maquina) não estiver criada como usuário com um $ no final , a maquina não entra e assim não roda login script.

Segue a linha que falta:

add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false -M %u

Ronaldo, muito obrigado pela observação 😉

Para quem não sabe, as linhas que começam com uma tralha (‘#’) são apenas comentários, o programa irá ignora-las em sua execução

Continuando…

Esse servidor em questão já é capaz de validar os usuários, bastando o mesmo informar o Dominio “TUX”. Inclusive o usuário pode alterar sua senha pelo “Painel de Controle -> Senhas -> Alterar outras Senhas” ou com a famosa combinação de “CTRL+ALT+DEL” no caso do XP.

Para isso, é necessário cadastrar o usuário no Linux e no Samba:

# useradd tiago
# smbpasswd -a tiago

Caso você á tenha uma lista com seus usuários, poderá usar algum script para cadastra-los no Linux e no Samba. No meu caso eu tinha um arquivo separado por “|” contendo o login, o nome completo e grupo:

$ cat king.txt
alessandra|Alessandra R. Graciano|contabilidade
alessandra-o|Alessandra Oliveira|diretoria
ana paula|Ana Paula|fiscal
ana rosa|Ana Rosa|juridico
anderson|Anderson|pessoal
andrea|Andrea|pessoal

O script segue abaixo, use-o por sua conta e risco.
Alterações e melhorias no mesmo são bem vindas 🙂

$ cat adduser.pl
##########################
# Criado por Tiago Cruz
# tiago@grupoking.com.br
# em Feveriro/ 2003
##########################
#!/usr/bin/perl

$file=”king.txt”;
if ( -e $file ) {
open(arq, $file) or die “Não foi possivel abrir o arquivo”;
@linhas = ;
close(arq);
$passwd=senha;
$i=0;
while (@linhas[$i]) {
($login, $nome, $depto) = split(/|/, @linhas[$i]);
system “/usr/sbin/useradd -p $passwd -c ‘$nome’ $login -G $depto”;
system “/usr/bin/smbpasswd -a $login $passwd”;
sleep(0.5);
$i++;
}
}3

Colocando o Win95 na rede:

Alterar no registro:

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesVxDVNETSUP]
“EnablePlainTextPassword”=dword:0x00000001

Colocando o Win2000 na rede:

Siga os mesmos passos do WinXP, e caso não consiga trocar sua senha experimente retirar a linha “unix password sync” do seu arquivo de configuração e reiniciar o SaMBa (dica de Angelo Costa).

Colocando o WinXP na rede:

1-) Cadastrar senha de root no samba:

# smbpasswd -a root

2-) Cadastrar máquina XP:

Observe que a conta criada tem um sheel invalido (/bin/false) e também um home nulo (/dev/null) para que nenhum engraçadinho faça login usando essa conta 🙂

# useradd -d /dev/null -c MAQ_709 -m -s /bin/false MAQ_709$
# smbpassword -m -a MAQ_709

3-) Alterar Registro da estação:

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetlogonParameters]
“DisablePasswordChange”=dword:00000000
“maximumpasswordage”=dword:0000001e
“requiresignorseal”=dword:00000000
“requirestrongkey”=dword:00000000
“sealsecurechannel”=dword:00000001
“signsecurechannel”=dword:00000001
“Update”=”no”

4-) Entrar em:

Painel de Controle->Ferramentas Administrativas->Politica de Segurança Local e depois em Politicas Locais->Opções de Segurança

Dentro dessa janela, desabilite as opções abaixo. Não quer quer eu traduza para você, certo? 🙂

Domain member: Digitally encrypt or sign secure channel (always)
Domain member: Disable machine account password changes
Domain member: Require strong (Windows 2000 or later) session key

5-) Depois em:

Botão Direito em Meu Computador->Propriedades->Nome do Computador->Alterar

Nome do computador: MAQ_709
Membro de: Informar Dominio Samba
Entre com o username e password de Root, depois reinicie o micro

Ufa 🙂
Ah, talvez seja necessário reiniciar depois de alterar o registro, mas creio que isso não seja nenhuma novidade para você =]

Bom, logicamente não fui eu quem “descobriu” tudo isso, pois existem vários tutoriais pela rede, além da documentação do próprio software. De qualquer forma, seguindo esses passo eu consegui colocar o benedito no Domínio, mas talvez você não precise fazer tudo isso 🙂

Se ainda tiver dúvidas sobre o SaMBa, por favor consulte nossos outros artigos desta mesma seção. Visite também este FAQ sobre o assunto.

Agradeço aos tutoriais espalhados pela rede, ao pessoal das listas de discussão, ao google… e espero que esse documento ajude alguém 😉

Abraços,
Tiago Cruz
Linux User #282636

Posted in Sem categoria

Configurando IBM Thinkpad tunning

Neste artigo iremos mostrar como configurar seu Notebook IBM Thinkpad para melhorar algumas configurações para máquina portátil.

Configurando o GRUB

Para mostrar o monitor em resolução 1024×768 no Boot adicione em seu arquivo /boot/grub/menu.lst a seguinte linhas abaixo:

kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro

mude para que fique assim:

kernel /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro vga=791 video=vesa:pimpal,mtrr

Configurando o teclado para que funcione a tecla cedilha:

1. Abra o seu /etc/gtk-2.0/gtk.immodules;
2. Procure pela linha que contenha “im-cedilla.so”;
3. Na linha seguinte, adicione “en” onde você vê os “locales az:fr:co”, etc;
4. Salve e feche;
5. Reinicie seu X;
6. Pronto!

HD Tunning:

Para melhorar o desempenho do disco rígido, instale o aplicativo hdparm e adicione a seguinte sintaxe abixo em um arquivo de script na inicialização do sistema:

hdparm -d1 /dev/hda
hdparm -d2 /dev/hdc

Até maix,

Posted in Sem categoria

Virtual PC suportará Linux no Vista.

O sucessor do sistema operacional Windows XP, o Windows Vista, cujo lançamento está previsto para 2007, dará suporte à virtualização de pelo menos duas distribuições Linux: a Novell SuSE e a Red Hat.

Segundo o site Cnet, junto a esse anúncio a Microsoft também confirmou na semana passada – não coincidentemente, quando ocorria em Boston a conferência LinuxWorld 2006 – que o emulador Virtual Server 2005 R2, que até então era vendido pela empresa por US$ 99, não só será oferecido gratuitamente por meio de download como também virá incluído no pacote do Windows Vista. Mais: a empresa de Bill Gates ainda pretende dar suporte técnico para Linux, desde que este esteja instalado no Windows Vista, é claro.

A tecnologia de virtualização, também adotada pela Apple para seu próximo sistema operacional Mac OS X 10.5 “Leopard” que irá rodar o Windows XP por meio de um software semelhante, permite que um mesmo hardware rode diferentes ambientes por meio de um único sistema operacional. Essa possibilidade tem agradado em cheio as empresas, que veêm a oportunidade de reduzir custos por meio da operação de uma quantidade maior de aplicativos em um número bem menor de máquinas, quando comparado a utilização tradicional de computadores, ou seja, uma máquina para cada sistema operacional.

“Fechamos um compromisso de longo prazo para assegurar que sistemas operacionais não-Windows possam ser rodados de forma suportada, tanto sobre o Virtual Server quanto em nossos futuros produtos de virtualização”, disse Zane Adam, diretor de marketing do Windows Server.

Fonte: Wnews

Posted in Sem categoria

ndiswrapper 1.7 no Slackware 10.2

Artigo postador no Dicas-L da Unicamp

Colaboração: Ricardson Williams

Com o pacote ndiswrapper você pode utilizar os drivers de placas de rede wireless do windows NT ou XP dentro do Linux.

É interessante que você ja esteja com o kernel 2.6.14.3 rodando em seu computador para isso leia o Howto Instalando Kernel 2.6.14.3(http://ricardsonwilliams.com.br/artigos/kernel26143-slackware102.txt) no Slackware 10.2 antes de proceguir nos próximos passos.

Será necessário baixar o kernel-source.

installpkg kernel-source-2.6.14.3-noarch-1.tgz

Passo 1:

Precisamos desabilitar uma opção no kernel para que o ndiswrapper funcione corretamente, para isso precisamos usar o comando make menuconfig.

cd /usr/src/linux
make menuconfig

Va para a opção “Kernel Hacking”e marque “Kernel Debugging” e em seguinda desabilite a opção “Use 4kb for kernel stacks instead of 8kb”. Agora podemos sair salvar a nova configuração de kernel.
Passo 2:
Compilando o kernel.

make bzImage
make
make modules install
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-generic-2.6.14.3
cd /boot
mkinitrd -c -k 2.6.14.3 -m reiserfs

Agora rode o comando lilo para que a informação do novo kernel fique gravado na mbr.

lilo

Agora vamos reiniciar o nosso Slackware para nos certificarmos que o novo kernel esta funcionando corretamente.
Passo 3:

Agora com o novo kernel funcionando…precisamos compilar o ndiswrapper, a versão utilizada é a 1.7

mkdir /root/download
cd /root/download

wget http://surfnet.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.7.tar.gz
tar xzf ndiswrapper-1.7.tar.gz
cd ndiswrapper-1.7
make
make install

Passo 4:

É necessário carregar o modulo do ndiswrapper em nosso sistema, precisamos executar os seguintes comandos:

depmod -a
modprobe ndiswrapper

Agora é necessário ter o cd de instalação da placa wireless ou baixar o driver da internet no meu caso eu tenho uma LinkSYS Wireless G procure por arquivos .inf que o é o que vamos precisar para instalar a placa.

ndiswrapper -i lsbcmnds.inf

Depois de instalar o driver vamos verificar se a placa foi detectada pelo ndiswrapper.

ndiswrapper -l

Installed drivers:
lsbcmnds driver present, hardware present

Agora precisamos carregar o modulo do ndiswrapper quando nosso Slackware inicializar, então execute o comando abaixo:

ndiswrapper -m

Veja se o arquivo /etc/modules.conf foi atualizado com a seguinte linha:

alias wlan0 ndiswrapper

Passo 5:

Agora vamos configurar a nossa placa wireless para pegar um ip descomente apenas as opções abaixo no arquivo rc.inet1.conf.

vi /etc/rc.d/rc.inet1.conf

IFNAME[4]=”wlan0″
USE_DHCP[4]=”yes”

Agora reinicie o seu compatador.
Passo 6:

ifconfig wlan0

wlan0 Link encap:Ethernet HWaddr 00:12:17:0F:0C:C0
inet addr:192.168.2.102 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::212:17ff:fe0f:cc0/64 Scope:Link
UP BROADCAST NOTRAILERS RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1690 errors:0 dropped:0 overruns:0 frame:0
TX packets:1875 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1562729 (1.4 Mb) TX bytes:259123 (253.0 Kb)
Interrupt:10 Memory:e2000000-e2002000

Posted in Sem categoria