Delen via


Deel 2.4: Linux beveiligen met behulp van lokale firewall en externe HTTP-toegang toestaan

Van toepassing op: .NET Core 2.1, .NET Core 3.1, .NET 5

In dit artikel wordt uitgelegd hoe u een lokale firewall configureert om uw virtuele Linux-machine (VM) te beveiligen.

Voorwaarden

Er zijn geen vereisten om dit deel van de zelfstudie te voltooien.

Doel van dit deel

U leert hoe u uw Virtuele Linux-machine kunt beveiligen door een firewall te configureren.

Hoewel er geen vereisten zijn voor dit onderdeel, zou de ideale installatie de richtlijnen van de vorige onderdelen volgen. U moet het volgende hebben:

  • Nginx wordt automatisch uitgevoerd en luistert naar aanvragen die zijn verzonden op poort 80
  • Nginx geconfigureerd als een omgekeerde proxy en het routeren van binnenkomende aanvragen naar een ASP.NET Core-toepassing die luistert op poort 5000.
  • De ASP.NET Core-toepassing die is geconfigureerd om automatisch te starten nadat de server opnieuw is opgestart of wanneer het proces wordt gestopt of vastloopt

Een lokale firewall configureren om toegang vanaf externe computers toe te staan

Bijna alle Linux-distributies bevatten een lokale firewall met de naam iptables. Deze beginnershandleiding is voldoende om snel aan de slag te gaan. Iptables is een lichtgewicht maar krachtige firewall die gebruikmaakt van beleidsketens om verkeer toe te staan of te blokkeren.

Volgens de Help-pagina van de Ubuntu-community worden iptables standaard geïnstalleerd op alle officiële Ubuntu-distributies en geconfigureerd om al het verkeer toe te staan.

Hoewel iptables een lichtgewicht firewall is, is het niet eenvoudig om de permanente regels te beheren. Gelukkig zijn er verschillende hulpprogramma's voor firewallconfiguraties die de taak van het configureren van firewallregels in Linux veel eenvoudiger maken. Volgens de officiële Documentatie van Ubuntu Firewall is het standaardhulpprogramma voor firewallconfiguratie voor Ubuntuufw. Dit hulpprogramma biedt een gebruiksvriendelijkere methode dan iptables biedt voor het maken van een firewall op basis van een IPv4- of IPv6-host.

Notitie

ufw is in eerste instantie standaard uitgeschakeld. Daarom moet u het inschakelen om het te kunnen gebruiken.

De Linux-VM die in deze zelfstudie is gebruikt, wordt niet beveiligd door een firewallregel. Dit komt doordat er geen gedefinieerde regels zijn, hoewel iptables worden geïnstalleerd en uitgevoerd.

Schermopname van de opdracht sudo iptables.

Het doel is om alleen HTTP- en SSH-verkeer (Secure Shell) toe te staan om de virtuele machine van buitenaf te bereiken. Volg deze stappen om dit te bereiken:

  1. Voordat u dit inschakelt ufw, moet u ervoor zorgen dat de standaardbeleidsregel is ingesteld op toestaan. Anders loopt u het risico dat de SSH-verbinding met de VIRTUELE machine verloren gaat. De standaardregel is de regel die wordt verwerkt als er geen andere regel overeenkomt. Als u de standaardregel 'toestaan' inschakelt, zorgt u ervoor dat binnenkomend SSH-verkeer niet wordt geblokkeerd. Op dit moment is er helemaal geen regel voor weigeren. Daarom is al het binnenkomende verkeer toegestaan.
  2. Belangrijk

    Voeg expliciet SSH- en HTTP-regels voor toestaan toe. Als u de SSH-poort hebt geconfigureerd op een andere waarde dan de standaardwaarde van 22, moet u deze poort ook toestaan. Als u bijvoorbeeld de SSH-poort hebt gewijzigd in 2222, moet u deze opdracht uitvoeren: sudo ufw allow 2222

  3. Stel de standaardregel in als een regel voor weigeren. Dit zorgt ervoor dat als het protocol iets anders is dan SSH of HTTP, de standaardregel 'weigeren' het verkeer weigert. Binnenkomend HTTP-verkeer wordt bijvoorbeeld geweigerd.
  4. Schakel de ufwoptie in.

De opdrachten voor deze stappen worden weergegeven in de volgende schermopname.

Schermopname van zes sudo-opdrachten.

