C u hình Virtual FTP Server

Một phần của tài liệu Hướng dẫn quản trị mạng linux (Trang 161 - 172)

Bài t p 3.1 (D ch v FTP)

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 162/271

I. Gi i thi u v FTP

I.1. Giao th c FTP

FTP là t vi t t t c a File Transfer Protocol. Giao th c này đ c xây d ng d a trên chu n TCP, FTP cung c p c ch truy n tin d i d ng file thông qua m ng TCP/IP, FTP là 1 d ch v đ c bi t vì nó dùng đ n 2 c ng: c ng 20 dùng đ truy n d li u (data port) và c ng 21 dùng đ truy n l nh (command port).

I.1.1 Active FTP

ch đ ch đ ng (active), máy khách FTP (FTP client) dùng 1 c ng ng u nhiên không dành riêng (c ng N > 1024) k t n i vào c ng 21 c a FTP server. Sau đó, máy khách l ng nghe trên c ng N+1 và g i l nh PORT N+1 đ n FTP server. Ti p theo, t c ng d li u c a mình, FTP server s k t n i ng c l i vào c ng d li u c a client đã khai báo tr c đó (t c là N+1), khía c nh firewall, đ FTP Server h tr ch đ active các kênh truy n sau ph i m :

- C ng 21 ph i đ c m cho b t c ngu n g i nào (đ client kh i t o k t n i) - FTP server's port 21 to ports > 1024 (Server tr l i v c ng đi u khi n c a client)

- Cho k t n i t c ng 20 c a FTP server đ n các c ng > 1024 (Server kh i t o k t n i vào c ng d li u c a client)

- Nh n k t n i h ng đ n c ng 20 c a FTP server t các c ng > 1024 (Client g i xác nh n ACKs đ n c ng data c a server)

S đ k t n i

- B c 1, client kh i t o k t n i vào c ng 21 c a server và g i l nh PORT 1027.

- B c 2 server g i xác nh n ACK v c ng l nh c a client.

- B c 3 server kh i t o k t n i t c ng 20 c a mình đ n c ng d li u mà client đã khai báo tr c đó.

- B c 4 client g i ACK ph n h i cho server.

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 163/271 Khi FTP Server ho t đ ng ch đ ch đ ng, Client không t o k t n i th t s vào c ng d li u c a FTP server, mà ch đ n gi n là thông báo cho server bi t r ng nó đang l ng nghe trên c ng nào và server ph i k t n i ng c v client vào c ng đó. Trên quan đi m firewall đ i v i máy client đi u này gi ng nh 1 h th ng bên ngoài kh i t o k t n i vào h th ng bên trong và đi u này th ng b ng n ch n trên h u h t các h th ng Firewall.

Ví d : Phiên làm vi c active FTP:

Trong ví d này phiên làm vi c FTP kh i t o t máy testbox1.slacksite.com (192.168.150.80), dùng ch ng trình FTP client d ng dòng l nh, đ n máy ch FTP testbox2.slacksite.com (192.168.150.90). Các dòng có d u --> ch ra các l nh FTP g i đ n server và thông tin ph n h i t các l nh này. Các thông tin ng i dùng nh p vào d i d ng ch đ m.

L u ý Khi l nh PORT đ c phát ra trên client đ c th hi n 6 byte. 4 byte đ u là đa ch IP c a máy client còn 2 byte sau là s c ng. Giá tr c ng đu c tính b ng (byte_5*256) + byte_6, ví d ( (14*256) + 178) là 3762.

testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2 Connected to testbox2.slacksite.com.

220 testbox2.slacksite.com FTP server ready.

Name (testbox2:slacker): slacker ---> USER slacker

331 Password required for slacker.

Password: TmpPass ---> PASS XXXX

230 User slacker logged in.

---> SYST

215 UNIX Type: L8

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

ftp: setsockopt (ignored): Permission denied ---> PORT 192,168,150,80,14,178

200 PORT command successful.

---> LIST

150 Opening ASCII mode data connection for file list.

