티스토리 뷰

개발 노트/Linux

vsftpd 설정

오리지날초이 2013. 8. 13. 08:43

1. 기본 설정


본 출처


/etc/vsftpd/vsftpd.conf


-----------------------------------------------------------------------------------
anonymous_enable=YES
익명계정(ftp, anonymous) 사용여부를 정한다.
-----------------------------------------------------------------------------------
local_enable=YES
/etc/passwd 에 등록된 사용자 사용여부를 정한다.
-----------------------------------------------------------------------------------
local_umask=022
디렉터리나 파일생성시 권한을 정한다.
파일   rw- r-- r-- (644) =>파일의 최대값(666) - umask(0022)
디렉토리 rwx r-x r-x (755) =>디렉토리의 최대값(777) - umask(0022)
-----------------------------------------------------------------------------------
anon_upload_enable=YES
익명계정으로 업로드 가능여부를 정한다. 일반적으로 업로드권한을 주지않는다(주석처리 또는NO)
-----------------------------------------------------------------------------------
anon_mkdir_write_enable=YES
익명계정으로 디렉터리생성 가능여부를 정한다. 일반적으로 쓰기권한을 주지않는다(주석처리 또는 NO)
-----------------------------------------------------------------------------------
dirmessage_enable=YES
메세지를 보기 기능여부를 정한다.
-----------------------------------------------------------------------------------
xferlog_enable=YES
로그 파일 사용여부
-----------------------------------------------------------------------------------
connect_from_port_20=YES
ftp 인증시 어떤 포트를 쓸 것인지 정함
-----------------------------------------------------------------------------------
xferlog_file=/var/log/vsftpd.log
로그파일 저장 위치
-----------------------------------------------------------------------------------
xferlog_std_format=YES
YES 표준수집방식
NO vsftpd에서 제공하는 자세한 방식
-----------------------------------------------------------------------------------
idle_session_timeout=600
지정한시간(초)동안 아무런 입력이 없을때 접속을 해제시킨다.
-----------------------------------------------------------------------------------
data_connection_timeout=120
다운로드 시작시간부터 지정한시간(초)동안 완료 하지않으면 접속을 해제시킨다.
-----------------------------------------------------------------------------------
ascii_upload_enable=YES
ascii_download_enable=YES
아스키모드는 어떤 파일을 텍스트형식으로 업/다운로드 하는것
바이너리모드는 실행가능한 형태로 업/다운로드
-----------------------------------------------------------------------------------
ftpd_banner=Welcome to blah FTP service.
접속시 뜨는 메세지이다. 보안을 위해서 무조건 활성화 해야한다.
활성화 시키지 않으면 버전 정보(vsFTPd 2.0.3)를 출력한다. os 정보 및 취약점을 알수있으며 포트스캔및 버퍼오버플로우가 가능하다.
-----------------------------------------------------------------------------------
deny_email_enable=YES
banned_email_file=/etc/vsftpd/banned_emails
거부정보를 이메일로 받을건인지를 정하고 이메일주소 설정을 해준다. 메일서버가 구성되어있어야 한다.
-----------------------------------------------------------------------------------
익명계정으로 로그인을 하게되면 디렉터리의 위치는 가상루트  /  ( /var/ftp , chroot) 로 접속하게된다. 
하지만 사용자는 가상루트의 적용을 받지 않고 따로 지정해주어야한다. 
사용자를 가상루트의 경로에 접속시키지 않으면 일반적인 사용자는 모든 디렉터리 및 파일에 대하여 r 권한을 갖고 있기때문에 다운로드가 가능하다. 
( /etc/shadow -r-------- 제외) 보안상 위험하기때문에 가상루트를 적용시켜야한다.
-----------------------------------------------------------------------------------
chroot_local_user=YES
/etc/passwd 에 등록된 사용자가 vsftp접속시 위치를 가상루트 / ( /home/사용자 )로 표시한다.


로컬 시스템에 존재하는 사용자들이 자신의 디렉토리에 대해서 chroot 를 가질 것인가를 설정하는 옵션

사용자들이 자신의 디렉토리 이외의 상위 디렉토리로 접근하지 못하도록 이 옵션을 켜 놓는 것이 바람직하다

