anúncios

domingo, 27 de novembro de 2011

Configurando servidor Samba PDC no Linux

Hoje irei explicar como configurar Samba PDC(controlador de domínio) em uma rede com máquinas Windows XP.
Instalação
Debian: #apt-get install samba
CentOS: #yum install samba samba-client
Slackware: No CD1 encontra o pacote samba-3.5.2-i486-1.txz e digite:
#installpkg samba-3.5.2-i486-1.txz

Após instalado o pacote samba, execute os comandos abaixo na distro CentOS
#service smb start
#service nmb start
#chkconfig smb on
#chkconfig nmb on

Configuração do Samba
As configurações do Samba PDC são realizadas no arquivo /etc/samba/smb.conf
Estando no diretório /etc/samba fazemos o backup do smb.conf default
#mv smb.conf smb.conf.bkp
criamos o diretório de compartilhamento do samba
#mkdir /home/samba
smb.conf

#### SAMBA COM PDC
#======================= Global Settings =======================
[global]
workgroup = DOMINIO
netbios name = GRUPO
server string = Linux
os level = 33
log file = /var/log/samba/log.%m
log level = 1
max log size = 1000
debug level = 2
security = user
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd

#####Servidor de Data e Hora
time server = yes

#Parametros que aumentam o desempenho
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
read raw = yes
write raw = yes
oplocks = yes
max xmit = 65536
getwd cache = yes

#Samba falando português
unix charset = iso8859-1
display charset = cp850
preserve case = no
short preserve case = no
default case = lower

#Servidor Wins
wins support = yes
wins proxy = no
dns proxy = no
max wins ttl = 518400
min wins ttl = 21600

#Configuração do domínio
domain master = yes
prefered master = yes
local master = yes
encrypt passwords = yes
admin users = root
add machine script = useradd -g pdc -c "Maquina do PDC" -s /bin/false -d /dev/null %u
domain logons = yes
logon script = netlogon.bat
logon drive = U:

##Sincronização das senhas dos usuários
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *:* %n\n *:* %n\n *successfully*

## Debugging/Accounting ####
# This tells Samba to use a separate log file for each machine
# that connects
log file = /var/log/samba/log.%m %u

# If you want Samba to only log through syslog then set the following
# parameter to 'yes'.
syslog only = yes

#Auditando os acessos
log level = 1
log file = /var/log/samba/samba-full_audit.log
max log size = 100000
vfs objects = full_audit
full_audit:sucess=open opendir write read unlink rename mkdir rmdir chmod chown
full_audit:prefix = %u|%I|%S
full_audit:failure = none
full_audit:facility = local5
full_audit:priority = notice

#Lixeira
vfs objects = recycle
recycle:maxsize = 1000
recycle:repository = .recycle
recycle:keeptree = yes
recycle:touch = yes
recycle:versions = yes
recycle:noversions = .doc|.xls|.ppt
recycle:exclude = *.obj *.tmp *.o *~$* *.mp3 *.wma *.tmp *.temp
recycle:exclude_dir = /tmp/cache

[homes]
comment = Pasta %U
browseable = no
writable = yes

[netlogon]
comment = Network Logon Service
path = /etc/samba/netlogon
writable = no
browseable = no

[profiles]
comment = Users profiles
path = /home/profiles
read only = no

guest ok = no
browseable = no
create mask = 0600
directory mask = 0700

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no

[Publico]
comment = Compartilhamento
path = /home/samba
browseable = yes
valid users = @grupos
writeable = yes
write list = @users
force create mode = 0770
force directory mode = 0770
recycle:repository = .recycle
vfs objects = recycle full_audit


Arquivo netlogon que faz o mapeamento das unidades de redes do usuário
netlogon.bat