drwx--- 3 slacker users 104 Jul 27 01:45 public_html 226 Transfer complete.

ftp> quit ---> QUIT 221 Goodbye.

I.1.2 Passive FTP

gi i quy t v n đ là server ph i t o k t n i đ n client, m t ph ng th c k t n i FTP khác đã đ c phát tri n. Ph ng th c này g i là FTP th đ ng (passive) ho c PASV (là l nh mà client g i cho server đ báo cho bi t là nó đang ch đ passive).

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 164/271 ch đ th đ ng, FTP client t o k t n i đ n server, tránh v n đ Firewall l c k t n i đ n c ng c a máy bên trong t server. Khi k t n i FTP đ c m , client s m 2 c ng không dành riêng N, N+1 (N > 1024). C ng th nh t dùng đ liên l c v i c ng 21 c a server, nh ng thay vì g i l nh PORT và sau đó là server k t n i ng c v client, thì l nh PASV đ c phát ra. K t qu là server s m 1 c ng không dành riêng b t k P (P > 1024) và g i l nh PORT P ng c v cho client..

Sau đó client s kh i t o k t n i t c ng N+1 vào c ng P trên server đ truy n d li u. theo quan đi m Firewall trên server FTP, đ h tr FTP ch đ passive, các kênh truy n sau ph i đ c m :

- C ng FTP 21 c a server nh n k t n i t b t k ngu n nào (cho client kh i t o k t n i) - Cho phép tr l i t c ng 21 FTP server đ n c ng b t k trên 1024 (Server tr l i cho c ng

control c a client)

- Nh n k t n i trên c ng FTP server > 1024 t b t c ngu n nào (Client t o k t n i đ truy n d li u đ n c ng ng u nhiên mà server đã ch ra)

- Cho phép tr l i t c ng FTP server > 1024 đ n các c ng > 1024 (Server g i xác nh n ACKs đ n c ng d li u c a client)

S đ k t n i Passive FTP

+ B c 1, client k t n i vào c ng l nh c a server và phát l nh PASV.

+ B c 2 server tr l i b ng l nh PORT 2024, cho client bi t c ng 2024 đang m đ nh n k t n i d li u.

+ Bu c 3 client t o k t n i truy n d li u t c ng d li u c a nó đ n c ng d li u 2024 c a server.

+ B c 4 là server tr l i b ng xác nh n ACK v cho c ng d li u c a client.

Trong khi FTP ch đ th đ ng gi i quy t đ c v n đ phía client thì nó l i gây ra nhi u v n đ khác phía server. Th nh t là cho phép máy xa k t n i vào c ng b t k > 1024 c a server.

i u này khá nguy hi m tr khi FTP cho phép mô t dãy các c ng >= 1024 mà FTP server s dùng (ví d WU-FTP Daemon). V n đ th hai là m t s FTP client l i không h tr ch đ th đ ng. Ví d ti n ích FTP client mà Solaris cung c p không h tr FTP th đ ng. Khi đó c n ph i có thêm trình FTP client. M t l u ý là h u h t các trình duy t Web ch h tr FTP th đ ng khi truy c p FTP server theo đ ng d n URL ftp://.

Ví d phiên làm vi c passive FTP:

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 165/271 Trong ví d này phiên làm vi c FTP kh i t o t máy testbox1.slacksite.com (192.168.150.80), dùng ch ng trình FTP client d ng dòng l nh, đ n máy ch FTP testbox2.slacksite.com (192.168.150.90), máy ch Linux ch y ProFTPd 1.2.2RC2. Các dòng có d u --> ch ra các l nh FTP g i đ n server và thông tin ph n h i t các l nh này. Các thông tin ng i nh p vào d i d ng ch đ m.

L u ý: i v i FTP th đ ng, c ng mà l nh PORT mô t chính là c ng s đ c m trên server.

Còn đ i v i FTP ch đ ng c ng này s đ c m client.

testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2 Connected to testbox2.slacksite.com.

220 testbox2.slacksite.com FTP server ready.

