Tagsamba

Iptables para Samba4

Olá pessoal, como prometido anteriormente, irei falar agora de como criar o seu script iptables para que o nosso servidor samba4 possa funcionar com a nossa rede segura. O script foi criado para um servidor CentOS 6.7, mas pode ser aplicado também para outra distribuição.

Iremos utilizar o comando “netstat” para que possamos identificar os serviços e portas rodando em nosso servidor.

$ netstat -tulpn | egrep "samba|smbd|nmbd|winbind"

Segue abaixo um trecho da saída do comando.

tcp        0      0 127.0.0.1:139               0.0.0.0:*                   LISTEN      43270/smbd          
tcp        0      0 192.168.1.68:139                0.0.0.0:*                   LISTEN      43270/smbd          
tcp        0      0 192.168.1.68:88                 0.0.0.0:*                   LISTEN      43273/samba         
tcp        0      0 127.0.0.1:88                0.0.0.0:*                   LISTEN      43273/samba         
tcp        0      0 127.0.0.1:445               0.0.0.0:*                   LISTEN      43270/smbd          
tcp        0      0 192.168.1.68:445                0.0.0.0:*                   LISTEN      43270/smbd          
.....

Mostraremos abaixo uma tabela com as portas utilizadas pelo samba quando é executado como um controlador de domínio Active Directory.

Service Port protocol
DNS* 53 tcp/udp
Kerberos 88 tcp/udp
End Point Mapper (DCE/RPC Locator Service) 135 tcp
NetBIOS Name Service 137 udp
NetBIOS Datagram 138 udp
NetBIOS Session 139 tcp
LDAP 389 tcp/udp
SMB over TCP 445 tcp
Kerberos kpasswd 464 tcp/udp
LDAPS (only if “tls enabled = yes”) 636 tcp
Dynamic RPC Ports** 1024-5000 tcp
Global Cataloge 3268 tcp
Global Cataloge SSL (only if “tls enabled = yes”) 3269 tcp
Multicast DNS 5353 tcp/udp

Iremos agora criar o nosso arquivo “firewall”. Lembrando que o endereço da minha rede é “192.168.1.0/24” e o endereço do meu servidor samba é “192.168.1.68”.

# vim /etc/init.d/firewall
#!/bin/sh
# Limpando as tabelas
iptables -F

# Definindo a politica padrao
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Liberando ping
iptables -A INPUT -p icmp -j ACCEPT

# Liberando loopback
iptables -A INPUT -s 127.0.0.1 -j ACCEPT

# Liberando as portas do samba4 para o servidor
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 88 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 88 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 135 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 389 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 389 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 445 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 464 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 464 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 636 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 1024:5000 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3268 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 3269 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 5353 -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p udp --dport 5353 -j ACCEPT

# Liberando as conexões DNS e HTTP para o servidor realizar atualizações e instalações de novos pacotes
iptables -A INPUT -d 192.168.1.68 -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -d 192.168.1.68 -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -d 192.168.1.68 -p udp --sport 53 -j ACCEPT

# Liberando ssh apenas para rede local
iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT

Feito isso, salvaremos o arquivo e vamos dar permissão para execução ao script criado

# chmod +x /etc/rc.d/init.d/firewall

Iremos criar um link simbolico no local referente ao nível de execução de seu servidor. No meu caso, utilizo o N3

# ln -s /etc/init.d/firewall /etc/rc3.d/S09firewall

Realizaremos um teste com uma máquina Windows XP ingressando no domínio
windows_ingressando_dominio

Pronto. O nosso samba4 está trabalhando com o iptables ativo!

Fonte
Samba Wiki

Script de Inicialização do Samba4

Olá pessoal, como prometido na postagem anterior, estou disponibilizando aqui um script que vai facilitar a vida do administrador samba. O procedimento a seguir foi realizado em uma estação CentOS 6.7, então esta dica é para sistemas derivados do Red Hat Enterprise Linux. O script abaixo deverá ser salvo por padrão em /etc/rc.d/init.d e criado um link para o caminho referente ao nível de execução de seu servidor.

Iremos criar o arquivo do script.

# vim /etc/rc.d/init.d/samba4

Dentro do arquivo, iremos colar o conteúdo abaixo:

#!/bin/bash
#
# samba4        This shell script takes care of starting and stopping
#               samba4 daemons.
#
# chkconfig: - 58 74
# description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.

### BEGIN INIT INFO
# Provides: samba4
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop samba4
# Description: Samba 4.0 will be the next version of the Samba suite
# and incorporates all the technology found in both the Samba4 alpha
# series and the stable 3.x series. The primary additional features
# over Samba 3.6 are support for the Active Directory logon protocols
# used by Windows 2000 and above.
### END INIT INFO

