VSFTP 설정관련

/etc/vsftpd/ftpusers

ftp 로그인을 허락하지 않은 유저들의 정보가 들어있다.

/etc/passwd 파일의 uid 0~100에 해당하는 유저들이다.

root, bin, daemon, adm, lp, sync, shutdown, halt, mail, news, uucp, operator, games, nobody

이사용자는 기본적으로 ftp의 유저로 등록된사용자이다.

설정파일에서

userlist_enable=YES // 유저리스트( /etc/vsftpd/user_list )를 활성화시키고

userlist_deny=NO// 거부자목록으로 쓰지 않으면 유저리스트에 등록된 사용자는 ftp 사용이 가능하다.

유저리스트에 등록되있더라도 /etc/vsftpd/ftpusers에 등록된사용자는 접속이 불가능 하다.

위와 같이 설정을 해주고 ftpusers에서 root를 삭제하면 root로도 ftp 접속 할 수 있다.

/etc/vsftpd/user_list 에 등록된 사용자는 접속 거부/승인 목록이 될수있고,

/etc/vsftpd/ftpuser 에 등록된 사용자는 user_list에 상관 없이 접속 할 수 없다.

root등의 사용자는 보안을 위해 접속을 허용하지 않은 것이다.

/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_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의 최대 접속가능한수를 정해줌

 

[ 계정생성 권한예 ]

# groupadd -g 501 ftp_users

ftpuser1~3 까지는 그룹으로 묶기위해 그룹을 미리 만들어줌

# useradd -g 501 -d /ftpdata/local ftpuser1

# useradd -g 501 -d /ftpdata/local ftpuser2

# useradd -g 501 -d /ftpdata/local ftpuser3

ftpuser1~3 같은그룹 같은홈디렉터리를 지정

# useradd -d /ftpdata/local ftpuser4

# useradd -d /ftpdata/local ftpuser5

ftpuser4,5 는 홈디렉터리는 같지만 그룹은 따로 지정안해 줌

# usemod -d /ftpdata/anon ftp

ftp계정의 홈디렉터리를 /ftpdata/anon으로 변경

# passwd

모든계정 비밀번호를 정해줘야 로그인할수있음

디렉터리의 권한 설정

/ftpdata 는 ftpadmin의 홈디렉터리이므로 ftpadmin:ftpadmin 수정해줄 필요없다.

/local 은 root가 생성했기때문에 root:root 로 되었있는데

소유자는 ftpadmin 그룹은 ftp_users (ftpuser1~3을 가르킴)으로 바꿔줘야 한다.

어더는 나머지사용자( ftpuser4~5)

이떼 디렉터리에 스티키빗을 적용시켜서 디렉터리의

소유자한테는 모든권한을주고

그룹은 쓰기읽기권한이있지만 자신에 것에대해서만 삭제가능하게

어더는 읽기 권한만 준다.

# chown ftpadmin:ftp_users /ftpdat/local

# chmod 1775 /ftpdata/local

/anon 은

# chown ftpadmin:ftp /ftpdat/anon

# chmod 755 /ftpdat/anon

읽기기능만 준다.

vsftp 설정파일 수정

max_clients=5

최대접속자수 제한

max_per_ip=3

한 ip당 접속수 제한

chroot_local_user=YES

모든계정에게 가상루트 적용

userlist_enable=YES

userlist_deny=YES

유저리스트를 거부자 목록으로 사용

기본 유저리스트인 /etc/vsftpd/user_list 에 ftpuser5를 추가해도되고

userlist_file=파일위치

를 지정해서 생성한 파일에 ftpuser5 를 추가해도됨

%% 모든 접속자가 개인 홈디렉토리 상위로는 올라가지 못하게 설정하려면 vsftpd.conf에

chroot_local_user=yes

을 추가하여 주어야 합니다. (설정 추가 후 vsftpd를 재시작 합니다)

님께서는 현재 chroot_list_enable 설정을 하신 것으로 보입니다만,

chroot_list_enable 등을 이용할 경우에는 사용자 별로 chroot 적용 여부를 결정하므로

vsftpd 에서 chroot 를 적용할 사용자를 적어 놓은 파일을 생성하셔야 합니다.

1. 우선 /etc/vsftpd/vsftpd.conf에서 chroot_list_enable=yes 항목을 추가합니다.

2. vsftpd 데몬을 재실행 합니다. (# service vsftpd restart)

3. /etc/vsftpd.chroot_list 파일에 chroot 를 적용할 사용자를 vi 등을 이용하여 추가합니다.

   (해당파일 없다면 새로 만들어 줍니다)

4. 올바르게 적용이 되는지 ftp 에서 확인 합니다.

%% PASSIVE 모드사용시

방화벽에서 포트를 열어주고

-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 32768:32868 -j ACCEPT

vsftpd.conf에 아래 포트를 넣어서 사용하면 됩니다.

pasv_min_port=32768

pasv_max_port=32868

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.