Name (testbox2:slacker): slacker ---> USER slacker

331 Password required for slacker.

Password: TmpPass ---> PASS XXXX

230 User slacker logged in.

---> SYST

215 UNIX Type: L8

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> passive Passive mode on.

ftp> ls

ftp: setsockopt (ignored): Permission denied ---> PASV

227 Entering Passive Mode (192,168,150,90,195,149).

---> LIST

150 Opening ASCII mode data connection for file list

drwx--- 3 slacker users 104 Jul 27 01:45 public_html 226 Transfer complete.

ftp> quit ---> QUIT 221 Goodbye.

II. Ch ng trình FTP Server

FTP Server là máy ch l u gi nh ng tài nguyên và h tr giao th c FTP đ giao ti p v i nh ng máy tính khác cho phép truy n d li u trên Internet. M t s ch ng trình ftp server s d ng trên Linux:

- Vsftpd - Wu-ftpd - PureFTPd - ProFTPD

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 166/271

III. Ch ng trình FTP client

Là ch ng trình giao ti p v i FTP Server, h u h t các h đi u hành đ u h tr ftp client, trên linux ho c Windows đ m k t n i t i FTP Server ta dùng l nh #ftp <ftp_address>. thi t l p m t phiên giao d ch, ta c n ph i có đa ch IP (ho c tên máy tính), m t tài kho n (username, password). Username mà FTP h tr s n cho ng i dùng đ m m t giao d ch FTP có tên là anonymous v i password r ng. Sau đây là m t ví d v m m t phiên giao d ch đ n FTP Server:

M t s t p l nh c a ftp client:

Tên l nh

Cú pháp Ý ngh a

? ho c l nh help

? [command] Hi n th giúp đ v

[command]

append append local-file [remote-file] Ghép m t file c c b v i 1 file trên Server

ascii ASCII Ch đnh ki u truy n file

là ascii (đây là ki u truy n m c đnh).

binary binary Ch đnh ki u truy n file

là binary(đây là ki u truy n m c đnh).

bye bye K t thúc ftp session

cd cd remote-directory Thay đ i đ ng d n th m c trên FTP Server

delete delete remote-file Xóa file trên FTP Server

dir dir remote-directory Li t kê danh sách file

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 167/271 get get remote-file [local-file] Download file t FTP

Server v máy c c b lcd lcd [directory] Thay đ i th m c trên

máy c c b

ls ls [remote-directory] [local-file] Li t kê các t p tin và th m c

mdelete mdelete remote-files [ ...] Xóa nhi u file mget mget remote-files [ ...] Download nhi u file

mkdir mkdir directory T o th m c

put put local-file [remote-file] Upload t p tin mput mput local-files [ ...] Upload nhi u t p tin open open computer [port] K t n i t i ftp server

prompt prompt T t c ch confirm sau

m i l n download file disconne

ct

disconnect H y k t n i FTP

Pwd pwd Xem th m c hi n t i

quit quit Thoát kh i ftp session

recv recv remote-file [local-file] Copy file t remote v local

Rename rename filename newfilename Thay đ i tên file

rmdir rmdir directory Xóa th m c

Send send local-file [remote-file] Copy file t local đ n remote

User user user-name [password]

[account]

Chuy n đ i user khác

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 168/271

IV. Gi i thi u VsFTP

Vsftpd là m t package m i giúp c u hình ftp server trong RedHat Linux 9. Vsftpd (Very Secure FTP Daemon) đ c phát tri n xoay quanh tính n ng nhanh, đnh và an toàn. VsFTP có kh n ng qu n lý s l ng k t n i l n m t cách hi u qu và an toàn.

IV.1. Nh ng t p tin đ c cài đ t liên quan đ n vsftpd

Sau đây li t kê nh ng t p tin và th m c th ng đ c quan tâm khi c u hình vsftpd server:

- /etc/pam.d/vsftpd: T p tin c u hình PAM cho vsftpd. T p tin này đnh ngh a nh ng yêu c u mà ng i dùng ph i cung c p khi đ ng nh p vào ftp server.

