Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met SSH-postuurbeheer kunt u de SSH Server-beveiligingspostuur controleren en configureren op ondersteunde Linux-distributies, waaronder Ubuntu, Red Hat, Azure Linux en meer. SSH-houdingbeheer kan naadloos worden geïntegreerd met Azure Governance-services (beleid, machineconfiguratie), zodat u het volgende kunt doen:
- Zorgen voor naleving met SSHD-standaarden in uw branche of organisatie
- Kwetsbaarheid voor aanvallen verminderen van extern beheer op basis van sshd
- Zorgen voor consistente sshd- in uw vloot voor beveiliging en productiviteit
Om u te helpen de naleving van auditors te demonstreren (en om waar nodig actie te ondernemen) bevat elke nalevingscontrole bewijs via het redenen veld dat aangeeft hoe naleving of niet-naleving is vastgesteld.
U kunt de SSHD-parameters (poortnummer, toegestane groepen, enzovoort) aanpassen of de standaardwaarden van het beleid gebruiken, die zijn afgestemd op de Azure-beveiligingsbasislijn voor Linux.
Documentatie voor aan de slag
- Quickstart: Zie Quickstart: SSH-houdingsbeheer toepassen op een testmachinevoor een praktijkervaring.
- Overzicht en verwijzing: Ga verder met dit artikel voor conceptuele informatie, naslaginformatie en veelgestelde vragen.
Alleen-controle versus gedrag controleren en configureren selecteren
Wanneer u een beleid voor SSH-houdingsbeheer toewijst, kunt u gedrag voor alleen-controleren (ook wel 'Controle' genoemd) kiezen of gedrag van (ook wel Configureren genoemd).
| Beleidsdefinitie | Azure Policy-effect | Opmerkingen over wat u kunt verwachten | |
|---|---|---|---|
| alleen auditgedrag | **Audit** SSH Posture Control on Linux machines |
auditIfNotExists | Het beleid bevat meer beperkende instellingen vergeleken met veel populaire systeeminstallatiekopieën. Bijvoorbeeld denial of root ssh access. Verwacht daarom dat niet-compatibele statussen worden gerapporteerd. |
| Gedrag controleren en configureren | **Configure** SSH Posture Control on Linux machines |
deployIfNotExists- | Zoals hierboven, kunt u verwachten dat niet-compatibele statussen die in eerste instantie zijn gerapporteerd. Vervolgens worden de machines opnieuw geconfigureerd om te voldoen aan het beleid, wat resulteert in uiteindelijke conforme statussen. |
Voor bestaande machines beginnen beheerders meestal met gedrag alleen controle om de bestaande status te bepalen en afhankelijkheden te detecteren, zoals accounts die zijn toegestaan voor automatisering van systemen. Nadat u de bestaande vloot hebt vergeleken met de standaardinstellingen voor SSH-houdingsbeheer, bepaalt u welke parameters voor SSH-houdingsbeheer u wilt aanpassen. Na deze analyse en planning zou u vervolgens overstappen op gedrag voor controle en configuratie (met veilige implementatieprocedures zoals ringen).
Voor greenfield-scenario's of wegwerptestmachines kunt u ervoor kiezen om die analyse over te slaan en rechtstreeks naar het gedrag van audit en configuratie te gaan, beginnend met de standaardinstellingen voor sterke SSH-houdingsbeheer.
Voorzichtigheid
Voordat u machines configureert, moet u de nieuwe configuratie goed valideren. U kunt per ongeluk de toegang tot uw computers verliezen.
Voorbeelden van het per ongeluk vergrendelen van uzelf zijn:
- De toegepaste net-autorisatie-instellingen (combinatie van
allowUsers,denyGroups,permitRootLogin, enzovoort) staan de aanmeldingen die u nodig hebt niet toe - De
portdie u voor sshd configureert, wordt geblokkeerd door andere besturingselementen in uw omgeving (SELinux-beleid, hostfirewallregels, netwerkfirewallregels, enzovoort)- Houd er rekening mee dat veel Red Hat-familie-distributies standaard SELinux-beleidsregels hebben die blokkeren dat sshd andere poorten dan 22 gebruikt.
- Om te voorkomen dat bedrijfsteamgrenzen worden overschreden, is SSH-houdingsbeheer alleen geconfigureerde sshd. Er wordt momenteel niet geprobeerd om SELinux-beleidsregels, firewallregels, enzovoort op de geconfigureerde SSHD-poort te wijzigen. Als u deze scenario's met ons wilt bespreken, neemt u contact met ons op (zie Aanvullende bronnen hieronder).
Bereik van SSH-houdingsbeheer: regels, standaardinstellingen en aanpassingen
De volgende tabel bevat de items die kunnen worden gecontroleerd of geconfigureerd met SSH-houdingsbeheer. Elk van deze staat bekend als een regel.
Elke regel heeft een standaardconfiguratiewaarde die is afgestemd op de Azure-beveiligingsbasislijn voor Linux.
De meeste regels kunnen aangepaste waarden krijgen, via beleidstoewijzing parameters om te controleren op of configureren en controleren. Als de standaard in uw organisatie bijvoorbeeld poort 1111 (in plaats van 22) voor sshd gebruikt, stelt u de bijbehorende parameter in de beleidstoewijzing in. Deze parameters hebben id's die zijn opgenomen in de onderstaande tabel. Normaal gesproken wordt de korte parameternaam programmatisch gebruikt (bijvoorbeeld met az policy assignment create --params ...), terwijl de langere weergavenaam van de parameter wordt gebruikt in Azure Portal-werkstromen.
Zorg er bij het aanpassen van waarden voor dat u waarden opgeeft die compatibel zijn met SSHD.
allowGroups gebruikt bijvoorbeeld een door spaties gescheiden lijst met groepsnaampatronen. Zie de sshd_config man-paginater referentie. De sshd_config-verwijzing is ook handig voor het begrijpen van andere sshd-gedragingen, zoals hoe toestaan en lijsten met elkaar snijden.
Notitie
Als u de tabelindeling wilt behouden, zijn sommige celwaarden verplaatst naar voetnoten onder de tabel.
| Regelnaam | Standaardwaarde | Parameternaam | Weergavenaam van parameter |
|---|---|---|---|
| Zorg ervoor dat machtigingen voor /etc/ssh/sshd_config zijn geconfigureerd | 600 | <voetnoot 1> | Toegangsmachtigingen voor sshd_config |
| Controleren of IgnoreRhosts is ingesteld | ja | ignoreHosts |
Rhosts en shosts negeren |
| Zorg ervoor dat LogLevel is ingesteld | INFO | logLevel |
Uitgebreidheidsniveau van logboek |
| Zorg ervoor dat MaxAuthTries is ingesteld | 6 | maxAuthTries |
Maximum aantal verificatiepogingen |
| Zorg ervoor dat toegestane gebruikers voor SSH-toegang zijn geconfigureerd | @ <zie voetnoot 5> | allowUsers |
Toegestane gebruikers voor SSH |
| Zorg ervoor dat geweigerde gebruikers voor SSH-toegang zijn geconfigureerd | wortel | denyUsers |
Geweigerde gebruikers voor SSH |
| Zorg ervoor dat toegestane groepen voor SSH-toegang zijn geconfigureerd | * | allowGroups |
Toegestane groepen voor SSH |
| Zorg ervoor dat geweigerde groepen voor SSH-toegang zijn geconfigureerd | wortel | denyGroups |
Groepen geweigerd voor SSH |
| Zorg ervoor dat HostbasedAuthentication is ingesteld | Nee | hostBasedAuthentication |
Verificatie op basis van host |
| Zorg ervoor dat PermitRootLogin is ingesteld | Nee | permitRootLogin |
Of de hoofdmap zich kan aanmelden met behulp van ssh |
| Zorg ervoor dat PermitEmptyPasswords is ingesteld | Nee | permitEmptyPasswords |
Of de server aanmelding toestaat bij accounts met lege wachtwoordtekenreeksen |
| Zorg ervoor dat ClientAliveCountMax is ingesteld | 0 | clientAliveCountMax |
Het aantal actieve clientberichten dat kan worden verzonden zonder sshd berichten terug te ontvangen van de client |
| Zorg ervoor dat ClientAliveInterval is ingesteld | 3600 | clientAliveInterval |
Time-outinterval in seconden waarna, als er geen gegevens van de client zijn ontvangen, sshd een bericht verzendt om een antwoord aan te vragen |
| Controleren of MAC's zijn geconfigureerd | <voetnoot 2> | <voetnoot 3> | De lijst met beschikbare MAC-algoritmen (Message Authentication Code) |
| Zorg ervoor dat een banner is geconfigureerd | <voetnoot 4> | banner |
De inhoud van het bannerbestand dat wordt verzonden naar de externe gebruiker voordat verificatie is toegestaan |
| Zorg ervoor dat PermitUserEnvironment is ingesteld | Nee | permitUserEnvironment |
Of ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys worden verwerkt door sshd |
| Zorg ervoor dat coderingen zijn geconfigureerd | aes128-ctr,aes192-ctr,aes256-ctr | ciphers |
De lijst met toegestane coderingen |
| Zorg ervoor dat de SSH-poort is geconfigureerd | 22 | port |
De SSH-poort |
| Zorg ervoor dat het best practice-protocol wordt gebruikt | 2 | <geen parameter> | <geen parameter> |
Tabelnoten:
accessPermissionsForSshdConfigmessageAuthenticationCodeAlgorithmshmac-sha2-256,hmac-sha2-256-etm@openssh.com,hmac-sha2-512,hmac-sha2-512-etm@openssh.com#######################################################################\n\nAuthorized access only!\n\nIf you are not authorized to access or use this system, disconnect now!\n\n#######################################################################\n- Opmerking: dit wordt weergegeven aan eindgebruikers als:
####################################################################### Authorized access only! If you are not authorized to access or use this system, disconnect now! #######################################################################In
allowUsersde standaardwaarde '@' alle accounts op de computer vertegenwoordigt
Aanvullende beleidsparameters (niet-sshd)
Deze aanvullende beleidsparameters zijn beschikbaar tijdens beleidstoewijzing. Deze beïnvloeden het toewijzingsgedrag van Azure Policy, in plaats van sshd-instellingen op computers.
| Naam | Beschrijving | Verstek |
|---|---|---|
| Gekoppelde Arc-servers opnemen | Als u deze optie selecteert, gaat u ermee akkoord dat er maandelijks kosten in rekening worden gebracht per met Arc verbonden machine. | VALS |
| Effect | De uitvoering van dit beleid in- of uitschakelen | <Is afhankelijk van Het selecteren van alleen audit en het configureren van gedrag> |
Beleidsdefinities? Beleidstoewijzingen? Gasttoewijzingen? Computerconfiguratie? Hoe past dit allemaal bij elkaar?
Om aan de slag te gaan met SSH-houdingsbeheer, is uw kernactie het maken van een beleidstoewijzing. Uw beleidstoewijzing koppelt een beleidsdefinitie (bijvoorbeeld 'Controle van SSH-houding voor Linux-machines') aan een bereik (bijvoorbeeld 'my_factory_3_resource_group').
Wanneer u het systeem gebruikt, krijgt u aanvullende resourcetypen en terminologie te zien, zoals in het volgende wordt samengevat.
| Beschrijving | |
|---|---|
| beleidsdefinitie | Binnen de beleidsservice worden de abstracte gegevens beschreven die een cluster van beschikbare audit- en/of configuratiegedrag beschrijven. Bijvoorbeeld 'Controle van SSH-houding op Linux-machines'. |
| beleidstoewijzing | Hiermee koppelt u een abstracte beleidsdefinitie aan een concreet bereik, zoals een resourcegroep. De beleidstoewijzing kan parameters en andere eigenschappen bevatten die specifiek zijn voor die toewijzing. |
| machineconfiguratie | De Azure-service en -agentry die de controle- en instellingsconfiguratie op besturingssysteemniveau afhandelt. |
| gasttoewijzing | Resource die fungeert als een drierichtingskoppeling tussen de beleidstoewijzing, de machine en de machineconfiguratieservice. Beleid maakt en bewaakt waar nodig resources voor gasttoewijzingen. Zie Waarom zie ik de termen 'Gastconfiguratie' en 'Automanage' op plaatsen voor meer informatie over de terminologie 'guest' versus 'machine'? |
| Machine | Een machine met Arc of een Azure-VM. |
Over compatibiliteit (distributies, SSH Server-implementaties, enzovoort)
SSH-houdingsbeheer is ontworpen voor het algemene Linux-scenario van een langlopende SSH Server-exemplaar:
- waarvan de levenscyclus wordt beheerd door het init-systeem als systeem
- waarvan het gedrag wordt gebruikt door sshd_config bestand, consistent met openSSH sshd-gedrag
- waarvan de effectieve configuratie/status wordt onthuld door
sshd -Tuitvoer, consistent met openSSH sshd-gedrag
Voor alle ondersteunde distributies (zie hieronder), is dit de standaardgebruiksaanvraag voor SSH-server.
In principe kan op een computer een willekeurig aantal SSH-serverexemplaren worden uitgevoerd met verschillende levensduur, op basis van een willekeurig aantal codebases, en de configuratie van een willekeurig aantal plaatsen (configuratiebestanden, opdrachtregelargumenten, compilatietijdparameters, enzovoort). Dergelijke gevallen vallen op dit moment buiten het bereik van SSH-houdingsbeheer. Als u geïnteresseerd bent in dergelijke gevallen voor de toekomst, neem dan contact met ons op om te bespreken.
SSH-houdingbeheer is bedoeld voor gebruik op die Linux-distributies die worden ondersteund door Azure Policy en machineconfiguratie, met uitzondering van de distributies die tijdens de ontwikkeling in uitgebreide ondersteuning waren. Dit geldt met name voor 2024-06-05:
- AlmaLinux 9
- Amazon Linux 2
- Ubuntu Server 20.04
- Ubuntu Server 22.04
- Debian 10
- Debian 11
- Debian 12
- Azure Linux (CBL Mariner) 2
- Oracle Linux 7
- Oracle Linux 8
- CentOS 7.3
- CentOS 8
- RHEL 7.4
- RHEL 8
- RHEL 9
- Rocky Linux 9
- SLES 15
Voor zover haalbaar, wordt SSH-houdingscontrole getest met specifieke veelgebruikte systeemsamenstellingen van de bovenstaande distributies. Voorbeeld: samenstellingen van installatiekopieën van het besturingssysteem die zijn gepubliceerd door distributie-onderhouders in de Azure-galerie. Compatibiliteit met een specifieke machine tijdens runtime kan niet worden gegarandeerd omdat sysadmins en opbouwfuncties voor installatiekopieën vrij zijn om onderdelen uit het besturingssysteem te verwijderen, bestandssysteems alleen-lezen te maken, agentacties te blokkeren met SELinux, enzovoort.
Compatibiliteit met sshd_config Inclusief instructies
SSH-houdingscontrole probeert als volgt gebruik te maken van Include instructies in sshd_config:
- Voor controle-/leesacties: Vertrouw op sshd--T om de netconfiguratie weer te geven vanuit het perspectief van sshd, rekening houdend met eventuele insluitingen.
- Voor configureer-/schrijfacties:
- Als de SSHD-implementatie op de computer Bevat ondersteunt, koppelt u een nieuw SSH-postuurbeheer-specifiek bestand aan sshd_config (als include). Plaats vervolgens alle schrijfbewerkingen in het gekoppelde SSH-houdingsbeheerbestand. Dit verbetert de systeem hygiëne en traceerbaarheid van systeemwijzigingen.
- Als de SSHD-implementatie op de machine geen instructies ondersteunt, schrijft u configuratiewijzigingen rechtstreeks naar sshd_config.
Compatibiliteit met sshd_config Overeenkomst-instructies
SSH-houdingsbeheer is ontworpen om het kerngedrag van SSHD te controleren en te configureren. Er wordt niet geprobeerd om te communiceren met voorwaardelijke Match blokken (indien aanwezig) die verschillende SSHD-configuraties kunnen toepassen op specifieke populaties.
Hoe kan ik programmatisch query's uitvoeren op de resultaten?
Met behulp van ARG-query's (Azure Resource Graph) kunt u toewijzings- en statusgegevens integreren in uw eigen werkstromen. In deze voorbeelden wordt Search-AzGraph in PowerShell gebruikt om de ARG-query uit te voeren, maar PowerShell is niet vereist. U kunt ARG gebruiken vanaf veel toegangspunten, waaronder Azure Portal, Azure CLI, REST-aanroepen, enzovoort.
Op de hoogste hoogte van samenvattingen kunt u het aantal machines per bucket voor nalevingsstatus ophalen. Bijvoorbeeld:
$machineCountsQuery = @' // SSH machine counts by compliance status guestconfigurationresources | where name contains "LinuxSshServerSecurityBaseline" | extend complianceStatus = tostring(properties.complianceStatus) | summarize machineCount = count() by complianceStatus '@ Search-AzGraph -Query $machineCountsQuery <# Sample output from an environment with two machines: complianceStatus machineCount ---------------- ------------ Pending 1 Compliant 1 #>Als u wilt inzoomen zodat u de algehele nalevingsstatus per computer ziet, kunt u het volgende gebruiken:
$machinePerRowQuery = @' // SSH machine level compliance guestconfigurationresources | where name contains "LinuxSshServerSecurityBaseline" | project machine = split(properties.targetResourceId,'/')[-1], complianceStatus = properties.complianceStatus, lastComplianceStatusChecked = properties.lastComplianceStatusChecked '@ Search-AzGraph -Query $machinePerRowQuery <# Sample output: machine complianceStatus lastComplianceStatusChecked ------- ---------------- --------------------------- sshdemovm01 Compliant 2/15/2024 11:07:21 PM sshdemovm02 Pending 1/1/0001 12:00:00 AM #>Als u wilt inzoomen op instellingsdetails, kunt u het volgende gebruiken:
$settingPerRowQuery = @' // SSH rule level detail GuestConfigurationResources | where name contains "LinuxSshServerSecurityBaseline" | project report = properties.latestAssignmentReport, machine = split(properties.targetResourceId,'/')[-1], lastComplianceStatusChecked=properties.lastComplianceStatusChecked | mv-expand report.resources | project machine, rule = report_resources.resourceId, ruleComplianceStatus = report_resources.complianceStatus, ruleComplianceReason = report_resources.reasons[0].phrase, lastComplianceStatusChecked '@ Search-AzGraph $settingPerRowQuery <# Sample output: machine rule ruleComplianceStatus ruleComplianceReason ------- --------------- ------ ------ sshdemovm01 Ensure permissions on /etc/ssh/sshd_config are configured true Access to '/etc/ssh/sshd_config' matches required ... sshdemovm01 Ensure SSH is configured to meet best practices (protocol 2) true 'Protocol 2' is found uncommented in /etc/ssh/sshd_config sshdemovm01 Ensure SSH is configured to ignore rhosts true The sshd service reports that 'ignorerhosts' is set to 'yes' sshdemovm01 Ensure SSH LogLevel is set to INFO true The sshd service reports that 'loglevel' is set to 'INFO' sshdemovm01 Ensure SSH MaxAuthTries is configured true The sshd service reports that 'maxauthtries' is set to '6' sshdemovm01 Ensure allowed users for SSH access are configured true The sshd service reports that 'allowusers' is set to '*@*' sshdemovm01 Ensure denied users for SSH are configured true The sshd service reports that 'denyusers' is set to 'root' sshdemovm01 Ensure allowed groups for SSH are configured true The sshd service reports that 'allowgroups' is set to '*' sshdemovm01 Ensure denied groups for SSH are configured true The sshd service reports that 'denygroups' is set to 'root' sshdemovm01 Ensure SSH host-based authenticationis disabled true The sshd service reports that 'hostbasedauthentication' is ... #>
Waarom zie ik de termen 'Gastconfiguratie' en 'Automanage' op locaties?
De Machine Configuration-service is ook wel bekend als gastconfiguratie en als Automanage Machine Configuration. U kunt deze namen tegenkomen wanneer u communiceert met services en documentatie. Bijvoorbeeld:
- In de Azure Resource Graph-queryvoorbeelden in dit artikel wordt de gegevenstabel
guestconfigurationresourcesgenoemd. - In Azure Portal wordt een handige weergave voor het observeren van resultaten 'Gasttoewijzingen' genoemd.
- Wanneer u in Azure Portal de relevante VM-extensie toepast om Machineconfiguratie in te schakelen, is de extensietitel 'Automatische machineconfiguratie'.
Voor SSH-houdingsbeheer is er geen duidelijk onderscheid tussen 'gast' en 'machine'. Machines met Arc en Azure-VM's komen in aanmerking.
Wat zijn de id's voor de ingebouwde beleidsdefinities?
In sommige gevallen, zoals het maken van beleidstoewijzingen met Azure CLI, kan het handig of noodzakelijk zijn om te verwijzen naar een beleidsdefinitie op id in plaats van de weergavenaam.
| displayName | legitimatiebewijs |
|---|---|
| Controle van SSH-houding op Linux-machines | /providers/Microsoft.Authorization/policyDefinitions/a8f3e6a6-dcd2-434c-b0f7-6f309ce913b4 |
| SSH-houdingsbeheer configureren op Linux-machines | /providers/Microsoft.Authorization/policyDefinitions/e22a2f03-0534-4d10-8ea0-aa25a6113233 |
Gerelateerde resources
- Neem contact op met Microsoft Ondersteuning voor ondersteuning met problemen, enzovoort
- Als u feedback wilt geven, functieaanvragen, enzovoort wilt bespreken, neemt u contact op met: linux_sec_config_mgmt@service.microsoft.com