ProFTPD - 윈디하나의 솔라나라
|
# wget https://ftp.gnu.org/gnu/libidn/libidn-1.36.tar.gz # tar xvfz libidn-1.36.tar.gz # cd libidn-1.36 # ./configure CFLAGS="-m64" # make # sudo make install
ProFTPd 의 소스를 받아 빌드한다.
windy@wl ~/src $ wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.8b.tar.gz
windy@wl ~/src $ tar xvfz proftpd-1.3.8b.tar.gz
windy@wl ~/src $ cd proftpd-1.3.8b
windy@wl ~/src/proftpd-1.3.8b $ ./configure \
--with-includes=/usr/local/include/ncursesw:/usr/local/include:/usr/include:/usr/local/ssl/include \
--with-libraries=/usr/local/lib:/usr/lib:/usr/local/ssl/lib \
--prefix=/usr/local/proftpd \
--enable-sendfile \
--enable-autoshadow \
--enable-shadow \
--enable-auth-pam \
--enable-ctrls \
--enable-openssl \
--enable-facl \
--enable-nls \
--enable-dso \
--enable-pcre \
--with-modules=mod_unique_id:mod_site_misc:mod_sql:mod_sql_passwd:mod_sql_sqlite:mod_sftp:mod_sftp_pam:mod_tls:mod_tls_shmcache:mod_shaper:mod_auth_otp:mod_digest:mod_statcache:mod_deflate:mod_wrap2:mod_wrap2_file:mod_wrap2_sql \
CFLAGS="-m64" CXXFLAGS="-m64" LDFLAGS="-m64"
1)
windy@wl ~/src/proftpd-1.3.8b $ make
windy@wl ~/src/proftpd-1.3.8b $ sudo make install
1) --with-modules
옵션에 붙이는 모듈 이름의 순서는, 모듈의 의존성을 고려해 정해야 한다.각 모듈은 아래와 같은 기능을 가진다.
ftps,
ftpes를 지원해주는 모듈. OpenSSL 라이브러리 필요.
/usr/sbin
에 설치되어있으니 주의하자.
root@wl # vi /etc/profile ... if [ -x /usr/local/proftpd/bin/ftpwho ]; then PATH=/usr/local/proftpd/sbin:/usr/local/proftpd/bin:$PATH; export PATH; fi root@wl #
root@wl ~ # vi /etc/inetd.conf #ftp ~~~ root@wl ~ # ps -ef | grep inetd root 150 1 0 10월 22 ? 0:00 /usr/sbin/inetd -s root@wl ~ # kill -HUP 150솔라리스 10에 번들된 FTP를 사용하고 있다면 실행 중단해야 한다.
root@wl ~ # svcadm disable svc:/network/ftp:default
ProFTPD 는 별도의 시작/종료 스크립트를 제공하지 않는다.
ProFTPD 를 시작하려면 설정파일을 만들고 proftpd(8)을 실행하기만 하면 된다.
root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf DefaultRoot ~ root@wl ~ # /usr/local/proftpd/sbin/proftpd
종료는 proftpd 프로세스를 kill(1), pkill(1) 명령을 사용해 ProFTPd 의 메인 프로세스를 종료하면 된다.
root@wl ~ # kill -TERM `cat /usr/local/proftpd/var/proftpd.pid`
아래와 같이 스크립트를 만들어 사용해도 된다. 스크립트는 ProFTPD: Stopping and Starting에 있는 내용을 조금 수정했다.
proftpd.sh | (1,353 바이트) |
#!/bin/bash # ProFTPD files FTPD_BIN=/usr/local/proftpd/sbin/proftpd FTPD_CONF=/usr/local/proftpd/etc/proftpd.conf PIDFILE=/usr/local/proftpd/var/proftpd.pid # If PIDFILE exists, does it point to a proftpd process? if [ -f "$PIDFILE" ]; then pid=`cat $PIDFILE` fi if [ ! -x "$FTPD_BIN" ]; then echo "$0: $FTPD_BIN: cannot execute" exit 1 fi case $1 in start) if [ -n "$pid" ]; then echo "$0: proftpd [PID $pid] already running" exit fi if [ -r $FTPD_CONF ]; then tty -s && echo "Starting proftpd..." $FTPD_BIN -c $FTPD_CONF if [ ! -f "$PIDFILE" ]; then echo "$0: cannot start proftpd." exit 1 fi else echo "$0: cannot start proftpd -- $FTPD_CONF missing" fi ;; stop) if [ -n "$pid" ]; then tty -s && echo "Stopping proftpd..." kill -TERM $pid RET=$? if [ "$RET" != "0" ]; then echo "$0: proftpd not stopped. check proftpd process owner." exit 1 fi else echo "$0: proftpd not running" exit 1 fi ;; restart) if [ -n "$pid" ]; then tty -s && echo "Rehashing proftpd configuration" kill -HUP $pid RET=$? if [ "$RET" != "0" ]; then echo "$0: proftpd not restarted. check proftpd process owner." exit 1 fi else echo "$0: proftpd not running" exit 1 fi ;; *) echo "usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0
FEAT
명령으로 확인할 수 있다.
windy@wl ~ $ ftp localhost ftp: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to maid. 220 FTP server Name (localhost:windy): USERNAME 331 Password required for windy Password: PASSWORD 230 User windy logged in Remote system type is UNIX. Using binary mode to transfer files. ftp> quote FEAT 211-Features: AUTH TLS CCC CLNT EPRT EPSV HASH CRC32;MD5;SHA-1*;SHA-256;SHA-512; HOST LANG ja-JP.UTF-8;ja-JP;zh-CN.UTF-8;zh-CN;zh-TW.UTF-8;zh-TW;es-ES.UTF-8;es-ES;it-IT.UTF-8;it-IT;ko-KR.UTF-8;ko-KR*;en-US.UTF-8;en-US;fr-FR.UTF-8;fr-FR MD5 MDTM MFF modify;UNIX.group;UNIX.mode; MFMT MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.groupname*;UNIX.mode*;UNIX.owner*;UNIX.ownername*; MODE Z PBSZ PROT RANG STREAM REST STREAM SITE MKDIR SITE RMDIR SITE SYMLINK SITE UTIME SIZE SSCN TVFS UTF8 XCRC XMD5 XSHA XSHA1 XSHA256 XSHA512 211 End ftp> quit 221 Goodbye. windy@wl ~ $
root@wl ~ # /usr/local/proftpd/sbin/proftpd -h usage: proftpd [options] -h, --help Display proftpd usage -N, --nocollision Disable address/port collision checking -n, --nodaemon Disable background daemon mode (and send all output to stderr) -q, --quiet Don't send output to stderr when running with -n or --nodaemon -d [level], --debug Set debugging level (0-10, 10 = most debugging) -D [definition], --define Set arbitrary IfDefine definition -c [config-file], --config Specify alternate configuration file -p [0|1], --persistent Enable/disable default persistent passwd support -l, --list List all compiled-in modules -S, --serveraddr Specify IP address for server config -t, --configtest Test the syntax of the specified config -V, --settings Print compile-time settings and exit -v, --version Print version number and exit -vv, --version-status Print extended version information and exit -X, --nofork Non-forking debug mode; exits after one session -4, --ipv4 Support IPv4 connections only -6, --ipv6 Support IPv6 connections
proftpd/sbin
에 설치된다.
/etc/shutmsg
파일을 생성하고 메시지를 파일에 넣는다. ProFTPd에서는 사용자 로그인시 /etc/shutmsg
파일이 있다면 더이상 로그인을 진행하지 않는다.proftpd/bin
에 설치된다.
AuthUserFile
, AuthGroupFile
, UserPassword
지시어에 사용할 인증 파일을 생성하는 명령이다.mod_ctrls
와 함께 컴파일했을때 설치되는 프로그램이며, ProFTPd의 전반적인것을 관리할 수 있다. 특정 사용자를 종료하거나, 사용자를 추적하는데에 사용할 수 있는 유용한 도구다.mod_quotatab_file
모듈에서 사용하는 설정 파일을 생성하는 명령이다.root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf DefaultAddress 0.0.0.0 Port 21 #AllowstoreRestart on #RequireValidShell off #UseReverseDNS off #IdentLookups off ShowSymlinks on DefaultRoot ~ ServerIdent on "FTP server" #DisplayConnect /etc/proftp.connect.msg #DisplayLogin /etc/proftp.login.msg MaxClients 100 "Sorry, the maximum number(%m) of allowed users are already connected" MaxClientsPerHost 5 "Sorry, the maximum number clients (%m) from your host are already connected" HideUser root HideGroup root AuthPAM On AuthPAMConfig ftp UseEncoding on LangDefault ko_KR LangPath /usr/local/proftpd/share/locale DeflateEngine on #AllowForeignAddress on TCPAccessFiles /etc/hosts.allow /etc/hosts.deny
DefaultAddress
: 바인드할 기본 주소. 0.0.0.0 인 경우 시스템의 모든 주소에 대해 바인드하며, 일반적으로 이 세팅을 사용하면 된다.Port
: 기본 포트 번호. FTP는 21번 포트를 사용하며, 이 설정을 통해 변경할 수 있다.AllowstoreRestart
: 저장 재개(Upload Resume) 허용 여부. 기본적으로 off 이지만 on 으로 설정하고 클라이언트에서 전송재개 기능을 지원하는 경우에 이어 올리기가 가능해진다.vRequireValidShell
: 로그인셸이 설정되지 않은 경우 연결을 허용 여부. 익명 연결시에는 반드시 on 으로 설정해야 한다.UseReverseDNS
: 클라이언트의 IP로 Reverse DNS를 조회할 지 여부. IdentLookups
: IP 룩업 사용 여부. 역 도메인이 없으면 접속할 수 없다ShowSymlinks
: 디렉토리에 심볼릭 링크가 있는 경우 이를 목록에 보일 지 여부DefaultRoot
: 기본 루트 설정. ~은 계정의 홈 디렉토리를 최상위 디렉토리로써 보여준다는 의미다. chroot(1M) 와 유사하다.
ServerIdent
: 서버 정보 보일지 여부와 서버 정보. 포트에 접속하자 마자 보여주는 메시지를 정의한다. 위와 같이 설정한 경우 220 FTP server와 같이 표시된다.
DisplayConnect
: 로그인 이전 메시지를 담고 있는 파일DisplayLogin
: 로그인 이후 메시지를 담고 있는 파일MaxClients
: 최대 클라이언트 개수 및 개수가 넘어 접속 불가시 보여주는 메시지MaxClientsPerHost
:호스트당 최대 클라이언트 수 및 개수가 넘어 접속 불가시 보여주는 메시지 HideUser
: 숨길 사용자 이름HideGroup
: 숨길 그룹 이름AuthPAM
: PAM 사용 여부AuthPAMConfig
: PAM 설정UseEncoding
: UTF-8 및 인코딩 설정AllowForeignAddress
: FXP 허용 여부. FXP에 대한 자세한 설명은 ProFTPD and FXP를 읽어보자. 매우 잘 나와있다.TCPAccessFiles
: ACL을 사용할 파일 위치SFTP
: SSH의 서브시스템(sftp-server(1M))으로 작동하며, 솔라리스는 SSH가 번들되어있기 때문에, 별도로 설치해야할 필요도 없고 설정할 것도 없다. SSH에 대한 자세한 설명은 윈디하나의 솔라나라: SSH를 읽어보자.FTPS
: FTP의 암호화된 버전이다. HTTPS가 HTTP 의 암호화된 버전인 것 처럼 FTPS 도 마찬가지다. 990번 포트를 기본으로 사용한다. ProFTPd에도 UseImplicitSSL
파라메터를 사용해 FTPS를 설정할 수 있다.FTPES
: FTP 프로토콜에서, AUTH TLS
(구형 버전은 AUTH TLS-C
이라는 FTP 명령을 사용해, TLS 전송을 지원한다. 21번 포트를 그대로 사용 가능하기 때문에 널리 사용된다.PORT,
PASV명령을 사용해야 하는데, 이 경우 방화벽이나 NAT와 같이 사용하는 경우 FTPS/FTPES사용이 어려울 수 있다. (결과적으로 NAT환경에서는
PASV명령을 사용할 수 없으면 FTPS/FTPES사용할 수 없다) IP공유기에서 지원하는 FTP 클라이언트 접속 지원 기능은 패킷이 암호화되어 PORT 명령을 구분할 수 없기 때문에 결과적으로 FTPS/FTPES에서는 작동하지 않는다. (이를 해결하기 위해 CCC라는 FTP 커맨드가 있지만, 이를 지원하는 클라이언트/서버가 별로 없고 이 커맨드는 보안상 문제가 있다. ProFTPd에서는
TLSRequired
파라메터를 사용해, CCC에서 비 암호화 전송을 허용할 범위를 지정할 수 있다)
이에비해 SFTP 는 하나의 접속만으로 작동하며, SSH 채널을 통해 명령과 데이터를 주고 받는다. NAT를 사용하고 있다면 SFTP를 사용하자.
root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf
<IfModule mod_tls.c>
TLSEngine on
TLSLog /usr/local/proftpd/var/proftpd.ftps.log
TLSProtocol TLSv1 TLSv1.1 TLSv1.2 TLSv1.3
TLSOptions NoSessionReuseRequired
# Are clients required to use FTP over TLS when talking to this server?
TLSRequired off
# Server certificate
TLSRSACertificateFile /export/home/windy/.acme.sh/www.solanara.net/www.solanara.net.cer
TLSRSACertificateKeyFile /export/home/windy/.acme.sh/www.solanara.net/www.solanara.net.key
TLSECCertificateFile /export/home/windy/.acme.sh/www.solanara.net_ecc/www.solanara.net.cer
TLSECCertificateKeyFile /export/home/windy/.acme.sh/www.solanara.net_ecc/www.solanara.net.key
# CA the server trusts
TLSCACertificateFile /export/home/windy/.acme.sh/www.solanara.net/ca.cer
# Authenticate clients that want to use FTP over TLS?
TLSVerifyClient off
TLSOptions NoSessionReuseRequired 1)
</IfModule>
root@wl ~ # vi /etc/pam.conf
ftp auth required /usr/lib/security/pam_unix.so
ftp account required /usr/lib/security/pam_unix.so
※ ProFTPd 로그 mod_tls/2.4.3[1090]: TLSv1/SSLv3 renegotiation accepted, using cipher DHE-RSA-AES128-SHA (128 bits) mod_tls/2.4.3[1090]: client did not reuse SSL session, rejecting data connection (see the NoSessionReuseRequired TLSOptions parameter) mod_tls/2.4.3[1090]: unable to open data connection: TLS negotiation failed ※ 클라이언트(FileZilla) 로그 425 Unable to build data connection: Not owner 또는 425 Unable to build data connection: Operation not permitted
root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf <IfModule mod_sftp.c> <VirtualHost 0.0.0.0> SFTPEngine on SFTPLog /usr/local/proftpd/var/proftpd.sftp.log Port 24 SFTPHostKey /etc/ssh/ssh_host_rsa_key SFTPHostKey /etc/ssh/ssh_host_dsa_key SFTPCompression delayed MaxLoginAttempts 2 DefaultRoot ~ </VirtualHost> </IfModule>
/etc/ssh/ssh_host_rsa_key
, /etc/ssh/ssh_host_dsa_key
파일은 솔라리스에서 SSH를 사용한다면 이미 생성되어있을 것이다. 만약 생성되어있지 않다면 윈디하나의 솔라나라: SSH - 호스트 키 재 생성를 참조해 생성한다.
anonymous
를, 패스워드에는 공란으로 두거나 임의의 e-Mail 주소를 입력해 접속하면 된다.
# 익명 FTP에 사용할 계정을 만든다. Anonymous FTP를 이 사용자의 권한으로 실행될 것이다. root@wl ~ # /usr/sbin/groupadd -g 103 ftp root@wl ~ # useradd -d /export/home/ftp -g ftp -u 104 -s /bin/false ftp root@wl ~ # mkdir /export/home/ftp # Anonymous FTP의 홈 디렉토리. 소유자와 그룹 모두 root, staff로 놔둔다. root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf # Anonymous태그의 코멘트를 풀면 설정은 완료된다. # A basic anonymous configuration, no upload directories. If you do not # want anonymous users, simply delete this entire <Anonymous> section. <Anonymous ~ftp> User ftp Group ftp # We want clients to be able to login with "anonymous" as well as "ftp" UserAlias anonymous ftp # Limit the maximum number of anonymous logins MaxClients 10 # We want 'welcome.msg' displayed at login, and '.message' displayed # in each newly chdired directory. DisplayLogin welcome.msg # DisplayFirstChdir .message # Limit WRITE everywhere in the anonymous chroot <Limit WRITE> DenyAll </Limit> </Anonymous> root@wl ~ # pkill proftpd root@wl ~ # /usr/local/proftpd/sbin/proftpd익명 사용자도 업로드 할 수 있도록
incomming
디렉토리 만들어 보자. 접근 제한 설정이 없다면 일주일 이내에 익명의 업로더에 장악될 수 있으니, TCPWrapper등을 이용해 접근제한을 하자.
root@wl ~ # mkdir /export/home/ftp/incomming root@wl ~ # chmod 777 /export/home/ftp/incomming root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf # 다음을 추가한다. <Anonymous ~ftp> ... # <Anonymous ~ftp>와 </Anonymous> 사이에 아래를 추가한다. <Directory incoming> AllowOverwrite on AllowStoreRestart on <Limit STOR MKD> AllowALL </Limit> </Directory> </Anonymous> root@wl ~ # pkill proftpd root@wl ~ # /usr/local/proftpd/sbin/proftpd # ProFTPD는 재시작하는 것이 없다.※ 익명 사용자로서 사용할 시스템 계정을 (User 및 Group) 모두 ftp로 하였고, 익명으로 접속한 유저는 ftp:ftp 권한을 가진다는 것을 생각하면 이해하기 쉬울 것이다.
root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf # TCPAccessFiles부분을 추가한다. TCPAccessFiles /etc/hosts.allow /etc/hosts.deny root@wl ~ # vi /etc/hosts.deny ALL:ALL root@wl ~ # vi /etc/hosts.allow proftpd: 192.168.0.3,192.168.0.2 root@wl ~ # pkill proftpd root@wl ~ # /usr/local/proftpd/sbin/proftpd
AuthUserFile
, AuthGroupFile
지시자를 이용해 파일을 사용해 인증하는 방법과, 데이터베이스를 사용해 인증하는 방법이 있다. 이 단락에서는 데이터베이스를 이용한 방법에 대해 설명한다.root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf <IfModule mod_sql.c> SQLAuthenticate on SQLLogFile /usr/local/proftpd/var/proftpd.sql.log SQLMinUserUID 100 SQLAuthTypes MD5 </IfModule> <IfModule mod_sql_sqlite.c> SQLBackend sqlite3 SQLConnectInfo /usr/local/proftpd/var/proftpd.sqlite3 </IfModule> <IfModule mod_sql_passwd.c> SQLPasswordEngine on SQLPasswordEncoding hex SQLPasswordUserSalt sql:/get-user-salt Prepend SQLNamedQuery get-user-salt SELECT "salt FROM users WHERE userid = '%{0}'" </IfModule>아래와 같이 Salt 파일과 데이터베이스 파일을 생성한 후, 초기 데이터를 넣어준다.
root@wl ~ # echo -n "12345PASSWORD" | digest -a md5 1) 4e27a5a93178e271e5970d2bd3eba8ed root@wl ~ # sqlite3 /usr/local/proftpd/var/proftpd.sqlite3 SQLite version 3.20.1 2017-08-24 16:21:36 Enter ".help" for usage hints. sqlite> CREATE TABLE users ( userid VARCHAR(30) PRIMARY KEY, passwd VARCHAR(80) NOT NULL, uid INTEGER NOT NULL UNIQUE, gid INTEGER NOT NULL, homedir VARCHAR(255) NOT NULL, shell VARCHAR(255), salt VARCHAR(255) NOT NULL ); sqlite> CREATE TABLE groups ( groupname VARCHAR(30) PRIMARY KEY, gid INTEGER NOT NULL UNIQUE, members VARCHAR(255) ); sqlite> insert into users (userid, passwd, uid, gid, homedir, shell, salt) values ('test', '4e27a5a93178e271e5970d2bd3eba8ed', 101, 10, '/export/home/windy', '/bin/bash', '12345'); 2) sqlite> insert into groups (groupname, gid, members) values ('staff', 10, 'test'); sqlite> Ctrl+D1) windy 사용자가 사용할 패스워드인
PASSWORD와 Salt 값인
12345를 붙어 패스워드 해시를 만든다.
ProFTPD 를 재시작한 후, test 사용자로 로그인해본다. 뭔가 문제가 있으면 /usr/local/proftpd/var/proftpd.sql.log
파일을 살펴보자. 이상 없으면 test 사용자는 DB에서 삭제하자.
OTP는 2가지 이상의 방법을 사용해 인증하기 위해 사용하는 인증 방법이다. 별도의 기기에서 1회성 패스워드를 발급받아 사용하고, 시간이 지나면 1회성 패스워드는 계속 변경된다.
root@wl ~ # vi /usr/local/proftpd/etc/proftpd.conf <IfModule mod_auth_otp.c> AuthOTPEngine on AuthOTPLog /usr/local/proftpd/var/proftpd.otp.log AuthOTPAlgorithm totp-sha512 AuthOTPTable sql:/get-user-totp/update-user-totp # AuthOTPAlgorithm hotp # AuthOTPTable sql:/get-user-hotp/update-user-hotp </IfModule> <IfModule mod_sql.c> SQLNamedQuery get-user-totp SELECT "secret FROM auth_otp WHERE user = \'%{0}\'" SQLNamedQuery update-user-totp UPDATE "counter = %{1} WHERE user = \'%{0}\'" auth_otp SQLNamedQuery get-user-hotp SELECT "secret, counter FROM auth_otp WHERE user = \'%{0}\'" SQLNamedQuery update-user-hotp UPDATE "counter = %{1} WHERE user = \'%{0}\'" auth_otp </IfModule> root@wl ~ # /usr/local/proftpd/sbin/auth-otp ------------------------------------------------- Your new secret key is: RAL6I4PWSH4SBPY7UWI7EE7ZGIRPMKFMMYDSNLZMDGMO73ZVBVYA To add this key to your SQL table, you might use: INSERT INTO auth_otp (secret, counter) VALUES ('RAL6I4PWSH4SBPY7UWI7EE7ZGIRPMKFMMYDSNLZMDGMO73ZVBVYA', 0); Your verification code is: 763783 ------------------------------------------------- root@wl ~ # sqlite3 /usr/local/proftpd/var/proftpd.sqlite3 SQLite version 3.20.1 2017-08-24 16:21:36 Enter ".help" for usage hints. sqlite> CREATE TABLE auth_otp ( user VARCHAR(256) PRIMARY KEY, secret TEXT, counter INTEGER ); sqlite> insert into auth_otp values ('windy', 'RAL6I4PWSH4SBPY7UWI7EE7ZGIRPMKFMMYDSNLZMDGMO73ZVBVYA', 0); sqlite> Ctrl+D
Secret: RAL6I4PWSH4SBPY7UWI7EE7ZGIRPMKFMMYDSNLZMDGMO73ZVBVYA
Type: TOTP
Digits: 6
Algorithm: SHA512
Interval: 30
입력하기 어려우면 FreeOTP - QR Code Generator에서 QR코드를 생성해 FreeOTP 에서 찍으면 쉽게 입력할 수 있다.
클라이언트 설정을 마치면 아래와 같이 접속할 수있다.
root@maid ~ # ftp localhost
ftp: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to maid.
220 FTP server
Name (localhost:windy): windy
331 One-time password required for windy
Password: OTP패스워드
230 User windy logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
FileZilla 에서도 로그온 유형을
인터랙티브으로 지정하면 OTP로 로그인할 수 있다.
FTP 데몬은 전송 로그를 /var/log/xferlog
에 저장한다. (ProFTPd 뿐만 아니라, VSFTPD, WU-FTPD 도 마찬가지다) 로그 형식은 아래와 같다. 자세한 형식은 xferlog(4)를 읽어보자.
로그시간 전송시간 원격호스트이름 파일크기 파일이름 전송종류 특별전송플래그 방향 접근모드 유저이름 서비스이름 인증방법 인증된유저ID 완료여부
로그 파일은 아래와 같이 해석될 수 있다.
root@wl ~ # tail /var/log/xferlog Fri Nov 11 11:56:28 2005 0 xxx.xxx.xxx.xxx zzzz /sample.txt a _ i r webmaster ftp 1 * c -----------------------1 2 --------------3 ---4 ----------5 6 7 8 9 -------10 -11 12 13 14
RSS ATOM XHTML 5 CSS3 |
Copyright © 2004-2025 Jo HoSeok. All rights reserved. |