vsftpd 서비스 접속 제한
# vsftpd 주요 서비스
/etc/rc.d/init.d/vsftpd start //FTP서비스 시작
/etc/rc.d/init.d/vsftpd stop //FTP서비스 종료
/etc/rc.d/init.d/vsftpd restart //FTP서비스 재시작
/etc/vsftpd/vsftpd.conf //설정 파일
/sbin/chkconfig vsftpd on //부팅 시 자동실행
/yum update vsftpd //이미 설치가 되어 있으면, vsftpd 업데이트하기
/etc/rc.d/init.d/vsftpd stop //FTP서비스 종료
/etc/rc.d/init.d/vsftpd restart //FTP서비스 재시작
/etc/vsftpd/vsftpd.conf //설정 파일
/sbin/chkconfig vsftpd on //부팅 시 자동실행
/yum update vsftpd //이미 설치가 되어 있으면, vsftpd 업데이트하기
# vsftpd 관련 파일
/etc/vsftpd/vsftpd.conf //vsftpd의 주된 설정파일
/usr/sbin/vsftpd //vsftpd의 데몬파일
/etc/initd./vsftpd //vsftpd 시작/종료/재시작 스크립트
/etc/pam.d/vsftpd //vsftpd의 PAM설정
/var/log/vsftpd.log //vsftpd의 로그파일
/etc/vsftpd.user_list //FTP 접속을 제한할 사용자 리스트
/etc/vsftpd.ftpusers //PAM에서 사용하는 FTP 접속제한자 리트스파일
/usr/sbin/vsftpd //vsftpd의 데몬파일
/etc/initd./vsftpd //vsftpd 시작/종료/재시작 스크립트
/etc/pam.d/vsftpd //vsftpd의 PAM설정
/var/log/vsftpd.log //vsftpd의 로그파일
/etc/vsftpd.user_list //FTP 접속을 제한할 사용자 리스트
/etc/vsftpd.ftpusers //PAM에서 사용하는 FTP 접속제한자 리트스파일
# 계정별 vsftpd 접속제한 파일
1. /etc/vsftpd.user_list (or /etc/vsftpd/user_list)
vsftpd에서 기본으로 사용하는 계정별 접속제어 파일이다. 이 파일에 등록된 사용자들은 ftp접속을 거부하게 된다.
이 파일에 등록할 때에는 다음 3가지 룰을 지켜주면 된다.
- 가능한 시스템 계정들은 모두 등록한다.
- 한 행에 한 계정씩만 등록한다.
- /etc/vfstpd/vsftpd.conf파일(or /etc/vsftpd.conf)에서
"userlist_deny=NO"으로 설정되었을 경우에 여기에 등록한 사용자들은 접속을 허용하는 사용자들이며
"userlist_deny=YES"로 설정하였을 경우에는 접속을 거부하는 사용자리스트가 된다.
YES가 기본이므로 기본설정을 변경하지 않는다면 이 파일은 접속거부자리스트파일이 된다.
2. /etc/vsftpd.ftpusers (or /etc/vsftpd/ftpusers)
다음은 PAM의 VSFTPD 설정파일로서 /etc/vsftpd/ftpusers 파일에 등록된 사용자들은 접속을 거부하겠다는 의미의
설정 파일이다. 즉, /etc/vsftpd.ftpusers 파일은 PAM에서 설정하여 사용하고 있는 ftp 접속거부자 리스트 파일이다.
#cat /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_stack.so service=system-auth
auth required pam_shells.so
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
vsftpd에서 기본으로 사용하는 계정별 접속제어 파일이다. 이 파일에 등록된 사용자들은 ftp접속을 거부하게 된다.
이 파일에 등록할 때에는 다음 3가지 룰을 지켜주면 된다.
- 가능한 시스템 계정들은 모두 등록한다.
- 한 행에 한 계정씩만 등록한다.
- /etc/vfstpd/vsftpd.conf파일(or /etc/vsftpd.conf)에서
"userlist_deny=NO"으로 설정되었을 경우에 여기에 등록한 사용자들은 접속을 허용하는 사용자들이며
"userlist_deny=YES"로 설정하였을 경우에는 접속을 거부하는 사용자리스트가 된다.
YES가 기본이므로 기본설정을 변경하지 않는다면 이 파일은 접속거부자리스트파일이 된다.
2. /etc/vsftpd.ftpusers (or /etc/vsftpd/ftpusers)
다음은 PAM의 VSFTPD 설정파일로서 /etc/vsftpd/ftpusers 파일에 등록된 사용자들은 접속을 거부하겠다는 의미의
설정 파일이다. 즉, /etc/vsftpd.ftpusers 파일은 PAM에서 설정하여 사용하고 있는 ftp 접속거부자 리스트 파일이다.
#cat /etc/pam.d/vsftpd
#%PAM-1.0
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_stack.so service=system-auth
auth required pam_shells.so
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
# /etc/vsftpd/vsftpd.conf 설정옵션
- anonymous_enable=YES (default YES)
익명(anonymous)접속을 허용할 것인(YES) 허용하지 않을 것인가(NO)를 결정한다.
- anon_root=/var/ftp
익명(anonymous)접속시 루트디렉토리를 지정한다.
- local_enable=YES (default YES)
로컬 계정 사용자들의 접속을 허용할 것인가의 여부를 결정한다.
YES로 설정하면 로컬계정사용자의 접속을 허용하는 것이며 NO로 설정하면 허용하지 않는 것이다.
- write_enable=YES (default YES)
이 설정은 ftp전용명령어 중에 write명령어를 허용할 것인가를 결정하는 것이다.
허용하려면 YES, 허용하지 않으려면 NO를 설정한다.
- local_umas=022 (default 022)
로컬계정 사용자들의 umask값을 설정한다.
- anon_upload_enable=YES (default NO)
익명(anonymous)계정 사용자에게 파일 어로드를 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정한다.
가능한 익명계정으로 접속한 사용자에게는 업로드 권한을 허용하지 않는 것이 보안에 좋다.
- anon_mkdir_write_enable=YES (default NO)
익명(anonymous)계정 사용자에게 디렉토리 생성권한을 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정하는 지시자이다.
가능한 익명계정으로 접속한 사용자에게는 디렉토리 생성권한을 허용하지 않는 것이 보안에 좋다.
- ftpd_banner=Welcome to blah FTP service.
ftp서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하면 된다.
- dirmessage_enable=YES
ftp접속한 사용자가 특정 디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가(YES) 허용하지 안을 것인가(NO)를 설정하다.
- message_file=.message
ftp접속후에 특정 디렉토리로 이동할 때에 디렉토리 안내메시지 파일로 사용할 파일명을 지정한다.
- xferlog_enable=YES
ftp접속후에 파일 업로드와 다운로드에 대한 로그를 남길것인가(YES) 남기지 않을 것인가(NO)를 설정한다.
- xferlog_file=/var/log/vsftpd.log
ftp로그파일의 위치를 결정한다.
- xferlog_std_format=YES
로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가(YES) 아닌가(NO)를 설정한다.
- connect_from_port_20=YES
ftp서비스는 기본적으로 21번 포트와 20번 포트를 사용한다.
ftp 접속돠 명령어에 사용되는 포트는 21번이며 실제 데이터전송에 사용되는 기본포트는 20번이다.
이 때 20번 포트의 데이터전송 연결을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 설정한다.
- session_support=YES
이 설정이 YES로 설정되어 유효하게 되었을 때에는 바이너리파일인 wtmp에 ftp접속관련기록을 남기게 된다.
last라는 명령어는 각 사용자들의 접속기록을 wtmp파일에서 가져와 확인하는 명령어이므로 이 설정이 적용되면 last명령어로 ftp접속기록을 확인할 수 있다.
- idle_session_timeout=600
ftp연결에서 idle타임에 대한 타임아웃값을 설정한다.
- data_connection_timeout=120
데이터 전송시 적용되는 타임아웃값을 설정한다.
- anon_max_rate=0
local_max_rate=0
trans_chunk_size=0
ftp서비스의 전송속도를 제한하는 설정이다.
초당 byte수를 지정할 수 있으며 제한없이 허용하려면 0으로 설정한다.
이 설정은 vsftpd가 독립뎀ㄴ(standalone)모드로 서비스될 때에만 적용되는 것이다.
- max_clients=30
max_per_ip=3
이 설정은 동시 ftp접속자수를 제한하는 설정이다.
max_clients는 ftp접속을 최대 30명까지만 허용하는 설정이다.
max_per_ip는 한 IP(호스트)에서 동시에 3번까지만 접속이 가능하다는 설정이다.
- ascii_upload_enable=YES
ascii_download_enable=YES
기본적으로 ASCII모드로 업로드/다운로드하는 것은 제한되어 있다.
이 설정으로 ASCII모드로의 업로드/다운로드를 허용하도록 설정할 수 있다.
- deny_email_enable=YES
banned_email_file=/etc/vsftpd/banned_emails
익명접속시에 기본적으로 사용되는 계정명을 anonymous이며 패스워드는 email형식으로 입력하면 된다.
이 때 패스워드로 인정하지 않을 즉, 패스워드로 사용하지 못하도록 할 email 주소를 사용하도록 하는 지시자이다.
즉, "deny_email_enable=YES"로 설정하시고 "banned_email_file=/etc/vsftpd/banned_emails"로 설정되어 있다면
패스워드로 허용하지 않을 email 주소를 /etc/vsftpd/banned_emails 파일에 넣어두면 된다.
그러면 이 파일에 등록된 email주소는 패스워드로 인정하지 않는다.
- chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정이다.
먼저 "chroot_list_enable=YES"로 설정하고 /etc/vsftpd/chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록하면 된다.
즉, /etc/vsftpd/chroot_list 파일에 등록된 사용자들에 한하여 chroot기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한된다.
- chroot_local_user=YES
특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토리 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정한다.
만약 "chroot_list_enable=YES" 이고 "chroot_local_user=YES"이면 /etc/vsftpd/chroot_list파일에 등록된 사용자들만 chroot()적용을 받지 않게 된다.
즉, 이 두 설정이 모두 YES로 되어있다면 /etc/vsftpd/chroot_list에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용된다.
- ls_recurse_enable=YES
ftp접속에서는 ls 사용시 -R옵션을 허용하지 않는 것이 기본 설정이다.
-R옵션이란 서브디렉토리내의 파일들의 리스팅(목록)까지 모두 확인할 수 있도록 하는 것이다.
이 지시자의 값이 YES로 되어 있다면 ftp접속후에 디렉토리 목록 확인시에 서브디렉토리들의 목록들까지 하넌에 볼 수 있는 -R옵션을 허용하게 된다.
- pam_service_name=vsftpd
vsftp에서 PAM설정파일명으로 사용할 파일명을 지정한다.
- listen=YES
listen_port=21
만약 vsftpd를 xinetd모드가 아닌 독립데몬(standalone)으로 서비스하려면 위의 listen지시자를 YES로 설정하고 listen_port에 서비스할 포트번호(기본 21번)를 지정하면 된다.
익명(anonymous)접속을 허용할 것인(YES) 허용하지 않을 것인가(NO)를 결정한다.
- anon_root=/var/ftp
익명(anonymous)접속시 루트디렉토리를 지정한다.
- local_enable=YES (default YES)
로컬 계정 사용자들의 접속을 허용할 것인가의 여부를 결정한다.
YES로 설정하면 로컬계정사용자의 접속을 허용하는 것이며 NO로 설정하면 허용하지 않는 것이다.
- write_enable=YES (default YES)
이 설정은 ftp전용명령어 중에 write명령어를 허용할 것인가를 결정하는 것이다.
허용하려면 YES, 허용하지 않으려면 NO를 설정한다.
- local_umas=022 (default 022)
로컬계정 사용자들의 umask값을 설정한다.
- anon_upload_enable=YES (default NO)
익명(anonymous)계정 사용자에게 파일 어로드를 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정한다.
가능한 익명계정으로 접속한 사용자에게는 업로드 권한을 허용하지 않는 것이 보안에 좋다.
- anon_mkdir_write_enable=YES (default NO)
익명(anonymous)계정 사용자에게 디렉토리 생성권한을 허용할 것인가(YES) 허용하지 않을 것인가(NO)의 여부를 설정하는 지시자이다.
가능한 익명계정으로 접속한 사용자에게는 디렉토리 생성권한을 허용하지 않는 것이 보안에 좋다.
- ftpd_banner=Welcome to blah FTP service.
ftp서버로 접속할 때에 안내메시지등을 출력하려면 여기서 설정하면 된다.
- dirmessage_enable=YES
ftp접속한 사용자가 특정 디렉토리로 이동하였을 때 개별 디렉토리의 메시지를 보여주도록 허용할 것인가(YES) 허용하지 안을 것인가(NO)를 설정하다.
- message_file=.message
ftp접속후에 특정 디렉토리로 이동할 때에 디렉토리 안내메시지 파일로 사용할 파일명을 지정한다.
- xferlog_enable=YES
ftp접속후에 파일 업로드와 다운로드에 대한 로그를 남길것인가(YES) 남기지 않을 것인가(NO)를 설정한다.
- xferlog_file=/var/log/vsftpd.log
ftp로그파일의 위치를 결정한다.
- xferlog_std_format=YES
로그파일에 남길 로그파일의 포맷을 기본포맷으로 남길 것인가(YES) 아닌가(NO)를 설정한다.
- connect_from_port_20=YES
ftp서비스는 기본적으로 21번 포트와 20번 포트를 사용한다.
ftp 접속돠 명령어에 사용되는 포트는 21번이며 실제 데이터전송에 사용되는 기본포트는 20번이다.
이 때 20번 포트의 데이터전송 연결을 허용할 것인가(YES) 허용하지 않을 것인가(NO)를 설정한다.
- session_support=YES
이 설정이 YES로 설정되어 유효하게 되었을 때에는 바이너리파일인 wtmp에 ftp접속관련기록을 남기게 된다.
last라는 명령어는 각 사용자들의 접속기록을 wtmp파일에서 가져와 확인하는 명령어이므로 이 설정이 적용되면 last명령어로 ftp접속기록을 확인할 수 있다.
- idle_session_timeout=600
ftp연결에서 idle타임에 대한 타임아웃값을 설정한다.
- data_connection_timeout=120
데이터 전송시 적용되는 타임아웃값을 설정한다.
- anon_max_rate=0
local_max_rate=0
trans_chunk_size=0
ftp서비스의 전송속도를 제한하는 설정이다.
초당 byte수를 지정할 수 있으며 제한없이 허용하려면 0으로 설정한다.
이 설정은 vsftpd가 독립뎀ㄴ(standalone)모드로 서비스될 때에만 적용되는 것이다.
- max_clients=30
max_per_ip=3
이 설정은 동시 ftp접속자수를 제한하는 설정이다.
max_clients는 ftp접속을 최대 30명까지만 허용하는 설정이다.
max_per_ip는 한 IP(호스트)에서 동시에 3번까지만 접속이 가능하다는 설정이다.
- ascii_upload_enable=YES
ascii_download_enable=YES
기본적으로 ASCII모드로 업로드/다운로드하는 것은 제한되어 있다.
이 설정으로 ASCII모드로의 업로드/다운로드를 허용하도록 설정할 수 있다.
- deny_email_enable=YES
banned_email_file=/etc/vsftpd/banned_emails
익명접속시에 기본적으로 사용되는 계정명을 anonymous이며 패스워드는 email형식으로 입력하면 된다.
이 때 패스워드로 인정하지 않을 즉, 패스워드로 사용하지 못하도록 할 email 주소를 사용하도록 하는 지시자이다.
즉, "deny_email_enable=YES"로 설정하시고 "banned_email_file=/etc/vsftpd/banned_emails"로 설정되어 있다면
패스워드로 허용하지 않을 email 주소를 /etc/vsftpd/banned_emails 파일에 넣어두면 된다.
그러면 이 파일에 등록된 email주소는 패스워드로 인정하지 않는다.
- chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
전체 사용자가 아닌 특정 사용자들에 대하여 자신의 홈디렉토리를 루트디렉토리로 인식하도록 하는 기능으로서 이 기능은 사용자의 홈디렉토리의 상위디렉토리로 벗어나지 못하도록 하는 설정이다.
먼저 "chroot_list_enable=YES"로 설정하고 /etc/vsftpd/chroot_list 파일에는 이 기능을 적용할 사용자계정명을 등록하면 된다.
즉, /etc/vsftpd/chroot_list 파일에 등록된 사용자들에 한하여 chroot기능이 적용되어 자기 자신의 홈디렉토리 상위 디렉토리의 이동이 제한된다.
- chroot_local_user=YES
특정 사용자가 아닌 전체 사용자를 대상으로 chroot()기능을 적용하여 자기 자신의 홈디렉토리 상위 디렉토리로 이동하지 못하도록 하려면 이 설정을 YES로 설정한다.
만약 "chroot_list_enable=YES" 이고 "chroot_local_user=YES"이면 /etc/vsftpd/chroot_list파일에 등록된 사용자들만 chroot()적용을 받지 않게 된다.
즉, 이 두 설정이 모두 YES로 되어있다면 /etc/vsftpd/chroot_list에 등록된 사용자들을 제외한 나머지 사용자들만 chroot()가 적용된다.
- ls_recurse_enable=YES
ftp접속에서는 ls 사용시 -R옵션을 허용하지 않는 것이 기본 설정이다.
-R옵션이란 서브디렉토리내의 파일들의 리스팅(목록)까지 모두 확인할 수 있도록 하는 것이다.
이 지시자의 값이 YES로 되어 있다면 ftp접속후에 디렉토리 목록 확인시에 서브디렉토리들의 목록들까지 하넌에 볼 수 있는 -R옵션을 허용하게 된다.
- pam_service_name=vsftpd
vsftp에서 PAM설정파일명으로 사용할 파일명을 지정한다.
- listen=YES
listen_port=21
만약 vsftpd를 xinetd모드가 아닌 독립데몬(standalone)으로 서비스하려면 위의 listen지시자를 YES로 설정하고 listen_port에 서비스할 포트번호(기본 21번)를 지정하면 된다.
'::: OS ::: > Linux' 카테고리의 다른 글
IBM DeveloperWorks : 리눅스 철통 보안(한글) (0) | 2009.09.10 |
---|---|
압축 명령어 모음 (0) | 2009.09.08 |
Linux find 명령어 완전 정복 가이드 (0) | 2009.05.17 |
쉘상에서 메일보내기 (0) | 2009.04.21 |
리눅스 서버 점검 (0) | 2009.04.21 |