So installieren und konfigurieren Sie scponly unter CentOS 7

Einführung

scponly ist eine sichere Alternative zu anonymem FTP. Es gibt dem Administrator die Möglichkeit, ein sicheres Benutzerkonto mit eingeschränktem Remote-Dateizugriff und ohne Zugriff auf eine interaktive Shell einzurichten.

Warum scponly anstelle von normalem SSH verwenden? Mit scponly geben Sie dem Benutzer den Fernzugriff zum Herunterladen und Hochladen bestimmter Dateien. Sie haben keine interaktive Shell, dh, sie können keine Befehle ausführen. Der Benutzer kann nur über "+ scp", "+ sftp" oder Clients, die diese Protokolle unterstützen, auf den Server zugreifen. Unter Sicherheitsgesichtspunkten verringert dies Ihre Angriffsfläche, indem der nicht benötigte Zugriff auf eine interaktive Shell auf einem Server eingeschränkt wird.

Voraussetzungen

Für dieses Tutorial benötigen Sie ein neues CentOS 6- oder 7-Droplet.

Alle Befehle in diesem Lernprogramm sollten als Benutzer ohne Rootberechtigung ausgeführt werden. Wenn für den Befehl root-Zugriff erforderlich ist, wird vor + sudo + angezeigt. Wenn Sie das noch nicht eingerichtet haben, folgen Sie diesem Tutorial: Initial Server Setup unter CentOS 6 oder https : //www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [Erstes Server-Setup für CentOS 7].

Schritt 1 - Pakete installieren

scponly ist in einigen Repositorys von Drittanbietern verfügbar, aber diese Builds von scponly sind veraltet und es fehlen einige der Funktionen, die wir hinzufügen werden, wenn wir scponly aus dem Quellcode erstellen.

Um scponly aus dem Quellcode zu erstellen, müssen Sie die folgenden 5 Pakete installieren:

  • wget (Herunterladen von Dateien über die Befehlszeile)

  • gcc (Um scponly von der Quelle zu kompilieren)

  • man (Manpages lesen)

  • rsync (für erweitertes Kopieren von Dateien)

  • openssh-client-tools (Um verschiedene ssh-tools bereitzustellen)

Wir werden yum verwenden, um die erforderlichen Pakete zu installieren, die zum Erstellen von scponly erforderlich sind. Während der Installation von yum übergeben wir die erforderlichen Paketnamen sowie "+ -y +", die automatisch auf alle Eingabeaufforderungen mit "Ja" antworten.

Installieren Sie + wget,` + gcc + , + man`, + rsync und` + openssh-clients` mit dem Befehl + yum install +:

sudo yum install wget gcc man rsync openssh-clients -y

Schritt 2 - Downloaden und extrahieren Sie scponly

In diesem Abschnitt werden wir die neueste Version von scponly mit + wget + von sourceforge herunterladen und die Dateien mit + tar + extrahieren.

Bevor Sie scponly herunterladen, wechseln Sie in das Verzeichnis + / opt +. Dieses Verzeichnis ist normalerweise für optionale Software vorgesehen.

cd /opt

Ab diesem Artikel ist der neueste Schnappschuss von scponly * 2011.05.26 *. Sie können die Sourceforge page für eine spätere Version überprüfen und den Befehl + wget + entsprechend anpassen.

Lade die scponly-Quelle mit + wget + herunter:

sudo wget http://sourceforge.net/projects/scponly/files/scponly-snapshots/scponly-20110526.tgz

Extrahieren Sie den scponly-Quellcode:

sudo tar -zxvf scponly-20110526.tgz

Schritt 3 - Nur scponly erstellen und installieren

In diesem Abschnitt verwenden wir 3 Hauptbefehle, um scponly zu erstellen: + configure +, + make + und + make install +. Dies sind die 3 Befehle, die am häufigsten verwendet werden, wenn Sie Software aus dem Quellcode herunterladen und installieren.

Wechseln Sie in das Verzeichnis, das den gerade entpackten scponly-Quellcode enthält:

cd /opt/scponly-20110526

Führen Sie zuerst den Befehl + configure + aus, um ein Makefile mit allen Funktionen zu erstellen, die Sie beim Erstellen aus dem Quellcode aktivieren oder deaktivieren möchten:

