sql >> Database >  >> RDS >> Sqlserver

Een Bastion-server verbinden met een PostgreSQL-server via SSH-tunnel

PostgreSQL is een bekend relationeel databasebeheersysteem met een veilige omgeving voor ontwikkelaars en gebruikers. Maar aangezien werken op afstand deel blijft uitmaken van de nieuwe norm van elk bedrijf, worden IT-professionals geconfronteerd met een nieuwe reeks uitdagingen als het gaat om het beheren van de beveiliging en toegankelijkheid van hun servers.

Het gebruik van een bastionserver om toegang te krijgen tot een PostgreSQL-database voegt een extra beveiligingslaag toe. Maar omdat bastionservers als firewalls moeten fungeren, is het noodzakelijk om een ​​Secure Shell (SSH)-tunnel te gebruiken om het niveau van de blootstelling aan het privénetwerk te verlagen.

Veel PostgreSQL-tools voor databasebeheer kunnen dit verbindingsproces automatiseren, maar interactie met de shell vereist het handmatig maken van een SSH-tunnel. Inzicht in het proces en de voorzorgsmaatregelen kan uw bedrijf zeker helpen om veilige databases te onderhouden.

Voordelen van het maken en gebruiken van een SSH Secure Shell Tunnel

SSH-tunneling wordt al meer dan dertig jaar gebruikt in netwerkcommunicatie en is net zo relevant voor de hedendaagse computerbehoeften.

Ontwikkelaars wenden zich consequent tot SSH Secure Shell-protocollen om databasetoegang op allerlei soorten servers te beheren, inclusief PostgreSQL. Veilige toegang op afstand is tegenwoordig van cruciaal belang, vooral wanneer 50% van de apparaten op de werkplek mobiel is (mobiele apparaten zijn het meest kwetsbaar voor cyberaanvallen). Dit maakt het nog belangrijker dat organisaties apparaten en gebruikerstoegang tot hun netwerken op afstand kunnen beheren.

Bedrijven die grote hoeveelheden gegevens verwerken, moeten werknemers uitdrukkelijke toegang geven tot grote databases en een proactieve benadering van databasebeveiliging hanteren. Het gebruik van SSH-protocollen is de nummer één in het bieden van veilige toegang aan gebruikers vanaf externe servers. Het maakt het ook eenvoudiger om geautomatiseerde programma's te verifiëren. Daarom kunnen bedrijven hun dagelijkse taken efficiënter uitvoeren.

Nu beveiligingsstandaarden eindelijk een inhaalslag maken voor mobiele apparaten en externe servers, kunnen we verwachten dat de coderings- en authenticatieprotocollen ook verbeteren. Flexibiliteit en interoperabiliteit zijn de toekomst van IoT-beveiliging. Toch zullen SSH-protocollen in de nabije toekomst een standaard onderdeel blijven.

Hoe werkt SSH?

Met SSH-protocollen kunt u de toegang tot uw servers via internet op afstand beheren in een beveiligde omgeving. Niet alleen de eerste verbinding is goed beveiligd, maar dat geldt ook voor de hele communicatiesessie tussen de twee partijen. Gebruikers kunnen inloggen op een externe server met behulp van een open SSH Secure Shell-tunnel of andere SSH Secure Shell-clients.

De server zoekt naar een open poortverbinding. Zodra het er een vindt, moet de server de verbinding verifiëren. Het bepaalt of er een beveiligde omgeving is ingericht voor communicatie en bestandsoverdracht. Als de verbinding tot stand wordt gebracht door de client, moet de client de server authenticeren naast het verstrekken van zijn referenties.

Wanneer beide partijen zijn geverifieerd en de verbinding tot stand is gebracht, zorgt het SSH-coderingsprotocol voor de voortdurende privacy van alle gegevensoverdrachten tussen de server en de client.

Er zijn drie soorten codering die SSH-tunnels gebruiken om verbindingen te beveiligen:

  • symmetrische codering
  • asymmetrische codering
  • hashes.

Symmetrische versleuteling wordt gebruikt voor de duur van de verbinding om de communicatie veilig te houden. Zowel client als server delen dezelfde geheime sleutel om gegevens te coderen en te decoderen. Dit algoritme is veilig omdat een echte sleutel nooit echt wordt uitgewisseld. In plaats daarvan delen beide partijen openbare informatie waaruit ze onafhankelijk de sleutel kunnen afleiden.