# Source function library.
. /etc/init.d/functions


# Source networking configuration.
. /etc/sysconfig/network


prog=samba
prog_dir=/usr/local/samba/sbin/
lockfile=/var/lock/subsys/$prog


start() {
        [ "$NETWORKING" = "no" ] && exit 1
#       [ -x /usr/sbin/ntpd ] || exit 5

                # Start daemons.
                echo -n $"Starting samba4: "
                daemon $prog_dir/$prog -D
        RETVAL=$?
                echo
        [ $RETVAL -eq 0 ] && touch $lockfile
        return $RETVAL
}


stop() {
        [ "$EUID" != "0" ] && exit 4
                echo -n $"Shutting down samba4: "
        killproc $prog_dir/$prog
        RETVAL=$?
                echo
        [ $RETVAL -eq 0 ] && rm -f $lockfile
        return $RETVAL
}


# See how we were called.
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
status)
        status $prog
        ;;
restart)
        stop
        start
        ;;
reload)
        echo "Not implemented yet."
        exit 3
        ;;
*)
        echo $"Usage: $0 {start|stop|status|restart|reload}"
        exit 2
esac

Vamos dar permissão para execução ao script criado

# chmod +x /etc/rc.d/init.d/samba4

Feito isso, salvaremos o arquivo e iremos criar um link simbolico no local referente ao nível de execução de seu servidor. No meu caso, utilizo o N3

# ln -s /etc/rc.d/init.d/samba4 /etc/rc3.d/S80samba4

Para iniciar o samba com nosso novo script poderemos executar o comando abaixo:

# /etc/rc.d/init.d/samba4 start

O script poderá ser utilizado com as seguintes opções:

start|stop|status|restart|reload

Pronto. Feito isso, de uma forma bem simples teremos o nosso script rodando tranquilo.

Fonte
Samba Wiki

Samba4 no RHEL/CentOS

Sejam todos bem vindos ao Café com Linux!

Decidi criar o primeiro post com um tutorial. Pretenderei sempre postar novos tutoriais, dicas e notícias com assuntos relacionados à área de Tecnologia da Informação, buscando priorizar sempre Software Livre.

Este será um tutorial sobre o Samba4, uma ferramenta que tem amadurecido muito desde sua primeira versão. Uma das grandes vantagem ao utilizar o Samba4 é poder criar um controlador de domínio Active Directory (AD DC) similar ao da Microsoft. O objetivo deste post é preparar um ambiente RHEL/CentOS com as dependências necessárias para a compilação, instalação e primeira configuração. Não irei abordar a instalação do RHEL/CentOS, pois imagino que já saibam como fazer.

O ambiente utilizado:

  • VM CentOS 6.7 x86_64 minimal (utilizei uma imagem mínima por instalar somente o necessário para o funcionamento do S.O.);
  • 1GB de RAM;
  • 20GB de HD;

Como utilizei uma imagem minimal (offline), recomendo fazer a atualização após a instalação do S.O. utilizando o comando:

# yum update

Iremos fazer a instalação e configurações iniciais com o nosso serviço de firewall iptables parado e o SELinux no modo permissivo com os comandos abaixo. Lembrando que não é recomendável utilizar um servidor em produção com o firewall desabilitado e como se trata somente de um laboratório, deixaremos a criação de um arquivo iptables configurado de forma correta, liberando somente as portas necessárias para o funcionamento do Samba4 em um outro post.

# service iptables stop
# setenforce 0

Iremos editar o arquivo do SELinux e alterar a linha conforme abaixo:

# vim /etc/sysconfig/selinux
SELINUX=permissive

Iremos instalar agora os pacotes necessários para a compilação e funcionamento do samba:

# yum install -y epel-release vim wget man perl gcc attr libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins policycoreutils-python libsemanage-python perl-ExtUtils-MakeMaker perl-Parse-Yapp perl-Test-Base popt-devel libxml2-devel libattr-devel keyutils-libs-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel autoconf pam-devel systemd-devel

Obtendo o samba:

Utilizaremos o “wget” para baixar a última versão estável do Samba4 no site “https://www.samba.org/samba/download/”

$ cd /usr/src
$ wget "https://ftp.samba.org/pub/samba/samba-latest.tar.gz"
$ tar zxvf samba-latest.tar.gz
$ cd /usr/src/samba-4.2.3

Compilando o samba:

Utilizaremos o comando abaixo para que seja criado o makefile e seja possível compilar o samba. Nessa etapa é interessante acompanhar o resultado final, pois será informado se há necessidade de instalação de mais algum pacote. Caso tenha ocorrido tudo com sucesso o resultado final deverá ser ” ‘configure’ finished successfully (47.522s)”.

