Hur blockera alla portar utom webbläsaren?

Permalänk
Medlem

Hur blockera alla portar utom webbläsaren?

Jag har försökt förstå hur iptables fungerar men får inte riktigt det jag vill att fungera. Hur blockerar jag så att alla portar är blockerade in och ut förutom de som behövs för firefox?

Permalänk
Inaktiv

@Tallrot: Du vill alltså bara tillåta webbtrafik? Tillåt port 80(HTTP) och 443(HTTPS).

Permalänk
Medlem

Jag provar att skriva såhär men kan ändå inte surfa. Någon som kan se vad som är fel?

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Permalänk
Rekordmedlem

Du lär väl åtminstone behöva dns också ? (53) eller ska du navigera hardcore med bara ipnummer

Visa signatur

R5 5600G, Asus ROG STRIX X470-F Gaming, WD SN850X 2TB, Seasonic Focus+ Gold 650W, Aerocool Graphite v3, Tittar på en Acer ET430Kbmiippx 43" 4K. Lyssnar på Behringer DCX2496, Truth B3031A, Truth B2092A. Har också oscilloskop, mätmikrofon och colorimeter.

Permalänk
Medlem
Skrivet av mrqaffe:

Du lär väl åtminstone behöva dns också ? (53) eller ska du navigera hardcore med bara ipnummer

DNS är för n00bs! "Eliten" surfar med IP-adresser enbart ;D

Visa signatur

..:: trickeh2k ::..
Windows 11 Pro - Ryzen 7 7800X3D - ASUS TUF B650-PLUS - Kingston FURY Beast DDR5 64GB CL36 - MSI MAG A850GL - MSI RTX 4080 VENTUS 3X OC - Acer Predator XB271HU - ASUS VG248QE - QPAD MK-85 (MX-Brown)/Logitech G PRO Wireless - Samsung 960 EVO 250GB, Samsung EVO 860 500GB, SanDisk Ultra II 480GB, Crucial MX500 1TB, Kingston KC3000 2TB - Steelseries Arctic 5 - Cooler Master Masterbox TD500 Mesh V2

Permalänk
Medlem

Du har gjort reglerna anpassade för en webbserver. Webbläsaren behöver port 80 för att kunna ansluta sig till servern. På vilken port inkommande trafik går varierar. Använd istället:
iptables -A OUTPUT -o eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -m state --state ESTABLISHED -j ACCEPT
Observera att klienten använder godtycklig hög port för inkommande svarstrafik. När förbindelsen etableras så kommer server och klient överens om vilka övriga portar skall användas. Port 80 är standardport för inkommande trafik till en http-server. Utgående trafik går via andra portar.

Visa signatur

Fagerja

Permalänk
Medlem
Skrivet av mrqaffe:

Du lär väl åtminstone behöva dns också ? (53) eller ska du navigera hardcore med bara ipnummer

Om TS möjligen vill begränsa till enbart webbläsning av ett fåtal tillåtna platser så kan DNS ersättas med att lägga in tillåtna platser i /etc/hosts.

Visa signatur

Fagerja

Permalänk
Medlem

Tack fagerja, nu funkar det fast bara om jag skriver in ip nummer för websidor. Hur öppnar jag för dns?

Permalänk
Medlem

Varför inte proxy istället för att få mer trevliga features som protokoll enforcement/antivirus/adblock/privacy enforcement/... om man nu skall blocka ner till bara webbsurf?
Vad är syftet?

Permalänk
Medlem

Bara ett enkelt test av öppna portar mm för en skoluppgift där jag bara vill ha så att firefox kan komma åt internet men inget annat.

Permalänk
Medlem

Här har du min standard brandvägg som jag använder på alla mina Linux maskiner.

#!/bin/bash

# INTERFACE WAN
INTEX="eth0"

# IPTABLES FOR IPV4
IPT="/sbin/iptables"

# IPTABLES FOR IPV6
IPT6="/sbin/ip6tables"

# FLUSH RULES IPV4
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X

# FLUSH RULES IPV6
$IPT6 -F
$IPT6 -X

# DEFAULT POLICY IPV4
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

# DEFAULT POLICY IPV6
$IPT6 -P INPUT DROP
$IPT6 -P FORWARD DROP
$IPT6 -P OUTPUT DROP

# STATES
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ALLOW LOOPBACK
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

Sedan öppnar du portar som du behöver

Visa signatur

| Citera för svar! | Gilla bra inlägg! |