Dit gebeurt in elke stap.

  1. controleert de status van de ufw door de opdracht uit te sudo ufw status verbose voeren. De ufw is standaard niet ingeschakeld en is inactief.

  2. voert de opdracht uit sudo ufw default allow . Omdat er geen andere regel is dan de standaardregel 'toestaan', wordt elke poort op de VIRTUELE machine beschouwd als open.

  3. Belangrijk

    Voeg het SSH-protocol toe aan de lijst met toegestane bestanden door de opdracht uit te sudo ufw allow ssh voeren. Protocol.ssh is een bekend protocol en wordt gedefinieerd in het bestand /etc/services . Daarom kan 'ssh' worden gebruikt in plaats van '22'. Als u de SSH-service configureert om te luisteren op een andere poort dan de standaardpoort van 22, moet u de andere poort expliciet toevoegen. Als u bijvoorbeeld SSH configureert om naar poort 2222 te luisteren, voert u deze opdracht uit: sudo ufw allow 2222.

  4. Sta het HTTP-protocol toe door het uitvoeren sudo ufw allow http. HTTP is een bekend protocol dat is gedefinieerd in het bestand /etc/services. Daarom kan de protocolnaam worden gebruikt en kan de sudo ufw allow http opdracht worden uitgevoerd. Lopen sudo ufw allow 80 is ook perfect geldig.

    Notitie

    Nadat u zowel de SSH- als de HTTP-protocollen hebt toegestaan, moet u alle andere protocollen toevoegen aan de lijst weigeren.

  5. U kunt dit doen door de standaardregel te wijzigen om te weigeren door de opdracht uit te sudo ufw default deny voeren. Alleen de SSH- en HTTP-protocollen zijn toegestaan. De andere protocollen worden geweigerd.

  6. Schakel ufw in.

Dit is de sudo ufw status verbose uitvoer nadat u deze procedure hebt voltooid.

Schermopname van de uitgebreide opdracht sudo ufw-status.

Nadat de firewall is geconfigureerd, test u of deze werkt.

De lokale firewall testen

De firewall testen is eenvoudig: maak een regel voor weigeren voor het HTTP-protocol en probeer vervolgens toegang te krijgen tot de site vanaf een andere computer. De aanvraag moet worden geblokkeerd.

Voordat u deze regel voor weigeren maakt, moet u ervoor zorgen dat de toepassing toegankelijk is voor de browser in de huidige configuratie. Hiervoor bewerkt u het bestand C:\Windows\System32\drivers\etc\hosts op de clientcomputer door de buggyamb-hostnaam toe te voegen en het openbare IP-adres van uw Linux-VM te gebruiken. De buggyamb-hostnaam lost het IP-adres van de Linux-VM op. U kunt elke hostnaam toevoegen aan uw hostbestand of u kunt proberen rechtstreeks verbinding te maken met het openbare IP-adres van uw Linux-VM.

Schermopname van welkomstpagina.

Nadat u hebt gecontroleerd of HTTP-aanvragen de VIRTUELE machine kunnen bereiken, probeert u een regel in te schakelen waarmee HTTP-verkeer wordt geblokkeerd. Dit zorgt ervoor dat de firewall werkt. U doet dit door een regel voor weigeren voor HTTP toe te voegen door deze uit te voeren sudo ufw deny http. Hiermee worden twee regels voor weigeren toegevoegd voor het HTTP-protocol (op poort 80). De ene is voor IPv4, de andere is voor IPv6.

Schermopname van sudo ufw deny http command.

Open de browser opnieuw en probeer vervolgens toegang te krijgen tot de ASP.NET Core-toepassing die wordt uitgevoerd in Linux.

Schermopname van ongeldige pagina.

In deze schermopname ziet u het verwachte resultaat.

U kunt een vergelijkbare test rechtstreeks in de Virtuele Linux-machine uitvoeren met behulp van de wget opdracht. In de volgende schermopname ziet u de vereiste stappen voor dezelfde test door deze uit te voeren wget.

Schermopname van sudo vier opdrachten.

Dit gebeurt in elke stap.

  1. De regel 'weigeren' voor het HTTP-protocol is toegevoegd.

  2. De wget buggyamb-external opdracht is uitgevoerd. Zoals u kunt raden, wordt met de hostnaam 'buggyamb-external' het openbare IP-adres van de Linux-VM omgezet. U doet dit door het /etc/hosts bestand te bewerken met behulp van vi. Zoals weergegeven, wget probeerde er verbinding mee te maken, maar is het nooit gelukt. Als u de bewerking wilt verbreken, moest u op Ctrl+C drukken.

  3. Er is een regel 'toestaan' toegevoegd voor het HTTP-protocol.

  4. Het uitvoeren van de wget buggyamb-external opdracht heeft opnieuw verschillende resultaten opgeleverd. Deze keer kon wget er verbinding worden gemaakt omdat het HTTP-protocol was toegestaan. Zoals weergegeven, wget downloadt u het Index.html bestand naar uw huidige map.

U bent nu een stap dichter bij het voltooien van de vereiste configuratie om fouten op te sporen in de ASP.NET Core-toepassing. Voordat u naar het volgende deel gaat, moet u ervoor zorgen dat zowel SSH als HTTP zijn toegestaan in de lokale firewall.

Schermopname van de opdracht sudo ufw-status.

Volgende stappen

Deel 2.5: Kopieer bestanden uit uw ontwikkelomgeving naar een Virtuele Linux-machine en pak de bestanden vervolgens uit in Linux.