sudo ./configure --enable-chrooted-binary --enable-winscp-compat --enable-rsync-compat --enable-scp-compat --with-sftp-server=/usr/libexec/openssh/sftp-server

Die folgenden Optionen wurden verwendet:

  • + - enable-chroot-binary: + Installierte chroot-binary + scponly c +

  • + - enable-winscp-compat: + Aktiviert die Kompatibilität mit WinSCP, einem Windows-SCP / SFTP-Client

  • + - enable-rsync-compat: + Aktiviert die Kompatibilität mit rsync, einem sehr vielseitigen Dienstprogramm zum Kopieren von Dateien

  • + - enable-scp-compat: + Aktiviert die Kompatibilität mit den scp-Befehlen im UNIX-Stil

Als nächstes erstellen wir scponly mit dem Befehl + make +. Der Befehl + make + verwendet alle Optionen, die Sie mit dem Befehl + configure + übergeben haben, und baut sie in die Binärdateien ein, die auf dem Betriebssystem installiert und ausgeführt werden.

sudo make

Als nächstes installieren wir die Binaries mit + make install:

sudo make install

Zuletzt fügen Sie die scponly-Shells zur + / etc / shells + -Datei hinzu:

sudo /bin/su -c "echo "/usr/local/bin/scponly" >> /etc/shells"

Die Datei "+ / etc / shells " teilt dem Betriebssystem mit, welche Shells den Benutzern zur Verfügung stehen. Wir teilen dem Betriebssystem mit, dass wir dem System eine neue Shell mit dem Namen " scponly " hinzugefügt haben und dass sich die Binärdatei unter " / usr / local / bin / scponly +" befindet.

Schritt 4 - Nur Gruppe erstellen

Jetzt erstellen wir eine Gruppe mit dem Namen scponly, damit alle Benutzer, die mit scponly auf den Server zugreifen, problemlos verwaltet werden können.

sudo groupadd scponly

Schritt 5 - Erstellen Sie ein Upload-Verzeichnis und legen Sie die richtigen Berechtigungen fest

In diesem Abschnitt erstellen wir ein zentrales Upload-Verzeichnis für die scponly-Gruppe. Auf diese Weise können Sie steuern, wo und wie viele Daten auf den Server hochgeladen werden können.

Erstellen Sie ein Verzeichnis mit dem Namen "+ / pub / upload +". Dies ist ein Verzeichnis für Uploads:

sudo mkdir -p /pub/upload

Ändern Sie den Gruppeneigentum des Verzeichnisses "+ / pub / upload " in " scponly +":

sudo chown root:scponly /pub/upload

Der nächste Schritt ist das Einrichten von Berechtigungen für das Verzeichnis "+ / pub / upload +". Durch Festlegen der Berechtigungen für dieses Verzeichnis auf 770 gewähren wir nur den Root-Benutzern und Mitgliedern der Gruppe scponly Zugriff.

Ändern Sie die Berechtigungen für das Verzeichnis "+ / pub / upload +", um für den Eigentümer und die Gruppe zu lesen, zu schreiben und auszuführen, und entfernen Sie alle Berechtigungen für andere:

sudo chmod 770 /pub/upload

Schritt 6 - Erstellen Sie ein Benutzerkonto mit scponly Shell

Jetzt richten wir ein Testbenutzerkonto ein, um die Konfiguration von scponly zu überprüfen.

Erstellen Sie einen Benutzer mit dem Namen * testuser1 * und geben Sie * scponly * als alternative Gruppe und + / usr / local / bin / scponly + als Shell an:

sudo useradd -m -d /home/testuser1 -s "/usr/local/bin/scponly" -c "testuser1" -G scponly testuser1

Ändern Sie die Berechtigungen für das Ausgangsverzeichnis * testuser1 * so, dass sie nur für den Eigentümer gelesen und ausgeführt werden:

sudo chmod 500 /home/testuser1

Legen Sie zum Schluss ein Passwort für den Benutzer * testuser1 * fest:

sudo passwd testuser1

Schritt 7 - Vergewissern Sie sich, dass der Benutzer keinen Zugriff auf die Interactive Shell hat

