• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

IPtables Fehlermeldung nach Kernel Up- bzw. Downgrade.

Hallo zusammen,

ich konnte mich heute nach einem Sicherheitsupdate (aktuellen Suse 9.0 Kernel geladen) nicht mehr mit meinem Rootserver verbinden. Laut Aussage des Tech-Support im Data-Center unterstützt der aktuelle Kernel die verbaute Netzwerkkarte nicht. Nachdem ein Mitarbeiter dann über ein Firmen-Image den alten Kernel 2.4.21-144 in mein /boot Verzeichnis einspielte, kam ich wieder an den Server ran, aber meine "iptables" funzten irgendwie nicht mehr. Beim Aufruf der Firewall über Webmin kommt jetzt nur folgende Fehlermeldung:

An error occured when checking your current IPtables configuration :

modprobe: Can't locate module ip_tables
iptables v1.2.8: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

This may indicate that your kernel does not support IPtables.

Ich habe "iptables" schon deinstalliert und neu installiert, hat aber auch nichts gebracht. Hat hier jemand ne Ahnung was ich machen muss damit es wieder funktioniert ?

Mit freundlichen Grüßen
Christian
 

gaw

Hacker
Das Problem ist dass die Module nicht aktualisiert wurden. Die Module die sich auf dem aktuellen Rechner befinden liegen wahrscheinlich in einem Verzeichnis das nicht zur Kernelversion passt. Selbst wenn durch den Imagetransfer ein passender Kernel wieder hergestellt ist, kann es sein, dass dies nicht fuktioniert weil die Modulversionen sich einfach anders nennen und SuSEconfig das System schon umgestellt hat. Mit dem Befehl insmod kannst du checken ob die entsprechenden Module, falls sie noch vorhanden sind überhaupt zum laufenden System kompatibel sind. Das entsprechenden Modul liegt in
lib/modules/KERNELVERSION/kernel/net/ip4/netfilter
KERNELVERSION steht dabei für eine Zahl wie 2.4.xx und entspricht dem laufenden Kernel. Durch das update besitzt du vielleicht mehrerer solcher Verzeichnise oder der Verzeichisname entspricht nicht der Kernelversion und das ist auch das Problem. SuSEconfig hat das System umgeschrieben und durch das Kopieren des alten Image wurden diese Veränderungen wahrscheinlich nicht mit korrigiert und nun gibt es die Probleme mit dem Auffinden der Module.
Wenn die alten Versionen vor dem upgrade noch existieren, kannst du mit
insmod /pfad_zu_den_Modulen/ip-tables.o
ausprobieren ob sich das Modul laden läßt. Funktionieren die Module kannst du sie einfach in das aktuelle Verzeichnis kopieren oder mit einem Script automatisch laden (*schmutziger hack*).

Haut es nicht hin, weil die alten Module gelöscht wurden, und sich der Kernel mit den neuen irgndwie nicht verträgt, bleibt noch die Möglichkeit sich die Sourcen des alten Kernel zu besorgen und diesen neu zu kompilieren. Dann werden die Module neu übersetzt und in das dazu passende Verzeichnis geschrieben. Dabei kannst du natürlich auch einen neueren Kernel nehmen und checken ob die Netzwerkkarte sich auf Quellcodeebene noch einbinden läßt.

Man kann natürlich auch 20€ in eine neue Karte investieren. Das erscheint mir angesichts der Sicherheitspolicen und um ein inkonsistenten System zu vermeiden noch die praktikabelste Lösung zu sein.


mfG
gaw
 
OP
C

Christian N.

Member
Ohhh ohh, hört sich ja kompliziert an. Ich habe jetzt die ganzen Dateien aus "/lib/modules/2.4.21-260-athlon/kernel/net" nach "/lib/modules/2.4.21-144-athlon/kernel/net" umkopiert und den Server neu gebootet. Nach der Eingabe von "iptables -L" gibt er mir folgendes aus:

Code:
 An error occured when checking your current IPtables configuration :

/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: unresolved symbol irq_stat_Rf250f975
/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: unresolved symbol create_proc_entry_R1f581db6
/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: unresolved symbol nf_register_sockopt_Rfa53849e
/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: unresolved symbol nf_unregister_sockopt_R9f93d832
/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: unresolved symbol remove_proc_entry_Rf454d331
/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: unresolved symbol proc_net_R1f76063e
/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: insmod /lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o failed
/lib/modules/2.4.21-144-athlon/kernel/net/ipv4/netfilter/ip_tables.o: insmod ip_tables failed
iptables v1.2.8: can't initialize iptables table `filter': iptables who? (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

This may indicate that your kernel does not support IPtables.

Eine andere Netzwerkkarte kann ich dem Data-Center leider nicht aufquatschen, da die Serverreihen alle die gleiche Hardware haben ;-) .

Viele Grüße
Christian
 

gaw

Hacker
Bist du eigentlich sicher, dass das System mit dem alten Kernel bootet? Die Fehlermeldungen rühren daher dass der Kernel mit den Modulen nicht übereinstimmt.
Normalerweise muss neben dem Kernelimage auch noch die passende initrd und die passenden System.map in das Verzeichnis /boot kopiert werden.

