GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So richten Sie einen SFTP-Server unter CentOS ein

Dieses Tutorial erklärt, wie man einen SFTP-Server unter CentOS einrichtet und verwendet. Bevor ich anfange, lassen Sie mich erklären, was SFTP eigentlich darstellt und wofür es verwendet wird. Derzeit wissen die meisten Menschen, dass wir normales FTP zum Übertragen, Herunterladen oder Hochladen von Daten von einem Server zu einem Client oder von einem Client zu einem Server verwenden können. Dieses Protokoll wird jedoch leicht von anonymen Eindringlingen gehackt (wenn TLS nicht verwendet wird), da die Ports für jedermann weit offen sind. Daher wurde SFTP als weitere Alternative eingeführt, um den Hauptzweck der Stärkung des Sicherheitsniveaus zu erfüllen.

SFTP steht für SSH File Transfer Protocol oder Secure File Transfer Protocol. Es verwendet ein separates Protokoll, das mit SSH verpackt ist, um eine sichere Verbindung bereitzustellen.

1. Vorbemerkung

Für diese Anleitung verwende ich CentOS 7 in der 64-Bit-Version. Die gleichen Schritte funktionieren auch unter CentOS 6. Das Tutorial-Ergebnis zeigt, wie einem Client Zugriff auf den SFTP-Server gewährt werden kann, er sich jedoch nicht über SSH beim Server selbst anmelden kann.

2. SFTP-Installation

Im Gegensatz zu normalem FTP müssen keine zusätzlichen Pakete installiert werden, um SFTP zu verwenden. Wir benötigen lediglich das vorgefertigte SSHd-Paket, das bereits während der Installation auf dem Server installiert wurde. Überprüfen Sie daher einfach, ob Sie das erforderliche SSH-Paket bereits haben. Unten sind die Schritte:

Ausführen:

rpm -qa|grep ssh

Die Ausgabe sollte ungefähr so ​​aussehen:

[[email protected] ~]# 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

Das ist alles, jetzt machen wir weiter, wie man die SFTP-Konfiguration vornimmt.

3. SFTP-Konfiguration

Sobald alle Voraussetzungen für die Installation erfüllt sind, gehen wir zur Konfigurationsphase über. Als Best Practice müssen wir eine Gruppe und einen Benutzer erstellen, damit wir alle Benutzer verwalten können, die SFTP-Zugriff erhalten sollen. Aber zuerst erstellen wir einen zusätzlichen Ordner namens data. Unten sind die Schritte:

mkdir -p /data/sftp
chmod 701 /data

Grundsätzlich versuche ich mit dem obigen Schritt, einen separaten Ordner als Hauptverzeichnis für den SFTP-Zugriff zu erhalten. Alle Benutzerverzeichnisse für die SFTP-Benutzer sind Unterverzeichnisse dieses Datenordners.

Lassen Sie uns eine Gruppe für den SFTP-Benutzer erstellen, im Folgenden sind die Schritte aufgeführt:

groupadd sftpusers

Erstellen Sie dann einen Benutzer „howtoforge“ und weisen Sie ihn der Gruppe SFTPUSERS zu. Unten sind die Schritte:

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.

Unten ist die Erklärung der obigen Befehle:

  1. Ich erstelle einen Benutzer und schließe den Benutzer mit dem Befehl -g in die Gruppe sftpusers ein.
  2. Ich weise dem Benutzer das Hauptverzeichnis im /upload-Verzeichnis zu, indem ich den Befehl -d /upload setze. Das bedeutet, dass der Ordner /upload später unter /data/mysftpuser/upload.
  3. liegt
  4. Ich beschränke den Zugriff auf die /sbin/nologin-Shell, um sicherzustellen, dass der Benutzer nur das SFTP-Protokoll und nicht SSH verwenden kann.
  5. Ich nenne den Benutzer "mysftpuser".
  6. Passwort für Benutzer "mysftpuser" festlegen.


Lassen Sie uns jetzt den Ordner /upload unter /data/mysftpuser erstellen und dann dem Ordner die entsprechenden Eigentumsrechte zuweisen.

mkdir -p /data/mysftpuser/upload
chown -R root:sftpusers /data/mysftpuser
chown -R mysftpuser:sftpusers /data/mysftpuser/upload

Überprüfen Sie anschließend, ob der neue Ordner im Verzeichnis /data existiert und ob wir die Konfiguration korrekt vorgenommen haben.


[[email protected] ~]# ls -ld /data/
drwx-----x. 5 root root 54 Mar 22 14:29 /data/
[[email protected] ~]# ls -ld /data/mysftpuser
drwxr-xr-x. 3 root sftpusers 20 Mar 22 14:29 /data/mysftpuser
[[email protected] ~]# ls -ld /data/mysftpuser/upload
drwxr-xr-x. 2 mysftpuser sftpusers 6 Mar 22 14:29 /data/mysftpuser/upload
[[email protected] ~]# cat /etc/passwd|grep mysftpuser
mysftpuser:x:1001:1001::/upload:/sbin/nologin

Konfigurieren Sie nun das SSH-Protokoll, um einen SFTP-Prozess zu erstellen. Dies kann durch Bearbeiten der Konfigurationsdatei unter /etc/ssh/sshd_config erfolgen. Unten sind die Schritte:

nano /etc/ssh/sshd_config

Fügen Sie die folgenden Zeilen am Ende der Datei hinzu.

Match Group sftpusers
ChrootDirectory /data/%u
ForceCommand internal-sftp

Sobald Sie fertig sind, starten Sie die SSH-Dienste neu. Nachfolgend sind die Schritte aufgeführt:

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
[[email protected] ~]# service sshd restart
Redirecting to /bin/systemctl restart sshd.service

4. SFTP testen

Jetzt ist alles konfiguriert, also machen wir einen Test, um sicherzustellen, dass die Einrichtung unseren Zweck erfüllt.
Ich greife auf SFTP über einen anderen Server namens TEST01 zu. Zuerst überprüfe ich den Port des SFTP-Servers . Dazu verwende ich die nmap-Funktion. Wenn Ihr Client-Server es nicht hat, können Sie es mit yum herunterladen und installieren, wie unten gezeigt:

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!
[[email protected] ~]# 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


Sie werden feststellen, dass derzeit auf unserem SFTP-Server der einzige offene Port SSH 22 ist. Versuchen wir nun, vom TEST01-Client aus auf den SFTP-Server (IP:192.168.1.100 in meinem Fall) zuzugreifen. Unten sind die Schritte:

[[email protected] /]# sftp [email protected]
[email protected]'s password:
Connected to 192.168.1.100.
sftp> pwd
Remote working directory: /upload
sftp>

Toll! Jetzt ist unser SFTP-Server von außen erreichbar. Beachten Sie, dass das Standardverzeichnis /upload ist. Das bedeutet, dass SFTP nur den Standardpfad als /upload anzeigt, obwohl unsere vorherige Konfiguration im SFTP-Serververzeichnis /data/mysftpuser/upload ist.
Lassen Sie uns nun versuchen, eine Datei aus dem SFTP-Serververzeichnis in unseren zu bekommen Kunden testen. Lassen Sie uns zunächst eine Testdatei unter /data/mysftpuser/upload erstellen. Unten sind die Schritte:

cd /data/mysftpuser/upload
touch testing_file.txt

Gehen Sie dann zurück zu unserer Testseite TEST01 und prüfen Sie, ob wir die erstellte Datei abrufen und herunterladen können.

[[email protected] /]# sftp [email protected]
[email protected]'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

Exzellent! Unser SFTP-Test war erfolgreich, versuchen wir, mit dem Benutzer mysftpuser auf SSH zuzugreifen. Wie zuvor haben wir die Konfiguration auf /sbin/nologin gesetzt, daher kann der Benutzer keine SSH-Dienste verwenden:

[[email protected] ~]# ssh [email protected]
[email protected]'s password:
This service allows sftp connections only.
Connection to 192.168.1.100 closed.

Hübsch! Jetzt haben wir einen gesicherten SFTP-Server in Betrieb.


Cent OS
  1. So richten Sie einen SysLog-Server unter CentOS 7 / RHEL 7 ein

  2. So richten Sie den NFS-Server unter CentOS 7 / RHEL 7 ein

  3. Centos – Wie erstelle ich einen Sftp-Benutzer in Centos?

  4. Wie richte ich einen NTP-Server in CentOS ein?

  5. Wie richte ich VSFTPD unter CentOS 7.x ein?

So richten Sie den Samba-Druckserver unter CentOS ein

So richten Sie den Zimbra-E-Mail-Server unter CentOS 7 ein

So richten Sie einen zentralisierten SysLog-Server unter CentOS 8 / RHEL 8 ein

Wie konfiguriere ich den SFTP-Server auf CentOS?

Anleitung zum erstmaligen Einrichten des CentOS 7-Servers

So richten Sie HAProxy unter CentOS 8 ein