- /etc/vsftpd/vsftpd.conf: t p tin c u hình vsftpd server.

- /etc/vsftpd.ftpusers: li t kê nh ng ng i dùng không đ c login vào vsftpd. M c đnh danh sách nh ng ng i dùng này g m root, bin, daemon và nh ng ng i dùng khác

- /etc/vsftpd.user_list: t p tin này đ c c u hình đ c m hay cho phép nh ng ng i dùng đ c li t kê truy c p ftp server. đi u này ph thu c vào tùy ch n userlist_deny đ c xét YES hay NO trong t p tin vsftpd.conf. N u nh ng ng i dùng đã li t kê trong t p tin này thì không đ c xu t hi n trong vsftpd.ftpusers

- /var/ftp/: th m c ch a nh ng t p tin đáp ng cho vsftpd. Nó c ng ch a th m c pub cho ng i dùng anonymous. Th m c này ch có th đ c, ch có root m i có kh n ng ghi.

IV.2. Kh i đ ng và d ng vsftpd

Sau khi cài đ t ph n m m VSFTPD ho c sau khi ta thay đ i c u hình, ta ph i ti n hành kích ho t d ch v FTP. Quá trình kh i đ ng l i s giúp cho Daemon VSFTPD c p l i các thông s mà ta đã thay đ i, s d ng l nh chkconfig vsftpd on đ đ t d ch v FTP là system services. M t s l nh c n s d ng khi ta mu n kh i đ ng l i d ch v FTP:

#service vsftpd start/stop/restart Ho c s d ng l nh

#/etc/init.d/vsftpd start/stop/restart

IV.3. M t s thông s c u hình m c đ nh

M c đnh d ch v FTP s d ng ph n m m VSFTPD cho phép ng i dùng anonymous, ng i dùng c c b trong h th ng đ c quy n login vào FTP Server, ch có user root và nh ng user khác có UID<100 không đ c login.

- i v i anonymous đ c login vào FTP server và có th m c g c /var/ftp v i quy n truy xu t read (đ c và truy xu t tài li u).

- i v i ng i dùng c c b (localuser) đ c quy n login vào d ch v FTP và có th m c FTP root là /home/username (username là tên user login) v i quy n read, write.

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 169/271 IV.4. Nh ng tùy ch n c u hình vsftpd

T t c nh ng c u hình c a vsftpd đ c l u gi trong t p tin c u hình /etc/vsftpd/vsftpd.conf. M i tùy ch n trong t p tin có đnh d ng sau: <tùy ch n>=<value>, nh ng dòng chú thích đ c đánh d u #

Daemon:

- Listen: Khi nó có giá tr YES thì VSFTPD ch y trong ch đ standalone. Thu c tính này không đ c xét v i listen_ipv6, giá tr m c đnh là YES.

- Session_support: n u tùy ch n này có giá tr là YES thì vsftpd c g ng qu n lý giao d ch login c a ng i dùng ngang qua PAM (Pluggable Authentication Modules), giá tr m c đnh là YES.

ng nh p và đi u khi n truy c p:

- anonymous_enable: n u tùy ch n này có giá tr là YES thì ng i dùng anonymous đ c phép login vào, giá tr m c đnh YES

- banned_email_file: N u tùy ch n deny_email_enable đ c xét là YES, tùy ch n này ch ra t p tin ch a danh sách nh ng password email c a anonymous không cho phép truy c p đ n server, giá tr m c đnh: /etc/vsftpd.banned_emails

- banner_file: ch ra t p tin text s đ c hi n th khi k t n i đ n server đ c thi t l p.

- cmds_allowed: ch ra danh sách nh ng l nh ftp (phân cách nhau b i d u ph y) đ c cho phép b i ftp server. T t c nh ng l nh khác s b t ch i.

- deny_email_enable: n u tùy ch n này có giá tr là YES thì ng i dùng anonymous s d ng password đ c ch ra trong t p tin /etc/vsftpd.banned_emails b c m truy c p đ n server, giá tr m c đnh là NO

