8.21 정리-FTP 서버 2, DNS 서버

HakJin Kim·2023년 8월 21일
0

FTP

사용자 통제

  • /etc/vsftpd디렉터리 아래의 ftpusers, userlist 파일에 등록된 사용자를 허용시켜주기
    (ftpusers와 userlist에 등록된 사용자는 ftp로 접근이 불가능하다.)
</etc/vsftpd>

/etc/vsftd/vsftpd.conf 파일의

userlist_enable=YES		<= default 상태

userlist_deny=NO		<= 해당 라인 추가
</etc/pam.d>

/etc/pam.d/vsftpd 파일의

sense=deny를 allow로 변경

개념

  • 해당 설정 자체가 ftpusers와 userlist에 있는 계정들을 차단하는 설정 개념에서 허용시키는 설정 개념으로 바꾼것

과정

  • 설정하기 전 root 접속 (접속 차단)
  • etc/vsftpd/vsftpd.conf 파일 설정
  • etc/pam.d/vsftpd 파일 설정
  • 두 디렉터리에 있는 파일 설정 후 root 접속 (접속 허용)

오류

  1. userlist에 있는 root 계정을 주석처리 하면 permissin denied가 뜬다.
    (vsftpd - 해당 계정으로 ftp 접근 자체가 안된다.)
  2. ftpusers에 있는 root 계정을 주석처리하면 패스워드 입력이 뜨지만 login failed가 뜬다
    (PAM - 해당 계정으로 ftp 접근은 되지만 패스워드 입력을 하여도 접속이 안된다.)

cf) 접근 차단의 일련 순서

그룹 통제

<그룹 추가>
groupadd testgroup
usermod -G testgroup test
usermod -G testgroup test1
usermod -G testgroup test2
<PAM 디렉터리>
vi /etc/pam.d/vsftpd

item=group						<= user에서 변경
file=/etc/vsftpd/ftpgroup		<= ftpusers에서 변경

file 설정과 맞게 동일한 파일명 생성 후 내용에 그룹명 추가

과정

  • 해당 그룹에 사용자 계정 추가
  • /etc/pam.d/vsftpd 파일의 설정
    item=group, file=~~ftpgroup으로 변경
  • file 설정 아래의 ftpgroup 파일 추가 및 내용 설정

  • sense=allow시 test와 test5 계정의 접근

pam.d/vsftpd 파일의 sense설정을 deny로 설정시

  • sense=deny시 test와 test5 계정의 접근

디렉터리 이동 제한

/etc/vsftd/vsftpd.conf 파일의

102 줄의 
chroot_local_user=NO		<= Yes에서 No로 변경 

* 해당 줄 변경시 자신의 디렉터리 외의 다른 디렉터리로 이동 불가능

1. 전체 제한

/etc/vsftd/vsftpd.conf 파일의

chroot_local_user=YES			<= default=YES
allow_writeable_chroot=YES		<= 해당 줄 추가

* 해당 줄 추가시 FTP 서버 접근 허용

2. 특정사용자 제한

/etc/vsftd/vsftpd.conf 파일의

	102 chroot_local_user=NO						<= Yes에서 No로 설정
    
    104 chroot_list_enable=YES						<= 해당 줄 활성화
    
    106 chroot_list_file=/etc/vsftpd/chroot_list	<= 해당 줄 활성화 및 chroot_list 파일 생성 및 유저 추가
    
* 해당 설정 시 chroot_list에 있는 사용자 계정은 로그인 자체가 안된다.

3. 특정사용자 허용

/etc/vsftd/vsftpd.conf 파일의

	102 chroot_local_user=YES						<= Yes 유지
    
    104 chroot_list_enable=YES						<= 해당 줄 활성화
    
    106 chroot_list_file=/etc/vsftpd/chroot_list	<= 해당 줄 활성화 및 chroot_list 파일 생성 및 유저 추가

* 해당 설정 시 chroot_list에 있는 사용자계정 외 다른 계정은 로그인 자체가 안된다.

숨김파일 확인

/etc/vsftd/vsftpd.conf 파일의

force_dot_files=YES		<= default=NO

* 해당 줄 추가시 .이 붙은 숨김파일까지 확인 가능하다.
  • .이 붙은 숨김 파일을 볼 수 있다.

특정파일 업로드 제한

/etc/vsftd/vsftpd.conf 파일의

deny_file={*.mp3,*.mp4,*.exe,*.txt}		<= 해당 줄 추가

* 해당 줄 추가시 mp3, mp4, ext, txt 파일 업로드 제한

특정 확장자 목록 출력 제한

/etc/vsftd/vsftpd.conf 파일의

hide_file={*.exe,*.txt}		<= 해당 줄 추가

* 해당 줄 추가시 exe, txt 파일 목록 출력 제한
  • test 디렉터리에 test.jpg와 test.txt 파일이 있지만
    ftp 접속 후 보이는 파일은 txt파일을 제외한 jpg 파일만 확인 가능하다.

