Cài đặt và sử dụng ProFTPD trên CentOS 7

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

Quy trình cài ProFTPD trên CentOS 7 an toàn hơn

Khi cài ProFTPD trên CentOS 7, đừng chỉ dừng ở bước cài package và mở cổng FTP. Việc quan trọng hơn là xác định server này dùng cho ai, thư mục nào được phép upload và tài khoản nào có quyền ghi. Nếu FTP phục vụ website WordPress, hãy tách rõ user quản trị server, user upload file và user chạy web server để tránh cấp quyền quá rộng.

Trước khi bật dịch vụ, hãy kiểm tra firewall, SELinux, passive port range và quyền thư mục. Nhiều lỗi FTP không đến từ ProFTPD mà đến từ firewall chưa mở passive port hoặc thư mục đích không cho user ghi. Với VPS public, nên hạn chế IP được phép kết nối nếu có thể, đặc biệt khi tài khoản FTP dùng để cập nhật file website.

Checklist vận hành ProFTPD cho website WordPress

Sau khi đăng nhập FTP thành công, hãy test ba việc: upload file nhỏ, sửa file test và xóa file test. Nếu một bước lỗi, kiểm tra owner/group trước khi đổi chmod quá rộng. Không nên dùng `777` để sửa nhanh vì nó tạo rủi ro bảo mật lâu dài. Với WordPress, thư mục `uploads` cần ghi, nhưng core, theme và plugin nên được kiểm soát kỹ hơn.

Nếu bạn đang tối ưu server WordPress, nên đọc thêm bài Fail2Ban mở khóa IPthêm IP trên CentOS để hoàn thiện lớp vận hành. Cần audit cấu hình FTP, bảo mật VPS hoặc tối ưu WordPress theo checklist thực chiến, có thể liên hệ Đinh WP tại trang liên hệ.

Lưu ý bảo mật sau khi cấu hình ProFTPD

Sau khi ProFTPD chạy ổn, hãy tắt tài khoản không dùng, đặt mật khẩu mạnh, giới hạn thư mục home và theo dõi log đăng nhập sai. Nếu FTP chỉ dùng cho một số IP cố định, hãy giới hạn bằng firewall. Với server WordPress, FTP nên là kênh bảo trì có kiểm soát, không phải cửa mở thường trực cho mọi người.

Nếu có thể, hãy cân nhắc SFTP thay cho FTP thường vì dữ liệu đăng nhập được mã hóa tốt hơn. ProFTPD vẫn hữu ích trong một số môi trường cũ, nhưng với dự án mới, lựa chọn giao thức an toàn nên được ưu tiên ngay từ đầu.

Ví dụ cấu hình ProFTPD cho team quản trị nhỏ

Với một team nhỏ chăm website WordPress, mình thường tách ba nhóm quyền. Nhóm thứ nhất là người quản trị server, chỉ dùng SSH hoặc SFTP và có quyền xử lý dịch vụ. Nhóm thứ hai là người cập nhật file giao diện hoặc media, chỉ được vào thư mục cần thiết. Nhóm thứ ba là khách hàng hoặc cộng tác viên, nếu cần thì chỉ có quyền rất hạn chế và có thời hạn.

Khi bàn giao, nên ghi rõ host, port, user, thư mục được phép thao tác, quy định đặt file và người chịu trách nhiệm thu hồi quyền. Nếu dùng ProFTPD để upload dữ liệu định kỳ, hãy tạo thư mục riêng cho dữ liệu đó, không để chung với thư mục theme/plugin. Cách tách phạm vi này giúp giảm rủi ro khi một tài khoản bị lộ mật khẩu.

Một bước nhỏ nhưng đáng làm là kiểm tra log sau vài ngày chạy. Nếu có nhiều login failed, cần xem đó là người dùng nhập sai hay bot dò mật khẩu. Nếu là bot, hãy kết hợp firewall hoặc Fail2Ban. Nếu là người dùng thật, hãy sửa tài liệu đăng nhập để họ không lặp lại lỗi. Vận hành tốt không chỉ là cài xong dịch vụ, mà là theo dõi xem dịch vụ đó đang được dùng như thế nào.

Với server chứa website quan trọng, hãy ưu tiên SFTP khi có thể. FTP truyền thống phù hợp cho một số hệ thống cũ, nhưng không nên là lựa chọn mặc định cho dự án mới. Nếu vẫn phải dùng ProFTPD, hãy giới hạn quyền, theo dõi log và định kỳ rà lại tài khoản không còn sử dụng.

Đưa ProFTPD trên CentOS 7 vào cụm nội dung Server/CentOS

Khi tối ưu bài này, mình không chỉ muốn bổ sung thêm chữ cho đủ độ dài. Mục tiêu là biến ProFTPD trên CentOS 7 thành một phần trong hệ thống kiến thức của ĐinhWP: người đọc hiểu bối cảnh, biết khi nào cần áp dụng, biết rủi ro cần tránh và có đường đi tiếp sang các bài liên quan. Với cài ProFTPD CentOS 7, nếu chỉ có vài bước thao tác thì bài dễ trở thành ghi chú rời rạc; nếu có thêm quy trình kiểm tra và liên kết nội bộ, bài sẽ hữu ích hơn nhiều.

Trong cụm Server/CentOS, nội dung nên trả lời ba lớp câu hỏi. Lớp đầu là thao tác chính: cần làm gì, ở đâu, theo thứ tự nào. Lớp thứ hai là kiểm tra sau khi làm: dấu hiệu thành công, lỗi thường gặp và cách quay lại nếu có sự cố. Lớp thứ ba là ứng dụng kinh doanh hoặc vận hành: việc này giúp website nhanh hơn, an toàn hơn, dễ quản trị hơn hay tạo lead tốt hơn.

Các bài liên quan nên đọc tiếp: thêm IP trên CentOS, Certbot cơ bản. Việc nối các bài cùng chủ đề giúp người đọc đi từ vấn đề nhỏ sang bức tranh lớn hơn, đồng thời giúp Google hiểu rõ cấu trúc chuyên môn của site.

Case triển khai thực tế

Giả sử bạn đang xử lý một website WordPress production. Trước khi đụng vào ProFTPD trên CentOS 7, hãy ghi lại trạng thái ban đầu: phiên bản WordPress, plugin liên quan, môi trường PHP/server, backup gần nhất và mục tiêu cần đạt. Nếu là bài thuộc nhóm kỹ thuật, nên có thêm log hoặc ảnh chụp cấu hình trước khi sửa. Nếu là bài thuộc nhóm SEO hoặc content, nên ghi lại title, meta description, URL, internal link và số liệu Search Console nếu có.

Sau khi thao tác, đừng chỉ kiểm tra một màn hình. Hãy mở frontend, wp-admin, sitemap, form liên hệ và log lỗi nếu liên quan. Với thay đổi server, cần kiểm tra service đã restart đúng chưa. Với thay đổi SEO, cần xem meta có bị cắt không, schema có lỗi không và CTA cuối bài có rõ hành động tiếp theo không.

FAQ nhanh về ProFTPD trên CentOS 7

Có nên làm trực tiếp trên site thật không? Nếu thay đổi nhỏ, có backup và biết cách rollback thì có thể làm ngoài giờ cao điểm. Nếu thay đổi liên quan database, bảo mật, server hoặc automation, nên test trên staging hoặc bản sao trước.

Làm sao biết bài đã tối ưu tốt hơn? Hãy dùng cả kiểm tra kỹ thuật lẫn tín hiệu người dùng: lỗi giảm, nội dung dễ đọc hơn, internal link rõ hơn, CTA có hành động cụ thể hơn và bài có thể được dùng làm tài liệu hướng dẫn lại cho team.

Khi nào cần nâng cấp thành quy trình? Khi việc này lặp lại nhiều lần cho nhiều website hoặc nhiều khách hàng. Lúc đó, hãy tạo checklist, mẫu ghi chú và người chịu trách nhiệm để mỗi lần xử lý đều nhất quán.

Gợi ý hành động tiếp theo

Nếu bạn đang gặp đúng vấn đề liên quan cài ProFTPD CentOS 7, hãy ghi lại hiện trạng và mục tiêu trước khi sửa. Trường hợp cần Đinh WP rà nhanh cấu hình, SEO, bảo mật hoặc quy trình vận hành WordPress, có thể bắt đầu từ trang liên hệ Đinh WP. Mình ưu tiên cách làm nhẹ, rõ, có thể kiểm chứng và không tạo thêm nợ kỹ thuật cho website.

Checklist đo lường sau khi cập nhật ProFTPD trên CentOS 7

Sau vài tuần, hãy quay lại bài và kiểm tra dữ liệu thật. Nếu bài có impression nhưng CTR thấp, cần chỉnh title và meta description. Nếu bài có traffic nhưng không tạo liên hệ, cần xem CTA, internal link và mức độ rõ của lời hứa. Nếu người đọc vẫn hỏi lại cùng một điểm, hãy thêm ví dụ hoặc ảnh minh họa ở đúng đoạn đó.

Với cài ProFTPD CentOS 7, cách tối ưu bền là cập nhật theo chu kỳ. Mỗi lần có lỗi mới, câu hỏi mới hoặc công cụ mới, hãy bổ sung vào bài thay vì để nội dung cũ nằm yên. Như vậy bài viết trở thành tài sản vận hành thật, không chỉ là một bài blog xuất bản một lần.

Tiêu chí hoàn thành cho ProFTPD trên CentOS 7

Một hạng mục Server/CentOS chỉ nên được coi là hoàn thành khi có đủ ba bằng chứng: thao tác đã chạy đúng, người dùng hoặc admin không gặp lỗi mới, và kết quả được ghi lại để lần sau có thể kiểm tra lại. Với cài ProFTPD CentOS 7, bằng chứng có thể là log sạch, màn hình cấu hình đúng, nội dung đã có internal link, hoặc chỉ số SEO không còn lỗi nghiêm trọng.

Nếu làm cho khách hàng, hãy gửi lại phần tóm tắt ngắn gồm việc đã làm, rủi ro còn lại và đề xuất theo dõi. Cách bàn giao này giúp khách hiểu giá trị của tối ưu, đồng thời giảm việc hỏi lại sau này. Với ĐinhWP, mỗi bài nên dần trở thành một checklist có thể dùng trong dự án thật, không chỉ là bài đọc tham khảo.

Sau khi cập nhật ProFTPD trên CentOS 7, nên đặt một nhắc việc kiểm tra lại sau 30-45 ngày. Khi đó hãy xem Search Console, câu hỏi từ khách, lỗi phát sinh và khả năng chuyển đổi từ CTA. Nếu có dữ liệu mới, cập nhật lại bài để nội dung tiếp tục sống cùng hệ thống, thay vì cũ dần theo thời gian.

Ghi chú vận hành thêm cho ProFTPD trên CentOS 7

Khi đưa ProFTPD trên CentOS 7 vào quy trình thật, hãy lưu lại một mẫu ghi chú gồm bối cảnh, thao tác, kết quả, lỗi gặp phải và quyết định tiếp theo. Mẫu ghi chú này giúp người khác trong team hiểu vì sao đã làm như vậy, không chỉ thấy kết quả cuối cùng. Với cài ProFTPD CentOS 7, phần ghi chú càng rõ thì lần tối ưu sau càng nhanh.

Nếu bài viết bắt đầu có traffic, hãy bổ sung thêm ảnh chụp màn hình, ví dụ lệnh hoặc bảng checklist cụ thể. Những chi tiết này làm nội dung đáng tin hơn và giúp người đọc áp dụng mà ít phải hỏi lại.

Một bước cuối nên làm với ProFTPD trên CentOS 7 là thêm ghi chú người chịu trách nhiệm và ngày kiểm tra lại. Khi có người phụ trách rõ, bài viết hoặc cấu hình liên quan cài ProFTPD CentOS 7 sẽ không bị bỏ quên sau lần tối ưu đầu tiên. Đây là cách giữ chất lượng nội dung và vận hành ổn định theo thời gian.

Nếu có thêm dữ liệu từ khách hàng, log hệ thống hoặc Search Console, hãy đưa dữ liệu đó vào lần cập nhật tiếp theo để bài viết ngày càng gần tình huống thực tế hơn.

Ở lần cập nhật tiếp theo, nên bổ sung thêm ví dụ hình ảnh hoặc số liệu thực tế để người đọc dễ đối chiếu với website của mình. Phần này giúp bài viết không chỉ dài hơn mà còn có giá trị tư vấn rõ hơn.