-----------------------------------------------------------------------------------
chroot_list_enable=YES
가상루트 목록을 활성화 시킬것인지 정한다.

chroot_local_user 에 반대 되는 개념으로

가상루트를 활성화(chroot_local_user=YES)시켰을때, 
chroot_list_enable=YES 리스트를 활성화 목록에서 제외 =>리스트 비활성화
chroot_list_enable=NO ll리스트를 활성화 목록에서 포함 =>리스트 활성화

가상루트를 비활성화(chroot_local_user=NO)시켰을때, 
chroot_list_enable=YES 리스트를 비활성화 목록에서 제외 =>리스트 활성화
chroot_list_enable=NO ll리스트를 비활성화 목록에서 포함 =>리스트 비활성화
-----------------------------------------------------------------------------------
chroot_list_file=/etc/vsftpd/chroot_list
지정한 위치에 파일을 생성하고 편집기를 이용해서 적용시킬 사용자를 입력시킨다.
디렉터리 위치는 임의로 정해도 되나 알기쉽게 설치한 패키지가 위치한 곳에 저장하는것이 좋다.
-----------------------------------------------------------------------------------
userlist_enable=YES 
/etc/vsftpd/user_list 에 등록된 사용자를 활성화 시킬것인가
(NO일 경우 local_enable=YES 이면 /etc/passwd 에 등록된 사용자 활성화)

userlist_deny=NO
/etc/vsftpd/user_list 에 등록된 사용자를 거부목록으로 사용할것인지를 정한다.
NO : 파일에 등록된 사용자의 접속만 허락한다.
YES : 파일에 등록된 사용자의 접속을 거부한다.
이거에 상관없이 /etc/vsftpd/ftpuser 에 등록된사용자는 무조건 접속을 거부 한다.
/etc/vsftpd/user_list는 기본값이고 userlist_file=파일명으로 지정해주어도 된다.
-----------------------------------------------------------------------------------
local_max_rate=5000000 
시스템계정에서 최대 업/다운로드 용량(바이트)
anon_max_rate=500000
익명계정에서 최대 업/다운로드 용량(바이트)
max_clients=3
최대접속가능한수
max_per_ip=2
동일한 아이피에서 서버 접속수를 전부 써버릴수있기때문에 ip의 최대 접속가능한수를 정해준다.


2. vsftp 에서 심볼릭 링크 사용하기


원본 출처


vsftp 에서 심볼릭 링크는 파일로 인식하기 때문에 올바르게 실행되지 않습니다. 따라서 약간의 편법을 이용하여 mount 를 사용하여 이를 구현해보도록 하자.

ln -s 주소1 주소2                 <--- 이런 형식의 심볼릭 링크
mount --bind 주소1 주소2     <--- 로 바꿀 수 있다.


이 경우 반드시 주소2에 해당하는 디렉토리를 생성해 주셔야 합니다.

주의! 이렇게 생성한 마운트 포인트는 시스템을 재 부팅 하게 되면 사라지게 된다. 이를 위하여 /etc/mtab 에 방금 생성한 마운트 내용을 복사하여 /etc/fstab 에 붙여 넣으시기 바랍니다. 또한 이런 시스템 파일을 다룰때는 주의를 요합니다.


3. ftp 사용 옵션


원본출처


