Autenticando clientes Linux em servidor NIS FreeBSD de forma segura

O servidor NIS do FreeBSD não cria o mapa shadow usado pelo Linux, assim a única maneira de autenticar os usuários Linux seria usando a opção UNSECURE=TRUE em sua configuração. Este artigo apresenta uma maneira de exportar o mapa shadow no FreeBSD, e assim autenticar clientes Linux sem necessidade da opção UNSECURE.

[ Hits: 16.233 ]

Por: Tiago Bitarelli Gomes em 18/04/2007


Configuração do FreeBSD



Partindo do princípio que você já tenha o servidor NIS configurado, é necessário:

Remover o Makefile e os antigos mapas do seu domínio:

# cd /var/yp/
# rm Makefile
# rm -rf nomeDoSeuDominio/


Modificar o Makefile.dist para gerar os mapas do shadow para o Linux. Neste exemplo vou usar a versão 1.36.2.1 do Makefile.dist (veio com FreeBSD 6.2). Para saber a versão do seu Makefile.dist, olhe as primeiras linhas do mesmo:

# head Makefile.dist
#
# Makefile for the NIS databases
#
# $FreeBSD: src/usr.sbin/ypserv/Makefile.yp,v 1.36.2.1 2006/07/08 07:45:58 maxim Exp $

versao: 1.36.2.1

Para esta versão gerei o patch:

--- Makefile.dist       Wed Mar 28 15:06:13 2007
+++ mk.new      Wed Mar 28 15:12:40 2007
@@ -194,7 +194,7 @@
publickey: publickey.byname
aliases:   mail.aliases

-master.passwd: master.passwd.byname master.passwd.byuid
+master.passwd: master.passwd.byname master.passwd.byuid shadow.byname shadow.byuid

#
# This is a special target used only when doing in-place updates with
@@ -499,7 +499,7 @@
        @echo "Creating new $@ file from $(MASTER)..."
        @if [ ! $(UNSECURE) ]; then \
        $(AWK) -F: '{if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
-               print $$1":*:"$$3":"$$4":"$$8":"$$9":"$$10}' $(MASTER) \
+               print $$1":x:"$$3":"$$4":"$$8":"$$9":"$$10}' $(MASTER) \
                > $(PASSWD) ; \
        else \
        $(AWK) -F: '{if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
@@ -592,6 +592,31 @@
        @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map." ; fi
.endif

+shadow.byname: $(MASTER)
+       @echo "Updating $@..."
+.if ${MASTER} == "/dev/null"
+.else
+       $(AWK) -F: '{ if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
+               print $$1"\t"$$1":"$$2":12345:0:99999:7:::" }' $(MASTER) \
+               | $(DBLOAD) ${S} -f -i $(MASTER) -o $(YPMAPDIR)/$@ - $(TMP); \
+               $(RMV) $(TMP) $@
+       @$(DBLOAD) -c
+       @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOMAIN) $@; fi
+       @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map. " ; fi
+.endif
+
+shadow.byuid: $(MASTER)
+       @echo "Updating $@..."
+.if ${MASTER} == "/dev/null"
+.else
+       $(AWK) -F: '{ if ($$1 != "" && $$1 !~ "^#.*" && $$1 != "+") \
+               print $$3"\t"$$0 }' $(MASTER) \
+               | $(DBLOAD) ${S} -f -i $(MASTER) -o $(YPMAPDIR)/$@ - $(TMP); \
+               $(RMV) $(TMP) $@
+               @$(DBLOAD) -c
+       @if [ ! $(NOPUSH) ]; then $(YPPUSH) -d $(DOMAIN) $@; fi
+       @if [ ! $(NOPUSH) ]; then echo "Pushed $@ map. " ; fi
+.endif

amd.map: $(AMDHOST)
        @echo "Updating $@..."

Para versões diferentes, veja os que fiz em:
Se não tiver a sua versão você deve fazer as modificações no seu Makefile.dist na mão.

Baixe o patch para a pasta /var/yp e aplique:

# patch < ypmk.patch

Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- Makefile.dist Wed Mar 28 15:06:13 2007
|+++ mk.new Wed Mar 28 15:12:40 2007
--------------------------
Patching file Makefile.dist using Plan A...
Hunk #1 succeeded at 194.
Hunk #2 succeeded at 499.
Hunk #3 succeeded at 592.
done

Agora recrie os mapas do NIS executando o comando ypinit e responda conforme sua necessidade:

# ypinit -m nomeDoSeuDominio

Após isto, confirme que seu Makefile possui a seguinte linha comentada:

#UNSECURE = "True"

Modifique conforme sua necessidade a linha (comente se existe servidores slaves):

NOPUSH = "True"
Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Configuração do FreeBSD
   3. Teste do cliente Linux
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Stalonetray - Um system tray provisório para o Plasma 5

Instalando o bbpager do Blackbox

Turbinando o Openbox nativo do Debian 10 LXDE

HAproxy + Stunnel (https) + CentOS 6

Servidor de Banco de Dados + Servidor Web PHP

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts