سنت او اسسیستم عامل لینوکسمقالات وب
چگونه SFTP سرور را بر روی سنت او اس راه اندازی کنیم؟
در این مقاله قصد داریم نحوه نصب و استفاده از SFTP سرور را بر روی سنت او اس با هم مرور کنیم. قبل از اینکه به سراغ آموزش برویم اجازه دهید ببینیم SFTP سرور برای چه کاری مورد استفاده قرار می گیرد. بیشتر افراد می دانند که چگونه می توانند از FTP معمولی برای انتقال، دانلود و آپلود اطلاعات و داده ها از سرور به کلاینت یا از کلاینت به سرور استفاده نمایند. اما باید بدانید که این پروتکل به راحتی توسط هکرهای ناشناس هک می شود زیرا پورت های آن برای هر فردی باز است. به همین خاطر SFTP به عنوان جایگزین امن برای این پروتکل معرفی شد تا بتواند سطح امنیت را در این شرایط افزایش دهد. این گزینه از پروتکل جداگانه بسته بندی شده با SSH استفاده می کند تا بتواند ارتباط امنی را فراهم آورد. در این مقاله همراه وب ایده باشید تا با هم نحوه راه اندازی SFTP سرور بر روی سنت او اس را مرور کنیم.
برای این آموزش از سنت او اس 7 نسخه 64 بیتی استفاده خواهیم کرد. همین مراحل را می توانید بر روی سنت او اس 6 نیز اعمال کنید.
نصب SFTP:
بر خلاف FTP معمولی، نیازی به نصب پکیج های اضافی برای استفاده از SFTP نخواهید داشت. ما تنها به پکیج SSHd از پیش ساخته شده نیاز داریم که در طول نصب بر روی سرور نصب شده است. تنها کاری که باید انجام دهید این است که ببینید در حال حاضر پکیج SSH مورد نیاز را دارید یا خیر. مراحل زیر را در نظر بگیرید. دستور زیر را اجرا کنید:
rpm -qa|grep ssh
خروجی کد باید شبیه کد زیر باشد:
[root@localhost ~]# rpm -qa|grep ssh libssh2-1.4.3-10.el7_2.1.x86_64 openssh-7.4p1-13.el7_4.x86_64 openssh-server-7.4p1-13.el7_4.x86_64 openssh-clients-7.4p1-13.el7_4.x86_64
خوب حالا باید پیکربندی SFTP را آغاز کنیم.
پیکربندی SFTP:
بعد از اینکه همه پیش نیازها بررسی شد می توانیم وارد مرحله پیکربندی شویم. بهتر است یک گروه و یک کاربر ایجاد کنیم تا بتوانیم همه کاربرهایی که می توانند به SFTP دسترسی داشته باشند را کنترل نماییم. اما در ابتدا، اجازه دهید فولدر اضافی به نام Data ایجاد کنیم.
mkdir -p /data/sftp chmod 701 /data
به کمک دستور بالا می توانیم فولدر جداگانه ای ایجاد کنیم که به عنوان دایرکتوری اصلی برای دسترسی SFTP عمل می کند. همه دایرکتوری ها برای کاربران SFTP ساب دایرکتوری این فولدر خواهند بود. حالا برای کاربر SFTP خود گروهی ایجاد کنید.
groupadd sftpusers
حالا کاربری با نام دلخواه ایجاد کنید آن را به گروه SFTPUSERS اختصاص دهید:
useradd -g sftpusers -d /upload -s /sbin/nologin mysftpuser passwd mysftpuser
Changing password for user mysftpuser. New password: Retype new password: passwd: all authentication tokens updated successfully.
دستوراتی که در بالا به کار بردیم به شرح زیر است:
- به کمک دستور -g کاربری را ایجاد کردیم و کاربر را به گروه SFTPUSERS اختصاص دادیم
- دایرکتوری اصلی برای کاربر را بر روی /upload قرار دادیم. اینکار را به کمک دستور -d /upload انجام دادیم. این موضوع بدین معنی است که بعدا فولدر -d /upload زیر /data/mysftpuser/upload خواهد بود.
- دسترسی به شل /sbin/nologin را محدود کردیم تا مطمئن شویم کاربر تنها می تواند از SFTP استفاده کند
- نام کاربر را mysftpuser و پسورد آن را mysftpuser انتخاب کردیم.
توجه داشته باشید که این نام کاربری و پسورد را می توانید بر اساس نیاز خود تغییر دهید. حالا باید فولدر /upload را زیر فولدر /data/mysftpuser ایجاد کنیم و دسترسی های مناسب را به فولدر بدهیم:
mkdir -p /data/mysftpuser/upload chown -R root:sftpusers /data/mysftpuser chown -R mysftpuser:sftpusers /data/mysftpuser/upload
بعد از اینکه کارتان تمام شد، تایید کنید که فولدر جدید زیر فولدر directory /data قرار دارد.
[root@localhost ~]# ls -ld /data/ drwx-----x. 5 root root 54 Mar 22 14:29 /data/ [root@localhost ~]# ls -ld /data/mysftpuser drwxr-xr-x. 3 root sftpusers 20 Mar 22 14:29 /data/mysftpuser [root@localhost ~]# ls -ld /data/mysftpuser/upload drwxr-xr-x. 2 mysftpuser sftpusers 6 Mar 22 14:29 /data/mysftpuser/upload [root@localhost ~]# cat /etc/passwd|grep mysftpuser mysftpuser:x:1001:1001::/upload:/sbin/nologin
حالا می توانید پروتکل SSH را برای ایجاد فرآیند SFTP ایجاد و پیکربندی کنیم. اینکار را می توان با ویرایش فایل پیکربندی در /etc/ssh/sshd_config انجام داد:
nano /etc/ssh/sshd_config
خطوط زیر را به انتهای فایل اضافه کنید:
Match Group sftpusers ChrootDirectory /data/%u ForceCommand internal-sftp
بعد از اینکار، سرویس SSH را ریستارت کنید :
service sshd status
Redirecting to /bin/systemctl status sshd.service ? sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-03-22 14:21:38 CET; 16min ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 942 (sshd) CGroup: /system.slice/sshd.service ??942 /usr/sbin/sshd -D Mar 22 14:21:37 localhost.localdomain systemd[1]: Starting OpenSSH server daemon... Mar 22 14:21:38 localhost.localdomain sshd[942]: Server listening on 0.0.0.0 port 22. Mar 22 14:21:38 localhost.localdomain sshd[942]: Server listening on :: port 22. Mar 22 14:21:38 localhost.localdomain systemd[1]: Started OpenSSH server daemon. Mar 22 14:21:49 localhost.localdomain sshd[1375]: Accepted password for root from 192.168.1.9 port 59465 ssh2
service sshd restart
[root@localhost ~]# service sshd restart Redirecting to /bin/systemctl restart sshd.service
تست SFTP سرور:
حالا همه چیز پیکربندی شده و باید مطمئن شویم سرور به درستی کار می کند. ما از طریق سرور دیگری به نام TEST01 به سرور SFTP خود دسترسی پیدا کرده ایم. در ابتدا باید پورت سرور SFTP را تایید کنیم. برای اینکار از قابلیت nmap استفاده خواهیم کرد. اگر سرور کلاینت شما این قابلیت را ندارد، می توانید آن را دانلود و نصب کنید:
yum list nmap
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.copahost.com * epel: mirror.imt-systems.com * extras: mirror.imt-systems.com * remi-php72: remi.mirror.wearetriple.com * remi-safe: remi.mirror.wearetriple.com * updates: ftp.rz.uni-frankfurt.de Available Packages nmap.x86_64 2:6.40-7.el7
yum install nmap -y
Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.copahost.com * epel: mirror.imt-systems.com * extras: mirror.imt-systems.com * remi-php72: remi.mirror.wearetriple.com * remi-safe: remi.mirror.wearetriple.com * updates: ftp.rz.uni-frankfurt.de Resolving Dependencies --> Running transaction check ---> Package nmap.x86_64 2:6.40-7.el7 will be installed --> Processing Dependency: nmap-ncat = 2:6.40-7.el7 for package: 2:nmap-6.40-7.el7.x86_64 --> Running transaction check ---> Package nmap-ncat.x86_64 2:6.40-7.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================================================================= Installing: nmap x86_64 2:6.40-7.el7 base 4.0 M Installing for dependencies: nmap-ncat x86_64 2:6.40-7.el7 base 201 k Transaction Summary ============================================================================================================================================================================================= Install 1 Package (+1 Dependent package) Total download size: 4.2 M Installed size: 17 M Downloading packages: (1/2): nmap-ncat-6.40-7.el7.x86_64.rpm | 201 kB 00:00:01 (2/2): nmap-6.40-7.el7.x86_64.rpm | 4.0 MB 00:00:14 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 300 kB/s | 4.2 MB 00:00:14 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : 2:nmap-ncat-6.40-7.el7.x86_64 1/2 Installing : 2:nmap-6.40-7.el7.x86_64 2/2 Verifying : 2:nmap-ncat-6.40-7.el7.x86_64 1/2 Verifying : 2:nmap-6.40-7.el7.x86_64 2/2 Installed: nmap.x86_64 2:6.40-7.el7 Dependency Installed: nmap-ncat.x86_64 2:6.40-7.el7 Complete! [root@localhost ~]# nmap -n 192.168.1.100 Starting Nmap 6.40 ( http://nmap.org ) at 2018-03-22 14:51 CET Nmap scan report for 192.168.1.100 Host is up (0.000016s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
در سرور SFTP ما تنها پورت باز پورت SSH 22 است. از طریق کلاینت TEST01 سعی می کنیم به سرور SFTP دسترسی یابیم.
[root@TEST01 /]# sftp mysftpuser@192.168.1.100 mysftpuser@192.168.1.100's password: Connected to 192.168.1.100. sftp> pwd Remote working directory: /upload sftp>
سرور ما از خارج قابل دسترسی است. اگر توجه کرده باشید دایرکتوری پیش فرض /upload است. این موضوع بدین معنی است که SFTP تنها مسیر پیش فرض را به عنوان /upload نشان خواهد داد. حالا باید فایلی را از دایرکتوری SFTP سرور بگیریم و در کلاینت تست خود قرار دهیم.
یک فایل تست زیر فولدر /data/mysftpuser/upload ایجاد می کنیم:
cd /data/mysftpuser/upload touch testing_file.txt
سپس به سرور TEST01 خود باز می گردیم تا ببینیم می توانیم فایل ایجاد شده را دانلود کنیم یا خیر.
[root@TEST01 /]# sftp mysftpuser@192.168.1.100 mysftpuser@192.168.1.100's password: Connected to 192.168.1.100. sftp> pwd Remote working directory: /upload sftp> ls testing_file.txt sftp> get testing_file.txt Fetching /upload/testing_file.txt to testing_file.txt sftp> quit
تست SFTP موفقیت آمیز بود.