Vraag Hoe een beperkte SFTP-server instellen op Ubuntu?


Ik zou graag willen weten hoe root-, sudo-, sftp-alleen-gebruikersaccounts kunnen worden ingesteld waarvoor geen authenticatie van de openbare sleutel nodig is bij het inloggen. Ik zou ook graag willen weten hoe sftp-only gebruikers-homedirectory's op te zetten waar ze heeft geen toegang tot de andere mappen op het hoogste niveau.


76
2018-02-14 01:29


oorsprong




antwoorden:


De beste bron om u te helpen bij het instellen van een ssh-service op een hostcomputer met Ubuntu is OpenSSH-server. Hiermee kun je gebruiken SSH File Transfer Protocol (ook Secure File Transfer Protocol of SFTP) om bestanden via SSH vanaf een clientcomputer te openen, over te dragen en te beheren.

Overzicht van de oplossing

  • Op Ubuntu kun je een instellen OpenSSH server op een hostcomputer en een gebruiker kan vervolgens gebruiken ssh om verbinding te maken van Client naar host-server met alleen een gebruikersnaam en wachtwoord. Merk echter op dat publieke sleutelauthenticatie wordt aanbevolen,

"Zorg dat je een hebt sterk wachtwoord voordat u een SSH-server installeert (misschien wilt u dat schakel alle wachtwoorden helemaal uit)"

  • Administratieve gebruikersaccounts die op Host zijn gemaakt, hebben sudo-privileges, standaardgebruikersaccounts die op Host zijn gemaakt, niet.

Installeer en configureer uw OpenSSH Server op Host

Om een ​​OpenSSH-server op Host te installeren:

sudo apt-get install openssh-server

Geef uw host een statisch IP-adres zodat u er op betrouwbare wijze verbinding mee kunt maken:

nm-connection-editor

Om uw OpenSSH-server te configureren, "maak eerst een back-up van je sshd_config-bestand door het naar je thuismap te kopiëren of door een alleen-lezen kopie te maken in / etc / ssh door te doen:"

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults
sudo chmod a-w /etc/ssh/sshd_config.factory-defaults

"Als je een back-up van je hebt gemaakt sshd_config bestand, kunt u wijzigingen aanbrengen met elke teksteditor, bijvoorbeeld: "

sudo -H gedit /etc/ssh/sshd_config

U moet uw ssh-service op Host opnieuw starten om deze wijzigingen door te voeren

sudo service ssh restart

Overweeg de volgende beveiligingsmaatregelen

  • Schakel port-forwarding op uw router niet in: Wanneer buitenstaander uw router vraagt ​​buitenstaander aan te sluiten op poort 22, enz., Voldoet uw router niet, tenzij u poortdoorschakeling hebt ingeschakeld
  • Schakel rootaanmelding uit: opmerkingen toevoegen PermitRootLogin without-password; toevoegen PermitRootLogin no naar Host's /etc/ssh/sshd_config
  • Kies een niet-standaard SSH-poort: opmerkingen toevoegen Port 22; toevoegen Port <new-port-number> naar Host's /etc/ssh/sshd_config
  • Alleen lokale verbindingen toestaan: Toevoegen ListenAddress 192.168.0.10
  • Bepaalde gebruikers op bepaalde poorten toestaan: Toevoegen AllowUsers <username>@<IP_address_1> <username>@<IP_address_2> of AllowUsers <username>@111.222.333.* naar Host's /etc/ssh/sshd_config
  • Alleen RSA-sleutel (wachtwoordloze) verbindingen toestaan: de inhoud van ~/.ssh/id_rsa.pub van elke klant als een nieuwe lijn van host's ~/.ssh/authorized_keys. Dan toevoegen PasswordAuthentication no naar Host's /etc/ssh/sshd_config
  • Crackingpogingen van langzame aanvallers: Gebruik ufw (ongecompliceerde firewall) op Host om binnenkomende verbindingen te waarderen tot 10 / minuut: sudo apt-get install ufw && sudo ufw limit OpenSSH
  • Zie voor meer ideeën Keep SSH Access Secure

Als u vindt dat u moet, inschakelen PasswordAuthentication in uw sshd_config het dossier

Zoek de regel met de zin PasswordAuthentication en laat het lezen:

PasswordAuthentication yes

Sla je nieuwe op sshd_config bestand en start Host opnieuw ssh service:

sudo service ssh restart

Als u overal toegang via internet nodig hebt, stelt u Setup Port Forwarding in op uw lokale router om verkeer naar uw OpenSSH-server te leiden

Let op de poort Host's sshservice luistert naar in de sshd_config bestand en stel uw router in om TCP / UDP-verkeer gericht op deze poort door te sturen naar het IP-adres van uw OpenSSH-server.

Maak verbinding met Host en log in via opdrachtregel of terminal

  • Een SFTP-shellterminal openen als <username> op Host, open een Terminal op Client en voer de volgende opdracht in ter vervanging 123.123.1.23 met het IP-adres van Host:

    sftp <username>@123.123.1.23
    
    • Als u het poortnummer hebt gewijzigd, luistert de OpenSSH-server van Host naar:

      sftp -P <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      
  • Een SSH-shell-terminal openen als <username> op Host, open een Terminal op Client en voer de volgende opdracht in ter vervanging 123.123.1.23 met het IP-adres van Host:

    ssh <username>@123.123.1.23
    
    • Als u het poortnummer hebt gewijzigd, luistert de OpenSSH-server van Host naar:

      ssh -p <port_number_in_Host's_sshd_config_file> <username>@123.123.1.23
      

