Permalänk
Medlem

Skapa en ny iptable.

Hej,

Gick i tankarna om att starta en irc server för polarna och gamla klassen.

Efter lite research så insåg jag att fan, undrar hur iptables ser ut på min server.
Nu är jag rätt novis på linux och särskilt iptables, men är mer hemma på firewalls. Som jag förstår det så har jag öppet för allt.
Det jag behöver öppna för är ssh från mitt lokala nätverk (har en access server) och en teamspeak server.
Det finns det ju hundra guider på, men har tyvärr inte en labb-miljö att testa något på och vill inte riktigt kicka ut folk från teamspeak severn, så det här med att flusha hela skiten och börja om gör mig lite orolig.
Så här ser iaf iptables ut nu:

Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:http ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:https REJECT all -- anywhere anywhere reject-with icmp-host-prohibited ACCEPT tcp -- anywhere anywhere tcp dpt:ssh flags:FIN,SYN,RST,ACK/SYN Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT all -- anywhere anywhere REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination

Kollade på denna länken, därför det är en SSH rad med i första chainen.
Kollade senare på denna länk, för att flusha allt. Någon skriver i kommentarerna något om raw-tables, som jag ärligt inte vet vad det är :/
Hur ser det annars ut? Vad är en chain egentligen?
Om jag kör det i andra länken, kan jag bara lägga till accept på teamspeak portarna in och ut samt ssh mot mitt lokala nätverk?
Saknas det något annat?

Permalänk
Medlem

Du har ju en default policy som säger ACCEPT, så du behöver inte göra en brandväggsregel i den bemärkelsen för att släppa igenom något. Däremot så måste du göra en NATning om det är så att iptables du visar här är på din brandvägg.

Permalänk
Medlem
Skrivet av deegan:

Du har ju en default policy som säger ACCEPT, så du behöver inte göra en brandväggsregel i den bemärkelsen för att släppa igenom något. Däremot så måste du göra en NATning om det är så att iptables du visar här är på din brandvägg.

Ja som jag skrev, allting skickas igenom som det är nu.
Vill att endast teamspeak och ssh ska komma igenom. Möjligen 80 och 443 established med.

Servern fungerar som det är, vill som sagt inte att folk ska bli utkickade när jag ändrar reglerna.
Har aldrig direkt fixat med iptabel. Sitter mest med hårdvarubrandväggar. (Har dock ingen firewall hemma, om man inte räknar min asus router)

Det jag undrar är väl egentligen vad som är ett måste att tillåta i brandväggen, behövs det något mer än endast ssh och teamspeak, för att servern fortfarande ska rulla?

Permalänk
Medlem

Hej,

Vad är det för distribution du kör på servern? Har du fler än ett nätverkskort i servern? Står den som router/NAT eller ska du helt enkelt bara filtrera vad för trafik som får tas in?

Permalänk
Medlem
Skrivet av jagardaniel:

Hej,

Vad är det för distribution du kör på servern? Har du fler än ett nätverkskort i servern? Står den som router/NAT eller ska du helt enkelt bara filtrera vad för trafik som får tas in?

Hej, jag kör CentOS (vill jag minnas), är det olika syntaxer för iptables i olika distar?
Nej 1 nätverkskort, har som sagt en asus router.
Vill bara filtrera trafiken som går in, och ut för den delen

Permalänk
Medlem
Skrivet av Sushifrukt:

Hej, jag kör CentOS (vill jag minnas), är det olika syntaxer för iptables i olika distar?
Nej 1 nätverkskort, har som sagt en asus router.
Vill bara filtrera trafiken som går in, och ut för den delen

Syntaxen ska vara densamma, men det varierar lite hur man ska hantera sina regler (vart dessa ska lagras, hur reglerna laddas in vid uppstart etc). Vilken version av CentOS är det? Den nya versionen (7) använder ett mellanlager (firewalld) för att styra reglerna. Begrep mig inte på det alls, men det är nog smidigt när man väl behärskar det. Har du CentOS 6.x så tror jag inte firewalld används, och själva konfigurationen lagras i /etc/sysconfig/iptables.

Mitt förslag är att börja väldigt enkelt. Finns många guider där ute som trixar till det ordentligt i onödan. Här är ett simpelt exempel som kan passa en server med ett nätverkskort som enkelt vill begränsa in-trafik.

*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT COMMIT