Permalänk
Medlem
Skrivet av Tallrot:

Tack fagerja, nu funkar det fast bara om jag skriver in ip nummer för websidor. Hur öppnar jag för dns?

Du borde kunna lista ut det med reglerna som du redan fått presenterade för dig.

# http är tcp och port 80, du har redan denna regel.
iptables -A OUTPUT -o eth0 -p tcp--dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
# dns är via udp, och porten 53.
iptables -A OUTPUT -o eth0 -p udp--dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT

Visa signatur

Cisco - Linux - VMWare
-- Citera mig om ni vill få återkoppling --

Permalänk

Jag försöker konfigurera GUFW så att endast Firefox och inget annat ska tillåtas utgående trafik. Jag har förstått det som att man löser detta genom att neka all utgående trafik och lägga till en regel som tillåter utgående trafik på portarna 80 och 443. Men detta fungerar inte, all utgående trafik blockeras. Förstår inte varför det inte går, men jag fattar i och för sig inte allt som sägs i den här tråden heller Någon som kan förklara på ett enkelt sätt vad jag måste göra mer?

Permalänk
Medlem

Har du reglerna i rätt ordning? Regeln som tillåter utgående trafik på portarna 80 och 443 måste ligga före regeln som blockerar.Vill du att endast Firefox skall tillåtas utgående trafik blir det komplicerat då du först måste köra ett skript som tar reda på Firefoxs process ID. Men har du ingen annan webbläsare installerad så är det onödigt.

Visa signatur

Fagerja

Permalänk
Skrivet av fagerja:

Har du reglerna i rätt ordning? Regeln som tillåter utgående trafik på portarna 80 och 443 måste ligga före regeln som blockerar.Vill du att endast Firefox skall tillåtas utgående trafik blir det komplicerat då du först måste köra ett skript som tar reda på Firefoxs process ID. Men har du ingen annan webbläsare installerad så är det onödigt.

Tack för ditt svar och ursäkta mitt sena svar. Jag har inte gjort någon regel som blockerar all utgående trafik utan jag har ställt in GUFW på den inställningen ("utgående: neka"). Är det alltså så att det tar överhanden och blockerar alla andra regler? Om jag förstår det rätt kan en lösning alltså vara att skapa en manuellt inställd regel som blockerar allt och som föregås av en regel som tillåter de portar jag vill använda? Hur ser regeln som blockerar ut?

Jag har inte någon annan webbläsare utan bara Firefox, men jag vill inte att något annat program ska få ha tillgång till utgående trafik. Måste jag ha ett sådant där skript du talar om då också?

Permalänk

Tror jag har fått detta att fungera nu. Jag har följt stegen på den här sidan: http://ubuntuforums.org/showthread.php?t=1876124

All inkommande trafik nekas. All utgående trafik blockeras. Sedan har jag lagt till följande regler:

- En som tillåter port 53, 80 OCH 443 utgående (TCP)
- En som tillåter port 53 utgående (UDP)

Allt jag vill är att kunna surfa med Firefox och inget annat program eller bakgrundsprocess ska tillåtas trafik. Gör ovanstående inställningar det möjligt?

Permalänk
Medlem

@Mysterium:

Nej, vilket program som helst kan kommunicera via de portarna också. T.ex. om du har en annan webbläsare installerad.

Permalänk
Skrivet av Boombaaz:

@Mysterium:

Nej, vilket program som helst kan kommunicera via de portarna också. T.ex. om du har en annan webbläsare installerad.

Jag har ingen annan webbläsare än Firefox. Så även program som inte är webbläsare kan också kommunicera via de portarna? Hur ska man då på ett effektivt sätt kontrollera utgående trafik, det låter ju som om det inte är möjligt då?

Permalänk
Medlem
Skrivet av Mysterium:

Jag har ingen annan webbläsare än Firefox. Så även program som inte är webbläsare kan också kommunicera via de portarna? Hur ska man då på ett effektivt sätt kontrollera utgående trafik, det låter ju som om det inte är möjligt då?

"Vad som helst" kan använda port 80, inte bara HTTP. Det är upp till servern och klienten VAD som snackas på porten.
Vill du "garantera" att HTTP snackas så får du köra exempelvis en proxy.

Permalänk
Inaktiv
Skrivet av Mysterium:

Jag har ingen annan webbläsare än Firefox. Så även program som inte är webbläsare kan också kommunicera via de portarna? Hur ska man då på ett effektivt sätt kontrollera utgående trafik, det låter ju som om det inte är möjligt då?