Abgesehen davon betrachten wir das Szenario bleiben dir nicht viele Möglichkeiten:

Möglichkeit 1: Backup einspielen falls vorhanden
Möglichkeit 2: Wichtige Konfigurationsdateien sichern und Neuinstallieren der ursprünglichen SuSE-Version
Möglichkeit 3: Kompilierung des Kernels.
Möglichkeit 4: Versuchen den passenden Kernel, die passende initrd die passende System.map zu finden und das System mit SuSEconfig in einen halbwegs stabilen und funktionsfähigen Zustand zurückzuversetzen.

Was du letztlich machst ist deine Entscheidung. Unter der Voraussetzung keine andere Netzwerkkarte einsetzen zu dürfen, würde ich Möglichkeit 3 auswälhen und versuchen einen neueren Kernel mit korrigiertem Sicherheitspatch als Source aufzutreiben und die Netzwerkunterstützung während der Konfiguration zu aktivieren.
Gründe:
1. Möglichkeit 1 fällt wegen Nichtvorhandensein aus, ansonsten hättest du es längst gemacht ;)

2. Den alten Kernel zurückzuspielen bedeutet bewusst ein Sicherheitsloch in Kauf zu nehmen. Schon damit du nicht haftbar gemacht werden kannst würde ich diese Lösung verwerfen oder nur auf ausdrückliche Anweisung mit Hinweis auf die Sicherheitslücken durchführen.

3. Theoretisch ist ein Rumgeprödel wie in Möglichkeit Nummer 4 zwar machbar, aber der Zeitwaufwand ist angesichts eingeschränkter Knowledgeressourcen nicht vorhersagbar, letztlich der Erfolg fraglich.

Da du selbst die Möglichkeit einer anderen Netzwerkkarte ausgeschlossen hast, folgt nach der Ausschließungsmethode den Kernel 2.4 neu zu kompilieren. Wie gesagt ich würde schauen ob sich deine Netztwerkkarte auf Sourcecodeebene nicht einbinden läßt. Eine Firewall sollte eh auf einem gehärteten Linuxsystem laufen und dazu gehört nunmal ein selbst compilierter Kernel der nur das können sollte, was unbedingt gebraucht wird. Mancher Linuxkernel auf einer Firewall läuft sogar als monolithischer Kernel, d.h. alle Funktionen die benötigt werden werden direkt in den Kernel integriert um die Möglichkeit auszuschließen dass sich Angreifer über gefälschte Module Zugang zum Kernel verschaffen. Es müssen dann nur noch ein paar Bootskripte angepasst werden. Hier lässt sich aus der Not eine Tugend machen.



mfG
gaw
 
OP
C

Christian N.

Member
Erstmal danke für Deine ausführlichen Beschreibungen. Ich kann das System so einfach leider nicht neu aufsetzen, da ich dort ca. 30 Domains mit Confixx und diversen Audio- bzw. Videostreams am laufen habe. Mir stehen jedoch 8GB Backup-Space so wie ein Recoverysystem zur Verfügung. Aber jetzt hier nochmal.....
Ich hatte den Server schon zu 100% auf Kernel "2.4.21-260-athlon" geupdatet, konnte dann jedoch nicht mehr drauf zugreifen. Der Support im Data-Center hat mein System dann über ein Masterimage wieder erreichbar gemacht, indem einfach das "/boot" Verzeichnis auf meine Platte aufgespielt wurde und mein originales "/boot" umbenannt worden ist. Der Befehl "uname -a" gibt mir jetzt den Kernel "2.4.21-144-athlon" aus.
Kann ich nicht einfach mit Yast meinen jetzigen Kernel nochmal neu installieren ? Wichtig ist nur das nach einem Reboot das Netzwerk gleich verfügbar sein muss, um mich connecten zu können.

Viele Grüße
Christian
 

gaw

Hacker
Zunächst solltest du den Link /usr/src/linux korrigieren. Der zeigt wahrscheinlich noch auf den 2.4.21-260. Anschließend solltest du das Script SuSEconfig laufen lassen. Wenn das nicht funktioniert würde ich erst den alten Kernel neu installieren und danach iptables ebenfalls noch mal neu installieren.
Abgesehen davon würde ich mich mit der Kernelkompilierung auseinandersetzen dann lassen sich solche Probleme schneller lösen. Es ist nämlich durchaus möglich mehrere Kernel parallel zu betreiben die sich auf Wunsch im grub oder lilo auswählen lassen.

mfG
gaw
 
OP
C

Christian N.

Member
Ohhh...ohhhh.... !!!!!!
"SuSEconfig" hat mein System permanent unerreichbar gemacht. Ich komme nicht mehr ran. Muss jetzt über eine Servicekonsole eine komplette Neuinstallation veranlassen :-(
Naja, hat vieleicht auch was gutes für sich.

Traurige Grüße
Christian
 
Oben