Maak verbinding met Host en log in via GUI-bestandsbeheer (bijv. Nautilus) voor meer visuele SFTP-toegang om bestandsoverdrachten mogelijk te maken

  1. Open Nautilus op Client
  2. Selecteer Bestand> Verbinden met server
  3. Type: SSH
  4. Server: voer het IP-adres van de host in
  5. Poort: poortnummer gespecificeerd in Host's sshd_config het dossier
  6. Gebruikersnaam: gebruikersnaam
  7. Wachtwoord: wachtwoord

enter image description here

In 14.04:

  1. Open Nautilus op Client
  2. Connecteer met de server
  3. Type: `ssh @ 123.123.1.23:

Maak standaard gebruikersaccounts op Host met beperkte bestandsrechten buiten hun persoonlijke map

Juiste bestandsmachtigingen die van kracht zijn op Host garanderen dat elke standaardgebruiker (zonder sudo-privileges) die u op Host maakt, eigenaar van hun is /home/new_user directory maar hebben beperkte rechten met de rest van de directorystructuur.

  • Beperkte rechten betekenen niet noodzakelijk dat ze bestandsnamen en mapstructuur niet kunnen zien.

Ik hoop dat dat nuttig is!


82
2018-02-14 03:36



Het lijkt mij dat dit antwoord, hoewel het erg uitgebreid lijkt, eigenlijk niet het moeilijkste deel van de OPs-vraag beantwoordt: "waar ze geen toegang hebben tot de bovenste map van andere mappen." Indien geïmplementeerd zoals hierboven zou de gebruiker de overgrote meerderheid van de directorystructuur kunnen lezen. - ajostergaard
Als u de opmerking van @ ajostergaard wilt uitbreiden, maakt dit een normale Unix-gebruiker en geeft deze SSH- en SFTP-toegang. Een normale unix-gebruiker (geen root) kan nog steeds een zeer groot aantal gevoelige bestanden openen en bekijken, zoals webserverconfiguratie en nog veel meer. Dit is zeker niet veilig en zeker niet voldoet aan de beperking gevraagd door het OP. - Simon Woodside


Stap 1: installeer OpenSSH-pakket als dit niet is geïnstalleerd

sudo apt-get install openssh-server

Stap 2: Maak een aparte groep voor SFTP-gebruikers.

sudo addgroup ftpaccess

Stap 3: Bewerken /etc/ssh/sshd_config bestand en breng wijzigingen aan zoals hieronder. Zoek en reageer onder de regel.

#Subsystem sftp /usr/lib/openssh/sftp-server

en voeg deze regels toe aan het einde van het bestand.

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Stap 4: Start de sshd-service opnieuw.

sudo service ssh restart

Stap 5: Voeg gebruiker toe met ftpaccess-groep en maak een wachtwoord aan.

sudo adduser paul --ingroup ftpaccess --shell /usr/sbin/nologin

Stap 6: Wijzig de machtiging van de basismap.

sudo chown root:root /home/paul

Stap 7: Maak een directory in huis voor het uploaden en wijzigen van toestemming met groep.

sudo mkdir /home/paul/www
sudo chown paul:ftpaccess /home/paul/www

Dat is het .

Verwijzen : SFTP instellen op ubuntu


45
2018-04-11 06:57



Dit lijkt het juiste antwoord te zijn. Ik heb het niet getest, maar in ieder geval vermeldde het de grootste moeilijkheid, het beperken van het surfpad. - Mohammed Noureldin
Ik heb het getest en het was veel te permissief, vanwege de standaardrechten voor de thuismap die 755 is. Ik deed het sudo chmod 711 op de thuismap en het stond me toe alleen naar de www-map te ftp. Lijkt goed tot nu toe, maar misschien kunnen er andere klinken in ... - moodboom


Denyhosts is een andere tool naast die genoemd door "jtd" waar je misschien naar wilt kijken. Het kan automatisch herhaalde verbindingspogingen naar uw SSH-server blokkeren. Het is beschikbaar om te installeren in de Ubuntu-repositories.


0
2018-02-14 03:44



Paket denyhosts is alleen beschikbaar voor lucide (10.04LTS) en precieze (12.04LTS). packages.ubuntu.com/search?suite=all&keywords=denyhosts - A.B.
Denyhosts is niet meer beschikbaar in Ubuntu-repository's, hoewel het nog steeds op een andere manier kan worden geïnstalleerd, maar het is niet lang bijgewerkt. Het is dus niet verstandig om Denyhosts te gebruiken. - Faizan Akram Dar


Beperk de toegang tot de gebruiker

Hier laten we de gebruiker alleen de bestandsoverdracht uitvoeren en schakelen we de terminal-toegang uit.

Voeg daarvoor de volgende codes onderaan het configuratiebestand toe.

$ sudo nano /etc/ssh/sshd_config

Nu zal het bestand openen en de code plakken.

/etc/ssh/sshd_config

. . .

Match User filemg

ForceCommand internal-sftp

PasswordAuthentication yes

ChrootDirectory /var/sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

X11Forwarding no

Vervangen filemg met uw gebruikersnaam. Sla vervolgens het bestand op en sluit het.

Dat is het.

Referentie: Hoe SFTP te gebruiken in Ubuntu 16.04


0
2017-07-19 16:13