Server-A Master DNS
Server-B Slave DNS forwarder { 8.8.8.8; 8.8.4.4; }
Client-Linux Slave DNS forward only;
Client-Window Slave DNS
Server-A, Server-B, Client-Linux
#chkconfig iptables off
#vi /etc/sysconfig/selinux
enforcing --> disabled
#vi /etc/resolv.conf
nameserver 100.100.100.110
nameserver 100.100.100.120
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=100.100.100.110
DNS2=100.100.100.120
Server-A
#vi /etc/named.conf
dnssec -enable no
dnssec-validation no
#service named restart
#service network restart
#dig @ns.taehoon.com google.com
PAM을 이용한 로그인 제한
PAM( Pluggable Authentication Module )
서비스 접속 및 각종 인증에 사용되는 모듈
ftpuser 파일을 이용한 FTP 사용자 접근 제어는 사용자 인증에 사용되는 모듈 PAM의 pam_listfile.so 모듈을 이용해 가능하다.
#cat /etc/pam.d/vsftpd
- 인증을 담당하는 2번째 줄 auth에서 해당 설정 확인
auth required pam_listfile.so
item=user sense=deny // (sense=deny)하며, 해당 파일이 없거나 파일명이 다르면 접속을 허용
file=etc/vsftpd/ftpusers // 해당파일(file=etc/vsftpd/ftpusers)에 등록되어 있는 사용자는 접근 금지
onerr=succeed // (onerr=succeed) 하라는 의미.
vsftp에서 PAM을 사용하기 위해 설정파일에 명시가 되어 있다.
#vi /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd
VSFTP 인증 절차
(1) 클라이언트가 FTP서버에 서비스 요청 (로그인)
(2) VSFTP서비스가 PAM 에게 인증을 요청(위임)
- /etc/vsftpd/vsftpd.conf 설정 중
pam_service_name=vsftpd옵션 확인 후 PAM 설정 확인
(3) PAM 설정 파일 확인
- /etc/pam.d/vsftpd 파일의 모듈 및 설정 내용 확인(pam_listfile.so)
(4) 인증 결과를 서버에게 전달
- sense=deny, onerr=succeed
(5)FTP 서버는 PAM인증 결과로 VSFTP서비스 승인/거부를 진행
Client-Linux
↑
ㅣ
ㅣ
↓
FTP Server
인증
---------------->
VSFTPD PAM
<----------------
YES/NO
-/etc/vsftpd/vsftpd.conf 설정 변경 후 진행
userlist_enable=NO
#userlist_deny=NO
(1) /etc/vsftpd/ftpusers 파일에 ftp-user3을 추가한 후 접속을 시도한 뒤에 /var/log/secure 파일을
tail로 확인하여 PAM에 의하여 인증이 실패해서 서비스 접근이 거부되엇다는 메세지를 확인(실패)
#useradd ftp-user3
userpasswd ftp-user3 : 123
#vi /etc/vsftpd/ftpusers
ftp-user3
(2) /etc/vsftpd/ftpusers 파일에 ftp-user3을 추가한 후 접속이 가능 하도록 vsftpd PAM설정 파일을 수정 (성공)
#vi /etc/pam.d/vsftpd
sense=allow
(3) ftp-user3 접속을 성공 했다면,
/etc/vsftpd/vsftpd.conf에서
userlist_enable=NO 옵션을
userlist_enable=YES 로 변경하여 user_list 파일을 활성화 및 데몬 재시작 후 로그인 시작(성공)
(4) userlist_deny=YES 옵션을 추가하여 로그인 시도(성공)
(5) userlist_deny=NO 옵션을 변경하여 로그인 시도(실패)
-PAM 승인/거부 및 user_list 사용 여부에 따라 다양한 설정이 가능하므로 옵션 변경을 통해 테스트 하기
chroot 적용하기
(1)vim /etc/vsftpd/vsftpd.conf
vsftpd.conf 파일을 수정하여 chroot를 적용한다.
(사용자가 접근 가능한 최상위 디렉토리가 자신의 홈디렉토리로 제한된다는 의미)
(2)chroot_local_user=YES
로컬 유저에게 chroot 적용을 한다
(3)allow_writeable_chroot=YES
사용자에게 chroot가 적용된 자신의 홈 디렉토리로의 접근을 허용한다.
(4)chroot_list_enable=YES
chroot 예외 설정을 위한 기능을 활성화 한다.
(5)chroot_list_file=/etc/vsftpd/chroot_list
모든 계정 사용자에게 chroot를 적용했지만 예외로 chroot기능을 적용하지 않을 사용자를 정의하기 위해 사용하는 옵션이다.
즉, /etc/vsftpd/chroot-list 파일에 등록된 사용자는 chroot가 적용되지 않고 시스템 최상위 디렉토리(/)로의 접근을 허용한다는 의미
chroot
(1)ftp-user1, ftp-user2 계정의 홈디렉토리 임의의 파일을 생성한다
ex) ftp-user1_file, ftp-user2_file
(2) vim /etc/vsftpd/chroot_list
(3) ftp-user1 계정을 chroot_list 파일에 포함
(4) ftp-user2 계정은 포함하지 않는다.
Client-Linux
(5) ftp-user1 계정으로 FTP서버에 접속하여 현재 경로 및 리스트를 출력한다.
(6) ftp-user2 계정으로 FTP서버에 접속하여 현재 경로 및 리스트를 출력한다.
- 기본적으로 사용자가 시스템에 접근 가능한 최상위 디렉토리는 (/)루트 이다.
- chroot가 적용되면 이 최상위 디렉토리가 일반적인 경우 /home/username으로 변경되어 사용자의 홈디렉토리 이상의 경로로 이동이 불가능하게 된다.
- 이 기능은 기본으로 사용되지 않고 있는데, 이 경우는 사용자가 FTP서버 접속 시 자신의 홈 디렉토리 이사으이 경로로 변경이 가능하게 된다.
- FTP 서버의 보안을 고려한다면 반드시 사용할 것을 추천한다.
접근과 연결제한
TCP_WRAPPER
- Xinetd 데몬에 의해 수행되는 서비스들의 접근제어 프로그램
(1) vim /etc/vsftpd/vsftpd.conf
tcp_wrappers=YES
VSFTP 서버의 주 설정 파일을 열어서 TCP_WRAPPER를 사용하기 위해 설정한다.
(2) vim /etc/hosts.deny
vsftpd:ALL
TCP_WRAPPER가 접근 금지를 위해 사용하는 /etc/hosts.deny 파일을 열어서 모든(ALL)
네트워크로부터 VSFTP 서버로의 접근을 금지한다는 규칙을 생성한다.
(3) vim /etc/hosts.allow
vsftpd:*.taehoon.com 100.100.100.0/255.255.255.0
접근을 허용할 네트워크 주소를 정의하기 위해 /etc/host.allow 파일을 수정한다.
도메인 taehoon.com의 모든 호스트에 접근을 허용하고 100.100.100.0/24 대역의 네트워크의 접근도 모두 허용한다.
(4)tcpdmatch vsftpd 100.100.100.130
테스트를 위해 명령어 tcpdmatch를 이용해 vsftpd 서비스에 대해 클라이언트를 조회하면 접속이 허용되어(granted) 있음을 알 수 있다.
(5) vim /etc/hosts.allow 파일의 설정을 잠시 주석 처리 한 후, tcpdmatch와 클라이언트 접속 테스트 결과 확인
TCP_WRAPPER는 서비스 접근 제어시 규칙을 이용해 기능을 한다.
- 두 파일 중 /etc/host.allow 파일은 /etc/hosts.deny 파일보다 우선순위에 있어서 hosts.allow에 규칙이 먼저 해석 된다.
- 그러므로 hosts.deny에 있는 규칙에 겹친다면 이 규칙들은 무시되고 적용되지 않는다.
- 한 파일 내에 존재하는 규칙들은 탑다운(top_down)방식에 의해 해석된다.
그러므로 제공하는 서비스에 대해 겹치는 규칙이 존재한다면 첫 번째 규칙만 적용되고 나머지는 적용되지 않는다.
- 즉 규칙의 순서가 아주 중요하다는 의미이다.
- 이 두 개의 파일에 어떤 규칙도 존재하지 않는다면 기본적으로 이 프로그램을 사용하는 모든 서비스는 접근을 허용하게 된다.
- host.allow나 hosts.deny 파일에 어떤 변경을 하게 되면 네트워크 서비스를 다시 시작하지 않더라도 바로 적용된다.
연결 제한
vim /etc/vsftpd/vsftpd.conf
(1) max_clients=50 // 동시에 VSFTP 서버에 접속 가능한 사용자 수 의미
(2) max_per_ip=10 // 한 개의 IP주소에서 연결 가능한 수를 의미한다.
(3) anon_max-rate=10000 // 임의의 사용자들이 초당 전송 가능한 최대 데이터 속도를 의미한다.
(4) local_max_rate=40000 // 계정 사용자들이 초당 전송 가능한 최대 데이터 속도를 의미한다.
(5) max_login_fail=3 // 설정된 횟수만큼 로그인에 실패하면 세션이 끊기게 된다.
(6) idle_session_timeout=300 // 단위는 초이며, 이 시간 동안 클라이언트로부터 FTP 명령이 없으면 세션이 끊긴다.
Passive 모드 설정
vim /etc/vsftpd/vsftpd.conf
(1)pasv_enable=YES //Passive 모드 설정을 사용하겠다고 정의한다.
(2)pasv_max=port=61010 //FTP 클라이언트에게 Passive 모드 이용시 최대로 사용 가능한 포트 번호를 정의한다.
//기본값은 0인데, 이것은 최대 사용 포트에 대한 제한이 없다는 의미로서 값은 65535를 초과해서는 안 된다.
(3)pasv_min=port=61000 //FTP 클라이언트에게 Passive 모드 이용 시 최소로 사용 가능한 포트 번호를 정의한다.
//기본 값은 0인데, 이것은 최소 사용 포트에 대한 제한이 없다는 의미로서 이 값은 1024보다 낮게 설정할 수 없다.
VSFTP 보안 기능 설정 : SFTP와 FTPS
- 일반적으로 FTP 서버를 이용한 파일전송은 보안 기능이 적용되지 않는다.
- 안전한 파일 전송을 위해 사용하는 가장 일반적인 방법은 SFTP와 FTPS를 사용하는 방법이다.
Server-A
(1) yum -y install openssh-server openssh
(2) vim /etc/ssh/sshd_config
SSH 서버에서 외부 프로그램을 사용하기 위해 설정하는 키워드 Subsystem에 이름 sftp와 internal-sftp를 지정한다.
internal-sftp는 ChrootDirectory옵션을 사용해 각 사용자 별로 chroot를 적용하기 위해 새롭게 만든 이름이다.
정의된 sftp를 사용할 그룹 이름과 그 옵션이 정의 됐는데, 이 그룹에 속한 사용자들은 ssh및 scp를 사용할 수 없고 오직
sftp만 사용 가능하며, 또한 chroot가 적용되어 자신의 홈 디렉토리를 루트(/) 디렉토리로 인식한다.
TEST
Server-A
(1) service network restart
(2) groupadd sftp-users
useradd -G sftp-users sftp-user1
useradd -G sftp-users sftp-user2
passwd sftp-user1
passwd sftp-user2
id sftp-user1
id sftp-user2
(3) mkdir /home/sftp-user1/test_dir
(4)chmod -R 755 /home/sftp-user1
chown -R root:sftp-users /home/sftp-user1
chroot를 적용하기 위해서 소유자(root)외에 쓰기 권한을 제거하며, 디렉토리의 소유자를 변경하여야 한다.
Client-Linux
sftp 접속 테스트 (3번만 접속 허용) 2,4번은 접속 불가
(1) yum -y install openssh-clients
(2) ssh sftp-user1@ftp.taehoon.com
This service allows sftp connections only
sftp-user 그룹에 속한 사용자 sftp-user1이 FTP서버로 ssh 접속을 시도하면, 이 사용자는 오직 sftp 서비스만
사용할 수 있다는 메시지와 함께 연결이 끊기게 된다.
(3) sftp sftp-user1@ftp.taehoon.com
다시 사용자가 sftp-user1이 sftp로 접속을 시도하면 정상적으로 접속이 이루어지고 현재 경로가 사용자의 홈 디렉토리이며,
sftp-user1이 사용할 수 있는 최상위 디렉토리가 된다.
(4) sftp sftp-user2@ftp.taehoon.com
sftp-user1 계정은 접속은 가능하나, 디렉토리에 권한이 없어 명령어 사용에 제한이 되어 있다.
Client-Window
FileZilla 접속
sftp 업로드 o 다운로드 x
vi /etc/vsftpd/vsftpd.conf
wirte_enable=YES
'Linux' 카테고리의 다른 글
Day-37 Samba & NFS (0) | 2017.01.31 |
---|---|
Day-36 FTPS & Samba(미완) (0) | 2017.01.31 |
Day-34 FTP (0) | 2017.01.27 |
Day-33 DNS (0) | 2017.01.26 |
Day-32 DNS (0) | 2017.01.25 |