202401to07
  • 리눅스 DNS
    2024년 05월 23일 21시 00분 43초에 업로드 된 글입니다.
    작성자: 202401to07

    ✅리눅스 DNS✅

     

    해당 수업 필기 : https://202401to07.tistory.com/97

     

    IP >>>WEB>>> O
    도메인 >>>WEB>>> X
    도메인 >>>DNS>>>WEB O
    --------------------------NET ID------------------------------------------
    **요즘에는 글로벌로 com,net... 등등 국가도메인 없이 쓰임**
    #rootdmain .   (루트도메인 Root Domain  정보: http://root-servers.org)
    1.최상위 도메인
    2.모든  도메인 시작
    3.도메인임을 증명
    4.보통 web에서는 생략되나 DNS에서는 필수 기재


    #top-level kr 국가  (jp:일본 , au:호주 , cn:중국 , US:미국....)


    #second-level co com 회사 ( 영리목적기관 )


    org 조직 ( 비영리목적기관 )
    mil 군사 ( 군사기관)
    gov 정부 ( 정부기관)
    net 통신 ( 통신기관)
    edu 교육 ( 교육기관)
    mgr 관리 ( 관리기관)


    #third-level sevas 회사명 ( ISP, 도메인업체에게 등록된 도메인)


    --------------------------HOST ID--(마음대로 바꿔도 되는 부분)----------------------------------------
    #subdomain www www 웹서버 사용자가 임의로 
    mail 메일서버 바꿀수있는 도메인
    ftp 파일서버
    db DB서버
    ==================================================================================
    도메인해석순서
    로컬도메인 =>  1차도메인 =>  2차도메인
     /etc/hosts          1DNS서버           2DNS서버

    /etc/hosts     --> 스푸핑으로 응용


    ================================================================================

    미니 192.168.10.10 vm8 / bind설치 

    록키 192.168.10.20 vm8

     

    bind : LINUX/UNIX용 DNS전용 패키지 / 데몬 named /   (DNS = bind )

    ZONE : 정매칭 A :도메인을 IP에 매칭 www A 192.168.10.10
    REV_ZONE:  역매칭 PTR :IP를 도메인에 매칭 10 PTR http://www.sevas.com.

    named.conf  : 전역설정 (전체 적용)

    named.rfc1912.zones : 지역설정 (각자 적용)


    [ DNS 서버 설정 ]


    yum install bind* -y     
    vi /etc/named.conf   ( named 서버 전역환경)
    options {
    #       listen-on port 53 { 127.0.0.1; };
            listen-on port 53 { any; }; <<<< 외부에서 서버 연결 허용
            listen-on-v6 port 53 { ::1; };
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            memstatistics-file "/var/named/data/named_mem_stats.txt";
            recursing-file  "/var/named/data/named.recursing";
            secroots-file   "/var/named/data/named.secroots";
    #       allow-query     { localhost; };
            allow-query     { any; };    <<<<<<<< 외부에서 nslookup사용가능

            recursion yes;      <<<<<<<<<<<<<< 전달자 가능 

    #       dnssec-enable yes;
    #       dnssec-validation yes;
            dnssec-enable no; <<<<<<<<<<<<<< dnssec 암호화 여부
            dnssec-validation no;   <<<<<<<<<<<<<< dnssec 암호화 키값 

    zone "." IN {

    type hint; <<<< type이 hint면 주로 root도메인
            file "named.ca";           <<<<  rootdomain 정보 저장파일
    };

    vi /etc/named.rfc1912.zones 
         43 zone "sevas10.com" IN {      <<<<<<<< 정방향
         44         type master;
         45         file "sevas10.zone";
         46         allow-update { none; };
         47 };
         48
         49 zone "10.168.192.in-addr.arpa" IN {    <<<<<< 역방향
         50         type master;
         51         file "sevas10.rev";
         52         allow-update { none; };
         53 };


    cp named.empty sevas10.zone         : zone 파일 생성
    vi sevas.zone
    *도메인 마지막에 . 붙이기 
     cp sevas.zone sevas.rev      :  역방향 설정
     vi sevas.rev

    $TTL 3H      <<<캐쉬시간
    @       IN SOA  ns.sevas10.com.           root.sevas10.com. (
                                            0       ; serial    # [업데이트 날짜]
                                            1D      ; refresh  #[ 재갱신 기간]
                                            1H      ; retry     #[ 재시도 기간]
                                            1W      ; expire   #[ 만료 기간]
                                            3H )    ; minimum   #[ 캐쉬 시간]

    chown .named sevas10.*     :    실행전 권한 바꾸기
    chmod 660 sevas10.*     : 실행전 권한 바꾸기     / (세컨에서 업데이트 할경우)

    named-checkconf  /etc/named.conf       :   파일검사  (설정파일확인)
    named-checkzone  sevas10.com  sevas.zone     :  존파일검사  ( named-checkzone [도메인] [설정파일]

    named-checkconf /etc/named.conf
    named-checkzone sevas10.com /var/named <<<----zone 파일검사(dir)
    named-checkzone sevas10.com sevas10.zone <<<----zone 파일검사
    named-checkzone 192.168.10 sevas10.rev <<<----rev 파일검사


    vi /etc/sysconfig/network-scripts/ifcfg-ens33

    DEVICE=ens33
    IPADDR=192.168.10.10
    NETMASK=255.255.255.0
    GATEWAY=192.168.10.2
    ONBOOT=yes
    DNS1=192.168.10.10    : 최종 랜카드 설정

    service network restart
    service named restart
    cat /etc/resolv.conf    <<<<<<<<<<<<<<*** DNS 참조 확인 ****
    nslookup http://www.sevas.com 확인

    ====================================================================

    로컬 컴퓨터와 DNS 연동

    1. ncpa.cpl 에서 이더넷  및 vmnet 8    DNS 변경  
            2. cmd 에서 nslookup 확인
            3. ping [도메인] 을 확인해서 IP가 제대로 가는지 확인
              [안될경우  ipconfig /flushdns 를 쳐서 기다리거나
                1번 내용을 다시 진행함 ]
            
    mini (vmnet1 )  10.10.10.10
    http://www.sevas10.com10.10.10.10
    ftp.sevas10.com 30.30.30.30
    db.sevas10.com 20.20.20.20

    client (vmnet2) 20.20.20.20

    ftp.korea10.com 10.10.10.10
    =======================================================================
    DNS SLVAE 설정

    1. bind 설치  ( yum install bind* -y )
    2. 전역 설정

    vi /etc/named.conf
    options {
    #       listen-on port 53 { 127.0.0.1; };
            listen-on port 53 { any; }; <<<< 외부에서 DNS서버 연결 허용
            listen-on-v6 port 53 { ::1; };
            directory       "/var/named";
            dump-file       "/var/named/data/cache_dump.db";
            statistics-file "/var/named/data/named_stats.txt";
            memstatistics-file "/var/named/data/named_mem_stats.txt";
    #       allow-query     { localhost; };
            allow-query     { any; };  <<<<<<<< 외부에서 nslookup사용가능
            allow-transfer { 20.20.20.20; }; <<<<<<<<  마스터에 넣어 

            also-notify { 20.20.20.20; } ;   <<<<<<<<  마스터에 넣어 

             recursion yes;
    #       dnssec-enable yes;
    #       dnssec-validation yes;
            dnssec-validation no;   <<<<<<<<<<<<<< dnssec 암호화 키값 

            dnssec-enable no;  <<<<<<<<<<<<<< dnssec 암호화 여부

    3. 지역 설정   (마스터)

    vi /etc/named.rfc1912.zones
    zone "korea10.com" IN {
            type master;
            file "korea10.zone";

            allow-update { none; };
            allow-transfer { 20.20.20.20; }; <<<<<<<<<<<<<<  전역/ 지역
            also-notify { 20.20.20.20; }; <<<<<<<<<<<<<< 전역/ 지역
    }; 


    4. 방화벽설정

    firewall-cmd --permanent --add-port 53/udp
    firewall-cmd --permanent --add-port 53/tcp
    firewall-cmd --reload

    firewall-cmd --list-all         (확인)

     

    서버(송)는 tcp , udp 둘다 

    클라이언트(수신)는 udp만 넣어야돼 

     

    5. 데몬 실행 

    service named restart


    6. DNS 주소 이제 변경 

    vi /etc/sysconfig/network-scripts/ifcfg-ens3

    vi /etc/resolv.conf

    service named restart

     

    7. 지역설정 (슬레이브 slave)

    vi /etc/named.rfc1912.zones

    zone "sevas10.com" IN {
            type slave;
            file "slaves/sevas10.zone";
            masters { 20.20.20.20; };
    };

     

    8. 확인 

    nslookup http://www.sevas10.com 
    nslookup http://www.korea10.com 
    /var/named/slaves 에 보면 zone파일이 전송된것을 알수 있음


    ========================================================
    정리포인트
    0. DNS    

    primary server  => 주영역 실제 DNS서버 내용 설정
    secondry server => primary서버의 복사본
    forward server  =>  다른 DNS에게 전달하기 위한서버 (설정X)

    1. dns server type   : 
         hint  : root_domain
         master : primary dns  (주영역)
         slave    : secondry dns (보조영역)

    2. /etc/name.conf 와   /etc/named.rfc1912.zones의 차이점
    named.conf   <<<<모든 도메인 및 DNS에 적용  
    named.rfc1912   <<<<지정한 도메인에 대해서만 적용 

    IXFR 방식       zone 파일비교 후 업데이트
    AXFR(기본값)     zone 파일전송

     

     

     


    전달자  : 내가모르는 주소 다른서버에게 요청
    조건부전달자: 특정한 주소에 대해서만 다른서버에게 요청

    forward only : 무조건 전달                     ---> 이거 많이 사용
    forward  first : 제일먼저 전달한뒤 없음 본인내용

    forwarders { nameserverIP; nameserverIP;... };

    장점 : 내가 없는 도메인을 넘길수있다 


    *** 사설 IP로는 확인 어려움 공인IP로 확인해야됨 ***
    ### 전달자는  recursion yes; 가 활성화 되어있어야됨 ###

    recusion yes; = 포워딩
    ==========================================================

    20.20.20.20  DNS

    http://www.sevas20.com20.20.20.20 

     

    vi /etc/named.conf
     forward only;
     forwarders { 20.20.20.20; };

     recursion yes;

     

    ========================================================================================
    *** DNS 수업포인트 ***

    zone 영역  정방향 nslookup  http://www.sevas10.com A   => 도메인이 기준  
    rev  영역  역방향 nslookup  192.168.10.10    PTR  => IP가 기준   (보통 사용X)

    DNSserver type
    hint  :  root 도메인 서버
    master : primary   ( 주서버    ) slave시 allow-transfer 
    slave  : secondry  ( 보조(복사본)서버 ) masters { master IP; };
    cache  : forword (전달자)

    TIP 빠른 업데이트를 원할경우 
    also-notify { slave IP; }; 를 주면 바로 변경됨

     forward only; : 내주소에 없으면  다른 DNS로 가 
    forward first;  : 다른 DNS주소 먼저 가고 없으면 내 주소 와 

    IXFR  : 송신
    AXFR : 수신
    =============================================================
    DNS  증폭공격이란? (DNS Reflector Attack)
    DNS 쿼리를 요청할때 희생자의 IP로 스푸핑을 하여서 여러 DNS서버에 요청 
    요청을 받은 서버들은 희생자에게 쿼리내용을 보내게됨
    희생자의 컴퓨터 DOS공격이 걸림

    *보안방법*
    1.recusion no; 로 하여 재귀적인 질문 차단   =
    2.query type 을 지정하여 지정한 내용만 포워딩할수있게끔 쿼리문받음
    3.allow-query를 허용된 네트워크만 설정하여 질의필터링 

    '보안' 카테고리의 다른 글

    2024.05.27.월.보안 day37  (1) 2024.05.27
    2024.05.24.금.보안 day36  (0) 2024.05.24
    윈도우 DNS  (0) 2024.05.23
    2024.05.21.목.보안 day35  (0) 2024.05.23
    2024.05.20.수.보안 day34  (0) 2024.05.22
    댓글