@echo off
cls
echo logon para servidor samba Linux
rem Sincronizando a data e hora com servidor
net time \\saitam /set /yes
rem
rem Mapeamento das portas de impressoras do servidor
rem
if %OS%==Windows_NT goto WinNT
rem Mapeando Unidades de rede do usuário
:Win9x
echo Win9x
rem
net use F: \\saitam\Publico
#net use G: \\saitam\comum
net use U: /HOME /yes

goto end
rem
:WinNT
echo WinNT
net use F: \\saitam\Publico
#net use G: \\saitam\comum
echo Configurando teclado ABNT2
REG ADD "HKCU\Keyboard Layout\Preload" /V 1 /T REG_SZ /F /D 00010416
REG ADD "HKCU\Keyboard Layout\Substitutes" /V 00010416 /T REG_SZ /F /D 00010416
:end

Cadastrando usuários no Samba
Execute o comando abaixo para cadastrar usuários e poder acessar o diretório compartilhado.
#smbpasswd -a teste
Nota:
É necessário adicionar o hostname das máquinas Windows XP para que funcione o domínio nas mesmas. Se você não sabe como ver isso no Windows XP, siga os passos a seguir:
Clica com botão direito o atalho Meu Computador depois em Propriedades
Na aba Nome do computador
Iniciar -> Configurações -> Painel de Controle -> Sistema
Agora nas abas em cima, clique em Nome do Computador.
Em Frente ao Nome completo do Computador é o hostname.
No meu caso, coloquei como maquina1.
#useradd -d /dev/null -s /bin/false maquina1$
#smbpasswd -a -m maquina1

Configurando o Windows XP para acessar o domínio
Vou apresentar duas maneiras de ingressar o Windows XP no domínio
Maneira 1:
Clica com botão direito o atalho Meu Computador depois em Propriedades
Na aba Nome do computador, clica no botão ID de rede
Irá abrir o Assistente para identificação da rede, clique em Avançar, marque a opção Este computador faz parte de uma rede corporativa e o utiliza para conectar-me a outros computadores no trabalho, clique em Avançar, marque a primeira opção, antes de prosseguir tenha em mente o usuário,senha e nome de domínio que será pedido, clique em Avançar, e digite os dados respectivamente.
Maneira 2:
Clica com botão direito o atalho Meu Computador depois em Propriedades
Na aba Nome do computador, clica no botão Alterar, digite o nome de domínio, e OK.

No final do processo irá aparecer Bem-vindo ao domínio e avisará que deverá reiniciar o computador.

Auditoria de acessos
Adicione no syslog.conf local5.notice /var/log/samba/samba-full_audit.log

Iniciando o servidor samba
Por fim, inicie o servidor samba.
Debian: #/etc/init.d/samba start
CentOS: #service smb start
Slackware: #/etc/rc.d/rc.samba start

Agora na estação cliente(Windows) esta configurado no domínio Samba PDC.
Feito!

terça-feira, 15 de novembro de 2011

Configurando servidor proxy transparent com Squid

Hoje explicarei como configurar o squid para servir como proxy transparente no gateway da rede fazendo cache e restrição de acesso de alguns sites.

Instalação
Baixando o source do squid 3.1.16
$wget "http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.16.tar.gz"
Extraindo o source do download acima
$tar -xzvf squid-3.1.16.tar.gz
$cd squid-3.1.16
$./configure --prefix=/usr/local/squid \
--enable-err-Portuguese=lang \
--mandir=/usr/share/man \
--enable-auth="basic,digest,ntlm" \
--enable-removal-policies="lru,heap" \
--enable-digest-auth-helpers="password" \
--enable-basic-auth-helpers="getpwnam,YP,NCSA,MSNT" \
--enable-external-acl-helpers="ip_user,unix_group,wbinfo_group" \
--enable-ntlm-auth-helpers="fakeauth,no_check" \
--enable-removal-policies \
--enable-linux-netfilter \
--enable-ident-lookups \
--enable-useragent-log \
--enable-cache-digests \
--enable-delay-pools \
--enable-referer-log \
--enable-underscores \
--enable-async-io \
--enable-truncate \
--enable-arp-acl \
--with-pthreads \
--enable-icmp \
--enable-htcp \
--enable-carp \
--enable-poll \
--enable-snmp \
--enable-wccp \
--enable-ssl

