'proftpd'에 해당되는 글 1건
- 2008.12.18 ProFTPD 설치와 설정, 운영
ProFTPD 설치와 설정, 운영
■ 설치전 준비
# rpm -qa | grep ftpd
lftp-3.5.1-2.fc6
vsftpd-2.0.5-12.el5
ftp-0.17-33.fc6
# rpm -e vsftpd
# rpm -qa | grep ftp
lftp-3.5.1-2.fc6
ftp-0.17-33.fc6
#
■ 소스 or 패키지 준비
- gcc
- make compiler tools
- proftpd 소스파일
# gcc --version
# make --version
■ 소스 다운로드 및 압축 해제
==================================================
다운로드
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.gz
압축 해제
# tar xvfz proftpd-1.3.1.tar.gz
# cd proftpd-1.3.1
■ 컴파일 및 설치
- 환경 탐색? 을 통해 컴파일 될 목록을 makefile로 만드는 과정이다
- prefix는 설치 위치를 나타내는데 default 위치가 있다.
- configure에서 나온 makefile의 룰에 따라 컴파일 하는 과정
- make에서 만들어진 실행파일을 해당 경로에 이동~!
TIP.
보통
/usr/local/bin or sbin 에 설치가 되며
( 이 위치는 PATH변수에 미리 등록이 되어있어 절대경로 없이 바로 쓸 수 있다.)
/usr/local/etc 에 conf 가 있다.
which 를 통해 path변수에 저장된 실행 파일 위치 찾을 수 있다.
■ 설치와 실행
0 <위 명령어의 실행결과를 보자 0이라면 위 명령이 정상 실행 되었다는 뜻이다.>
/usr/local/sbin/proftpd
< ftp데몬을 실행>
# proftpd
- no such group 'nogroup'
- Fatal: Group: Unknown group 'nogroup' on line 27 of '/usr/local/etc/proftpd.conf'
# /usr/local/sbin/proftpd
- no such group 'nogroup'
- Fatal: Group: Unknown group 'nogroup' on line 27 of '/usr/local/etc/proftpd.conf'
<기본 값으로 설정시 에러 메시지 나올수 있음>
< nogroup 이란 그룹이 없다는 메시지 >
nogroup추가
# groupadd nogroup < 추가 혹은 proftpd.conf 에서 nogroup을 -> nobody 로 수정 >
# /usr/local/sbin/proftpd <정상구동 되었다>
# echo $?
0
# netstat -atpn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 13499/proftpd: (acc
< proftpd 데몬이 구동중인것을 볼 수 있다>
<만약 구동에 실패 한다면 >
# vi /usr/local/etc/proftd.conf
에러를 보면서 conf file을 적당히 수정
■ 간단한 테스트
# useradd user01
# passwd user01
...
#
< windows -> cmd에서 간단히 테스트 정상작동하였다!>
TIP. 테스트 실패시
만약 호스트에 연결 할 수 없다는 메시지가 나온다면
c:\> ping < IP > 확인후
방화벽 설정을 확인해봐야 한다.
보통 기본적인 방화벽으로 < lokkit > , < iptables > 두가지가 있는데
테스트를 위해서 iptables를 수정 하거나 정지
lokkit 설정에서 ftp를 열어주어야 한다.
참고로 직접 iptables를 설정 해주지 않았다면 서비스가 시작 되어 있지 않을것이다!!
# lokkit
■ proftpd.conf 설정
# 현재 운영중인 FTP서비 이름을 설정하는곳
# 데몬 타입
# FTP서버의 primary IP or 가상 FTP 호스트 서비스 설정 블록에서 설정된 IP Address로 부터 연결 요청이 있을 때 기본으로 응답할 서버 설정하는것이며 오직 하나만 기본으로 설정될 수 있다.
# Port 21 is the standard FTP port.
# 기본 포트
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
# 클라이언트 사용자가 ftp로 접속하여 파일 업로드시 생성되는 파일과 디렉토리의 퍼미션 조정값
# proftpd 데몬 실행 할때 최대 자식 프로세서 생성 개수 지정(standalone모드일경우)
Group nogroup
# proftpd 데몬 실행시 어떤 유저와 그룹의 권한으로 실행하겠다라는 설정
# 각 계정의 홈디렉토리를 최상위 ( / ) 로 표시
# 특정 그룹만 최상위 접속 권한 줄려면 DefaultRoot ~ ! anygroup 으로 설정
# Normally, we want files to be overwriteable.
# 이미 업로드된 파일의 덮어 쓰기를 허용 유무
DenyAll
</Limit>
# ftp 사용자가 업로드한 파일에 대해 퍼미션을 조정하지 못하도록 하는 옵션
# 허용은 AllowAll
# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
# anonymous server 설정을 위한 탭 <Anonymous ~ftp> ~~</Anonymous>
Group ftp
# 익명 사용자들이 할당받을 이름 지정
# 익명 ftp 서버의 접속자 유저명을 항상 anonymous로
# Limit the maximum number of anonymous logins
# 익명서버 동시 접속자수
# in each newly chdired directory.
# 익명서버 접속시 보여줄 메시지
DisplayChdir .message
# /var/ftp 하위 디렉토리 접속시 메시지 지정
# Limit WRITE everywhere in the anonymous chroot
DenyAll
</Limit>
# 익명접속자에 대해 쓰기 제한
■ inetd mode 변경
# 서버 타임을 inetd로 변경
ServerType inetd
# vi /etc/xinetd.d/proftpd
{
disable = yes
flags = REUSE
protocol = tcp
socket_type =stream
port = 21
instances = 30
wait = no
user = root
server = /usr/local/sbin/in.proftpd
log_on_success=HOST PID
log_on_failure+=USERID
log_on_failure = HOST RECORD
server_arg= -l -a
}
# pkill -9 proftpd
# /etc/rc.d/init.d/xinetd restart < xinetd 가 없다면 yum으로 설치 >
■ proftpd 로그 파일 관리
# cd /usr/src/proftpd-1.3.1/contrib/dist/rpm
# ls
ftp.pamd proftpd.init.d proftpd.init.d.suse proftpd.logrotate xinetd
# cp proftpd.logrotate /etc/logrotate.d/proftpd
/etc/logrotate.d 디렉토리에 넣어놓면 알아서 작동한다 ㅡㅡ;
■ 부팅시 자동 실행
########### proftpd auto running test###########
/usr/local/sbin/proftpd &
시작스크립트 생성
소스 파일있는곳에서
# pwd
/usr/src/proftpd-1.3.1/contrib/dist/rpm
# vi proftpd.init.d
PATH="$PATH:/usr/local/sbin" < proftpd 위치로 변경 >
# ls
ftp.pamd proftpd.init.d proftpd.init.d.suse proftpd.logrotate xinetd
# cp proftpd.init.d /etc/init.d/proftpd
# /etc/init.d/proftpd stop
# /etc/init.d/proftpd start
# chkconfig --add proftpd
# chkconfig --list proftpd < 원하는 레벨로 변경 >
DefaultRoot ~aaa,bbb,ccc
-> aaa, bbb ,ccc 그룹 사용자 접속시
자신의 홈디렉토리가 / 로 표시된다.
DefaultRoot ~!aaa
-> aaa 그룹제외한 사용자들은
자신의 홈디렉토리가 루트 디렉토리가 된다.
CWD : 디렉토리 이동
MKD : 디렉토리 생성
RNFR, RNTO : 디렉토리 이름 바꾸기
DELE : 파일 삭제 권한
RMD : 디렉토리 삭제
RETR : 파일 전송 ( 서버 - 클라이언트)
STOR : 파일 전송( 클라이언트 -> 서버)
READ : 파일 리스트 확인 ( RETR, STAT)
파일 읽기와 관련된 모든 FTP명령
DIRS : 디렉토리 목록에 관련된 ""
-> LIST, NLST
LOGIN : 서버에 연결하거나 로그인을 제한하고자 할떄
WRITE : 생성에 관련된 모든 FTP명령
예)
<Limit LOGIN> # anonymous 허용
AllowAll
</Limit>
<Limit LOGIN>
Order Allow, Deny
Allow from 192.168.0.100 192.168.0.11
Allow from 203.241.205.,.rootman.co.kr
Deny from all
</Limit>
<Limit Write>
AllowAll
<Limit>