vsftpd

 

시스템에 설치되 있는지 확인

rpm -qa | grep vsftpd 

 

1. 설치되있지 않을 경우 다음과 같이 설치를 합니다.


yum install vsftpd

 

 

2. 설정

FTP 서비스 시작 : /etc/rc.d/init.d/vsftpd start

FTP 서비스 종료 : /etc/rc.d/init.d/vsftpd stop

부팅시 자동 실행 : chkconfig vsftpd on

설정 완료후 xinetd 재실행 : /etc/rc.d/init.d/xinetd restart

  

3. /etc/vsftpd/vsftpd.conf  주요 설정

 

# anonymous 사용자의 접속 허용 여부

anonymous_enable=NO

 

# 로컬 계정 사용자의 접속 허용여부

local_enable=NO

 

# write 명령어 허용 여부

write_enable=YES

 

# 아스키모드로 설정할려면

ascii_download_enable=YES

ascii_upload_enable=YES      

 

# 홈 디렉토리 상위로 이동금지

# 설정 후 /etc/vsftpd.chroot_list 파일이 없다는 오류가 발생하게 되면, 해당파일을 자동생성해줌

chroot_list_enable=YES

chroot_local_user=YES

 

# 숨김파일을 보이게하기

force_dot_files=YES

 

# FTP 접속시 소유권숨기기

hide_ids=YES

 

# ls-R 명령어 허용하기

ls_recurse_enable=YES

 

# openssh 에 chroot 패치된것을 같이 사용하기

passwd_chroot_enable=YES

 

# 시간이 잘못 표현될 때
use_localtime=YES

# 전송속도를 제한할 때 (숫자의 단위는 Bytes/Sec)
local_max_rate=300000


# 동시 접속자수 제한 (숫자만큼 제한)
max_clients=10


 

# IP당 접속자수 제한 (수자만큼 제한)
max_per_ip=2

 

# PASSIVE모드 사용시 포트 범위 제한
# PASSIVE모드는 일반 20번 포트를 방화벽때문에 사용하지 못할때 사용하는 모드(40000 ~ 50000 으로 PASSIVE포트 제한)
pasv_min_port=40000
pasv_max_port=50000
 
# 확장자의 업로드 금지
deny_file={*.확장자,*.확장자}

# 특정파일 숨기기
hide_file={*.확장자,.hide,hide*.h?}

 

 

4. 문제해결

1) 530 Login incorrect.

   - 계정 아이디와 비밀번호를 확인 후 passwd 계정명 명령으로 비밀번호를 다시 재 설정해본다.

   - /etc/vsftpd.ftpusers 에 등록된 사용자라면 ftp 접속이 안되므로 이 파일에서 삭제를 해준다.

 

2) 업로드 파일크기 제한하기

   - 1.2.1 버전까지는 vsftpd 자체에 설정하는 방법이 없으므로 다음버전에 그런 기능이 생기기를 기원하는 수 밖에 없다.

 

3. 기본포트 21번 말고 다른 포트를 사용하고 싶을때 (예:2121 포트를 이용하고 싶을때)

   - xinetd 를 이용하는 경우

      /etc/service 에서

      ftp2       2121/tcp

      한줄을 추가한다.

     그리고 /etc/xinetd.d/vsftpd  (vsftpd 가 아니라 ftp 등 다른 이름이 될수 있습니다.) 에서 service ftp 를 service ftp2 로 변경하고

     xinetd 를 재실행 합니다.

 

   - standalone 으로 운영하는 경우

      /etc/vsftpd.conf 에서 listen_port=2121 를 추가하고 vsftpd 서버를 재 실행합니다.

-----------------------------------------------------------------------------------------

1. 우선 ftp 서비스가 작동되고 있나 확인해봅니다.

 

(shell)# netstat -ntlp

...(중략)

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      9437/vsftpd

...

 

만약에 0.0.0.0:21 이라는 항목이 없다면, 현재 서버에서는 ftp 가 동작중이지 않습니다.

 

 

2. 다음은 vsftpd가 설치되어 있는지 확인해봅니다.

 

(shell)#rpm -qa |grep vsftpd
vsftpd-1.1.3-8                 <--- 해당 패키지가 설치되어 있을 경우


만약에 아무런 결과가 출력되지 않는다면 vsftpd가 설치되어 있지 않으므로, 설치cd에서 vsftpd 패키지를

 

찾아서 설치하거나, rpmfind.net에서 검색하여 찾아서 설치하시면 됩니다. (대부분 기본으로 설치되어 있음)

 

 

3. 이젠 vsftpd를 동작시킵니다.

 

* vsftpd 작동

(shell)# service vsftpd start

Starting vsftpd for vsftpd:                                [  OK  ]


* vsftpd 데몬 확인

(shell)# ps ax|grep -i vsftpd

9437 pts/1    S      0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

 

* ftp 포트 확인

(shell)# netstat -ntlp

...(중략)

tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN      9437/vsftpd

...

 

4. 기본적으로 vsftpd 의 경우 root로의 접속이 금지되어 있습니다. root로 접속하기 위해서는 다음 항목을

 

수정합니다.

 

(shell)# vi /etc/vsftpd.ftpusers

...(중략)

#root         ; root -> #root 로 주석처리 할 것

...

 

(shell)# vi /etc/vsftpd.user_list
...(중략)

#root         ; root -> #root 로 주석처리 할 것

...

 

 

/etc/vsftpd.ftpusers 와 /etc/vsftpd.user_list 에 등록되어진 사용자는 기본적으로 해당 ftp 서버로 접속을

 

할 수 없습니다. 따라서 여기에 등록된 root 사용자를 주석처리(#)하거나 삭제하여 root 사용자가 접속할 수

 

있도록 합니다.

 

5. ftp로 접속하여 성공하면 설정이 적용된 것입니다.

 

(shell)# ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (localhost:root): root
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.

-------------------------------------------------------------------------

*** SELINUX
# setsebool -P ftp_home_dir 1
페도라 코어 4 까실때 SELinux 로 설정했다면 디폴트로 사용자의 home 디렉토리에 쓰기를 막아놓는다.
SELinux 설정에서 FTP 부분을 변경하자.
# service vsftpd restart
home 디렉토리의 읽고쓰기를 1(True)로 변경하시고 vsftpd 를 재시작.

# setsebool -P ftpd_disable_trans 1
FTP 에 관하여 SELinux 정책을 아예 적용하지 않는 옵션을 설정

"500 oops: cannot change directory"

Trying to ftp in to a Fedora Core 5 box using a local username. Password is accepted, but the connection is then closed with this error message.

This is because of SELinux's policies. To fix it, issue (as root):

setsebool -P ftp_home_dir=1

The -P flag ensures the value is saved after reboot.
-------------------------------------------------------------------------------

ftp 정상적인 세팅 상태에서 로그인 후
500 OOPS: cannot change directory

와 같은 메세지가 출력되며 접속이 끊어질 경우 다음과 같이 하면 됩니다.


/etc/selinux/config 에서
SELINUX=permissive


와 같이 바꾸면 됩니다. SELINUX의 Deny를 permissive로..
즉 메세지만 로그에 남기고 접근을 허용하는 것이지요.
enforcing이 기본인데 이것은 접근을 차단하는 것입니다.

귀찮아서 필요할때 하렵니다! 

[출처] linux vsftpd|작성자 jajubitsky

댓글을 달아 주세요

Gnome에서의 설정

 

1. 리눅스 시스템의 런레벨(Run-Level) "5"인지 확인한다.

 

여기서 런레벨이라는 것은 부팅시 어떠한 모드로 부팅될 것인가를 말하는 것으로, 그래픽 모드는 "5", 텍스트 모드는 "3"번이다.

Xmanager GUI(그래픽 유저 인터페이스)를 지원하므로 접속하고자 하는 리눅스 시스템의 사용모드도 그래픽모드(Run-Level 5)로 되어 있어야 한다.

리눅스 설치시 대부분 그래픽 모드로 설치를 하므로 크게 문제될 부분은 아니지만, 서버로 사용하는 시스템에 있어 텍스트 모드로 설치하는 경우도 있으므로 이 부분에 대해 간단히 확인하고 넘어가도록 하자.

런레벨은 /etc/inittab 파일에서 쉽게 확인이 가능하다.

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <
miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:
5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

 

위에서 보듯이 "id" 뒷 부분의 값이 "3"인지 "5"인지에 따라 모드가 바뀌므로, 그래픽모드로 사용하고자 한다면 이 숫자를 "5"로 변경하자.

 

 

2. XDMCP 접속 허용 (custom.conf)

 

앞에서도 말했듯이 Xmanager XDMCP 방식을 사용하여 리눅스 시스템에 접속을 하게 된다. 그러므로 리눅스 시스템에서는 이 XDMCP 기능이 접속할 수 있도록 허용하는 설정을 해주어야 하는데, Gnome에서는 gdm (Gnome Display Manager)을 사용하므로 아래의 경로에 있는 gdm 설정파일에서 수정한다.

 

# vi /etc/gdm/custom.conf          # 한글과컴퓨터 리눅스 데스크톱 3.0 (오픈에디션 3.0)의 경우

# vi /etc/X11/gdm/custom.conf    # 한글과컴퓨터 리눅스 데스크톱 2.0 (오픈에디션 2.0)의 경우

 

타 리눅스를 사용하는 경우, 설정 파일의 경로가 다를 수 있으므로 이럴땐 하단에 명시한 Xmanager 제작사에 가서 확인해 보도록 한다.

 

...

[security]

DisallowTCP=false

AllowRemoteRoot=true

 

[xdmcp]

Enable=1

...

 

custom.conf 파일의 [security] 섹션 아래에 DisallowTCP 값을 false로 선언하고, [xdmcp] 섹션 아래에 Enable 값을 1로 설정한다.

만약 root 관리자로의 원격 접속을 희망한다면, AllowRemoteRoot의 값을 true로 선언하는 것을 추가하면 된다.

 

 

3. X윈도우 재시작

 

위 와 같이 설정을 마쳤다면, X윈도우를 재시작해야 한다. 변경된 설정으로 X윈도우가 가동되어야 외부에서의 접속이 가능하므로 반드시 X윈도우를 재시작하기 바란다. 로그아웃만 해서는 안된다. init 3 명령과 init 5 명령으로 런레벨 자체를 변경하는 것이 좋다.

(또는 이런 과정들이 복잡하다 생각되면 그냥 재부팅을 해도 된다. ^^)

그리고 Windows에 설치된 Xmanager를 사용하여 접속을 시도해보자. 잘 되는가?

 

 

KDE에서의 설정

 

KDE 에서도 Gnome의 경우와 같이 XDMCP 관련 설정파일을 수정함으로써 해결할 수 있지만, Gnome 보다 수정해야할 항목이 조금 더 많다고 볼 수 있다. 그리고 한글과컴퓨터 리눅스의 기본 로그인 매니저가 gdm (Gnome Display Manager)으로 되어 있기 때문에, 이를 kdm (KDE Display Manager)으로 바꾸거나, 또는 Gnome KDE 양쪽에서의 XDMCP 수정을 모두 해주어야 하는 불편함이 있다.

일단 하나하나 알아보도록 하자.

 

1. 리눅스 시스템의 런레벨(Run-Level) "5"인지 확인한다.

이는 앞에서 본 내용과 동일하다. 런레벨 확인이 우선이겠다.

 

 

2. XDMCP 접속 허용 (1) (xdm-config)

KDE의 기본 로그인 매니저인 kdm (KDE Display Manager)의 설정파일은 아래에 있다.

# vi /etc/X11/xdm/xdm-config

 

...

!DisplayManager.requestPort:     0

설정파일의 제일 하단을 보면,

DisplayManager.requestPort:    0

이라고 설정되어 있는데 이 라인의 앞쪽에 느낌표(!)을 넣어 주석처리를 한다.

 

 

3. XDMCP 접속 허용 (2) (Xaccess)

다음으로 아래 경로에 있는 Xaccess 파일을 열어...

#* #any host can get a login window

위와 같이 되어있는 라인 앞쪽의 주석(#) 해제한다.

 

# vi /etc/X11/xdm/Xaccess

 

...

* #any host can get a login window

...

 

 

4. XDMCP 접속 허용 (3) (kdmrc)

다음으로 kdmrc 파일을 열어 [Xdmcp] 섹션의 Enable 값을 true로 변경한다.
# vi /etc/X11/xdm/kdmrc

 

...

[Xdmcp]
Enable=
true

...

 

 

5. 로그인 매니저 변경 (또는 gdm 설정)

이 것으로 설정파일들은 수정이 완료되었다. 하지만 앞에서 언급하였듯이 한글과컴퓨터 리눅스 데스크톱(또는 오픈에디션)은 기본 로그인 매니저가 gdm (Gnome Display Manager)로 되어 있으므로 아래의 2가지 방법중 한가지 방법을 더 처리해 주어야 한다.

 

앞서 다룬 gdm 설정도 같이 수행한다.

로그인 매니저를 gdm에서 kdm으로 변경한다. (변경 방법은 아래 Tip 참조)

 

 

6. X윈도우 재시작

 

위와 같이 설정을 마쳤다면, X윈도우를 재시작해야 한다. 변경된 설정으로 X윈도우가 가동되어야 외부에서의 접속이 가능하므로 반드시 X윈도우를 재시작하기 바란다로그아웃만 해서는 안된다. init 3 명령과 init 5 명령으로 런레벨 자체를 변경하는 것이 좋다.

(또는 이런 과정들이 복잡하다 생각되면 그냥 재부팅을 해도 된다. ^^)

그리고 Windows에 설치된 Xmanager를 사용하여 접속을 시도해보자. 잘 되는가?

 

Tip! Tip! Tip!

 

로그인 매니저 변경방법 (gdm --> kdm)

 

# vi /etc/sysconfig/desktop

 

DESKTOP="GNOME"                      # 기본 로그인 세션
DISPLAYMANAGER="KDE"           # 기본 로그인 매니저

 

/etc/sysconfig/desktop 파일을 열어서 ...

DISPLAYMANAGER의 값을 KDE로 수정한다. (해당 항목이 없다면 위의 예를 보고 직접 추가하자.)

 

참고로, DESKTOP 항목은 기본으로 구동되는 세션을 말하는 것으로 ID와 패스워드를 넣었을때 어느 X윈도우로 로그인할 것인지를 설정하는 것이다.

 

 

댓글을 달아 주세요