$make
#make install

Configuração
Como foi definido o local da instalação em /usr/local/squid no ./configure
#mv /usr/local/squid/etc/squid.conf /usr/local/squid/etc/squid.conf.bkp
squid.conf

http_port 3128 transparent
visible_hostname mundodacomputacao.com.br

cache_mem 64 MB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 90
cache_swap_high 95
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /usr/local/squid/var/logs/cache.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280

acl manager proto cache_object
acl localhost src 127.0.0.1
acl localnet src 192.168.1.0/24
acl Safe_ports port 80 #http
acl Safe_ports port 21 #ftp
acl Safe_ports port 443 563 #https,snews
acl Safe_ports port 70 #gopher
acl Safe_ports port 210 #wais
acl Safe_ports port 280 #http-mgmt
acl Safe_ports port 488 #gss-http
acl Safe_ports port 591 #filemaker
acl Safe_ports port 777 #multiling http
acl Safe_ports port 901 #swat
acl Safe_ports port 1025-65535 #portas altas
acl purge method PURGE
acl CONNECT method CONNECT
acl SSL_ports port 443 563

##ACLS
acl sitesbloqueados url_regex -i "/usr/local/squid/dominiosbloqueados"
acl palavrasproibidas url_regex -i "/usr/local/squid/palavrasproibidas"
acl sitespermitidos url_regex -i "/usr/local/squid/dominiospermitidos"
acl redelocal src 192.168.1.0/24
#ACL para bloquear skype
acl acl_url_im_skype url_regex ^((0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5]|[3-9][0-9]{0,1})\.){3}(0|1[0-9]{0,2}|2[0-9]{0,1}|2[0-4][0-9]|25[0-5][3-9][0-9]{0,1})(:|/|$\?)

http_access allow manager localhost localnet
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

##Controle de acesso
http_access deny sitesbloqueados
http_access deny palavrasproibidas
http_access deny CONNECT acl_url_im_skype
http_access allow sitespermitidos
http_access allow localhost
http_access allow redelocal
http_access deny all
error_directory /usr/local/squid/share/errors/pt-br


#touch /usr/local/squid/dominiosbloqueados
#touch /usr/local/squid/palavrasproibidas
#touch /usr/local/squid/dominiospermitidos
#cp /usr/local/squid/sbin/squid /usr/sbin
#mkdir /usr/local/squid/var/cache
#mkdir /usr/local/squid/var/logs
#chmod 0777 /usr/local/squid/var/cache
#chmod 0777 /usr/local/squid/var/logs

/usr/local/squid/dominiosbloqueados

orkut.com
www.orkut.com
facebook.com
www.facebook.com
twitter.com
www.twitter.com
www.issoebizarro.com
www.ebuddy.com
www.meebo.com
www.4shared.com
4shared.com
www.esnips.com
esnips.com
www.adrive.com
adrive.com
www.megaupload.com
megaupload.com
www.thepiratebay.org
thepiratebay.org
www.rapidshare.com
rapidshare.com
www.hotfile.com
hotfile.com
www.filecrop.com
filecrop.com
www.fileserv.com
fileserv.com
www.freeproxy.ca
freeproxy.ca
www.redtube.com
redtude.com
www.youtube.com
youtube.com
www.torproject.org
torproject.org
www.ninjacloak.com
ninjacloak.com
speedyhide.info/index.php
speedyhide.info
www.dropbox.com
www.baixandolegal.org
baixandolegal.org
www.baixebr.org
baixebr.org
www.superdownloads.com
superdownloads.com
www.superdownloads.com.br
superdownloads.com.br
www.baixaki.com.br
baixaki.com
www.tecmundo.com.br
www.techtudo.com.br
gizmodo.uol.com.br