anonymous FTP

환경 설정

<anonymous 활성화>
     11 # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
     12 anonymous_enable=YES			<= default는 Yes
<anonymous 홈디렉터리>
/var/ftp/pub
  1. /var/ftp에 chmod 777을 준다면 anonymous 로그인 자체가 안된다.
    (보안상의 문제 때문에)
  2. 파일 업로드를 하려면 /var/ftp/pub에 chmod 777을 주어야 가능하다.

파일 업로드

<업로드 활성화>
/etc/vsftd/vsftpd.conf 파일의

29번째 줄

anon_upload_enable=YES			<= 주석 처리 해제

* 해당 설정과 더불어 /var/ftp/pub에 chmod 777을 주어야 업로드가 가능하다.

파일 다운로드

<다운로드 활성화>
/etc/vsftd/vsftpd.conf 파일의

anon_world_readable_only=NO			<= 해당 줄 추가 및 NO 설정(default는 YES)

anonymous의 특정 email 패스워드 차단

/etc/vsftd/vsftpd.conf 파일의

     93 deny_email_enable=YES						<= 주석 해제

     95 banned_email_file=/etc/vsftpd/banned_emails	<= 주석 해제 및 해당 경로 파일 생성 후 내용 추가
/etc/vsftpd/banned_emails 파일에

test@co.kr 추가

* 해당 경로상의 파일에 내용추가 후 (anonymous/test@co.kr) 으로 로그인 시 접속이 안된다.

anonymous의 특정 email 패스워드 허용

/etc/vsftd/vsftpd.conf 파일의

     93 deny_email_enable=NO						<= 주석 해제 및 NO 설정(default는 YES)

     95 banned_email_file=/etc/vsftpd/banned_emails	<= 주석 해제 및 해당 경로 파일 생성 후 내용 추가
/etc/vsftpd/banned_emails 파일에

test@co.kr 추가

* 해당 경로상의 파일에 내용추가 후 (anonymous/test@co.kr) 으로 로그인 시 접속이 가능하다.

DNS

도메인 네임

  • 최상위 Root 서버
  • 그 아래 gTLDs(국제{글로벌} 도메인), ccTLDs(지역 도메인)
  1. gTLDs(국제{글로벌} 도메인)---.com/.net---domain.com
  2. ccTLDs(지역 도메인)---.kr---domain.kr/co.kr/or.kr

ex) www.test.co.kr 구분

  1. test.co.kr 부분만 도메인
  2. www 부터 .kr 까지는 FQDN
  • 도메인 네임은 절대 바뀌지 않는다.

DNS 연결 단계

  • 주의점) DNS는 네트워크간의 통신이 아닌 프로그램 간의 통신임을 유념
    ex) 구글 chrome과 Apache 간의 통신.

1. 클라이언트 인터넷 주소창에 http://www.test.co.kr:80/index.html 주소 검색

2. DNS cache - 이전에 찾아간 기록이 있다면 바로 연결

c:\windows\system32\drivers\etc\hosts - 과거 DNS 연결 방식 / 현재는 INIC에서 도메인 관리
DNS ip Address
(세 순서를 거침)

3. DNS ip Address를 통해 ISP의 DNS 서버(0)로 해당 Domain의 IP 주소 정보 요구

4. ISP의 DNS Server(0)에 해당 Domain의 IP 주소 정보가 없다면 root DNS Server(1)로 이동

4-1. root DNS Server(1)에 해당 Domain의 IP 주소 정보 요구
4-2. root DNS Server(1)에 해당 Domain의 IP 주소 정보가 없다면 com DNS 서버(2)로 이동
4-3. com 서버(2)에 해당 Domain의 IP 주소 정보가 없다면 test.com DNS Server(3)로 이동
4-4. test.com DNS Server(3)에 해당 Domain의 IP 주소 정보가 있다면 ISP의 DNS Server(0)로 해당 IP 주소 정보를 전송

  • 여기까지 순환적으로 DNS 서버에 접근하여 물어보는 것 = Recursive Query
  • 각 DNS 서버에게 해당 Domain의 IP 주소 정보를 요구 = DNS 쿼리

5. ISP의 DNS Server(0)는 도메인에 대해 받은 IP 주소를 캐싱한 뒤 클라이언트 PC에게 전송

6. 클라이언트 PC의 인터넷 브라우저가 해당 IP 주소의 웹서버에 접근

-----------------------(여기까지가 DNS 상 접근하는 단계)-----------------------

DNS 마스터 서버, 슬레이브 서버

  • DNS 서버의 이중화 개념
  • 도메인이란? : 하나의 영역
    DNS 마스터 서버 ===>Zone Transfer(영역 전송/동기화)===>DNS 슬레이브 서버
    (Zone Transfer 진행 간 TCP/UDP 53번 포트 사용)