Som default så kommer all in och forward-trafik droppas, men allt utåt är tillåtet. Kommunikation in mot loopback tillåter vi, annars kommer vi nog få klagomål av systemet. Vi tillåter vem som helst att ansluta in på 22 och 80, men samtidigt tillåts anslutningar in som redan är etablerade. Annars hade det blivit bekymmer när servern kommunicerar ut mot någonting utanför sig själv, som ska svara tillbaka. ICMP tillåter vi inåt. Vill du t ex endast tillåta ett visst subnät eller maskin att ssh:a in så kan du använda -s växeln; -A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT

Nu sitter jag tyvärr inte vid en CentOS-maskin och kan inte bekräfta, men detta bör fungera: Klistra in dessa (eller dina egna ihopsatta regler) till /etc/sysconfig/iptables. Alternativt så flushar du dina regler helt och hållet, konfigurerar dessa via iptables ifrån skalet och sedan använder iptables-save > /etc/sysconfig/iptables för att lagra ner dessa. När du kör service iptables restart så bör CentOS läsa in reglerna ifrån denna fil och applicera dessa (detta görs även vid uppstart av maskinen). Du kan använda iptables -nvL för att bekräfta att det slagit igenom.

Är allt på plats och fungerar så kan man sedan ta steget längre genom att skapa egna kedjor där man t ex kan logga viss trafik eller exempelvis rate-limit:a anslutningar mot portar (förslagsvis SSH) för att stänga ute bruteforce-försök.

Permalänk
Medlem
Skrivet av jagardaniel:

Syntaxen ska vara densamma, men det varierar lite hur man ska hantera sina regler (vart dessa ska lagras, hur reglerna laddas in vid uppstart etc). Vilken version av CentOS är det? Den nya versionen (7) använder ett mellanlager (firewalld) för att styra reglerna. Begrep mig inte på det alls, men det är nog smidigt när man väl behärskar det. Har du CentOS 6.x så tror jag inte firewalld används, och själva konfigurationen lagras i /etc/sysconfig/iptables.

Mitt förslag är att börja väldigt enkelt. Finns många guider där ute som trixar till det ordentligt i onödan. Här är ett simpelt exempel som kan passa en server med ett nätverkskort som enkelt vill begränsa in-trafik.

*filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT COMMIT

Som default så kommer all in och forward-trafik droppas, men allt utåt är tillåtet. Kommunikation in mot loopback tillåter vi, annars kommer vi nog få klagomål av systemet. Vi tillåter vem som helst att ansluta in på 22 och 80, men samtidigt tillåts anslutningar in som redan är etablerade. Annars hade det blivit bekymmer när servern kommunicerar ut mot någonting utanför sig själv, som ska svara tillbaka. ICMP tillåter vi inåt. Vill du t ex endast tillåta ett visst subnät eller maskin att ssh:a in så kan du använda -s växeln; -A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 22 -j ACCEPT

Nu sitter jag tyvärr inte vid en CentOS-maskin och kan inte bekräfta, men detta bör fungera: Klistra in dessa (eller dina egna ihopsatta regler) till /etc/sysconfig/iptables. Alternativt så flushar du dina regler helt och hållet, konfigurerar dessa via iptables ifrån skalet och sedan använder iptables-save > /etc/sysconfig/iptables för att lagra ner dessa. När du kör service iptables restart så bör CentOS läsa in reglerna ifrån denna fil och applicera dessa (detta görs även vid uppstart av maskinen). Du kan använda iptables -nvL för att bekräfta att det slagit igenom.

Är allt på plats och fungerar så kan man sedan ta steget längre genom att skapa egna kedjor där man t ex kan logga viss trafik eller exempelvis rate-limit:a anslutningar mot portar (förslagsvis SSH) för att stänga ute bruteforce-försök.

Tack så mycket! Riktigt bra början, kan man ställa in så ssh bara fungerar med några adresser ev ett nätverk, typ ett /24 nät?
Kan säkerligen googla mig fram till detta, men får bli imorgon på tåget till jobbet!

Permalänk
Medlem

Ja, med växeln -s. Som jagardaniel skrev. IP-adressen kan vara publik eller privat och du kan flera sådana regler.
https://www.frozentux.net/documents/iptables-tutorial/

Permalänk
Medlem
Skrivet av fagerja:

Ja, med växeln -s. Som jagardaniel skrev. IP-adressen kan vara publik eller privat och du kan flera sådana regler.
https://www.frozentux.net/documents/iptables-tutorial/

Derp, va lite sent för mig igår, tack