/usr/local/squid/palavrasproibidas

orkut
facebook
twitter
youtube
sexo
bondage
issoebizarro
tor
torproject
vidalia
ultrasurf
proxy
anonymous
gatewall.dll
ms
messenger
webmessengers
webmessenger
ebuddy
meebo
iloveim
skype
porno
sexy
safadinha
speedhide
ninjacloak
dropbox
piratebay
filecrop
baixaki
superdownload
techmundo
techtudo
gizmodo


Check-list do Squid
#squid -z

Iniciando o serviço
Copie este script retirado do Servidor Linux(Slackware) para iniciar/parar o squid, mas também funciona na distro Debian, basta mover o script para /etc/init.d/.
rc.squid.conf

#!/bin/sh
# Start/stop/restart/reload the Squid Internet Object Cache (squid)
# To make Squid start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.squid
# Written for Slackware Linux by Erik Jan Tromp
# Modified by David Somero
SQUIDCFG=/usr/local/squid/etc/squid.conf
SQUIDCMD=/usr/sbin/squid
if [ ! -r $SQUIDCFG ]; then
echo "Please set the correct path to $SQUIDCFG"
exit 1
fi
if [ ! -x $SQUIDCMD ]; then
echo "$SQUIDCMD not found"
exit 1
fi
squid_start() {
# Create cache directory hierarchy if needed
ALL_DIRS=$(awk '/^cache_dir/ {print $3}' $SQUIDCFG)
[ -z "$ALL_DIRS" ] && ALL_DIRS=/var/cache/squid
for CACHE_DIR in $ALL_DIRS ; do
if [ ! -d $CACHE_DIR/00 ] ; then
echo "Creating swap directories: $SQUIDCMD -z"
$SQUIDCMD -z 2> /dev/null
break
fi
done
echo "Starting Squid: $SQUIDCMD -F"
$SQUIDCMD -F
}
squid_stop() {
COUNTDOWN=$(awk '/^shutdown_lifetime/ {print $2}' $SQUIDCFG)
[ -z "$COUNTDOWN" ] && COUNTDOWN=30
echo -n "Shutting down Squid in $COUNTDOWN seconds: "
$SQUIDCMD -k shutdown 2> /dev/null
while $SQUIDCMD -k check 2> /dev/null ; do
sleep 1
echo -n .
COUNTDOWN=$[ $COUNTDOWN - 1 ]
if [ $COUNTDOWN -le 0 ] ; then
$SQUIDCMD -k interrupt 2> /dev/null
sleep 1
break
fi
done
echo
}
squid_restart() {
squid_stop
sleep 1
squid_start
}
squid_reload() {
$SQUIDCMD -k reconfigure 2> /dev/null
}
case "$1" in
'start')
squid_start
;;
'stop')
squid_stop
;;
'restart')
squid_restart
;;
'reload')
squid_reload
;;
*)
echo "usage: $0 start|stop|restart|reload"
esac


No Slackware:
#chmod +x /etc/rc.d/rc.squid
#/etc/rc.d/rc.squid start
No Debian:
#chmod +x /etc/init.d/rc.squid
#/etc/init.d/rc.squid start

Para poder fazer proxy transparente adicione essa regra no seu script de firewall

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

A interface eth1 indica a placa da rede local, onde o proxy recebe as requisições dos outros micros da rede e o 3128 indica a porta usada pelo Squid.
PS:Nesse caso: eth0=rede externa(internet) e eth1=rede interna(intranet)
Verifique o log do Squid de acessos