- ftpd_banner: n u tùy ch n này có giá tr là YES thì chu i đ c ch ra trong tùy ch n này s hi n th dòng thong tin mô t khi ng i dùng thi t l p k t n i v i server. Tùy ch n này s ghi đè lên banner_file. M c đnh vsftpd hi n th banner chu n.

- local_enable: n u tùy ch n này có giá tr là YES thì nh ng ng i dùng c c b đ c login vào h th ng.

- userlist_deny: c s d ng khi tùy ch n userlist_enable đ c đ t là NO, t t c nh ng ng i dùng c c b b c m truy c p tr nh ng ng i dùng đ c ch ra trong userlist_file. B i vì nh ng truy c p b c m tr c khi client đ c yêu c u nh p vào password, đ t tùy ch n này là NO đ ng n ch n nh ng ng i dùng c c b g i password không mã hóa trên m ng, giá tr m c đnh là YES.

- userlist_enable: n u tùy ch n này có giá tr là YES thì nh ng ng i dùng đ c ch ra trong t p tin trong userlist_file b c m truy c p. B i vì client b c m tr c khi client nh p password, ng i dùng b ng n ch n g i password không mã hóa trên m ng, m c đnh là YES.

- userlist_file: ch ra t p tin li t kê danh sách các ng i dùng, giá tr m c đnh /etc/vsftpd.user_list.

Ng i dùng Anonymous:

- anon_mkdir_write_enable: n u tùy ch n này có giá tr là YES và k t h p v i write_enable=YES thì ng i dùng anonymous đ c phép t o th m c m i trong th m c cha có quy n write, giá tr m c đnh là NO

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 170/271 - anon_root: ch ra th m c vsftpd trao đ i khi ng i dùng anonymous login vào

- anon_upload_enable: n u tùy ch n này có giá tr là YES và cùng v i write_enable=YES thì ng i dùng anonymous đ c phép upload t p tin trong th m c cha v i quy n ghi, giá tr m c đnh là NO

- anon_world_readable_only: n u tùy ch n này có giá tr là YES thì ng i dùng anonymous ch đ c phép download nh ng t p tin có quy n đ c, giá tr m c đnh là YES

- ftp_username: ch ra ng i dùng c c b đ c s d ng cho anonymous ftp server. Home directory đ c đ c ch ra trong t p tin /etc/passwd cho ng i dùng là th m c g c c a anonymous ftp server, giá tr m c đnh là ftp

- no_anon_password: n u tùy ch n này có giá tr là YES thì ng i dùng anonymous s không yêu c u nh p password, giá tr m c đnh là NO

Ng i dùng c c b :

- Nh ng tùy ch n li t kê sau đây s nh h ng đ n cách truy c p c a ng i dùng c c b đ n server. s d ng nh ng tùy ch n này, tùy ch n local_enable=YES

- local_enable: cho phép ng i dùng c c b truy c p đ n ftp server

- chmod_enable: cho phép ng i dùng đ c phép thay đ i quy n h n trên t p tin, giá tr m c đnh là YES

- chroot_local_user: n u tùy ch n này có giá tr là YES thì ng i dùng có th di chuy n đ n home directory c a h sau khi login vào, giá tr m c đnh là NO

- guest_enable: n u tùy ch n này có giá tr là YES thì ng i dùng anonymous login vào nh guest, mà đ c ch ra trong guest_username, giá tr m c đnh là NO

- guest_username: ch ra username c a ng i dùng guest, giá tr m c đnh là ftp - local_root: Ch ra th m c vsftpd sau khi ng i dùng c c b login vào

Th m c:

- dirlist_enable: N u tùy ch n này có giá tr là YES thì các ng i dùng đ c phép xem n i dung c a th m c, giá tr m c đnh là YES

- dirmessage_enable: N u tùy ch n này có giá tr là YES thì m i khi ng i dùng di chuy n vào th m c s hi n th ra m t thông đi p đ c l u trong t p tin ch đnh s n. T p tin này đ c ch ra trong tùy ch n message_file và tên m c đnh là .message. Nó đ c l u trong th m c di chuy n vào.

