ProFTPd (viết tắt của Pro FTP daemon) là một FTP server khá mạnh và đơn giản trong cài đặt cũng như cấu hình, được rất nhiều máy chủ dùng. Ngoài proFTPd ra thì còn Vsftpd nhưng mình thấy ProFTPd dễ xài hơn, tốc độ truyền tải cao hơn, nên mình hướng dẫn cài thằng này trước nhé.

Cài đặt FTP Server với ProFTPD

Chúng ta cài đặt ProFTPD nằm trong Extra Packages for Enterprise Linux (EPEL) repository.

yum install epel-release -y
yum install proftpd -y

Tiếp theo, thêm /bin/false vào cuối file /etc/shells với lệnh sau:

echo "/bin/false" >> /etc/shells

Đảm bảo trong /etc/shells/sbin/nologin hoặc /bin/false

cat /etc/shells

Bật ProFTPD và thiết lập tự động chạy cùng hệ thống:

service proftpd start
chkconfig proftpd on

Mở port truy cập FTP – port 21 trong thiết lập tường lửa (iptables, firewalld, csf) của VPS. Mặc định CentOS6 sử dụng IPtables và CentOS7 là FirewallD

iptables -I INPUT -p tcp --dport 21 -j ACCEPT
service iptables save
service iptables restart

Tạo FTP Group và FTP User bằng ProFTPd

Tạo FTP Group trong ProFTPd

Sau đây mình sẽ tạo 1 group với tên là mygroup

Kiểm tra xem group đã tồn tại trên hệ thống chưa

getent group | grep mygroup

Nếu không có gì trả về thì group này chưa tồn tại, ta có thể tạo group này với lệnh groupadd

groupadd mygroup

Thiết lập quyền chỉnh sửa của Group Owner đối với thư mục web:

chmod -R g+rw /home/domain.com/

Thêm, sửa, xóa FTP User bằng ProFTPd

Kiểm tra xem user đã tồn tại trên hệ thống chưa

cat /etc/passwd

Nếu chưa, tiến hành add user với lệnh useradd

useradd username -s /bin/false -g mygroup -d /home/domain.com/

Trong đó:

  • -g thiết lập user vào group. Ở đây mình đã tạo group mygroup nên mình add luôn vào, hoặc có thể add vào group nginx .v.v…
  • -s thiết lập shell đăng nhập. Trong đó, shell sbin/nologin hoặc /bin/false chặn truy cập SSH. Khi đó, user được tạo chỉ có thể đăng nhập trên FTP, không thể đăng nhập SSH cũng như chạy lệnh hệ thống.
  • -d thiết lập thư mục gốc của user.

Tiến hành tạo password cho user vừa tạo: passwd username

Lưu ý: Nếu muốn chỉnh sửa user đã được tạo, sử dụng: usermod

VD:

usermod -a -G nginx username -s /sbin/nologin

Thiết lập quyền  sở hữu của username đối với thư mục web:

chown -R username /home/domain.com/public_html/

Để xóa user, dùng userdel

userdel username

Cấu hình quota trong ProFTPD

Để cấu hình giới hạn sử dụng, cụ thể ở đây mình đang giới hạn group, thì sử dụng ftpquota có trong chương trình ProFTPD Utilities

Cài đặt gói proftpd-utils

yum install proftpd-utils -y

Tạo thư mục lưu file limit

mkdir /etc/proftpd/quota/
chown -R nobody:nobody /etc/proftpd

Tiến hành tạo file limit

cd /etc/proftpd/quota/
ftpquota --create-table --type=limit
ftpquota --create-table --type=tally

Lúc này trong thư mục /etc/proftpd/quota/ chứa 2 file ftpquota.limittabftpquota.tallytab, là 2 bảng ghi của ftpquota

  • QuotaLimitTable (nằm trong tập tin ftpquota.limittab) => chứa thông tin về giới hạn số lượng tập tin hoặc số lượng byte được phép upload, download của các tài khoản.
  • QuotaTallyTable (nằm trong tập tin ftpquota.tallytab) => chứa thông tin về số lượng tập tin hoặc số lượng byte đã được upload, download của các tài khoản tính đến thời điểm hiện tại.

Add group đã tạo vào 2 file này

ftpquota --add-record --type=limit --name=mygroup --quota-type=group --table-path=/etc/proftpd/quota/ftpquota.limittab
ftpquota --add-record --type=tally --name=mygroup --quota-type=group --table-path=/etc/proftpd/quota/ftpquota.tallytab

Dùng --update-record --bytes-upload để giới hạn file upload

ftpquota --update-record --type=limit --name=mygroup --quota-type=group --bytes-upload=2 --units=Gb

Như trên là mình giới hạn 2gb upload cho group mygroup

Kiểm tra limit

ftpquota --show-records --type=limit

Kết quả

Name: mygroup
Quota Type: Group
Per Session: False
Limit Type: Hard
Uploaded bytes: 2147483648.00
Downloaded bytes: unlimited
Transferred bytes: unlimited
Uploaded files: unlimited
Downloaded files: unlimited
Transferred files: unlimited

Vậy là xong rồi đấy, giờ bạn có thể kết nối FTP đến server sử dụng account đã tạo ở trên. Đối với Windows, các bạn có thể sử dụng File Zilla để đăng nhập.

Lưu ý các lỗi thường gặp khi sử dụng ProFTPd:

Quá trình Upload gặp lỗi PassiveMode thì chỉnh TransferMode sang Active trên FTP Client. Trong FileZilla là Edit – Settings – Connection – FTP – Transfer Mode.

Nếu đã thiết lập tường lửa Iptables và chuyển ActiveMode mà vẫn không thể kết nối thì bạn thêm giá trị ip_conntrack_ftp vào /etc/sysconfig/iptables-config

Cụ thể là IPTABLES_MODULES="ip_conntrack_ftp".

Sau đó tiến hành restart Iptables

service iptables restart

Chỉ áp dụng CentOS 6 và nếu VPS không có module ip_conntrack_ftp trong hệ thống thì cần yêu cầu support thêm thủ công.

Nếu gặp lỗi ECONNREFUSED – Connection refused by server, khả năng cao proftpd chưa được khởi động do lỗi gì đó, thử kiểm tra cấu hình ProFTPD tại /etc/proftpd.conf, sau đó khởi động proftpd xem sao

service proftpd start

Tham khảo thêm tại nguồn http://www.proftpd.org/docs/utils/ftpquota.html

Cu Đinh

Tui tên Đinh, đơn giản vì đó là cái nghề của ba tui. Tui đam mê lập trình, nên lập ra blog này, chủ yếu để lưu lại những gì tui học được. - Cho đi để nhận lại - Tui làm được bạn cũng làm được

Leave a Reply

Your email address will not be published. Required fields are marked *