# tail -f /usr/local/squid/var/logs/cache.log
1321733892.697 88 192.168.1.100 TCP_MISS/200 1067 GET http://s.glbimg.com/es/ge/media/globoesporte2010/img/icone_regulamento.png - DIRECT/186.192.82.11 image/png
2011/11/19 18:24:50| Squid is already running! Process ID 586
1321734296.188 33 192.168.1.100 TCP_DENIED/403 6472 GET http://www.youtube.com/ - NONE/- text/html
1321734299.694 3485 192.168.1.100 TCP_REFRESH_UNMODIFIED/304 454 GET http://www.squid-cache.org/Artwork/SN.png - DIRECT/209.169.10.131 -
1321734407.090 19 192.168.1.100 TCP_DENIED/403 4230 GET http://www.twitter.com/ - NONE/- text/html
1321734407.282 23 192.168.1.100 TCP_DENIED/403 4231 GET http://www.twitter.com/favicon.ico - NONE/- text/html
1321734410.259 6 192.168.1.100 TCP_DENIED/403 4263 GET http://www.twitter.com/favicon.ico - NONE/- text/html
1321734414.542 10 192.168.1.100 TCP_DENIED/403 4087 GET http://www.orkut.com/ - NONE/- text/html
1321734419.972 11 192.168.1.100 TCP_DENIED/403 3951 GET http://www.facebook.com/ - NONE/- text/html
2011/11/19 18:51:18| NETDB state saved; 0 entries, 1 msec


Feito!

quinta-feira, 3 de novembro de 2011

Instalando e configurando servidor NFS no Linux

Hoje irei explicar sobre a instalação e configuração do NFS(Network File System) para compartilhar arquivos entre máquinas Linux/Unix na rede.

Instalando o NFS
No Debian
#apt-get install portmap
#apt-get install nfs-common
#apt-get install nfs-kernel-server
#apt-get install nfs-user-server

No Slackware
No CD1 do Slackware procure pelo pacote nfs-utils-1.2.2-i486-1.txt e instale executando no terminal: #installpkg nfs-utils-1.2.2-i486-1.txt

Configurando o NFS no Servidor
Agora edite o arquivo /etc/exports, nele deverão ser colocados o diretório do servidor que vai ser compartilhado com a máquina cliente, o endenreço IP da máquina que estará acessando o servidor ou o endereço de rede/máscara e por fim as opções de segurança. Com o editor de textos de sua preferência segue:
#vim /etc/exports

#Conteúdo do Arquivo

/pasta_compartilhada 192.168.1.0/24(ro,no_root_squash,async,subtree_check)

Agora salve o arquivo e saia. (ESC+:x)

Explicando:

/pasta_compartilhada é o diretório do servidor que vai ser compartilhado com a máquina cliente.

• 192.168.1.0/24 é o IP da rede.

• (ro,no_root_squash,async,subtree_check) são permissões usadas nas máquinas da rede e opções de desempenho do servidor.

Em seguida digite:
#exportfs

Com esse comando, seu arquivo de configuração /etc/exports será lido e o Kernel atualizado com as mudanças realizadas.

Iniciando os serviços NFS no servidor:

Debian: #/etc/init.d/nfs-kernel-server start
Slackware:
#chmod +x /etc/rc.d/rc.rpc
#chmod +x /etc/rc.d/rc.nfsd
#/etc/rc.d/rc.rpc start
#rpc.mountd
#rpc.nfsd 8
#/etc/rc.d/rc.nfsd start

Configurando NFS na máquina cliente

Crie um diretório como no descrito abaixo, no caso utilizando um diretório com o nome de arquivos_da_rede (você pode nomear com um nome de sua preferência):

#mkdir /arquivos_da_rede

Neste caso foi criado o diretório /arquivos_da_rede. Agora vamos montar o diretório a ser compartilhado:

#mount -t nfs 192.168.1.103:/pasta_compartilhada /arquivos_da_rede

Explicando:

• /pasta_compartilhada é o diretório do servidor que vai ser compartilhado com a máquina cliente.

• 192.168.1.103 é o IP da máquina servidora

Pronto, servidor NFS configurado, e pode ser acessado entre máquinas Linux para Linux na rede.
Feito!