iptables für einsteiger

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

iptables für einsteiger

Beitrag von Striker666 » 28.10.2006 11:08:53

Guten Tag,

Wie ich im Bereich Webserver schon erleuterte bin ich anfänger in Linux/Debian und hab da ein Problem.

Ich hab zwar schon die Such funktion des Forums genutzt, habe aber noch keine Lösung gefunden.

Ich versuche gerade meinen Server dicht zu machen mit iptables.

Ich hab folgende Probleme.

Code:
http://nopaste.debianforum.de/4387

Ich habe das Script selber geschrieben, aber schon einiges raus / hinzugefügt.

1. Ich habe das Problem wenn ich table "nat", welches Standart mäßig installiert sein sollte laut einigen F.A.Q.`s, zum laden angebe mit -t sagt der mir kennt der nicht.

Wie lege ich diese Tabelle an und welche eigenschaften muss dieses haben?

2. Da ich nur zugriff über SSH habe, und das Script aufrufe wird mein SSH gesperrt aber nicht die allow regeln beachtet.

3. Wenn ich die standart Policys auskommentiere funktioniert das Script und mit iptables -L werden alle accept und mydrop regeln ausgegeben.

Dann die möglichkeit die ich schon gelesen habe, währe es, das ich das script über einen CronJob laufen lasse welches das ausführt und dann, weil es ja local ausgeführt wird, auch die allow regeln durchläuft. Falls dies geht kennt jemand nen gutes Tutorial bzw. Faw für CronJobs? hab leider noch nichts vernünftiges für einsteiger gefunden :(

4. Ich habe auch gelesen das ich ggf. nen Interface angeben muss, aber um die korrekten einstellungen zu bekommen kann ich aud modprobe machen.
Aber wenn ich dies tuhe kommt folgender fehler:


Code: Alles auswählen

modprobe ip_conntrack


modprobe: Can't open dependencies file /lib/modules/2.4.20-021stab028.16.777-enterprise/modules.dep (No such file or directory)
Was kann ich tuhen? :(

Danke im vorraus![/code]

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.10.2006 14:46:27

modprobe: Can't open dependencies file /lib/modules/2.4.20-021stab028.16.777-enterprise/modules.dep (No such file or directory)
Das erwähnte "modules.dep" File könnte mittels "depmod" erzeugt werden.
Ein Debiankernel ist das sicherlich nicht, auf welcher Linux Distribution arbeitest du ?

Gruß
gms

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Striker666 » 28.10.2006 15:44:02

Code: Alles auswählen

depmod: Can't open /lib/modules/2.4.20-021stab028.16.777-enterprise/modules.dep for writing
:(

soll ich einfach mal den pfad erstellen und eine leere datei schreiben???

und ich arbeite mit debian sarge...

Edit:

wenn ich unter dem pfad ne leere datei mache sagt der

Code: Alles auswählen

depmod: cannot read ELF header from /lib/modules/2.4.20-021stab028.16.777-enterprise/modules.dep

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.10.2006 16:14:08

was liefert bei dir ein "cat /proc/version" und ein "uname -r" ?

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Striker666 » 29.10.2006 08:07:03

Code: Alles auswählen

uname -r:

2.4.20-021stab028.16.777-enterprise

Code: Alles auswählen

cat /proc/version

Linux version 2.4.20-021stab028.16.777-enterprise (moruga@current.eng.sw.ru) (gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)) #1 SMP Tue Jun 28 15:57:37 MSD 2005

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.10.2006 11:03:26

Striker666 hat geschrieben:Red Hat Linux 7.3 2.96-110
Wie kommt ein Red Hat Kernel in dein Debian Sarge ?

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Striker666 » 29.10.2006 11:25:56

hm... ^^

Das liegt vllt dadran, das ich einen V-Server habe mit root unterstützung auf dem ich eig. alles machen kann ausser Kernel neu kompilieren / Updaten.

Wollt den erst mal nur zum spielen haben und zum erweitern meiner kenntnisse bis ich mir zuhause einen Linux - Rechner besorgt habe.

Ich schätze mal das das System auf Red Hat läuft aber ich kann übers WI aussuchen welches OS ich nutzen will und da hab ich debian sarge ausgewählt.


Ich weis is net die beste idee aber sehs auch net ein so viel geld zum "rumspielen" und lernen zu investieren erst einmal ^^
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.10.2006 16:44:23

Vermutlich wurden die NAT Module für diesen Kernel nicht gebaut. Wird auch selten auf einem V-Server benötigt, was hast du eigentlich damit vor ?
Mit V-Servern habe ich mich eigentlich noch nicht wirklich beschäftigt. Aber nachdem das eigentlich nur eine "bessere Chroot Umgebung" ist, würde ich vermuten, daß du auch keine Module nachladen kannst.
Dann die möglichkeit die ich schon gelesen habe, währe es, das ich das script über einen CronJob laufen lasse welches das ausführt und dann, weil es ja local ausgeführt wird, auch die allow regeln durchläuft.
Auch wenn du das Script über SSH ausführst, wird es "lokal" ausgeführt. In beiden Fällen lauft der Prozeß auf deinem Server.
2. Da ich nur zugriff über SSH habe, und das Script aufrufe wird mein SSH gesperrt aber nicht die allow regeln beachtet.
eine TCP Verbindung ist bidirektional, es nutzt nichts Verbindungen in der INPUT Chain zu erlauben, wenn gleichzeitig in der OUTPUT Chain alles (außer "lo") gedroppt wird.

Gruß
gms

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 29.10.2006 17:48:20

Kleiner Tipp zum Basteln: erweiter doch mal deine MY_DROP-Chain um ne LOG-Regel. Dann siehst du, was verworfen wird. Grade beim Tuefteln mit den Regeln sehr hilfreich. Ausserdem schau dir mal an, wie du das state-Modul nutzt. Bei dir fehlen eigentlich fuer saemtliche Verbindungen die Regeln fuer die Antwortpakete, die werden alle gedropt.

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Striker666 » 29.10.2006 18:48:59

gms hat geschrieben: eine TCP Verbindung ist bidirektional, es nutzt nichts Verbindungen in der INPUT Chain zu erlauben, wenn gleichzeitig in der OUTPUT Chain alles (außer "lo") gedroppt wird.
AAAH XD

Das ich dadran nicht gedacht habe ^.~ dann ist das kein wunder das der SSH abgekackt ist da ich zwar rein kam aber der server nichts senden konnte das ich da nicht früher drauf gekommen bin grml xDD

vielen Dank jetzt gehts auch =D nun werd ich weiter testen wie nepos es schon sagte was gut zum probieren ist ^^
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Striker666 » 29.10.2006 22:04:36

Nexte Problem =O

Ich habe nun die Ports...

22,80,443,53 freigegeben, aber wenn ich nen ping nach aussen mache... dann bekomm ich host unreachable...

und wenn ich die iptables leere gehts wieder..


benötige ich noch einen port damit antworten vom server wieder rein kommen??
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.10.2006 22:18:07

Striker666 hat geschrieben:Ich habe nun die Ports...

22,80,443,53 freigegeben, aber wenn ich nen ping nach aussen mache... dann bekomm ich host unreachable...
ping hat nichts mit diesen TCP Ports (Protokoll) zu tun, ping funktioniert über das ICMP Protokoll
Für ping nach draußen mußt du "echo-request" in der OUTPUT Chain und "echo-reply" in der INPUT Chain erlauben.

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Striker666 » 30.10.2006 15:45:13

ah ok danke nun gehts =)


nun noch die letzte frage xD

wenn ich -m state machen will um was zu loggen... dann sagt der mir unknown chain/table...

muss ich das unbedint als modul nachladen oder kann ich die irgendwie noch selbst adden?
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 30.10.2006 15:52:04

Puh, normal muesste er das Modul selber laden. Du kannst aber eventuell auch ein

Code: Alles auswählen

modprobe ipt_state
machen.
Wie genau sieht deine Regel fuer das Loggen mit -m state aus?

Striker666
Beiträge: 24
Registriert: 26.10.2006 21:08:41
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Striker666 » 31.10.2006 13:38:34

Code: Alles auswählen


root:~# modprobe ipt_state
modprobe: Can't locate module ipt_state

Code: Alles auswählen


iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "

also mit modprobe hatte ich schon mehrere probleme genau wie mit modprobe ip_tables
Bin Neueinsteiger, in der Linux welt, seit bitte lieb xD

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 31.10.2006 13:49:21

Eventuell ist das Modul auch nicht mit gebaut worden. Oder es heisst anders.

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Beitrag von KingBonecrusher » 08.11.2006 23:05:36

Ich hab Dein Script mal estwas bearbeitet und getestet.

Code: Alles auswählen

#!/bin/bash

 
# Tabelle leeren
iptables -F
iptables -t mangle -F
iptables -X
iptables -t mangle -X
 

# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP


# Loopback-Netzwerk-Kommunikation zulassen
iptables -A OUTPUT -o lo -j ACCEPT				#JEGLICHER AUSGEHENDER VERKEHR
iptables -A INPUT -i lo -j ACCEPT				#JEGLICHER EINGEHENDER VERKEHR


# SMB
iptables -A OUTPUT -p tcp --sport netbios-ssn -j ACCEPT		#DATENVERKEHR RAUS
iptables -A INPUT -p tcp --dport netbios-ssn -j ACCEPT		#DATENVERKEHR REIN

# VMWARE
iptables -A OUTPUT -p tcp --sport 902 -j ACCEPT			#DATENVERKEHR RAUS
iptables -A INPUT -p tcp --dport 902 -j ACCEPT			#DATENVERKEHR REIN

# MAIL
iptables -A OUTPUT -p tcp --dport smtp -j ACCEPT		#MAILVERKEHR RAUS SMPT
iptables -A OUTPUT -p tcp --dport ssmtp -j ACCEPT		#MAILVERKEHR RAUS SSMTP
iptables -A INPUT -p tcp --sport smtp -j ACCEPT			#MAILANTWORT REIN SMPT
iptables -A INPUT -p tcp --sport ssmtp -j ACCEPT		#MAILANTWORT REIN SSMTP


 
# DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT			#ANFRAGE SENDEN
iptables -A INPUT -p udp --sport 53 -j ACCEPT			#ANFRAGE BEANTWORTEN



# HTTP & HTTPS
iptables -A OUTPUT -p tcp --dport http -j ACCEPT		#HTTP ANFRAGE SENDEN
iptables -A OUTPUT -p tcp --dport https -j ACCEPT		#HTTPs ANFRAGE SENDEN
iptables -A INPUT -p tcp --sport http -j ACCEPT			#HTTP ANTWORT
iptables -A INPUT -p tcp --sport https -j ACCEPT		#HTTPS ANTWORT


# SSH
iptables -A INPUT -p tcp --dport ssh -j ACCEPT			#DATENVERKEHR REIN
iptables -A OUTPUT -p tcp --sport ssh -j ACCEPT			#DATENVERKEHR RAUS
 
 
# ICMP Echo-Request (ping) zulassen und beantworten
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT	#ANTWORT EMPFANGEN
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT	#ANFRAGE EMPFANGEN
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT	#ANFRAGE ANTWORTEN
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT	#ANFRAGE SENDEN

Antworten