- Message_file: ch ra tên c a t p tin message, Giá tr m c đnh là .message Truy n t p tin:

- Download _enable: n u tùy ch n này có giá tr là YES thì download đ c cho phép, giá tr m c đnh là YES

- Chown_uploads: n u tùy ch n này có giá tr là YES thì t t c nh ng t p tin đ c upload b i ng i dùng anonymous đ c s h u b i ng i dùng đ c ch ra trong chown_username, giá tr m c đnh là YES

- chown_username: ch ra ng i s h u nh ng t p tin đ c upload b i ng i dùng anonymous, giá tr m c đnh là root

- write_enable: Cung c p quy n ghi cho ng i dùng

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 171/271 Ng n ch n host truy xu t vào ftp server: FTP Server k t h p v i tcp_wrappers đ th c thi c ch gi i h n host truy xu t vào FTP Server:

- B c 1: t tcp_wrappers=YES trong file vsftpd.conf

- B c 2: Mô t file thông tin c m host <x.y.z.t> trong file /etc/hosts.deny vsftpd:<host_address>

V. C u hình Virtual FTP Server

T o thêm 1 Virtual IP address (ví d đa ch 1.2.3.4), chép t p tin /etc/vsftpd/vsftpd.conf /etc/vsftpd/*.conf và thay đ i các thông tin sau:

- listen=YES

- listen_address=1.2.3.4 - connect_from_port_20=YES - anonymous_enable=YES - anon_root=/srv/ftp/knusper

- ftpd_banner=Welcome to FTP at knusper.wiremonkeys.org. Behave!

Ch nh s a file /etc/vsftpd/vsftpd.conf và thêm ch d n listen_address=<đa ch IP ban đ u>

Sau đó restart l i d ch v VSFTPD b ng l nh /etc/init.d/vsftpd restart.

V.1. Logging

- dual_log_enable: n u tùy ch n này có giá tr là YES và cùng v i xferlog_enable=YES thì vsftpd s vi t 2 t p tin đ ng th i là: m t log t ng thích v i wu-ftpd đ c ch ra trong xferlog_file và m t t p tin log chu n vsftpd đ c ch ra trong vsftpd_log_file, giá tr m c đnh là NO

- xferlog_enable: n u tùy ch n này có giá tr là YES thì vsftpd ghi l i nh ng k t n i và thông tin truy n t p tin vào t p tin log đ c ch ra trong tùy ch n vsftpd_log_file, giá tr m c đnh là NO - xferlog_file: ch ra t p tin log t ng thích v i wu-ftpd, giá tr m c đnh là /var/log/xferlog - vsftpd_log_file: ch ra t p tin log vsftpd, giá tr m c đnh là /var/log/vsftpd.log

V.2. Network

Nh ng tùy ch n sau đây ph n nh cách vsftpd t ng tác trong m ng:

- accept_timeout: Ch ra l ng th i gian m t client s d ng ch đ passive đ thi t l p k t n i, giá tr m c đnh là 60

- anon_max_rate: Ch ra t c đ truy n d li u t i đa cho ng i dùng anonymous. Tính b ng byte/second, giá tr m c đnh là 0 (không gi i h n t c đ truy n)

- connect_timeout: Ch ra l ng th i gian m t client s d ng ch đ active đ tr l i cho quá trình k t n i d li u. Tính b ng giây, giá tr m c đnh là 60

- data_connect_timeout: Ch ra kh i l ng th i gian truy n d li u t i đa. Tính b ng giây. Khi h t th i gian cho phép k t n i t client s b đóng, giá tr m c đnh là 300

- max_clients: Ch ra s client t i đa có th đ ng th i truy c p đ n server

H c ph n 4 - Ch ng ch qu n tr m ng Linux Trang 172/271

Một phần của tài liệu Hướng dẫn quản trị mạng linux (Trang 161 - 172)

Tải bản đầy đủ (PDF)

(271 trang)