출처: https://levin01.tistory.com/1624
1. Proftp 소개
1. Proftp 소개
Proftpd는 파일전송 프로토콜인 FTP의 일종으로서 보안적이고 신뢰적인 FTP서버가 되기를
희망하며 발전을 하며 Apache 설정파일과 같은 설정 방식을 따른다.
Proftpd는 다음 기능을 제공한다.
☞ Apache 웹 서버를 사용해 본 관리자라면 누구나 직관적으로 이해할 수 있는 지시자와
지시그룹으로 된 단 하나의 설정 화일.
☞ Apache의 ".htaccess"와 비슷한 각 디렉토리의 ".ftpaccess" 설정.
☞ 쉽게 설정할 수 있는 다중 가상 FTP 서버와 anonymous FTP 서비스.
☞ 시스템 부하에 따라 stand-alone 또는 inetd 중에서 골라서 운영되도록 만들어짐.
☞ anonymous FTP의 root 디렉토리에는 특별한 디렉토리 구조나 시스템 화일이 없어도 됨.
☞ SITE EXEC 명령이 없다. 현대의 인터넷 환경에서 그런 명령은 보안면에서 악몽이다.
ProFTPD는 어떠한 경우에도 어떤 외부 명령도 실행하지 않는다. 검사를 위해 관리자에게
소스가 제공된다 (항상 제공될 것이다).
☞ 유닉스 스타일 퍼미션에 기초한 숨겨지는 디렉토리나 화일들 또는 유저/그룹 소유권.
☞ "root" 권한을 따낼 수 있는 공격의 기회를 줄이기 위해 stand-alone 모드에서는 특권이
없는 유저도 운영을 할 수 있도록 설정가능. 주의: 이 기능은 Unix 시스템의 능력에 기초한다.
☞ 기록하기, utmp/wtmp 지원. 기록하기는 wu-ftpd 표준과 호환이며 확장된 기록하기도 가능하다.
☞ shadow 암호 지원, 만료된 계정들 지원 포함.
<자료출처 : proftpd.oops.org>
2. Proftp 설치파일 확인
1. 패키지 확인 및 파일설명
]# rpm -qa | grep proftp [Enter]
proftpd-1.2.1-2wl
]# rpm -ql proftpd-1.2.1-2wl [Enter]
/etc/pam.d/ftp #ftp사용자 인증할때 사용한다.
/etc/proftpd/conf/ftpusers # ftp접속을 제한하는 사용자를 등록한다.
/etc/proftpd/conf/proftpd.conf #ftp설정파일이다.
/etc/proftpd/conf/proftpd.xinetd #ftp를 xinetd에 넣을때 사용되는 파일이다.
/etc/proftpd/document
/etc/rc.d/init.d/proftpd #proftpd 대몬파일이다.
/usr/sbin/ftpshut # proftp대몬을 죽일때 사용한다.
/usr/sbin/in.ftpd
/usr/sbin/in.proftpd # xinetd에 넣을때 사용되는 대몬
/usr/sbin/proftpd
/usr/sbin/xferstats #ftp상태를 보여준다.
.............
/var/ftp/incoming # 디렉토리생성
/var/ftp/pub # 디렉토리생성
/var/run/proftpd # 디렉토리생성
3 Proftpd.conf
1. 설정 파일 분석
]# cat /etc/proftpd/conf/proftpd.conf [Enter]
# ProFTPD configuration file. Need more information of configuration,
# See the References in '/usr/share/doc/proftpd-core-{version}/' directory
# If u have any question, visit our Web Site.http://www.wowlinux.com
# orhttp://proftpd.oops.org
# Thank you - WOWLINUX.COM
#########################
# Global start # ## Global Section
#########################
ServerName "canux.pe.kr FTP Server"
# ftp서버네임을 지정해준다.
ServerType standalone
# 서버타입을 적어주는 곳으로 standalone,xinetd두가지 방법이 있습니다.
DefaultServer on
# ftp서버가 여러개일경우 기본ftp로 설정하는 부분이다.
Port 21
# ftp가 사용할 포트
Umask 022
# 파일생성시 퍼미션 지정
MaxInstances 30
# 최대 자식프로세스 수 지정
User nobody
# ftp가 실행되는 사용자명을 지정한다.
Group nobody
# ftp가 실행되는 그룹명을 지정한다.
DefaultRoot ~
# 계정사용자가 ftp로긴시 홈디렉토리외의 상위디렉토리 접근금지
UseReverseDNS off
# 호스트 이름으로 기록할 건지를 설정
ServerAdmincanux@canux.pe.kr
# 서버관리자메일주소지정한다. 문제발생시 관리자한테 메일을 발송한다.
IdentLookups off
AuthPAMAuthoritative on
# ftpusers를 사용하여 인증여부 설정
RootLogin off
# root관리자 로긴허용 여부 설정 만약 허용하고 싶을때는 ftpusers파일에서 root 각주처리
DenyFilter \*.*/
# 특수문자에 대해서 거부설정
DeferWelcome off
# 인증전 서버 이름이 화면에 뿌려지는 것인지 허용여부
TimesGMT off
# 타임아웃을 설정안함
#RateReadBPS 256
# 초당 전송 대역폭(BPS)
#RateReadFreeBytes 5120
#RateReadHardBPS on
TimeoutIdle 0
# client에서 아무런 작업을 하지 않을때 연결을 끊는 것을설정 0이면 연결제한을 안한다
TimeoutNoTransfer 0
# TimeoutIdle,TimeoutNoTransfer는 User가 접속 후 아무 작업도 하지 않을 경우 접속 종료 시간 설정
TimeoutLogin 300
# client가 인증을 유지할수 있는 시간을 초단위로 지정
DisplayLogin /etc/proftpd/conf/welcome.msg
# 로그인시 뿌려지는 메세지의 경로
DisplayFirstChdir .message
# 각 디렉토리별로 접근시 뿌려지는 메세지 파일 이름
<Directory /*>
AllowOverwrite on
# ftp / 디렉토리내에서 같은 이름의 파일이 전송받을때 덮어쓰기를 허용할지 거부할지 설정
</Directory*>
#########################
# Global END #
#########################
#########################
# Anonymous start # ## Anonymous Section
#########################
<Anonymous ~ftp>
User ftp
#Anonymous로 접속할경우 사용자를 ftp로 인식한다.
Group ftp
#Anonymous로 접속할경우 그룹명을 ftp로 인식한다.
UserAlias anonymous ftp
#Anonymous접속한 사죵자의 접속자명을 ftp로 별칭
MaxClients 10 "Sorry, maxium users %m -- try again later"
#동시접속자수를 제한하는것으로 10이 초과시 " "안의 메시지를 출력한다.
MaxClientsPerHost 2 "Sorry, Over 2 connection not allow"
#한 호스트당 접속할수있는 최대 사용자수로 초과시 " "안의 메시지를 출력한다.
DisplayLogin welcome.msg
# ftp로 로긴할때 출력해지는 파일지정
DisplayFirstChdir .message
# 각 디렉토리별로 접근시 뿌려지는 메세지 파일 이름
RequireValidShell off
# Anonymous로 접속가능하게 할려면 off로 설정
# HideUser root
# 지정한 사용자권한의 화일을 안보이도록 설정
# HideGroup root
# 지정한 그룹권한의 화일을 안보이도록 설정
# Anonymous/'s Uploads Directory
<Directory incoming/*>
AllowOverwrite on
# 같은이름의 파일을 덮어쓰기를 설정
AllowRetrieveRestart on
# FTP REST 명령을 통하여 file을 재전송 하는 것을 허용
AllowStoreRestart on
# client로 부터 server로 보내지는 store file 전송을 client가 "restarting" 하는 것을 허락하거나 거부
<Limit DELE RMD>
# 디렉토리삭제,삭제에 대한설정
DenyAll
# 디렉토리삭제,삭제에 전부 거부한다.
</Limit>
<Limit READ STOR MDK>
# 읽기,저장디렉토리생성에 대한 설정
AllowAll
# 읽기,저장,디렉토리생성을 허락한다.
</Limit>
<Limit LOGIN>
# 사용자로긴에 관한 설정
Order deny, allow
Deny from 203.249.73.2, 211.203.178.5, 211.112.37., .deny.com
# 위의 아이피나 도메인명에서는 접속을 거부한다.
Allow from all
# 위의 거부목록을 제외한 나머지 머신에서는 접속이 가능하다.
</Limit>
</Directory>
# Anonymous\'s Public Directory
<Directory pub/*>
# pub/*아래파일에 대한 설정
<Limit READ>
# 읽기권한에 대한 설정
AllowAll
# 읽기권한 허락한다.
</Limit>
<Limit STOR DELE RMD MKD>
# 저장,삭제,디렉토리생성,삭제에 대한 설정
DenyAll
# 저장,삭제,디렉토리생성,삭제를 거부한다.
</Limit>
</Directory>
</Anonymous>
#########################
# Anonymous end # ## Anonymous Section
#########################
4. /etc/proftpd/conf/welcome.msg
1. welcome.msg설정
ftp사용자가 접속했을때 보여주는 메세지내용이다.
]# cat /etc/proftpd/conf/welcome.msg
ftp://%L/
Available Disk Space : %F
Now Login Users : %N/%M
Remote Host : %R Remote User : %u
Uptime : %T
Admin-Mail : %E
ftp접속후 나온결과
ftp://canux.pe.kr/
Available Disk Space : 408516
Now Login Users : 1/unlimited
Remote Host : 127.0.0.1 Remote User : UNKNOWN
Uptime : Wed Mar 27 05:55:03 2002
Admin-Mail :canux@canux.pe.kr
여기서 쓰이는 변수는 다음과 같은 뜻을 나타냅니다.
변수 설명
%L 서버명
%u 접속 계정명
%F 남은 용량
%T 접속 시간
%N 현 사용자
%E 관리자 e-mail
%M 최대 사용자
&C 현재 디렉토리
%R 리모트 호스트명
5. Xinetd Deamon 합류
1. xinetd에 끼워넣기
rpm버젼을 설치했을경우 /etc/xinetd.d/에 proftpd설정파일은 /etc/proftpd/conf/proftpd.xinetd파일이다.
이파일을 이름을 proftpd로 바꾸어서 복사하면 된다.
만약 화일이 없다면 패키지 검사를 해보면된다.
]# rpm -ql proftpd | grep proftpd.xinetd [Enter]
/etc/proftpd/conf/proftpd.xinetd
]# service proftpd stop [Enter]
Shutting down proftpd: No way to suspend [ OK ]
]# cat /etc/proftpd/conf/proftpd.conf | grep ServerType [Enter]
ServerType inetd # 7.x대라고 xinetd를 적어주면 안된다.
]# vi /etc/xinetd.d/proftpd [Enter]
service ftp
{
disable = no #사용가능하도록 no로 설정
flags = REUSE
protocol = tcp
socket_type = stream
instances = 50
wait = no
user = root
server = /usr/sbin/in.proftpd
log_on_success = HOST PID
log_on_failure = HOST RECORD
nice = 10
}
위에서 바꿀내용은 사용여부만을 바꾸어주면 된다. 만약 소스로 설치했다면 server의 대몬경로를 수정해야 한다.
]# service xinetd restart [Enter]
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
]# ftp 0 [Enter]
Connected to 0.
220 BCB1COOL Server (Proftpd FTP Server) [test.ilinuxbay.com]
500 AUTH not understood.
500 AUTH not understood.
KERBEROS_V4 rejected as an authentication type
Name (0:root): canux
331 Password required for canux.
Password:
230-ftp://test.ilinuxbay.com/
Available Disk Space : 408508
Now Login Users : 1/unlimited
Remote Host : 127.0.0.1 Remote User : UNKNOWN
Uptime : Wed Mar 27 14:05:51 2002
Admin-Mail :canux@canux.pe.kr
230 User canux logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
21 Goodbye
]#
6. ftp 관련 명령어
1. proftp관련 명령어
- ftpusers
ftp접근사용자를 제한하는것으로 이파일안에 있는사용자는 ftp를 사용할수 없다.
] # cat /etc/pam.d/ftp [Enter]
auth required /lib/security/pam_listfile.so item=user sense=deny \
file=/etc/proftpd/conf/ftpusers onerr=succeed
]# cat /etc/proftpd/conf/ftpusers [Enter]
# ftp로긴을 거부하는 사용자 목록
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
gdm
mysql
canux
]#
- ftpshut
지정한 시간에 모든 proftd server들을 shutdown 한다. 이 명령은 자동으로 shtudown 진행을
준비하고, 자동으로 현재 proftpd connection을 끊을 수 있으며, 새로운 연결을 거부하도록
할 수 있다. 명령은 suhtdown이 임박함을 proftpd process에 알리기 위하여 /etc/shutmsg와
같은 control file을 이용하여 사용할 수 있다.
ftpshut [ -l min ] [ -d min ] time [ warning-message ]
옵션 설명
time time은 ftp server를 down시킬 시간을 말한다. now'라는 단어는 즉시 shutdown을
지시하며 +number 또는 HHMM. 이라는 두 개의 형식 중 하나는 미래의 시간에 shut down을 지시한다.
첫번째 형식은 number 분 후에 server를 down 하며 두번째 지시자는 하루 중 정확한 시간을
지시하며 24시간 clock 형식을 사용한다. (예 오후3시 30분 : 1530 )
-l min shutdown 전에 새로운 ftp access를 거부하는 것을 분단위의 숫자로 지정한다.
만약 -l 옵션을 지정하지 않으면, 기본으로 10분이 적용된다.
(만약 shutdown 까지 10분이 채 남지 않는다면 즉시 적용된다.)
-d min shutdown 전에 현재 ftp connection들을 종료하는 것을 분 단위의 숫자로 지정한다.
-d 옵션을 지정하지 않으면 기본으로 5분이 적용된다. shutdown이 5분 이내로 남았다면 즉시
접속이 종료된다.
warning-message(경고 메세지)
새로운 접속을 거부하거나 현재 연결되어 있는 session을 종료시킬 때 부가적으로 메세지를
준비할 수 있다. 메시지는 아래와 같은 변수를 이용해서 작성할 수 있다.
%s proftpd가 종료하는 시간
%r 새로운 접속이 거부되기 시작하는 시간
%d 현재 접속이 종료되는 시간
%C 현재 작업중인 directory (where applicable)
%L local host name (of virtualhost name)
%R remote host name
%T local time (형식 : Thu Nov 15 17:12:42 1990)
%U login time 시에 주어진 username
]# ftpshut -l 5 -d 5 /etc/proftpd/conf/warn.conf [Enter]
'IT기술 관련 > 리눅스' 카테고리의 다른 글
리눅스 CLI에서 공인 IP 확인하기 (0) | 2019.06.11 |
---|---|
CentOS php-mcrypt 설치 (0) | 2019.03.20 |
Cron으로 초 단위 실행 (0) | 2019.03.04 |
[FTP] proftpd 의 실행환경 설정파일 proftpd.conf 정복하기 (0) | 2019.02.17 |
[파일] Proftpd 파일 업로드 관련 설정 사항 (0) | 2019.02.15 |