![제한된 NIS 서버 설정](https://linux55.com/image/48938/%EC%A0%9C%ED%95%9C%EB%90%9C%20NIS%20%EC%84%9C%EB%B2%84%20%EC%84%A4%EC%A0%95.png)
passwd
현재 내보내기 및 group
매핑만 "신뢰할 수 있는" 호스트로 내보내지도록 액세스가 제한된 NIS 서버를 구성하려고 합니다 . 이를 위해 /etc/netgroup
신뢰할 수 있는 호스트 이름(적절한 이름의 파일)이 포함된 넷그룹을 생성하려고 하며 다음과 같은 규칙을 추가하려고 합니다.
ALL:ALL EXCEPT @nis_netgroup
도착하다 /etc/hosts.deny
. 이는 나에게 두 가지 이점이 있습니다. NIS 맵 및 NFS 공유에 대한 액세스를 제한합니다. 그러나 이 접근 방식에는 도움이 필요한 몇 가지 문제가 있습니다.
- 호스트 이름은 쉽게 스푸핑될 수 있으므로 안전하지 않습니다.
- 이 도구는 내가 설정한 검색 도메인에 관계없이
yp
모든 호스트의 도메인 이름을 요구합니다 . 따라서.local
비슷한 도메인을 설정하고.my.domain
NIS 서버 이름이 지정 되더라도 FQDNserver
은 CPU 이름server.my.domain
입니다 .ypwhich
server.local
netgroup
- 위의 두 단계를 통과했음에도 불구하고,그것은 작동하지 않습니다: NIS 서버 시스템이 계속해서 자체 바인딩을 시도하지만 실패합니다.
/var/log/syslog
이 문제와 관련이 있을 수 있는 내가 찾은 단서는 다음과 같습니다 .
named[<pid>]: bad zone transfer request 'local/IN'
무슨 뜻이에요?
/etc/hosts.allow
모든 클라이언트가 고정 IP로 구성되어 해당 IP가 단순히 나열되고 /etc/hosts.deny
다른 요청이 거부되었다는 점 을 제외하면 과거에도 비슷한 설정을 관리했습니다. 현재 설정에서 이 방법을 사용할 수 없는 이유는 동적 DNS를 사용하고 클라이언트에 DHCP IP를 할당하기 때문입니다. 동적으로 할당된 IP를 통해 호스트 액세스를 제어할 수 있는 방법이 있습니까(예: 편집증적인 호스트 이름 주소 조회를 위해 동적 DNS 사용)? 페이지 hosts_access(5)
에는 다음으로 시작하는 문자열을 사용하여 /
파일에서 클라이언트를 지정할 수 있다고 나와 있으므로 DNS 영역 파일에 해당 구문을 사용해야 한다고 생각했습니다. 기쁨이 없습니다! 이러한 경우 NIS 서버는 여전히 자체 바인딩에 실패합니다. 이것이 .local
도메인 문제와 관련이 있는지 확실하지 않습니다 (DNS 영역 파일은 분명히 .my.domain
도메인을 사용하지 않습니다 .local
).
도움이 필요하세요?
답변1
질문을 많이 해주셔서 답변이 어려울 것 같습니다. 가장 쉬운 방법은 내 NIS 설정을 공유하는 것이라고 생각했습니다(예, 설정하지 말라고 했지만 테스트 목적으로 홈 LAN에 NIS가 하나 있습니다).
ypserv
먼저 , ypbind
및 패키지를 설치해야 합니다 yp-tools
. 사용 중인 배포판을 지정하지 않았으므로 CentOS 5.x에서 설정하는 과정을 안내하겠습니다. 내 NIS 도메인에 Ubuntu 12.04 클라이언트가 있으므로 필요에 따라 이 답변을 조정할 수 있습니다.
작업을 단순하게 유지하기 위해 구성 파일의 주석을 필터링하고 실제로 어떤 작업을 수행하는 줄만 표시하겠습니다. 다시 한번 말씀드리지만, 설명이 필요하시면 게시해 드리겠습니다.
IP 서비스
ypserv
이 파일은 내가 가지고 있는 다양한 NIS 맵을 공유하는 방법을 설정합니다 . 아래에서는 다양한 맵에 액세스할 수 있는 IP 서브넷을 제한합니다.
# more /etc/ypserv.conf |egrep -v "^#|^$"
dns: no
files: 50
xfr_check_port: yes
192.168.1. : * : shadow.byname : none
192.168.1. : * : passwd.adjunct.byname : none
192.168.1. : * : passwd.byuid : none
192.168.1. : * : * : none
* : * : * : deny
* : * : * : none
Sun/Solaris의 옛 사람들로부터 NIS/YP를 설정하는 방법을 배웠기 때문에 내 접근 방식이 약간 빗나갔을 수도 있다는 점을 언급하고 싶습니다. 실제 비밀번호를 저장하기 위해 항상 파일을 사용하므로 passwd.adjunct
여기서도 동일한 작업을 수행합니다.
NIS 도메인 이름 설정
내 NIS 도메인 이름은 nis.bubba.home입니다. Red Hat 배포판에서는 일반적으로 다음 파일에서 NIS 도메인을 설정합니다. 이것은 /etc/sysconfig/network
내 것입니다:
$ more /etc/sysconfig/network
HOSTNAME="flanders.bubba.net"
NETWORKING="yes"
NISDOMAIN=nis.bubba.home
이 항목을 사용하면 명령을 실행할 때 다음 값을 domainname
얻어야 합니다 .NISDOMAIN
# domainname
nis.bubba.home
많은 사람들이 이 명령을 혼동합니다. 호스트의 도메인 이름(bubba.net)과는 아무 관련이 없으며 NIS 도메인의 실제 이름입니다. 보다도메인 이름 매뉴얼 페이지자세한 내용은.
/etc/yp.conf
ypbind
클라이언트( )가 어떤 서버에 접속할지 알기 위해 사용하는 파일입니다 .
# more /etc/yp.conf |egrep -v "^#|^$"
domain nis.bubba.home server 192.168.1.101
/etc/nsswitch.conf
이 파일은 NIS를 사용할 시설을 제어합니다.
# more /etc/nsswitch.conf |grep nis |egrep -v "^#|^$"
passwd: files nis
shadow: files nis
group: files nis
hosts: files nis dns
networks: files nis
protocols: files nis
services: files nis
netgroup: files nis
automount: files nis
aliases: files nis
/etc/yp
가능한 한 원활하게 작업을 진행하기 위해 이 디렉토리를 설정하고 궁극적으로 NIS 맵을 구축하는 파일로 채웠습니다. 이것은 전체 목록은 아니지만 이 디렉터리에 있는 몇 가지 파일은 다음과 같습니다.
auto.master, 그룹, passwd, passwd.adjunct 및 섀도우
# shadow
rhays:##rhays:11304::99999::::135545092
tracy:##tracy:12390:0:99999:7:::
tuber:##tuber:12390:0:99999:7:::
passwd.adjunct를 사용하면 비밀번호가 파일에 저장되고 passwd.adjunct
특정 사용자에 해당하는 줄에 대한 참조(위 참조, ##rhays)가 있습니다.
# passwd.adjunct
rhays:ZNiFOTwsw313B:11299:0:99999:7:::
/var/yp
이 디렉토리는 NIS 서버 ypserv
의 공유 데이터가 위치하는 곳입니다. Makefile
편집할 때 /etc/yp
.
디렉토리는 다음과 같습니다.
# ls | column
binding Makefile.orig nicknames RCS ypservers
Makefile Makefile.rpmnew nis.bubba.home securenets
이에 대해 알아보기 전에 Makefile
우리가 관심을 갖고 있는 다른 파일은 이 securenets
파일입니다. 이는 서버에 연결할 수 있는 IP 주소와 서브넷을 제어합니다. 이것은 내 버전의 파일입니다.
# securenets
host 127.0.0.1
255.255.255.0 192.168.1.0
파일 생성
Makefile
다음은 상황이 어떻게 결합되는지 보여주는 데 도움이 되는 몇 가지 발췌 내용입니다 . 우선, 이 변수는 내 지도 파일을 가리킵니다.
YPSRCDIR = /etc/yp
YPPWDDIR = /etc/yp
YPBINDIR = /usr/lib/yp
YPSBINDIR = /usr/sbin
YPDIR = /var/yp
YPMAPDIR = $(YPDIR)/$(DOMAIN)
...
GROUP = $(YPPWDDIR)/group
PASSWD = $(YPPWDDIR)/passwd
SHADOW = $(YPPWDDIR)/shadow
ADJUNCT = $(YPPWDDIR)/passwd.adjunct
...
all: passwd group hosts rpc services netid protocols mail \
netgrp auto.master auto.home auto.packages auto.data1 auto.data2 \
auto.proj auto.vz_backups passwd.adjunct networks printcap
Makefile
특정 환경에 포함된 맵 파일에 따라 추가 수정이 필요할 수 있습니다.
모두 함께 가져오세요
따라서 맵 파일, 구성 파일 및 필요한 모든 패키지를 설치한 후에는 다음을 수행해야 합니다.
$ cd /var/yp && make
$ /etc/init.d/ypserv start
$ /etc/init.d/ypbind start
# who's my domain master?
$ ypwhich
flanders.bubba.net
# what maps are available?
$ ypwhich -m
passwd.byname flanders.bubba.net
passwd.adjunct.byname flanders.bubba.net
hosts.byaddr flanders.bubba.net
...
그러면 NIS를 실행해야 할까요?
나는 여전히 거절했다. 이것은 고대 기술이고 보안이 취약하며 매우 복잡합니다. 나는 이 튜토리얼을 게시하여 여러분이 이 튜토리얼을 사용하도록 권장하기보다는 왜 사용하지 말아야 하는지 보여주기 위해 게시하고 있습니다.
NIS에 대해 자세히 알아보는 데 시간을 투자한다면 LDAP 배포 방법을 배우는 것이 좋습니다.
답변2
어쨌든 나는 다른 일을 했다. 시간이 조금 촉박했기 때문에 NIS를 다시 시도해 보기로 결정했습니다. 나는 넷그룹 접근 방식을 포기하고 간단히 hosts_access(5)
다음과 같이 구성했습니다.
/etc/hosts.allow
ALL: localhost,.my.domain
#Don't lock yourself out:
sshd: ALL
/etc/hosts.deny
ALL: ALL
NFS 마운트에 액세스할 수 있는 사람을 다음과 같이 제어합니다 /etc/exports
.
/my/nfs/share -rw *.my.domain
수정 사항을 추가하기만 하면 됩니다 /etc/nsswitch.conf
.
hosts: files dns
즉, bind9
내 로컬 서버가 인식하지 못하는 호스트를 mDns가 인식했기 때문에 제거했습니다.
이제 내 DHCP 서버는 알려진 MAC 주소가 있는 클라이언트에만 IP를 할당하고 bind9
서버 레코드를 업데이트합니다. 따라서 DNS는 (DHCP에 의해 할당된 경우)로 끝나는 호스트만 확인하므로 .my.domain
신뢰할 수 있는 호스트만 NIS 맵을 보거나 NFS 공유를 마운트합니다.
이것이 MAC 주소 스푸핑에 의해 속일 수 있다는 것을 알고 있지만 LDAP를 업그레이드할 시간이 없기 때문에 이것이 제가 찾을 수 있는 최고의 솔루션입니다.