Loading…
Transcript

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. 기본적인 보안설정(1)

2. 기본적인 보안설정_userlist_enable

2. 기본적인 보안설정(2~3)

2. 기본적인 보안설정_file_open_mode=0644

2. 기본적인 보안설정_tcp_wrappers=YES

3. 세부설정_실습(1)

1.Active모드와 Passive모드

2. 세부적인 보안설정(1)

1. 세부적인 보안설정(1)

Active모드

4. 세부적인 보안설정(1)

3. 세부적인 보안설정(1)

- active mode : 클라이언트에서 서버측 포트로 접속

시도하며 데이터 포트는 서버에서

클라이언트로 접속하여 데이터를

보내는 방식

- 문제점 : 서버에서 클라이언트로 접속을 시도하기

때문에 클라이언트 즉에서 외부에서의 접속

을 허용하지 않을 경우 FTP접속은 되지만

이후 데이터 목록을 받아오지는 못하는

에러가 발생 (편의상의 문제점이 존재)

3. 세부적인 설정

5. 세부적인 보안설정(1)

3. 세부설정_실습(2)

Passive모드

2. 세부적인 보안설정(2)

1. 세부적인 보안설정(2)

- passive mode : 클라이언트에서 서버의 listen

포트로 접속을 시도하면 서버측

에서 임의의 데이터포트 번호를

알려주어 클라이언트는 서버가

알려준 포트로 접속을 하는 방식

- 문제점 : active의 문제점은 해결되지만,

특정포트를 방화벽에서 모두 열어둬야

한다. (보안상의 문제점 발생)

사용할 포트는 제한설정할 수 있는 기능

이 있지만 미봉책에 불과하다.

4. 세부적인 보안설정(2)

3. 세부적인 보안설정(2)

5. 세부적인 보안설정(2)

Logo