Använda Iptables på Linux
Den här guiden kommer att försöka förklara hur man använder iptables på linux på ett lättförståeligt språk.
Innehåll[Dölj]
|
Översikt
Iptables är en regelbaserad brandvägg som kommer att behandla varje regel i ordning tills den hittar en som matchar.
Todo: inkludera exempel här
Användande
Iptables-verktyget är vanligtvis förinstallerat på din Linux-distribution, men kör inte några regler. Du hittar verktyget här på de flesta distributioner:
/ Sbin / iptables
Blockera en enda IP-adress
Du kan blockera en IP med hjälp av parametern -s, ersätter 10.10.10.10 med adressen du försöker blockera. Du noterar i det här exemplet att vi använde -I-parametern (eller -insert fungerar också) i stället för bilagan, eftersom vi vill se till att denna regel visas först innan någon tillåter regler.
/ sbin / iptables -I INPUT -s 10.10.10.10 -j DROP
Tillåter all trafik från en IP-adress
Du kan växelvis tillåta all trafik från en IP-adress med samma kommando som ovan, men ersätter DROP med ACCEPT. Du måste se till att denna regel visas först innan några DROP-regler.
/ sbin / iptables -A INPUT -s 10.10.10.10 -j ACCEPT
Blockerar en port från alla adresser
Du kan blockera en port helt från att komma åt över nätverket genom att använda porten -port och lägga till porten för den tjänst du vill blockera. I det här exemplet kommer vi att blockera mysql-porten:
/ sbin / iptables -A INPUT -p tcp --port 3306 -j DROP
Tillåter en enda port från en enda IP
Du kan lägga till kommandot -s tillsammans med kommandot -dport för att ytterligare begränsa regeln till en viss port:
/ sbin / iptables -A INPUT -p tcp -s 10.10.10.10 --port 3306 -j ACCEPT
Visar aktuella regler
Du kan visa de aktuella reglerna med följande kommando:
/ sbin / iptables -L
Detta bör ge dig en effekt som liknar följande:
KÄLL INPUT (policy ACCEPT) målprotokälla destination ACCEPT all - 192.168.1.1/24 var som helst ACCEPT all - 10.10.10.0/24 var som helst DROP tcp - var som helst var som helst tcp dpt: ssh DROP tcp - var som helst var som helst tcp dpt: mysql
Den faktiska produktionen kommer att vara lite längre, förstås.
Rensa nuvarande regler
Du kan rensa bort alla aktuella regler genom att använda spolningsparametern. Detta är mycket användbart om du behöver sätta reglerna i rätt ordning, eller när du testar.
/ sbin / iptables - flush
Fördelning Specifika
Medan de flesta Linux-distributioner innehåller en form av iptables, innehåller några av dem även inslag som gör hanteringen lite enklare. Oftast är dessa "addons" i form av init-skript som tar hand om initiering av iptables vid uppstart, även om vissa distribueringar även innehåller fullblåst wrapper-applikationer som försöker förenkla det vanliga fallet.
Gentoo
De iptables init script på Gentoo kan hantera många vanliga scenarier. Till att börja med kan du konfigurera iptables att ladda vid start (vanligtvis vad du vill):
rc-update lägg till iptables standard
Med init-scriptet kan du ladda och rensa brandväggen med ett kommando som är lätt att komma ihåg:
/etc/init.d/iptables start /etc/init.d/iptables stop
Init-scriptet hanterar detaljerna om att fortsätta din nuvarande brandväggskonfiguration vid start / stopp. Således är din brandvägg alltid i det tillstånd du lämnade det. Om du behöver manuellt spara en ny regel kan init-scriptet hantera detta också:
/etc/init.d/iptables spara
Dessutom kan du återställa din brandvägg till föregående sparade tillstånd (för det fall där du experimenterade med regler och nu vill återställa den tidigare arbetskonfigurationen):
/etc/init.d/iptables reload
Slutligen kan init-scriptet sätta iptables till ett "panik" -läge där all inkommande och utgående trafik blockeras. Jag är inte säker på varför det här läget är användbart, men alla Linux-brandväggar verkar ha det.
/etc/init.d/iptables panik
Varning: Starta inte panikläget om du är ansluten till din server via SSH; du kommer kopplas bort! Den enda gången du ska lägga iptables i panikläge är medan du är fysiskt framför datorn.