$ ./configure

Esse processo pode levar algum tempo, de acordo com o seu hardware. Iremos executar o seguinte comando para compilar o samba:

$ make

Instalando o samba:

Esse processo também pode levar algum tempo. Iremos executar o seguinte comando para instalar o samba:

# make install

Provisionando o samba:

Após a instalação, iremos criar o Active Directory.

# /usr/local/samba/bin/samba-tool domain provision
Realm [LOCAL]: CAFE.LOCAL     //Você deverá inserir o nome completo do domínio em caixa alta (FQDN);
Domain [CAFE]:     //Nome do domínio ou ENTER para escolher a opção já definida como padrão;
Server Role (dc, member, standalone) [dc]:     //Você deverá informar se será um controlador de domínio, membro ou standalone. Como iremos criar o AD DC, deveremos escolher a opção [dc] que já está como padrão;
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:     //Utilizaremos o DNS do próprio samba4 como backend, então pressionamos novamente ENTER para o padrão;
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.1.1]:     //No meu caso estou escolhendo um servidor DNS da minha rede para ser utilizado como forwarder em casos que o samba não consiga resolver os nomes;
Administrator password:     //Você deverá definir uma senha complexa para que o provisionamento do domínio seja criado com sucesso;
Retype password:     //Você deverá reinserir a senha para confirmar. Após essa etapa, se tudo estiver ocorrido bem, seu samba retornará um mensagem similar à seguir;

O resultado deverá ser parecido com o abaixo:

Once the above files are installed, your Samba4 server will be ready to use
Server Role: active directory domain controller
Hostname: cafecomlinux
NetBIOS Domain: CAFE
DNS Domain: cafe.local
DOMAIN SID: S-1-5-21-11342085-354663710-1608352529

Testando o samba:

Iniciaremos o Samba4 em modo standalone para realizar alguns testes. O nosso samba ainda não tem scripts de inicialização. Estarei criando um novo post, onde utilizaremos um modelo disponível no site wiki.samba.org.

# /usr/local/samba/sbin/samba

Executaremos o “smbclient” para checar se o samba criou os compartilhamentos padrões “netlogon” e “sysvol” durante o seu provisionamento.

# /usr/local/samba/bin/smbclient -L localhost -U%

Testaremos agora a autenticação no compartilhamento “netlogon” com usuário e senha criados no momento de provisionamento do samba:

# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[CAFE] OS=[Windows 6.1] Server=[Samba 4.2.3]
. D 0 Thu Sep 3 23:40:16 2015
.. D 0 Thu Sep 3 23:40:55 2015

17971068 blocks of size 1024. 15315052 blocks available

Testando o DNS

O DNS é necessário para o funcionamento do Active Directory. Sem o DNS configurado, o Kerberos e alguns outros serviços podem não funcionar corretamente. Iremos alterar o arquivo “resolv.conf” inserindo as informações do nosso servidor DNS do samba.

# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
search cafe.local     //Nome do domínio;
nameserver 192.168.1.67     //Endereço de ip do servidor samba4;

Para testar se o DNS está trabalhando direito, execute os comandos a seguir e compare a saída com o mostrado abaixo:

# host -t SRV _ldap._tcp.cafe.local
_ldap._tcp.cafe.local has SRV record 0 100 389 cafecomlinux.cafe.local.
# host -t SRV _kerberos._udp.cafe.local
_kerberos._udp.cafe.local has SRV record 0 100 88 cafecomlinux.cafe.local.
# host -t A cafecomlinux.cafe.local
cafecomlinux.cafe.local has address 192.168.1.67

Se retornar algum erro, verifique os logs.

Configurando o Kerberos:

Iremos copiar ou criar um link simbólico do arquivo de configuração gerado na criação do AD para o local padrão do arquivo de configuração no sistema.

# ln -sf /usr/local/samba/private/krb5.conf /etc/krb5.conf

Agora iremos testar o Kerberos gerando um ticket com o “kinit” e “klist”.

# kinit administrator@CAFE.LOCAL
Password for administrator@CAFE.LOCAL:
Warning: Your password will expire in 41 days on Thu Oct 15 23:40:53 2015
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@CAFE.LOCAL

Valid starting Expires Service principal
09/04/15 19:36:56 09/05/15 05:36:56 krbtgt/CAFE.LOCAL@CAFE.LOCAL
renew until 09/05/15 19:36:47

Fonte:
Samba Wiki

© 2018 Blog do Vieira

Theme by Anders NorénUp ↑