ascii             전송모드를 ASCII모드로 설정한다.(ascii또는 as)
binary           전송모드를 BINARY모드로 설정한다.( binary또는 bi)
bell               명령어 완료시에 벨소리를 나게한다.(bell)
bye               ftp접속을 종료하고 빠져나간다.(bye)
cd                 remote시스템의 디렉토리를 변경한다.(cd 디렉토리명)
cdup              remote시스템에서 한단계 상위디렉토리로 이동한다.(cdup)
chmod           remote시스템의 파일퍼미션을 변경한다.(chmod 755 index.html)
close             ftp접속을 종료한다. (close)
delete            remote시스템의 파일을 삭제한다.(delete index.old)
dir                 remote시스템의 디렉토리 내용을 디스플레이한다.(dir)
disconnect     ftp접속을 종료한다.(disconnect)
exit                ftp접속을 종료하고 빠져나간다.(exit)
get                 지정된 파일하나를 가져온다.(get index.html)
hash              파일전송 도중에 "#"표시를 하여 전송중임을 나타낸다.(hash)
help               ftp명령어 도움말을 볼 수 있다.(? help또는 help 명령어)
lcd                 local시스템의 디렉토리를 변경한다.(lcd 디렉토리명)
ls                   remote시스템의 디렉토리 내용을 디스플레이한다. (ls 또는 ls -l)
mdelete          여러개의 파일을 한꺼번에 지울 때 사용한다.( mdelete *.old)
mget              여러개의 파일을 한꺼번에 가져오려할 때 사용한다. ( mget *.gz)
mput              한꺼번에 여러개의 파일을 remote시스템에 올린다.(mput *.html)
open              ftp접속을 시도한다.(open 168.126.72.51또는 open ftp.kornet.net)
prompt           파일전송시에 확인과정을 거친다. on/off 토글 (prompt)
put                 하나의 파일을 remote시스템에 올린다.(put index.html)
pwd               remote시스템의 현재 작업디렉토리를 표시한다.(pwd)
quit                 ftp접속을 종료하고 빠져나간다.(quit)
rstatus            remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.(rstatus)
rename           remote시스템의 파일명을 바꾼다.(remote 현재파일명 바꿀파일명)
rmdir               remote시스템의 디렉토리을 삭제한다.(rmdir 디렉토리명)
size                remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(size index.html)
status              현재 연결된 ftp세션모드에 대한 설정을 보여준다.(status)
type                전송모드를 설정한다.(type 또는 type ascii 또는 type binary)

! 를 사용하여 local 에서 명령어 바로 수행 가능(!dir, !ls, !pwd 등)



FTP 응답 코드 요약


110     재시동 표시 응답 이 경우 텍스트는 . , 실행되며 특정한 구현 안에 남아 있지 않는다.
120     nnn분 안에 서비스를 준비한다.
125     데이터 커넥션은 이미 열려 있다. 전송이 시작된다.
150     파일 상태는 OK 이다. 데이터 커넥션을 열려고 한다.
200     OK 명령어
202     명령어는 구현되지 못하며, 이 사이트에서 흘러 넘친다.
211     시스템 상태 또는 시스템 도움말 응답
212     디렉토리 상태
213     파일 상태
214     도움말 메시지
215     NAME 시스템 타입
220     새로운 사용자를 위한 서비스를 준비
221     서비스는 제어 커넥션을 닫는다. 만일 적절하다면 로그아웃 한다.
225     데이터 커넥션을 연다. 어떤 전송도 처리하는 중이 아니다.
226     데이터 커넥션을 닫는다. 요청된 파일 행위는 성공적이다.
227     수동적인 모드를 입력한다.
230     사용자가 로그인 했으면, 처리한다.
250     정보 : 요청된 파일 행위는 OK 이며 완료되었다.
257     "PATHNAME"을 만든다.
331     사용자 이름은 OK이며 패스워드가 필요하다.
332     로그인을 위해서 계정이 필요하다.
350     요청된 파일 행위는 더 많은 정보를 요구한다.
421     서비스가 가용이 아니며, 제어 커넥션을 닫는다.
425     데이터 커넥션을 열 수 없다.
426     커넥션을 닫는다. 전송을 회피한다.
450     요청된 파일 행위는 일어나지 않는다. 파일은 사용할 수 없다.
451     요청된 행위를 회피한다. 지역 에러를 처리중이다.
452     요청된 행위가 일어나지 않았다. 시스템의 메모리가 불충분하다.
500     문법 에러. 명령어를 인식할 수 없다.
501     파라미터 또는 인수에서의 문법에러
502     명령어가 구현되지 않았다.
503     명령어의 틀린 시퀀스
504     파라미터를 위한 명령어가 구현되지 않았다.
530     로그인이 안됐다.
532     저장된 파일들을 위해서 계정이 필요하다.
550     요청된 행위가 일어나지 않았음. 파일은 사용 가능하다.
551     요청된 행위는 회피 되었음. 알려지지 않은 페이지 타입
552     요청된 파일 행위를 회피한다. 메모리 할당 초과.
553     요청된 행위가 일어나지 않음. 파일 이름이 허락되지 않았음



728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함