Det man får göra är "deep package inspection". Där man helt enkelt läser av alla bitarna i varje paket och bedömmer om man gillar dem eller inte. Inte omöjligt, men ohyggligt jobbigt.

Permalänk
Skrivet av iXam:

"Vad som helst" kan använda port 80, inte bara HTTP. Det är upp till servern och klienten VAD som snackas på porten.
Vill du "garantera" att HTTP snackas så får du köra exempelvis en proxy.

Skrivet av anon81912:

Det man får göra är "deep package inspection". Där man helt enkelt läser av alla bitarna i varje paket och bedömmer om man gillar dem eller inte. Inte omöjligt, men ohyggligt jobbigt.

På min Windows-dator kör jag Kaspersky internet security och det programmet varnar när varje enskilt program vill ansluta till nätet och då kan man enkelt tillåta eller neka vart och ett av dessa anslutningsförsök. Varför ska det vara så svårt att få till en motsvarande enkel lösning i Ubuntu där man kan kontrollera enskilda program? Är jag ute och far efter något helt orimligt?

Permalänk
Inaktiv
Skrivet av Mysterium:

På min Windows-dator kör jag Kaspersky internet security och det programmet varnar när varje enskilt program vill ansluta till nätet och då kan man enkelt tillåta eller neka vart och ett av dessa anslutningsförsök. Varför ska det vara så svårt att få till en motsvarande enkel lösning i Ubuntu där man kan kontrollera enskilda program? Är jag ute och far efter något helt orimligt?

Ge min 1 minut ensam med din dator så surfar jag precis exakt var jag vill. Har du dessutom satt upp kaspersky är det inga problem för mig att via Chrome göra ungefär exakt vad jag vill, utöver att surfa hemsidor.

Jag trodde TS försökte göra inställningar på sin router. Att blockera detta på samma sätt som du gör med kaspersky på linux är trivialt.

Permalänk
Skrivet av anon81912:

Ge min 1 minut ensam med din dator så surfar jag precis exakt var jag vill. Har du dessutom satt upp kaspersky är det inga problem för mig att via Chrome göra ungefär exakt vad jag vill, utöver att surfa hemsidor.

Förutsätter inte detta att du har tillgång till datorn rent fysiskt? Jag menar attacker där obehöriga tar sig in utifrån och installerar programvara på min dator som sedan skickar iväg information olovligen.

Skrivet av anon81912:

Jag trodde TS försökte göra inställningar på sin router. Att blockera detta på samma sätt som du gör med kaspersky på linux är trivialt.

Vilken är då den triviala lösningen? Om jag förstod dig rätt var din lösning väldigt komplicerad?

Permalänk
Inaktiv
Skrivet av Mysterium:

Vilken är då den triviala lösningen? Om jag förstod dig rätt var din lösning väldigt komplicerad?

Ja kör man Ubuntu är det ju bara att öppna brandväggen (ser lite olika ut beroende på vilken version man kör). Blockera all utgående trafik och sedan vitlista exempelvis webbläsaren.

Googla på "Ubuntu 15.04 (eller annan version) firewall" för mer detaljer.,

Permalänk
Skrivet av anon81912:

Ja kör man Ubuntu är det ju bara att öppna brandväggen (ser lite olika ut beroende på vilken version man kör). Blockera all utgående trafik och sedan vitlista exempelvis webbläsaren.

Men det konstaterades ju ovan att det regleras via portarna, och att vitlista en viss port förhindrar ju inte att andra program också använder den porten. Om det finns något annat sätt att vitlista program på får gärna du, eller någon annan, upplysa mig om det.

Permalänk
Inaktiv
Skrivet av Mysterium:

Men det konstaterades ju ovan att det regleras via portarna, och att vitlista en viss port förhindrar ju inte att andra program också använder den porten. Om det finns något annat sätt att vitlista program på får gärna du, eller någon annan, upplysa mig om det.

Det konstaterades inte alls ovan. Det som konstaterades var att det finns metoder för att blockera portar. Jag menade att du skulle blockera applikationer du inte vill tillåta. Dessutom kan du blockera portarna. Då är du rätt säker.

Vill du vara mer säker kan du göra så att alla anslutningarna från datorn går via en proxy, varpå proxyn bara tillåter anslutningar till vissa sidor du definerat.

Permalänk
Skrivet av anon81912:

Det konstaterades inte alls ovan. Det som konstaterades var att det finns metoder för att blockera portar. Jag menade att du skulle blockera applikationer du inte vill tillåta. Dessutom kan du blockera portarna. Då är du rätt säker.

Det förutsätter väl att jag vet vilka applikationer det gäller och blockerar ju inte alla potentiella skadliga program som kan installeras utan min vetskap och som vill ha kontakt med nätet?

Permalänk
Inaktiv
Skrivet av Mysterium:

Det förutsätter väl att jag vet vilka applikationer det gäller och blockerar ju inte alla potentiella skadliga program som kan installeras utan min vetskap och som vill ha kontakt med nätet?

Jag tänker mig att du blockerar samtliga program och enbart tillåter vissa. Det kallas whitelisting.
Här finns ett litet GUI för att jobba med brandväggen https://help.ubuntu.com/community/Gufw Det kanske är enklare än terminalen.

Det verkar också lite oklart vad målet är jämfört med vad som står i texten. Är det så att du enbart vill låta användaren använda webbläsaren för att ansluta till nätet, men man får besöka alla hemsidor?

Permalänk
Skrivet av anon81912:

Jag tänker mig att du blockerar samtliga program och enbart tillåter vissa. Det kallas whitelisting.
Här finns ett litet GUI för att jobba med brandväggen https://help.ubuntu.com/community/Gufw Det kanske är enklare än terminalen.

Jag tycker att jag har läst ganska mycket om detta men ingenstans hittar jag hur man vitlistar enstaka program, annat än fliken för prekonfigurerade inställningar när man lägger till regler. Men där finns ju inte ens något så trivialt som Firefox med.

Skrivet av anon81912:

Det verkar också lite oklart vad målet är jämfört med vad som står i texten. Är det så att du enbart vill låta användaren använda webbläsaren för att ansluta till nätet, men man får besöka alla hemsidor?

Ja. Men är det även möjligt att precisera exakt vilka hemsidor man får besöka vore det bra. Målet är att jag vill kunna surfa (på de vanliga, säkra sidor jag regelbundet besöker) och att inget annat program på datorn ska få skicka iväg utgående trafik (någon annanstans) utan att jag har godkänt det.

Jag ber om ursäkt om jag har missat något totalt uppenbart, men du får gärna peka ut det för mig i så fall.

Permalänk
Medlem

Släpp hela idén med att blockera trafik per program istället för typ av trafik, skulle jag säga. Det är inte bättre, och det är inte säkrare.

Om du blockerar allt utom det du förstår behöver åtkomst, så kommer du blockera en hel massa bakgrundsprocesser som behöver nätverk, men som du inte känner till. Och du kommer sluta med ett operativsystem som inte fungerar som det ska. Och blockerar du apt eller motsvarande säkerhetsuppdateringar så kommer du sluta med ett system med sämre säkerhet.

"Brandväggar" i Windows som blockerar trafik per program ger inte ökad säkerhet. Det är bara ett sätt att hindra användaren från att göra saker han eller hon inte förstår. Det är trivialt för virus och annan skadlig mjukvara att ta sig genom, och skyddar enbart mot fall där användaren själv installerar ett program som inte försöker göra något fult, som han eller hon inte vill ska kunna komma åt nätverket. Och då är frågan varför han eller hon installerar det programmet till att börja med.

Det finns möjlighet att blockera trafik baserat på vilket program som genererat trafiken. Jag tror inte det finns något så bra system för det än dock.

Brandväggen i Linux är ganska vettigt konfigurerad från början, och vanliga användare behöver aldrig röra det, annat än att möjligtvis öppna ett par portar för något program.

Läs gärna på mer om brandväggar, och hur de egentligen fungerar. Det är ett ganska simpelt verktyg egentligen, som tillåter att man sätter upp väldigt komplexa system om man så vill.
GUFW och liknande är ganska dåliga om man vill förstå. De döljer en massa för en, och försöker göra det lätt för slutanvändaren. iptables, eller säg webmins grafiska skal till iptables, är ett bättre val om man verkligen vill förstå. Det håller en inte i handen, utan förväntar sig att användaren är kunnig. Men så får man också rå lågnivå-kontorll över exakt allt.
Och är det inte intressant, släpp det helt, och lita på standardkonfigurationen. Och använd GUFW eller liknande och bara öppna en port när det behövs. Och rör det inte mer än så.

Mina 2 cent i alla fall...