DNS 마스터, 슬레이브 전송 단계

  1. Zone File에서 DNS 마스터로 전송
  2. DNS 마스터와 DNS 슬레이브는 SOA 필드를 기준으로 업데이트 유무를 판별
  3. SOA 필드의 Serial이 변경 시 Zone Transfer(영역전송)을 통해 서로 동기화를 진행함.

도메인 네임 서버

- 서버 : BIND(v9.0)
- 데몬 : named

환경설정 파일

/etc/namde.conf					<= 주 환경 설정 파일

/etc/named.rfc1912.zones		<= 도메인 등록 파일

/var/named/(해당 도메인.ZONE)		<= 도메인 레코드 파일

0. 설치

yum -y install bind*

1. /etc/named.conf 설정 (초기설정)

options {
        listen-on port 53 { any; };									<= 127.0.0.1에서 any;로 변경
//      listen-on-v6 port 53 { ::1; };								<= DNS의 주석처리는 / 두개
        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     { any; };									<=localhost;에서 any;로 변경

33번째 줄         recursion yes;										<=순환 질의에 대한 옵션
35번째 줄         dnssec-enable yes;									<=주고 받는 질의를 암호화 후 송수신

2. /etc/named.rfc1912.zones 설정 (도메인 등록 설정)

<해당  삭제>
     25 zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
     26         type master;
     27         file "named.loopback";
     28         allow-update { none; };
     29 };
<해당  복사  수정>
     37 zone "test.co.kr" IN {						<= 0.in-addr.arpa에서 사용할 주소 입력
     38         type master;
     39         file "test.co.kr.zone";				<= named.empty에서 사용할 주소.zone 입력
     40         allow-update { none; };

3. /var/named 설정 (레코드 파일 생성)

cd /var/named
vi (named.rfc1912.zones 파일에서 설정한 파일명)
<test.co.kr.zone 파일>
$TTL    0
@       IN      SOA     test.co.kr.     admin.test.co.kr.       (

                        20230821        ; Serial
                        1D              ; Refresh
                        1H              ; Retry
                        1W              ; Expire
                        1W              ; Minimum TTL

)
        IN      NS      test.co.kr.     
        IN      A       192.168.0.174

4. DNS서버 주소 지정

vi /etc/resolv.conf

#Generated by NetworkManager
nameserver (레코드의 해당 주소로 변경/192.168.0.174)

5. DNS로 접속 시 배너 설정

vi /etc/issue.net

6. DNS 서버 확인

(nslookup/host) test.co.kr
  • 레코드 파일에 등록한 test.co.kr. 주소에 대해 IP 주소가 나온다.

7. Telnet을 이용한 DNS 접근

<telnet-server 설치>
yum -y install telnet-server.x86_64

- 각 서버에 telnet-server를 설치

* 이때 xinetd 패키지가 설치시
** systemctl restart telnet.socket 명령어시 오류가 날 수 있다.
<named.rfc1912.zones 설정>

- 해당 명령어 설정

zone "test.co.kr" IN {						<= 서버 1에 대한 주소
        type master;
        file "test.co.kr.zone";
        allow-update { none; };
};

zone "test1.co.kr" IN {						<= 서버 2에 대한 주소
        type master;
        file "test1.co.kr.zone";
        allow-update { none; };
};

zone "test2.co.kr" IN {						<= 서버 3에 대한 주소
        type master;
        file "test2.co.kr.zone";
        allow-update { none; };
};
<var-named디렉터리에 파일 생성>

- rfc 파일에서 설정한 파일명으로 파일 생성 및 내용 수정

$TTL    0
@       IN      SOA     test.co.kr.     admin.test.co.kr.       (		<= 해당 파일명과 매칭

                        20230821        ; Serial
                        1D              ; Refresh
                        1H              ; Retry
                        1W              ; Expire
                        1W              ; Minimum TTL

)
        IN      NS      test.co.kr.										<= 해당 파일명과 매칭
        IN      A       192.168.0.174									<= 접근할 서버 주소 설정

중간포인트

이곳까지 설정 후
systemctl restart named 실행해주기

<etc-resolv.conf 파일 수정>
#Generated by NetworkManager
nameserver 192.168.0.174		<= 서버1 주소
nameserver 192.168.0.173		<= 서버2 주소
nameserver 192.168.0.181		<= 서버3 주소

결과

  • 여기까지 서버1(174), 서버2(173), 서버3(181), 서버4(184)에 대해 설정하였다.
======================
======================
Welcome to test3.co.kr
======================
======================

과 같은 배너를 등록하려면 각 서버에서 vi /etc/issue.net을 통해 설정 해주어야 한다.

설정 이슈

  • 서버4에서 서버1로 접근하려고 할때 자신의 주소(서버4)로 접근이 된다면
    dns 패키지 설치 후 설정을 해주어야??
profile
처음 시작하는 사람

0개의 댓글

관련 채용 정보