Asymmetrische codering , daarentegen, vereist zowel een openbare als een privésleutel. Het wordt aan het begin van het tunnelingproces gebruikt om de servers te verifiëren. De server gebruikt een openbare sleutel om die gegevens te versleutelen en de client moet deze verifiëren met een privésleutel. Aangezien een bepaalde privésleutel het enige is dat berichten kan ontsleutelen die met de openbare sleutel zijn versleuteld, helpt dit bij het verifiëren van de partijen die verbinding zoeken.

Cryptografische hashing creëert een unieke handtekening voor de set gegevens. Dit is handig bij een SSH-verbinding omdat het de server laat weten of een MAC acceptabel is. Een overeenkomende hash kan alleen worden gemaakt door het stuk gegevens dat identiek is aan dat waarmee het origineel is gemaakt. Hashing kan dus worden gebruikt om de invoer te controleren om er zeker van te zijn dat deze de juiste is.

SSH-verificatie

Na het tot stand brengen van de encryptie vindt een authenticatieproces plaats. De eenvoudigste vorm van authenticatie is het gebruik van een wachtwoord. Hoewel dit een gemakkelijke manier is voor klanten, is het ook heel gemakkelijk voor kwaadaardige geautomatiseerde scripts. Zelfs een versleuteld wachtwoord heeft een beperkte complexiteit. Het maakt het onzeker. Het gebruik van asymmetrische sleutels is een veelvoorkomende maatregel in plaats van wachtwoorden.

Zodra een openbare sleutel is vastgesteld, moet de client de privésleutel opgeven die bij de openbare sleutel hoort. Zonder deze combinatie mislukt de authenticatie. Dit helpt ervoor te zorgen dat de versleutelde gegevens niet kunnen worden ontsleuteld door een indringer.

Het hele authenticatieproces wordt tijdens de installatie onderhandeld en alleen partijen met complementaire sleutels kunnen communiceren. Dit proces maakt het aanmeldingsproces ook snel. Het is dus optimaal voor geautomatiseerde procedures.

Het authenticatieproces is afhankelijk van de volgende factoren:

  • het soort database dat wordt beschermd
  • de relatie en locatie van de server
  • de gebruikersrechten op de server.

Het mooie van het gebruik van een SSH-protocol is dat het hele proces versleuteld en zeer goed beveiligd is.

SSH-tunnel instellen

Als u wilt communiceren met een database met behulp van de shell, moet u weten hoe u een SSH-tunnel maakt. Hoewel het handig kan zijn om een ​​geautomatiseerde SSH-beheertoepassing te gebruiken, geven veel databasebeheerders er de voorkeur aan om databasebeheertools helemaal opnieuw op te zetten, omdat interactie met de shell de beste manier is om fouten op te sporen, te controleren en maximale controle te hebben.

Het gebruik van een SSH-tunnel is een zeer veilige manier om een ​​sessie te openen zonder bang te hoeven zijn gegevens te verliezen of gehackt te worden (zolang u uw sessies sluit en uw servers bewaakt).

Zo maakt u een SSH-tunnel:

Controleer de Bastion-server

Om een ​​SSH Secure Shell-tunnel te maken, moet u de hostnamen van de bastionserver en de PostgreSQL-database weten, evenals uw gebruikersnaam op de bastionserver. Voer de opdracht uit:

$ ssh <username>@<bastion_server>

Voer vervolgens uw wachtwoord in wanneer het juiste venster verschijnt.

SSH-tunnel openen

Open de tunnel met dit commando:

$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>

Laat het raam open om de verbinding te behouden. De nummers met twee poorten zijn respectievelijk voor uw computer en de externe server.

Verifieer uw verbinding

Gebruik de volgende opdracht om ervoor te zorgen dat uw tunnel open is en verbonden is met de PostgreSQL-server:

$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"

Kijk of de tabellen worden geretourneerd. Als dit het geval is, was uw verbinding succesvol en veilig.

Een aantal optionele stappen kan de efficiëntie van uw toegang van de bastionhost tot de SQL-server verhogen. Houd er echter rekening mee dat het altijd automatiseren van toegang geen veilige strategie is. Het is verstandig om altijd in te loggen wanneer je een SSH-tunnel wilt openen om sessies volledig privé te houden.

Gebruikersprofiel maken

Om te voorkomen dat u telkens wachtwoorden moet invoeren, kunt u een profiel aanmaken op de bastionserver. Om dit te doen, moet u uw SSH-sleutel aan de server toevoegen met behulp van de volgende opdracht:

$ ssh-copy-id <username>@<bastion_server>

Uw sleutel wordt dan automatisch gebruikt wanneer u wilt inloggen. Het heeft echter zowel positieve als negatieve aspecten. Het is handiger, maar u moet ervoor zorgen dat u over andere beveiligingsprotocollen beschikt om de machine te beschermen tegen malware of diefstal. Als iemand anders toegang krijgt tot uw computer, kan deze mogelijk automatisch inloggen op uw servers omdat uw sleutel is opgeslagen.

