티스토리 뷰
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 를 사용하여 이를 구현해보도록 하자.
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 요청된 행위가 일어나지 않음. 파일 이름이 허락되지 않았음
'개발 노트 > Linux' 카테고리의 다른 글
sendmail 트러블 슈팅 (dnsmasq 문제 해결) (0) | 2013.09.12 |
---|---|
리눅스 부팅시 명령스크립트 실행하기 (0) | 2013.09.11 |
SendMail 을 사용하여 메일 송수신 하기 (1) | 2013.07.31 |
[펌] BASH 쉘 profile, bashrc 설정 (1) | 2013.07.15 |
리눅스에서 디렉토리 색 변경하기 (0) | 2013.07.02 |
- Total
- Today
- Yesterday
- 32bit
- 압축파일
- 리터럴
- OpenSSL
- BASE64
- 웹보안공부
- bz2
- ssh
- X32
- natas7
- Bandit
- over the wire
- tr
- 풀이
- tar
- java
- solution
- Encode
- gz
- nc
- find
- Linux
- OverTheWire
- 리눅스
- SSL
- Natas
- grep
- 웹보안
- Strings
- HTTPS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |