vsftpd (Very Secure File Transport Protocol Daemon) یک سرور FTP امن و سریع برای سیستم های Unix/Linux می باشد. در این مقاله، نحوه ی تنظیمات یک سرور FTP اولیه را با استفاده از vsftpd برروی CentOS 6.5 خواهیم دید. این دستورالعمل همچنین بر روی تمامی نسخه های RHEL CentOS، Scientific Linux 6.x کار خواهد کرد.
در محیط آزمایشی من hostname و IP به صورت server.unixmen.local و 192.168.1.101/24 می باشند. این مقدارها را در سناریو ی خود تغییر دهید.
نصب vsftpd
تمام دستورات با کاربر ‘root’ اجرا خواهند شد. دستور زیر را در ترمینال برای نصب پکیج vsftpd اجرا کنید:
پیکربندی vsftpd
فایل پیکربندی vsftpd را باز کنید. /etc/vsftpd/vsftpd.conf،
خطوط زیر را پیدا کنید و تغییرات را همانند زیر اعمال کنید:
سرویس vsftpd را استارت کنید و آن را در boot سیستم قرار دهید که بعد از هر بار ریست شدن سرور به صورت اتوماتیک اجرا شود :
ایجاد کاربران FTP
به صورت پیش فرض کاربر root اجازه ی لاگین به سرور ftp را برای اهداف امنیتی ندارد. بنابراین اجازه دهید کاربری به نام "sk" برای تست با پسورد "centos" ایجاد کنیم.
اتصال به سرور FTP
حالا به ما اجازه دهید برای اتصال به سرور FTP با کاربر “sk” تلاش کنیم.
احتمالا شما با خطایی شبیه به زیر مواجه می شوید.
این به این دلیل است که SELinux کاربر را برای لاگین به سرور ftp محدود می کند. بنابراین باید مقادیر Boolean (مقادیری با جواب های True & False) در SELinux را برای سرویس FTP تغییر دهیم.
حالا مجددا برای لاگین به سرور FTP تلاش کنید:
حالا شما قادر خواهید بود بدون هیچ مشکلی به سرور FTP وصل شوید.
پیکربندی های سمت کلاینت
به من اجازه دهید از سیستم کلاینت Ubuntu خود به سرور FTP وصل شوم.
شما ممکن است خطایی شبیه “ftp:connect:No route to host” ببینید. برای حل این مشکل اجازه دهید پورت پیش فرض ftp را از طریق فایروال یا روتر باز کنیم. در سمت سرور دستورا ت زیر را انجام دهید.
فایل /etc/sysconfig/iptables را ویرایش کنید.
خطوط زیر را اضافه کنید.
فایل را ذخیره کرده و خارج شوید. و iptables را ریستارت کنید.
حالا مجددا از سیستم کلاینت خود برای لاگین به سرور FTP تلاش کنید.
کارکردن از طریق خط فرمان ممکن است مقداری برای تازه کارها دشوار باشد. بنابراین اجازه دهید یک نرم افزار کلاینت FTP گرافیکی به نام Filezilla را برای انجام راحتتر کارها نصب کنیم:
برای سیستم های RHEL بیس، شما می توانید filezilla را با استفاده از دستور زیر نصب کنید:
کلاینت Filezilla را از سیستم خود اجرا کنید. نام سرور FTP خود hostname و یا IP Address، username، password و شماره پورت را وارد کنید. برروی “Quickconnect” برای لاگین کلیک کنید.
Probably شما با خطای زیر مواجه خواهید شد.
برای خلاص شدن از شر این خطا، راه حل های زیر را دنبال کنید. در بیشتر موارد راه حل 2 کار خواهد کرد.
راه حل 1 :
1. در کلاینت Filezilla خود به قسمت Edit -> Settings -> FTP ->Active Mode بروید.
در تب Active Mode اطمینان حاصل کنید که گزینه ی “Ask your operating system for the external ip address” انتخاب شده باشد.
سپس به قسمت Edit -> Settings -> FTP ->Passive Mode بروید. گزینه ی “Fall back to active mode” را انتخاب کنید و برروی Ok کلیک کنید.
در اینجا ممکن است در بعضی موارد (مثلا در کلاینت سیستم عامل ویندوز) پیغام خطا نمایش داده نشود.
راه حل 2 :
اگر مشکل هنوز پابرجاست، به سرور FTP خود رفته و فایل “/etc/sysconfig/iptables-config” را ویرایش کنید.
خط IPTABLES_MODULES= ” “ را پیدا کنید و این را به IPTABLES_MODULES=”ip_conntrack_ftp” تغییر دهید:
فایل را ذخیره کرده و iptables را ریستارت کنید:
اکنون دوباره از طریق Filezilla امتحان کنید، همانطور که میبینید کار خواهد کرد.
دسترسی به FTP server از طریق مرورگر
شما می توانید به FTP server از طریق مرورگر کلاینت خود دسترسی داشته باشید. آدرس ftp://ftp-server-ip-address را در مرورگر خود وارد کنید و username و password خود را وارد نمایید.
حالا شما می توانید محتویات سرور FTP خود را ببینید.
لاگین به عنوان کاربر ویژه
اگر شما می خواهید به عنوان کاربر ویژه لاگین کنید ، آدرس را به صورت ftp://username@FTP-Server-IP-Address در مرورگر تایپ کنید. سپس از شما پسورد کاربر مورد نظر را درخواست میکند، پسورد را وارد کنید و در نهایت شما وصل خواهید شد. برای مثال، به ما اجازه دهید کاربر دیگری به نام “kumar” با پسورد “centos” ایجاد کنیم:
حالا مرورگر خود را باز کنید و به آدرس ftp://kumar@192.168.1.200 بروید. پسورد را برای کاربر kumar وارد کنید.
حالا شما قادر خواهید بود به سرور FTP با کاربر kumar لاگین کنید.
اکنون شما قادر خواهید بود که از سرویس FTP استفاده کنید.
موفق باشید.
در محیط آزمایشی من hostname و IP به صورت server.unixmen.local و 192.168.1.101/24 می باشند. این مقدارها را در سناریو ی خود تغییر دهید.
نصب vsftpd
تمام دستورات با کاربر ‘root’ اجرا خواهند شد. دستور زیر را در ترمینال برای نصب پکیج vsftpd اجرا کنید:
کد PHP:
# yum install vsftpd ftp -y
پیکربندی vsftpd
فایل پیکربندی vsftpd را باز کنید. /etc/vsftpd/vsftpd.conf،
کد PHP:
# vi /etc/vsftpd/vsftpd.conf
کد PHP:
[...]
## Set to "NO" ##
anonymous_enable=NO
## Uncomment ##
ascii_upload_enable=YES
ascii_download_enable=YES
## Uncomment - Enter your Welcome message - This is optional ##
ftpd_banner=Welcome to UNIXMEN FTP service.
## Add at the end of this file ##
use_localtime=YES
کد PHP:
# service vsftpd start
# chkconfig vsftpd on
ایجاد کاربران FTP
به صورت پیش فرض کاربر root اجازه ی لاگین به سرور ftp را برای اهداف امنیتی ندارد. بنابراین اجازه دهید کاربری به نام "sk" برای تست با پسورد "centos" ایجاد کنیم.
کد PHP:
# useradd sk
# passwd sk
اتصال به سرور FTP
حالا به ما اجازه دهید برای اتصال به سرور FTP با کاربر “sk” تلاش کنیم.
کد PHP:
# ftp 192.168.1.101
Connected to 192.168.1.101 (192.168.1.101).
220 Welcome to UNIXMEN FTP service.
Name (192.168.1.101:root): sk
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/sk
Login failed.
ftp>
کد PHP:
500-OOPS: cannot change directory
کد PHP:
# setsebool -P ftp_home_dir on
کد PHP:
# ftp 192.168.1.101
Connected to 192.168.1.101 (192.168.1.101).
220 Welcome to UNIXMEN FTP service.
Name (192.168.1.101:root): sk
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
پیکربندی های سمت کلاینت
به من اجازه دهید از سیستم کلاینت Ubuntu خود به سرور FTP وصل شوم.
کد PHP:
$ ftp 192.168.1.101
ftp: connect: No route to host
ftp>
فایل /etc/sysconfig/iptables را ویرایش کنید.
کد PHP:
# vi /etc/sysconfig/iptables
کد PHP:
[...]
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
[...]
کد PHP:
# service iptables restart
کد PHP:
$ ftp 192.168.1.101
Connected to 192.168.1.101.
220 Welcome to UNIXMEN FTP service.
Name (192.168.1.101:sk): sk
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
کد PHP:
$ sudo apt-get install filezilla
کد PHP:
# yum install filezilla
Probably شما با خطای زیر مواجه خواهید شد.
کد PHP:
Error: Connection timed out
Error: Failed to retrieve directory listing
راه حل 1 :
1. در کلاینت Filezilla خود به قسمت Edit -> Settings -> FTP ->Active Mode بروید.
در تب Active Mode اطمینان حاصل کنید که گزینه ی “Ask your operating system for the external ip address” انتخاب شده باشد.
سپس به قسمت Edit -> Settings -> FTP ->Passive Mode بروید. گزینه ی “Fall back to active mode” را انتخاب کنید و برروی Ok کلیک کنید.
در اینجا ممکن است در بعضی موارد (مثلا در کلاینت سیستم عامل ویندوز) پیغام خطا نمایش داده نشود.
راه حل 2 :
اگر مشکل هنوز پابرجاست، به سرور FTP خود رفته و فایل “/etc/sysconfig/iptables-config” را ویرایش کنید.
کد PHP:
# vi /etc/sysconfig/iptables-config
کد PHP:
# Load additional iptables modules (nat helpers)
# Default: -none-
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which
# are loaded after the firewall rules are applied. Options for the helpers are
# stored in /etc/modprobe.conf.
IPTABLES_MODULES="ip_conntrack_ftp"
[...]
کد PHP:
# service iptables save
# service iptables restart
دسترسی به FTP server از طریق مرورگر
شما می توانید به FTP server از طریق مرورگر کلاینت خود دسترسی داشته باشید. آدرس ftp://ftp-server-ip-address را در مرورگر خود وارد کنید و username و password خود را وارد نمایید.
حالا شما می توانید محتویات سرور FTP خود را ببینید.
لاگین به عنوان کاربر ویژه
اگر شما می خواهید به عنوان کاربر ویژه لاگین کنید ، آدرس را به صورت ftp://username@FTP-Server-IP-Address در مرورگر تایپ کنید. سپس از شما پسورد کاربر مورد نظر را درخواست میکند، پسورد را وارد کنید و در نهایت شما وصل خواهید شد. برای مثال، به ما اجازه دهید کاربر دیگری به نام “kumar” با پسورد “centos” ایجاد کنیم:
کد PHP:
# useradd kumar
# passwd kumar
حالا شما قادر خواهید بود به سرور FTP با کاربر kumar لاگین کنید.
اکنون شما قادر خواهید بود که از سرویس FTP استفاده کنید.
موفق باشید.
کامنت