정보보안공부
Linux_리눅스 FTP 보안 설정 본문
리눅스 FTP 보안 설정
- 오라클 가상 머신 사용
- CentOS7
- Windows 10
<FTP 보안 설정>
- 익명 연결 여부
- 상위 디렉토리 거부
- 접근 제어
#1 FTP ( File Transfer Protocol )
- FTP는 TCP/IP 기반의 원격으로 떨어져 있는 서버와 클라이언트 사이의 파일 전송을 위한 통신 프로토콜중 하나이다.
- FTP 서비스는 아이디 및 패스워드가 암호화되지 않은 채로 전송되어 간단한 스니퍼에 의해서도 아이디 및 패스워드가 노출될 수 있으므로 반드시 필요한 경우를 제외하고는 FTP 서비스 사용을 제한해야한다.
- 동작모드로는 Active mode 와 Passive mode가 있다.
#2 FTP 보안설정 - 익명 연결 여부
설정 파일 : /etc/vsftpd/vsftpd.conf
- 허용 : 아무사용자나 다 접근가능
- 불가 : 아이디나 패스워드를 알고있는 사용자만 접근이 가능하다.
anonymous_enble=NO -> anonymous 사용자 로그인 불가!!
anonymous_enble=YES -> anonymous 사용자 로그인 가능!! ( vsftpd 설치시 기본으로 YES 설정되어있다. )
-> 설정후에 systemctl restart vsftpd 를 해주어야 한다. ( vsftpd 서비스를 재시작해야 설정한 사항이 적용된다. )
#2 FTP 보안설정 - 상위 디렉터리 접근 거부 ( chroot )
설정파일 : /etc/vsftpd/vsftpd.conf
-> 상위 디렉터리 접근 거부 = 쓰기 거부라는 의미를 담고있다.
*** SERVER에서 chroot_local_user = YES 설정
- 100줄 #chroot_local_user=YES -> chroot 사용 여부
-> 주석풀고 저장 , vsftpd 데몬 재시작 ( systemctl restart vsftpd )
*** Client에서 Server로 ftp 접속해보기 - 접속이 안된다.
-> chroot_local_user = YES 만 설정하면 접속이 안된다. 추가적인 설정필요
-> 옛날에 됬었지만 현재 되지않는다.
*** SERVER에서 allow_writeable_chroot = YES 추가로 설정
- allow_writeable_chroot=YES 추가로 넣어야한다. 설정후 데몬 재시작 ( systemctl restart vsftpd )
*** Client에서 Server로 ftp 접속해보기 - 접속이 되고 상위디렉토리로 접근불가 , 접속후 해당위치는 무조건 / (최상위 )로 표시
- 접속후에 해당 사용자의 홈디렉토리에 위치해야 하지만 무조건 / ( 최상위 )로 보여줌으로써 경로를 전부공개하지 않는다.
- 접속후 cd를 이용해 상위 디렉토리 ( /tmp 등등 )로 이동이 불가능하다.
## 모든 사용자의 상위 디렉토리 접근 거부
chroot_local_user=YES
allow_writeable_chroot=YES
-> 모든 사용자가 상위 디렉토리 접근이 거부된다.
## 특정 사용자만 상위 디렉터리 접근 거부
chroot_local_user=NO
allow_writeable_chroot=YES
chroot_list_enable=YES
-> chroot_list_enable에 등록된 사용자는 상위 디렉터리에 접근이 거부된다.
## 특정 사용자만 상위 디렉터리 접근 허용
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
-> chroot_list_enable에 등록된 사용자는 상위 디렉터리에 접근이 허용된다.
-> 리스트 파일위치 chroot_list_file
/etc/vsftpd/chroot_list
#2 FTP 보안설정 - 접근제어 설정
설정 파일 : /etc/vsftpd/vsftpd.conf
- 접근제어 설정은 3가지로 이루어져있다.
*** 첫번째 : 사용자 접근제어 userlist_enable=YES
설정파일 : /etc/vsftpd/vsftpd.conf
-> userlist_enable=YES : /etc/vsftpd/user_list에 등록된 사용자를 활성화 시킬것인지
-> userlist_deny=YES : /etc/vsftpd/user_list에 등록된 사용자를 거부목적으로 사용 ( default로 설정되어있다. )
-> userlist_deny=NO : /etc/vsftpd/user_list에 등록된 사용자를 허용한다.
설정파일 : /etc/vsftpd/user_list
-> 설정된 사용자로 접속시 비밀번호도 물어보기 전에 거부된다.
*** 두번째 : /etc/shadow 파일을 이용해 로그인 인증을 해주는 pam모듈 pam_service_name=vsftpd
설정파일 : /etc/pam.d/vsftpd
-> pam모듈에 의해 /etc/vsftpd/ftpusers에 등록되어있는 사용자는 거부한다.
-> 기본값으로 위와같이 설정되어있다.
설정파일 : /etc/vsftpd/ftpusers
-> 여기에 작성된 사용자는 pam모듈에 의해 패스워드를 올바르게 입력해도 로그인 실패한다
-> root등 중요 계정을 ftpusers 파일에 명시하여 접속을 제한한다.
*** 세번째 : tcp_wrappers 를 이용해 Host 접근 제어 - /etc/hosts.allow , /etc/hosts.deny
설정파일 : /etc/hosts.allow -> 허용할 호스트
설정파일 : /etc/hosts.deny -> 거부할 호스트
-> 두개의 파일이 작성되어있을 시에 hosts.allow 먼저 반영한다.
-> 두개의 파일에 해당사항이 없으면 접근을 허용한다.
두개의 파일의 작성하는 형태는 <service_name>:<host> 형태로 작성한다.
#> vi /etc/hosts.deny
ALL:ALL -> 모든 서비스에 대해서 모든 호스트 거부
vsftpd:100.100.100. -> vsftpd 서비스에 대해서 100.100.100. 네트워크 대역대 거부
#>vi /etc/hosts.allow
sshd:100.100.100. EXCEPT 100.100.100.200 -> sshd 100.100.100. 네트워크 대역대만 허용 , 100.100.100.200은 제외
vsftpd:100.100.100.190 -> vsftpd 서비스에 대해서 100.100.100.190 네트워크는 거부한다.
'Linux' 카테고리의 다른 글
Linux_리눅스 원격제어 - Telnet / SSH (1) | 2018.08.02 |
---|---|
Linux_리눅스 Xinetd 슈퍼데몬 (0) | 2018.08.01 |
Linux_리눅스 FTP (0) | 2018.07.31 |
Linux_리눅스 SAMBA (0) | 2018.07.26 |
Linux_리눅스 NFS (0) | 2018.07.24 |