Update uw SSH-configuratiebestand

Het kan ingewikkeld zijn om de exacte namen en poortnummers te onthouden van de servers waarmee u verbinding wilt maken. Daarom maakt het deel uit van het SSH Secure Shell-tunnelprotocol.

U houdt de hostnamen bij en authenticeert u met uw gebruikersnaam. Het maakt deel uit van wat de SSH-verbinding in de eerste plaats veilig maakt. Maar er is een manier om uw procedure te configureren om toegang sneller en gemakkelijker te maken zonder het proces volledig te automatiseren. U kunt een item toevoegen aan uw SSH-configuratiebestand:

Host bastion-productie

  • Hostnaam
  • Gebruiker
  • LocalForward localhost:port_number:port_number

Voer vervolgens de opdracht uit:

$ ssh bastion-production 

Nu kunt u in slechts één stap verbinding maken.

SSH-privacytips

Het is absoluut noodzakelijk om de databases veilig te houden. Gegevens zijn de meest waardevolle valuta ter wereld en met de opkomst van ransomware en andere cybercriminaliteit is het niet beschermen van klantgegevens een onaanvaardbare fout.

Het hele punt van het gebruik van de bastion-server is in de eerste plaats om uw database te beschermen. Een paar misstappen zouden uw servers echter wijd open laten voor iedereen om binnen te komen.

Hier zijn enkele tips om veilig te blijven tijdens het gebruik van SSH-tunnels om verbinding te maken met PostgreSQL-servers:

Verifieer externe medewerkers op de juiste manier

Als jouw organisatie SSH gebruikt om op afstand verbinding te maken, dan moet iedereen de basis van digitale hygiëne kennen. Gebruik op sleutels gebaseerde authenticatie die wordt beschermd door een sterk wachtwoord. Tweestapsverificatie voor elke aanmelding is ook een goede plek om te beginnen, en om ervoor te zorgen dat openbare SSH-sleutels authentiek zijn.

Beperk SSH-aanmeldingen alleen tot degenen die ze nodig hebben en stel privileges in die passen bij de taken van de gebruikers.

Poort doorsturen uitschakelen

Slechts ongeveer de helft van de ontwikkelaars handhaaft procedures ter preventie van port forwarding. Port forwarding kan u openstellen voor versleutelde communicatie met niet-goedgekeurde gebruikers en servers. Zo kunnen hackers rechtstreeks uw database binnenlopen. Filter al uw verbindingen via de bastionserver en overweeg om poortkloppingen te gebruiken voordat u een verbinding toestaat.

Zorg ervoor dat u de nieuwste software gebruikt en dat uw SSH-verbindingen voldoen aan de meest recente nalevingsnormen.

Controleer regelmatig

Gebruik naast de reguliere handmatige audits een tool voor continue monitoring. Beperk uw verbindingen alleen tot de noodzakelijke verbindingen en controleer of er wijzigingen in uw configuratie-instellingen zijn die niet vooraf zijn goedgekeurd.

Door in de gaten te houden wie er inlogt en met wat voor soort activiteit ze bezig zijn, kun je het aanvalsoppervlak beperken en het gemakkelijk maken om kwetsbaarheden vanaf het begin te lokaliseren.

Conclusie

Het gebruik van versleutelde SSH-tunnels is een veilige manier om toegang te krijgen tot PostgreSQL-databases vanaf externe servers. Het proces handhaaft codering voor de duur van de verbonden sessies. Hoewel geautomatiseerde SSH-programma's handig zijn voor terugkerende taken en andere administratieve systeemprocessen, kan het handig zijn om handmatig een SSH-tunnel te openen. In dat geval kunt u gemakkelijk al het verkeer en alle communicatie identificeren in plaats van een geautomatiseerde versie of client te gebruiken.

Als u PostgreSQL of een ander SQL-databasebeheersysteem gebruikt, moet u weten hoe u SSH-tunneling gebruikt. Het kan cruciaal zijn voor het bewaken en beheren van systeemprocessen en gegevensoverdrachten.

SSH-protocollen zorgen voor een zeer veilige verbinding en het volgen van extra voorzorgsmaatregelen helpt de integriteit van uw serververbindingen te behouden.


  1. Standaard rijvolgorde in SELECT-query - SQL Server 2008 versus SQL 2012

  2. Coalesce gebruiken in MySQL

  3. Hoe kan ik een maximum aantal rijen in de MySQL-tabel instellen?

  4. Verbinding maken met Vertica in IRI Workbench