2. 기본적인 보안설정(1)
[active 모드]
- connect_from_port_20=YES
이때 20번 포트의 데이터전송 연결을 허용여부.
- ftp_data_port=20
데이터 전송 포트를 지정
- port_enable=YES
데이터 전송을 위해서 포트를 사용할 것인지 설정
- pasv_enable=NO
데이터 전송을 위해서 Passive mode를
사용할 것인지 설정
Active Mode로 접근할 수 없는 사용자들을 위해 활성화 추천
[Passive 모드]
- port_enable=YES
데이터 전송을 위해서 포트를 사용할 것인지 설정
- pasv_enable=YES
데이터 전송을 위해서 Passive mode를 사용할 것인지 설정
Active Mode로 접근할 수 없는 사용자들을 위해 활성화 추천
- pasv_min_port=50031
특정범위 최솟값
- pasv_max_port=50040
특정범위 최댓값
2. 기본적인 설정(2)
- anonymous_enable=NO
익명(anonymous) 접속을 허용거부
- local_enable=YES
로컬 계정 사용자들의 접속을 허용
- xferlog_enable=YES
ftp 접속후에 파일 업로드와 다운로드에 대한 로그를
기록여부 설정
(디스크 용량 고려 -> 용량 초과시 시스템 부하율 고려)
- xferlog_std_format=NO
로그파일에 남길 로그파일의 포맷을 기본포맷 남김여부
- userlist_enable=YES
명시된 사용자만 로그인을 허용할 때 사용하는 옵션
- tcp_wrappers=YES
tcp_wrappers 적용 여부를 설정
->허용할 호스트는 /etc/hosts.allow
->허용하지 않을 호스트는 /etc/hosts.deny에 설정
- listen=YES
YES : standalone 데몬을 운영(listen 옵션을 모두 YES)
NO : xinted 데몬 운영
* standalone : 항상 띄어둬야하는 데몬 ->webserver
* xinted : 항시 띄워둘필요 없는 데몬
- listen_port=50000
서비스할 포트번호(기본 21번)를 지정
2. 기본적인 설정(3)
- write_enable=YES
ftp 전용명령어 중에 write 명령어를 허용
- local_umask=022
로컬계정 사용자들의 umask 값을 설정
vsftp 에서의 umask 기본값은 077 (해당계정만 권한)
- file_open_mode=0644 (기본값 = 0666)
파일이 업로드 되었을 때의 퍼미션을 지정해주는 옵션
* 반드시 umask 옵션보다 낮아야함(보안상 문제)
- pam_service_name=vsftpd
sftpd에서 PAM설정파일명으로 사용할 파일명을 지정
경로 : /etc/pam.d/vsftpd
* pam : 사용자 인증 모듈 (windows 로컬보안정책이랑 비슷)
- port_enable=YES
데이터 전송을 위해서 포트를 사용할 것인지 설정
- pasv_enable=YES
데이터 전송을 위해서 Passive mode를
사용할 것인지 설정. Active Mode로 접근할 수 없는
사용자들을 위해 활성화하는게 좋음
3. 세부적인 설정(1)
- force_dot_files=NO (기본값 = NO)
히든 파일/디렉토리(dot(.) 으로 시작)를 숨김여부
- pasv_promiscuous=YES (기본값 = NO)
동일한 IP주소에서 이루어지는 데이터 연결을 보장해주는
보안체크 기능을 사용여부
- hide_ids=YES (기본값 = NO)
디렉토리 목록에서 UID를 보여주지 않고,
모두 FTP로 표시할 것인지 설정
-> 모든 파일의 소유권이 FTP로 표시되므로 보안을 높여줌
- vsftpd 상위 디렉토리 접속 제한
1) chroot_list_enable=YES
명시된 사용자가 자신의 홈상위 디렉토리를 접근할 수
없도록 설정
2) chroot_list_file=/etc/vsftpd/chroot_list
사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록
하는 설정
3) chroot_local_user=YES
전체 계정에 적용
4) passwd_chroot_enable=NO (기본값 = NO)
SSH로 접속했을 때 자신의 홈 상위 디렉토리를
접근할 수 없도록 설정
- chmod_enable=NO
사용자가 퍼미션을 변경할 수 있도록 설정
- ls_recurse_enable=NO
하위디렉토리나 파일이 매우 많은 상위디렉토
일 경우 비활성화 (시스템 자원 낭비)
3. 세부적인 설정(2)
vsftpd 접속과 사용자 대역폭을 제어
- anon_max_rate=30000
anonymous 세션별 대역폭 30 KB/s 설정
- local_max_rate=30000
각 로컬 계정의 대역폭 30 KB/s 설정
- idle_session_timeout=300
클라이언트 300초 동안 활동이 없을 경우 세션종료
- max_per_ip=50
소스 IP 당 최고 접속 수 (DoS와 DDoS 공격 방어에 유용)
- 환영배너사용
사용이유 : 사용자명과 암호를 입력하기 전에 환경 배너 나타남
이 배너에는 버전 정보가 포함되어 있어 크래커가
시스템 약점을 찾아내는데 유용하게 사용됨
banner_file=/etc/banners/파일이름.msg
(여러 개의 줄로 이루어진 배너 메시지를 입력)
예제)
########################################
# Hello, all activity on ftp.example.com is logged.#
########################################
3. 세부적인 설정(3)
- SSL/TLS 암호화 적용
FTP는 평문을 전송하는 프로토콜
클라이언트와 FTP 서버 사이의 파일 전송시 스니핑 가능
-> FTP 통신을 암호화하기 위해 SSL/TLS를 활성화
1)SSL/TLS 인증서와 그에 따른 비밀 키 생성후 파일에 저장
$ sudo openssl req -x509 -days 365 -newkey rsa:2048 -nodes
-keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem
2)TLS/SSL 활성화
ssl_enable=YES
3)로그인 시 CLIENT TLS 사용하도록 설정
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
4)SSL 인증서/비밀 키의 위치 지정
rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
VSFTPD 보안설정
1. active모드와 passive모드
2. 기본적인 설정
3. 세부적인 설정
2. 기본설정_실습
2. 기본적인 보안설정
2. 기본적인 보안설정_userlist_enable
2. 기본적인 보안설정_file_open_mode=0644
2. 기본적인 보안설정_tcp_wrappers=YES
3. 세부설정_실습(1)
1.Active모드와 Passive모드
Active모드
- active mode : 클라이언트에서 서버측 포트로 접속
시도하며 데이터 포트는 서버에서
클라이언트로 접속하여 데이터를
보내는 방식
- 문제점 : 서버에서 클라이언트로 접속을 시도하기
때문에 클라이언트 즉에서 외부에서의 접속
을 허용하지 않을 경우 FTP접속은 되지만
이후 데이터 목록을 받아오지는 못하는
에러가 발생 (편의상의 문제점이 존재)
3. 세부적인 설정
3. 세부설정_실습(2)
Passive모드
- passive mode : 클라이언트에서 서버의 listen
포트로 접속을 시도하면 서버측
에서 임의의 데이터포트 번호를
알려주어 클라이언트는 서버가
알려준 포트로 접속을 하는 방식
- 문제점 : active의 문제점은 해결되지만,
특정포트를 방화벽에서 모두 열어둬야
한다. (보안상의 문제점 발생)
사용할 포트는 제한설정할 수 있는 기능
이 있지만 미봉책에 불과하다.