Jetzt werden wir den Zugriff auf die scponly-Shell testen und sicherstellen, dass er wie erwartet funktioniert.

Vergewissern Sie sich, dass das Konto "* testuser1 *" keinen Zugriff auf ein Terminal hat.

Versuchen Sie, sich als testuser1 am Server anzumelden:

su - testuser1

Ihr Terminal bleibt hängen, da Sie keinen Zugriff auf eine interaktive Shell haben. Drücken Sie "+ STRG + C +", um die Bildschirm-Shell zu verlassen.

Sie können den Zugriff auch von Ihrem lokalen Computer aus testen:

ssh testuser1@

Auch hier bleibt Ihr Terminal hängen, da Testbenutzer1 keinen Shell-Zugriff hat. Drücken Sie "+ STRG + C +", um die Bildschirm-Shell zu verlassen.

Schritt 8 - Testen Sie die Fähigkeit des Benutzers, Dateien herunterzuladen

In diesem Abschnitt stellen wir über "+ sftp" eine Verbindung von Ihrem lokalen Computer zu Ihrem DigitalOcean Droplet her, um zu überprüfen, ob das Konto "+ test user1" Dateien herunterladen kann.

Erstellen Sie zuerst eine 100-Megabyte-Datei mit + fallocate +:

sudo fallocate -l 100m /home/testuser1/testfile.img

Ändern Sie den Besitz der Datei "+ testfile.img +" in "testuser1":

sudo chown testuser1:testuser1 /home/testuser1/testfile.img

Wechseln Sie auf Ihrem lokalen System in das Verzeichnis "+ / tmp +":

cd /tmp

Weiter + sftp + zu Ihrem DigitalOcean Server:

sftp testuser1@

Möglicherweise werden Sie aufgefordert, den SSH-Schlüssel bei der Eingabe des Kennworts zu speichern.

Sobald Sie angemeldet sind, geben Sie an der Eingabeaufforderung "+ sftp> " " l" ein:

ls -l

Laden Sie die Datei mit dem Befehl + get + herunter:

get testfile.img

Sobald die Datei heruntergeladen ist, tippe "+ quit +" ein, um zu beenden:

quit

Überprüfen Sie auf Ihrem lokalen Computer, ob die Datei erfolgreich heruntergeladen wurde:

ls -l testfile.img

Schritt 9 - Testen Sie die Fähigkeit des Benutzers, Dateien hochzuladen

In diesem Abschnitt testen wir die Fähigkeit des Kontos "+ testuser1 ", Dateien mit " sftp +" auf den Server hochzuladen.

Erstellen Sie auf Ihrem lokalen System eine 100-Megabyte-Datei mit dem Namen "+ uploadfile.img " mit " fallocate +":

fallocate -l 100m /home/testuser1/uploadfile.img

Stellen Sie von Ihrem lokalen System aus eine Verbindung zu Ihrem DigitalOcean Droplet her.

sftp testuser1@

Laden Sie als nächstes die Datei + uploadfile.img + von der Eingabeaufforderung + sftp nach` + / pub / upload` hoch:

put uploadfile.img /pub/upload/

Stellen Sie sicher, dass die Datei erfolgreich hochgeladen wurde, indem Sie den folgenden Befehl an der Eingabeaufforderung + sftp + eingeben:

ls -ltr /pub/upload

Die Ergebnisse sollten ungefähr so ​​aussehen:

-rw-r--r--    1 testuser1 testuser1 104857600 Jun  5 07:46 uploadfile.img

Geben Sie schließlich an der Eingabeaufforderung "+ sftp " " quit +" ein:

quit

Fazit

scponly sollte in der Toolbox jedes Administrators enthalten sein. Es kann als sichere Alternative zu anonymem FTP oder als Möglichkeit verwendet werden, authentifizierten Benutzern das Herunterladen und Hochladen von Dateien ohne eine interaktive Shell zu ermöglichen. Die Protokollierung von scponly erfolgt in der Standard-SSH-Protokolldatei "+ / var / log / secure +". Lesen Sie wie immer die Manpages und halten Sie Ihr System auf dem neuesten Stand.

Weitere Informationen zu scponly finden Sie unter scponly GitHub page.