# StratoPower-Server Firewall einrichten/konfig.



## bohlen (3. März 2005)

*Hallo!*

 Da ich zuvor von einen zu anderem Server umgezogen bin (von einigen gesperrt wegen zu hohen Serverbelastung) habe ich mich letztlich an Rootserver bei Strato entschlossen.

 Da meine Kenntnisse in Linux mangelhaft sind, werde ich sicherlich sehr viel zu tun haben. Ich bin bereit die Zeit und Aufwand zu investieren aber ohne vernünftige Hilfe, werde ich bestimmt scheitern.

 Ich betreibe einen Portal und Invisionboard mit fast 20.000 aktiven Usern. Zur Abendzeit sind auf ein mal gerade Mal 400 User Online.
 Einige von mir gebannte und "unbekannte" User haben meine Webseite schnell aufgefrischt (Tastatur Taste F5) so dass der Server einen Fehler zeigte: "Max connect User" und keiner konnte mehr rein. Da ich Sharedserver hatte, konnte ich nichts dagegen tun außer den Server wechseln. Vorher aber wurde ich gekündigt wegen der zur hohen Serverbelastung für die ich nichts tun konnte. Dann zog ich schnellstens zur einem anderen hoster, dort ging meine Webseite einige Stunden an der Nacht, tagsüber war die kaum erreichbar bis zwei Tage später meine Homepage ganz abgeschaltet wurde.

 Ich habe letztlich diesen Rootserver genommen jedoch ohne Kenntnisse wie ich den Firewall (IP-Tables) auf den Server hoch lade und richtig konfiguriere.

 Ich konnte jemanden bezahlen dass er für mich die Einstellung macht, so werde ich aber nie lernen und begreifen wie es geht. Ich will meine Webseite die schon seit Tagen Offline ist, schnellstens verfügbar machen. 

 Könnte jemand von Euch mir dabei helfen? Vielleicht gibt es ein Faq mit schritt für schritt Einleitung für Leier? Ich werde mir sicherlich Bücher kaufen, aber welche könntet Ihr mir empfehlen?

          Vielen dank voraus für Eure Hilfe
  Bohlen

_P.S.
  Es ist schon morgens, ich gehe jetzt schlafen _


----------



## VariableWorm (3. März 2005)

Für Leiern kann ich nur empfehlen, dass du den Server in den Händen derjenigen Person lässt, der für dich die Einrichtung übernommen hat.
 Das, was du hier schilderst, ist das schlimmste Problem, dass es mit Root Servern gibt. Irgendwelche Personen, die prinzipiell maximal rudimentäre Kenntnisse haben stellen sich das so vor, dass sie hier erklärt bekommen können, wie sie mit ihrem Server umzugehen haben.
 Letztendlich fehlen dir aber einfachste Dinge wie das Verständnis vom Linux Dateisystem und der Einrichtung eines FTP Servers (warum fragst du sonst, wie man iptables hochläd ?).

 Ich würde dir raten, deine hochfrequentierte Seite auf einen Managed Server zu legen, damit du mit dem administrativen Aufwand nicht belastet bist... da du damit scheinbar überfordert sein wirst.

  Vielleicht sind folgende Seiten ganz sinnvoll für dich:

http://www.jennings.homelinux.net/basics.html

http://www.linux-fuer-alle.de/subcat_show.php?catid=8


  Ansonsten bleibt mir nur zu sagen: Viel Glück !


 Edit:

http://iptables-tutorial.frozentux.net/iptables-tutorial.html

 Hier was zu IP-Tables !


----------



## Dennis Wronka (3. März 2005)

Das mit iptables hochladen versteh ich auch grad nicht.
Auf einem solchen Server sollte iptables schon drauf sein, ansonsten wuerde ich ganz schnell der Anbieter wechseln, wegen Inkompetenz.
Ueber die Konfiguration von iptables kannst Du hier  alles Noetige erfahren.
Falls Du nach der Lektuere dieses HowTo immer noch nicht weisst was Du mit iptables zu machen hast, dann schrei nochmal um Hilfe.


----------



## Arne Buchwald (3. März 2005)

Guck dir das Apache-Modul mod_throttle an.


----------



## bohlen (3. März 2005)

> Letztendlich fehlen dir aber einfachste Dinge wie das Verständnis vom Linux Dateisystem und der Einrichtung eines FTP Servers (warum fragst du sonst, wie man iptables hochläd ?).


 
 Das weiss ich doch wie man mit FTP umgeht und es ist ganz einfach in VISAS Server Admin den ftpserver einzurichten. Ich wuste aber nicht ins welchen Verezeichniss ichdie IPtables installieren soll und nach dem Upload installieren (ausführen) muß.



> Auf einem solchen Server sollte iptables schon drauf sein, ansonsten wuerde ich ganz schnell der Anbieter wechseln, wegen Inkompetenz.


  Habe gerade mit Support gesprochen, Sie haben mir empfohlen über Yast die Firewall einzuschalten. 
 Die IPtables sind auf dem Server, daher dieser Schrit können wir weglassen weil ich jetzt lieber Yast-Firewall nehmen würde. Ist einfacher zu konfigurieren.

  Nun ich bin in Yast drin, jetzt muß ich die Externe Schnittstelle die geschützt werden soll auswählen aus: eth0, ippp0, ppp0
  und die Interne Schnitstelle nur: eth0
 Am besten würde ich alles schützen abe ich will mich nicht selbst aussperren, kleine Hilfe könnte ich bei der Wahl gebrauchen. Danke


----------



## VariableWorm (3. März 2005)

die externe schnittstelle ist eth0... allerdings wuerde ich dir davon abraten... ich wette, dass nach einschaltung der SuSE Firewall dein SSH nicht mehr ... wenn du nicht genau weißt, was du tust, such dir lieber n tutorial zur Firewall...


----------



## Dennis Wronka (3. März 2005)

Wenn Du die Firewall ueber Yast konfigurierst kannst Du Dich, wie schon erwaehnt wurde, sehr leicht selbst aussperren.
Tollen Support haben die, dass die Dir so einen schwachsinnigen Vorschlag geben.
Vielleicht doch:


			
				myself hat gesagt.:
			
		

> ... Anbieter wechseln, wegen Inkompetenz.



Naja, jetzt sitzt Du da und musst also die Box absichern, ich wuerde Dir empfehlen, Dir wirklich das Packet-Filter-HowTo reinzuziehen. Da steht alles drin was Du wissen musst.
Hier nochmal der Link.


----------



## bohlen (3. März 2005)

Danke @Reptiler 

 Nach dem ich mich ausgeschlafen habe, werde ich mich damit weiter befassen.
 Ich habe bei Strato 12 Monatsvertrag, ich kann jetzt nicht wechseln.
 Ich muß jetzt da durch


----------



## VariableWorm (3. März 2005)

Du bist aber wahrscheinlich durch mangelnde Information zu Strato gelangt, weil sie eigentlich in der gesamten Root-Gemeinde bissel verschriehen sind. Allein schon dadurch, dass das Routing fuer das Berliner RZ ueber Holland geht.  Aber wie beschrieben, da musste wohl durch...


----------



## Dennis Wronka (3. März 2005)

bohlen hat gesagt.:
			
		

> Danke @Reptiler
> 
> Nach dem ich mich ausgeschlafen habe, werde ich mich damit weiter befassen.
> Ich habe bei Strato 12 Monatsvertrag, ich kann jetzt nicht wechseln.
> Ich muß jetzt da durch


Da der Telefonsupport ja bisher so kompetent war (Information: konfiguriere Firewall ueber Yast) wuerde ich sagen: Verlass Dich nicht auf die Weichbirnen und check lieber alles selbst. Bei Problemen kannste ja hier nachlesen, oder nachfragen.
Ich wuerde an Deiner Stelle nochmal da anrufen und konkret nach der Konfiguration der Firewall ueber die Shell, also ganz normal mit iptables, ohne Yast und sowas, fragen.
Da stehen die sicher auf dem Schlauch.
Wie gesagt, alle Infos zum Packet-Filtering gibt's im HowTo, ansonsten hab ich die Tage schon Firewall-Scripts hier in's Forum gestellt, die lassen sich recht easy anpassen und bei Bedarf kannste auch nochmal nachfragen.


----------



## bohlen (3. März 2005)

Hallo  Da bin ich wieder mit viele Fragen, habe mich gerade mit der Lektüre HowTo vertraut gemacht und bin dabei diese zum zweiten mal zu lesen.

   Ich bin bei "Rustys schnelle Anleitung zum Paketfilter" unsicher stehengeblieben.
  Nach dem ich das Befehl: # iptable -L eingegeben habe (kene mich jetzt schon bischen aus) habe ich beunruhige Antwort erhalten:
   # iptables -L
   Chain INPUT (policy ACCEPT)
   target     prot opt source               destination

   Chain FORWARD (policy ACCEPT)
   target     prot opt source               destination

   Chain OUTPUT (policy ACCEPT)
   target     prot opt source               destination

   Wie ich schon verstanden habe, mein Rootserver ist für alle offen, keine Regeln!
   Soll ich die Regeln die dort erwähnt wurden, einfügen?

```
# iptables -N block
  # iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
  # iptables -A block -m state --state NEW -i ! ppp0 -j ACCEPT
  # iptables -A block -j DROP
  
  ## Von INPUT und FORWARD Ketten zu dieser Kette springen
  # iptables -A INPUT -j block
  # iptables -A FORWARD -j block
```
 
 Edit:
 Damit Ihr wisst wie ich mein Server konfigurieren möchte, was ich nutzen will, gebe ich hier als Info:  html, php, mysql, mail ohne smtp, apache, ftp und Zugang zur PuTTY, ViSSAS, Mysqlfront - denke dass ist alles. 
 P.S. Ich bin mir bewüßt daß Mann diesen Thema nich an einem Tag oder Jahr richtig verstehen kann, wie gesagt, irgendwo muß mann anfangen. 
 Mich reiz das Thema, werde mir ganz bestimmt einige Bücher zulegen, bis dahin werde ich Euch mit Fragen überflütten bis ich gebannt werde (hoffe nicht  )


----------



## Dennis Wronka (4. März 2005)

Wichtig ist es zu wissen welches Netzwerk-Interface auf dem Server die Verbindung zur Aussenwelt herstellt. Mittels *ifconfig* kannst Du Dir alle aktiven Netzwerk-Interfaces anzeigen lassen.
Falls Du nur eines hast ist's ganz einfach. Wenn nicht kannst Du es evtl. am Namen erkennen, da bin ich mir bei so einem Root-Server aber nicht ganz so sicher da ich nicht glaube, dass der per PPP verbunden ist.
eth sind Netzwerkkarten, ppp sind Einwahlverbindungen.
Falls Du aber eth0 und eth1 hast, dann solltest Du mittels *tcpdump eth0* und *tcpdump eth1* feststellen auf welchem Device die Verbindungen reinkommen.
Zu wissen auf welchem Device Du die Firewall anbauen musst ist schonmal die halbe Miete. Andernfalls kannst Du Dir das Device in der Firewall-Konfiguration aber auch schenken und einfach fuer alle dicht machen.

So, jetzt mal zu ein paar Ports.
HTTP TCP 80
SSH TCP 22 (PuTTY connected ueber SSH, oder Telnet, aber Telnet ist unsicher)
FTP TCP 21
MySQL TCP 3306

PHP nutzt keinen eigenen Port, da das ja auf dem Webserver ausgefuehrt wird. Dementsprechend kommen auch PHP-generierte Websites von Port 80.
Dieses Vissas kenne ich nicht, ob MySQL-Front einen eigenen Port nutzt weiss ich nicht, koennte mir vorstellen, dass das auch ueber 3306 geht.
Ansonsten verraet Dir ein *nmap -sT localhost* was so an Ports offen ist.

Ach ja HTTPS (SSL-verschluesseltes HTTP) hat TCP 443.

So, ich glaub damit kannste jetzt erstmal weiterarbeiten.


----------



## bohlen (4. März 2005)

So sieht Portscan bei mir aus:







  Und hier meine Systemkonfiguratio. So kann Man besser sehen 






  Bei *nmap -sT localhost *habe ich so eine Antwort bekommen: command not found 
  @reptilier
 Kannst du mir bitte eine fertige Kette für mein Server basteln? Aber nur mit Zugang für HTTP, ich habe 3 mal HowTo gelesen und viel erfahren, leider konnte ich keine Kete zusammenbasteln die mein Rechner ganz ausspert und NUR zugang zur port 80 offen lässt (soll dabei ganz offen sein?).


----------



## Dennis Wronka (4. März 2005)

Ich kann Dir sowas schreiben, klar.
Wirklich nur Port 80? Bist Du sicher?
Brauchst Du nicht vielleicht auch noch ein paar Ports um z.B. per SSH zu connected oder die Admin-Oberflaeche zu erreichen?


----------



## bohlen (4. März 2005)

> Wirklich nur Port 80? Bist Du sicher?
> Brauchst Du nicht vielleicht auch noch ein paar Ports um z.B. per SSH zu connected oder die Admin-Oberflaeche zu erreichen?


 Doch bitte. Da bleibt mir noch einiges zb. ftp und mailserver wo ich noch üben könnte ohne Gefahr entgegen zu laufen mich auszusperren.


  Also, ich würde als erstes neue Kette erstellen mit der Bezeichnung z.B. "globalfirewall" 
  # iptables -N globalfirewall
 Und wie Man die Ports sperrt, keine Ahnung. Es steht dort in der HowTo wie Man die Kette erstellt und wieder löscht, Regeln aufstellt aber über Portsperrung habe ich nichts gefunden. Ich vermute dass man anhand der Regeln die Verbindung kontroliert aber es ist zur komplex um da durchzublicken.

 Noch etwas, was hälts du von diesem Buch? Ist das richtige für mich?
http://www.amazon.de/exec/obidos/ASIN/3898422607/ref=pd_bxgy_text_1/302-9283941-7176840


----------



## Dennis Wronka (4. März 2005)

Das Buch hoert sich nicht schlecht an, koennte schon hilfreich sein.
Und der Preis ist auch echt gut. 22 Euros fuer knapp 600 Seiten kann sich schon sehen lassen.

Okay, ich schreib Dir hier mal ein kurzes Script hin mit dem Du alles bis auf HTTP dicht machst. Setz es aber nicht in der Form ein, weil Du Dich dann wohl aussperren wirst.

```
iptables -N firewall
iptables -A firewall -p tcp --dport 80 -j ACCEPT
iptables -A firewall -i lo -j ACCEPT
iptables -A firewall -j DROP
iptables -A INPUT -j firewall
```

Zur Erklaerung:
Die erste Zeile erstellt die Kette *firewall*, welche in den naechsten 3 Zeilen mit Inhalt gefuellt wird.
Zuerst wird eingetragen, dass Pakete an TCP-Port 80 (der HTTP-Port) akzeptiert werden sollen.
Danach folgt die Anweisung zum Akzeptieren aller Pakete auf der Interface lo. Das ist das Loopback-Interface, das wird in der Regel von Programmen genutzt um intern miteinander zu kommunizieren.
Zeile 4 laesst dann alle Pakete die nicht zuvor akzeptiert wurden droppen. Du kannst auch REJECT anstelle von DROP nutzen. Der Unterschied ist, dass bei DROP keine ICMP-Fehlermeldung an den Client geschickt wird.
Zu guter Letzt wird die Kette *firewall* noch in die Kette *INPUT* eingefuegt, damit eingehende Pakete durch diese Kette geschleust werden.

Ich denke anhand dieses Beispiels kannst Du einigermassen nachvollziehen wie Du weiter vorgehen musst um auch die anderen Ports zu oeffnen.
Allgemein ist es auf jeden Fall sinnvoller alles per DROP oder REJECT abzuweisen und nur zu oeffnen was benoetigt wird.
Du musst Pakete auf jeden Fall vor dem ultimativen DROP (iptables -A firewall -j DROP) akzeptieren, da Pakete die einmal akzeptiert oder gedropt wurden aus der Kette fliegen und nachfolgende Regeln fuer diese Pakete keine Bedeutung mehr haben.


----------



## VariableWorm (4. März 2005)

ich hätte ihm lieber ein richtiges beispiel fuer ssh gezeigt...  wenn er deine chain richtig kopiert und die ssh chain dann falsch macht, dann bringt ihm das beispiel leider auch nix mehr...


----------



## Dennis Wronka (4. März 2005)

Er wollte doch HTTP, und ich denke mal dass er das soweit schon hinkriegt.
Selbst wenn er den SSH-Port nicht aus dem Gedaechtnis weiss, hat er ja das Ergebnis seines Port-Scans. Und ich hab den Port in einem frueheren Posting bereits erwaehnt, sogar mit Protokoll.
Also denke ich, dass das jetzt mal relativ unkritisch ist.


----------



## bohlen (5. März 2005)

Wir könnten "-N firewall" in "-N INPUT" umbenennen können? Oder ist das nicht egal.Nun ich habe bisschen in Internet gegoogelt, gelesen und nachgeguckt in HowTo, und habe deinen script wie folgt ergänzt:


```
iptables -N INPUT
 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 iptables -A INPUT -p udp --dport 80 -j ACCEPT
 iptables -A INPUT -p tcp --dport 21 -j ACCEPT
 iptables -A INPUT -p udp --dport 21 -j ACCEPT
 iptables -A INPUT -p ssh --dport 22 -j ACCEPT
 iptables -A INPUT -p smtp --dport 25 -j ACCEPT
 iptables -A INPUT -p domain --dport 53 -j ACCEPT
 iptables -A INPUT -p pop3 --dport 110 -j ACCEPT
 iptables -A INPUT -p sunrpc --dport 111 -j ACCEPT
 iptables -A INPUT -p imap --dport 143 -j ACCEPT
 iptables -A INPUT -p TLS/SSL --dport 443 -993 -995 -j ACCEPT
 iptables -A INPUT -p spamd --dport 783 -j ACCEPT
 iptables -A INPUT -p rndc --dport 953 -j ACCEPT
 iptables -A INPUT -p mysql --dport 3306 -j ACCEPT
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A INPUT -j DROP
 iptables -A INPUT -j firewall
 
 iptables -N FORWARD
 iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
 iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j
  ACCEPT
 iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
 iptables -A FORWARD -p all -j DROP
```
 

   Jetzt könnt Ihr lachen  Aber, das ist mein erster script in meinem Leben  Natürlich mit Eurer Hilfe.
 Ich habe die Namen der Ketten geändert und zusätzlich eine neue Kette erstellt zur Schutz gegen Syn-flood, Portscanner und Ping of death  (abgeschrieben von HowTo und selber ergänzt)
 Kannst du jetzt einen richtigen script zeigen? Jetzt bin ich gespannt wo mein Denkfehler war. Ich vermute bei fast allen Bezeichnungen zwischen "-p" und "--dport".
 Weiterhin habe ich damit Probleme, dass ich nicht weiß wie auf bestimmten Port zugegriffen wird. Als Beispiel sehen wir port 80 und port 21 und 22.(tcp/udp) 
                Weiter, Port trennen z.B. (was ist richtig)
                --dport 443 -993 -995 -j ACCEPT 
                --dport 443-993-995 -j ACCEPT
 Gelesen habe ich, dass zwei Portnamen getrennt durch ein "-" Zeichen werden. Meine Frage ist, wie ist richtig, Man darf nur zwei port trennen oder dürfen mehr in eine Reihe sein und ob Pausen dazwischen sein müssen oder nicht (wie oben in Beispiel).

           Noch etwas was ich vorher vergessen habe:



```
:~ # ifconfig
          
            eth0	  Link encap:Ethernet  HWaddr 00:04:**:**:**:**
          
            		  inet addr:81.***.**.**  Bcast:81.***.**.**  Mask:255.255.255.255
          
            		  inet6 addr: fe80::203:67ff:fe5d:b006/64 Scope:Link
          
            		  UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          
            		  RX packets:2435 errors:0 dropped:0 overruns:0 frame:0
          
            		  TX packets:1773 errors:0 dropped:0 overruns:0 carrier:0
          
            		  collisions:0 txqueuelen:1000
          
            		  RX bytes:354184 (345.8 Kb)  TX bytes:455876 (445.1 Kb)
          
            		  Interrupt:23 Base address:0xe400
          
             
          
            lo		Link encap:Local Loopback
          
            		  inet addr:127.0.0.1  Mask:255.0.0.0
          
            		  inet6 addr: ::1/128 Scope:Host
          
            		  UP LOOPBACK RUNNING  MTU:16436  Metric:1
          
            		  RX packets:120540 errors:0 dropped:0 overruns:0 frame:0
          
            		  TX packets:120540 errors:0 dropped:0 overruns:0 carrier:0
          
            		  collisions:0 txqueuelen:0
          
            		  RX bytes:6032397 (5.7 Mb)  TX bytes:6032397 (5.7 Mb)
```
 


                Noch mal Danke für Eure Mühe.
                Grüße


----------



## Dennis Wronka (5. März 2005)

Erstmal zum umbenennen der Chain:
Nein, Du kannst die Chain firewall nicht einfach INPUT nennen, denn die Chain INPUT ist eine Chain die fest im System drin ist.
Du kannst aber die Regeln direkt dort hinein setzen wenn Du das moechtest, ich bevorzuge aber eigene Chains zu schreiben und von INPUT dorthin zu springen.
Gross geschriebene Ketten, wie z.B. INPUT, FORWARD und OUTPUT sind fest drin, daher ist es sinnvoll selbst erstellte Ketten klein zu schreiben. Siehe mein Beispiel firewall

Nun zum Script.
Du hast die Protokolle falsch angegeben. Das anzugebende Protokoll ist das Level 3/4 Protokoll wie z.B. TCP oder UDP, nicht das hoeherliegende Protokoll wie ssh.
Es gibt ja keine SSH-Ports und keine MySQL-Ports. Es gibt TCP-Ports, davon wird einer fuer SSH genutzt und auch einer fuer MySQL. Und es gibt auch UDP-Ports, ich glaub der DHCP-Server nutzt UDP.

Da Du kein Routing machst kann Deine FORWARD-Chain leer sein. Ansonsten wuerde Die auch einfach auf die Chain firewall verweisen. Wenn kein Routing gemacht wird laeuft kein Paket durch die Chain FORWARD.
Eingehende Pakete landen in INPUT, ausgehende Pakete in OUTPUT. Pakete die durch den Rechner hindurch geroutet werden landen in FORWARD.
Weiterhin hast Du in der FORWARD-Chain ein paar schoene Konstrukte gebaut um den Verbindungsstatus zu checken.
Das war aus oben genanntem Grund (kein Paket wird jemals diese Regeln durchlaufen) etwas ueberfluessig. Ausserdem hast Du Dir ein wenig mehr Arbeit gemacht als noetig da es mittlerweile einfacher geht.
Du kannst den Status einer Connection mit folgenden Zeilen checken: (ich mach's jetzt ohne Protokolle und Ports, und alles mit ACCEPT, ist nicht sinnvoll, aber nur als Beispiel)

```
iptables -A firewall -m state --state NEW -j ACCEPT
iptables -A firewall -m state --state ESTABLISHED -j ACCEPT
iptables -A firewall -m state --state RELATED -j ACCEPT
iptables -A firewall -m state --state INVALID -j ACCEPT
```
Okay, zur Erklaerung:
Zeile 1
NEW ist fuer neue Verbindungen, und sonst nichts.
Zeile 2
ESTABLISHED ist fuer Verbindungen die bereits bestehen, wird in der Regel mit Zeile 3 verbunden und sieht dann so aus ... --state ESTABLED, RELATED -j ACCEPT
Zeile 3
Bei FTP wird zusaetzlich zur Control-Connection auch eine Data-Connection aufgebaut, das wird vom Connection-Tracking-Code erkannt und mittels RELATED koennen auch solche Verbindungen zugelassen werden.
Zeile 4
INVALID ist nie gut, darum kannst Du im Grunde im Script in der 2. Zeile (nach -N firewall) die Zeile *iptables -A firewall -m state --state INVALID -j DROP* einfuegen.

So, ich hoffe ich konnte etwas Klarheit in den ganzen Firewall-Djungel bringen.

Nachtrag: Um ehrlich zu sein weiss ich jetzt nicht wie Ports getrennt werden, ich schreib immer dafuer dann einzelne Ketten.
Fuer eine Range nimmst Du glaub ich :
Also --dport 20:30 gilt fuer die Ports 20 bis 30.

Nachtrag 2: Das "richtige" Script poste ich wenn ich wieder daheim bin. Dann haeng ich mal mein komplettes Script an. Hab bald Feierabend, ich denk mal in spaetestens 2 Stunden bin ich daheim. Werd auch ein paar Erklaerungen abliefern.
Gegen den Ping of Death brauchst Du Dich nicht explizit schuetzen wenn Du kein ICMP erlaubst. Und das geschieht in dem Mini-Script was ich hier zuvor gepostet hab nicht.


----------



## bohlen (5. März 2005)

Also, na dann werde ich noch mal versuchen den script besser zu schreiben, aber jetzt gehe ich schlafen  Komme gut nach Hause.


----------



## Dennis Wronka (5. März 2005)

So, wie bereits angedroht, hier mein Firewall-Script.
Falls Du es nutzen willst musst Du es natuerlich noch ein wenig an Deine Gegebenheiten anpassen, z.B. den ganzen Quatsch von wegen *-i ppp0* entfernen.
Weiterhin nutze ich vom Loggen den ULog-Daemon, der Vorteil dabei ist, dass Du nicht in's syslog loggst, sondern entweder in eine seperate Datei oder in eine MySQL-Datenbank.
Aber das Script soll Dir ja hauptsaechlich als Beispiel dienen.
Okay, here we go:

```
case "$1" in
start)
$0 enablelogging
$0 enablefirewall
;;
stop)
$0 disablefirewall
$0 disablelogging
iptables -F
iptables -X
;;
enablelogging)
echo "Enabling Logging"
ulogd -d
iptables -N logging
iptables -A logging -i ppp0 -m state --state INVALID -j ULOG
iptables -I INPUT 1 -j logging
;;
disablelogging)
echo "Disabling Logging"
iptables -D INPUT -j logging
iptables -F logging
iptables -X logging
killall ulogd
;;
enablefirewall)
echo "Enabling Firewall"
iptables -N firewall
iptables -A firewall -m state --state INVALID -j DROP
iptables -A firewall -i ppp0 -p tcp --dport 80 -j ACCEPT
iptables -A firewall -i ppp0 -p tcp --dport 21 -j ACCEPT
iptables -A firewall -i ppp0 -p tcp --dport 25 -j ACCEPT
iptables -A firewall -j DROP
iptables -A INPUT -j firewall
;;
disablefirewall)
echo "Disabling Firewall"
iptables -D INPUT -j firewall
iptables -F firewall
iptables -X firewall
;;
restart)
$0 stop  &&  $0 start  ||  return=$rc_failed
;;
*)
echo "Usage: $0 {start|stop||restart|enablelogging|disablelogging|enablefirewall|disablefirewall|}"
exit 1
;;
esac
```

Jetzt zur Erklaerung, auf dem Server laufen ein HTTP-Server, ein FTP-Server, ein Mail-Server und ein MySQL-Server. Der MySQL-Server ist nicht von aussen erreichbar, das muss er auch nicht, da ja nur der HTTP-Server darauf zugreifen muss.
Gestartet wird das Script ueber den Parameter start, gestoppt ueber stop (wer haette das gedacht?  )
Weiterhin koennen auch einzelne Teile der Firewall deaktiviert werden. Ist in dieser Konstellation nicht wirklich sinnvoll, jedoch ist das Original-Script groesser. Das laeuft auf meinem Server back in Germany, dort wird zusaetzlich auch noch NAT gemacht und es gibt einen Abschnitt um VPN-Access erlauben und verbieten zu koennen.
Das Script ist so modular wie moeglich gehalten, sodass neue Funktionen, wie z.B. der angesprochene VPN-Access, ohne Probleme ohne Beeinflussung der eigentlich Firewall gestartet und gestoppt werden koennen.
Falls Module hinzugefuegt werden muessen diese die *nach* logging und *vor* firewall durchlaufen werden. Was erreicht wird indem diese in INPUT zwischen diese eingefuegt werden.
Der Grund dafuer ist, dass am Ende von firewall alles was nicht vorher akzeptiert wurde gedroppt wird.
Beispiel:

```
iptables -I INPUT 2 -j vpn
```
Dies fuegt die Chain vpn an Position 2 in die Chain INPUT ein. Position 1 hat logging, firewall wird dadurch von Position 2 auf 3 verschoben.
Voraussetzung, dass das alles in der Form funktioniert ist aktives Logging, also die Chain logging muss in der INPUT Chain sein, falls nicht muss an Position 1 eingefuegt werden.
In der Chain vpn wuerden dann die Ports und Protokolle fuer VPN-Access akzeptiert. Um das Beispiel zu Ende auszufuehren.
Geloescht wird diese dann mit folgender Zeile:

```
iptables -D INPUT -j vpn
```
Du gibst hier also nicht die Position an an der geloescht werden soll, es koennten ja in der Zwischenzeit noch weitere Chains eingefuegt worden sein, sondern die Regel selbst. In diesem Fall ist das nur die Verzweigung in die Chain vpn, mittels *-j vpn*.
Ich bevorzuge es die eigentlichen Regeln in eigene Chains auszulagern, und in den Standard-Chains nur die Verzweigungen in meine Chains zu haben.
Das sorgt meiner Meinung nach fuer bessere Uebersicht und hoehere Flexibilitaet.

So, ich hoffe Du hast im Laufe dieses Threads ein wenig was ueber's Firewalling mit iptables gelernt. 
Viel Erfolg beim Filtern.
Falls noch Fragen offen sind, immer her damit.


----------



## bohlen (5. März 2005)

Oh Man  , da habe ich noch etwas vor mir. Ich habe mir das Buch bestellt! Ich werde damit jetzt experimentieren. Bis dahin habe ich etwas zu tun  Besten dank für deine Hilfe. Ich melde mich noch, ganz bestimt  
 Schönes Wochenende
 Grüße
 Bohlen


----------



## bohlen (8. März 2005)

Hallo 

        Ich habe dein script noch mal überarbeitet und an meine Bedurfnisse angepasst.
        Ich habe derzeit folgende Dienste laufen:


```
21	ftp	 File Transfer [Control]	
       22	ssh	SSH Remote Login Protocol	
       25	smtp	Simple Mail Transfer	
       53	domain	Domain Name Server	
       80	www-http	World Wide Web HTTP	
       110	pop3	Post Office Protocol - Version 3	
       111	sunrpc	SUN Remote Procedure Call	
       443	https	http protocol over TLS/SSL	
       783	spamd	Spamassassin-Daemon	
       953	rndc	BIND remote config	
       3306	mysql	Mysql
```
 
        Port 22222 ist wichtig für "ViSAS" Zugrif von Aussen.
        Anhand dieser Portsliste http://helpdesk.rus.uni-stuttgart.de/~rustomfi/Firewalls/Grundlagen/port-numbers.txt
        habe ich die Ports eingestellt.

        Und hier das Ergebniss:


```
iptables -N firewall
        iptables -A firewall -m state --state INVALID -j DROP
        iptables -A firewall -i eth0 -p tcp --dport 21 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 21 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 22 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 22 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 25 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 25 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 53 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 53 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 80 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 80 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 110 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 110 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 111 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 111 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 443 -j ACCEPT
        iptables -A firewall -i eth0 -p udp --dport 443 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 783 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 953 -j ACCEPT
        iptables -A firewall -i eth0 -p tcp --dport 22222 -j ACCEPT
        iptables -A firewall -i lo -j ACCEPT
        iptables -A firewall -j DROP
        iptables -A INPUT -j firewall
```
 
  Ich habe die Mysql nicht freigeschaltet aber als ich portscan gemacht (funktion in ViSAS Admin tool) habe, war das Port offen. 
        Wie kann ich mein Server scannen um zu sehen welche Ports noch offen sind?

        Das Ergebnis von *# iptables -L*

```
iptables -L
         Chain INPUT (policy ACCEPT)
 target	 prot opt source			 destination
        firewall   all  --  anywhere			 anywhere
         
         Chain FORWARD (policy ACCEPT)
 target	 prot opt source			 destination
         
         Chain OUTPUT (policy ACCEPT)
 target	 prot opt source			 destination
         
         Chain firewall (1 references)
 target	 prot opt source			 destination
 DROP	 all -- anywhere			 anywhere		 state INVALID
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:ftp
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:fsp
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:ssh
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:ssh
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:smtp
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:smtp
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:domain
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:domain
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:http
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:http
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:pop3
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:pop3
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:sunrpc
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:sunrpc
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:https
 ACCEPT	 udp -- anywhere			 anywhere		 udp dpt:https
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:783
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:953
 ACCEPT	 tcp -- anywhere			 anywhere		 tcp dpt:22222
  ACCEPT	 all -- anywhere			 anywhere
 DROP	 all -- anywhere			 anywhere
```
 
         Ist alles richtig? (sehe auch das vorletzte Kette, geht es um lokale Verbindungen die frei sind?)
 Zum starten und stopen bin ich noch nicht reif genug. Ich würde gerne vielmehr erfahren wie ich mich gegen flood und ddos schutzen kann. Mein Beispiel zuvor war also unbrauchbar in meiner Konfiguration, wie kann ich diese scripte (oder andere gleiche Lösung) bei mir anwenden?

   Jetzt als ich mich pit PuTTY anmelde, dauert es sehr lange bis ich Password eingeben kann.


----------



## Dennis Wronka (8. März 2005)

Das ist soweit in Ordnung, obwohl Du ein wenig uebertrieben hast. 
Du brauchst nicht fuer jeden Dienst sowohl TCP als auch UDP oeffnen. In der Regel laeuft ein Dienst nur ueber TCP oder UDP. Die Dienste die Du nutzt duerften alle TCP sein.
Dass Visas alle Ports anzeigt liegt daran, dass es auf der zu scannenden Maschine laeuft und der Portscan somit wohl ueber Loopback laeuft. Da Du fuer -i lo alles ACCEPTest ist es kein Wunder, dass Du dort auch MySQL offen siehst.
Am besten laedst Du Dir mal den nmap (gibt's sogar fuer Windows) runter und scannst von daheim.
Dass SSH so lange braucht kann ich mir im Moment nur damit erklaeren, dass es vielleicht vor der eigentlichen Verbindung eine Art Ping-Test durchfuehrt. Da ICMP geblockt ist kommt natuerlich kein Paket zurueck und somit wartet PuTTY bis zum TimeOut.
Mehr Infos ueber Deine Chains bekommst Du mit *iptables -L -v*.
Da siehst Du dann auch die Interfaces.


----------



## bohlen (8. März 2005)

Hallo Reptiler 

   Wie bekomme ich wieder die ICMP für PuTTY frei?
   Ich kann sich auch nicht mehr mit dem WinSCP3 einlogen 
   nmap geht bei mir, ich habe WinXP Pro SP2 und da öffnet sich das Fenster nicht 

 Morgen geht meine Webseite Online, ich möchte bis dan wenigstens den Firewall hinbekommen. Ich kann jetzt nichts mehr uploaden auf den Server.
   Ich werde die UDP später entfernen.
   Schönen Gruß
   Bohlen


```
# iptables -L -v
  Chain INPUT (policy ACCEPT 40641 packets, 2093K bytes)
 pkts bytes target	 prot opt in	 out	 source			 destination 
 5148 1537K firewall all -- any	any	 anywhere			 anywhere	
  
  Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target	 prot opt in	 out	 source			 destination 
  
  Chain OUTPUT (policy ACCEPT 81245 packets, 4243K bytes)
 pkts bytes target	 prot opt in	 out	 source			 destination 
  
  Chain firewall (1 references)
 pkts bytes target	 prot opt in	 out	 source			 destination 
 	0	 0 DROP	 all -- any	any	 anywhere			 anywhere		 state INVALID
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:ftp
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:fsp
 221 20947 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:ssh
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:ssh
 15 624 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:smtp
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:smtp
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:domain
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:domain
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:http
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:http
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:pop3
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:pop3
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:sunrpc
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:sunrpc
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:https
 	0	 0 ACCEPT	 udp -- eth0 any	 anywhere			 anywhere		 udp dpt:https
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:783
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:953
 	0	 0 ACCEPT	 tcp -- eth0 any	 anywhere			 anywhere		 tcp dpt:22222
 	0	 0 ACCEPT	 all -- lo	 any	 anywhere			 anywhere	
 4912 1515K DROP	 all -- any	any	 anywhere			 anywhere
```


----------



## Dennis Wronka (9. März 2005)

Hallo Bohlen,
also mal weiter im Text 

Alle folgenden Script-Zeilen musst Du vor

```
iptables -A firewall -j DROP
```
einfuegen. Ansonsten bringen die nichts, da diese Regel ja alles DROPt.

Um ICMP wieder zuzulassen fuegst Du diese Zeile ein:

```
iptables -A firewall -p icmp -j ACCEPT
```
Das kann man auch noch genauer spezifizieren, sodass nur der Ping (echo-request) reindarf, jedoch hab ich den Parameter dafuer nicht im Kopf.

Welche Zeile Du sinnvollerweise fuer FTP noch mit eintragen kannst waere:

```
iptables -A firewall -m state --state RELATED -j ACCEPT
```

Was genau machst Du mit WinSCP3? Hab grad mal auf die Website geguckt und da steht was von wegen Secure File Transfer. Jedoch ist die Abkuerzung falsch. SFTP steht fuer *Simple File Transfer Protocol*
FTPS hingegen steht fuer *ftp protocol over TLS/SSL*, also das was eigentlich der Secure File Transfer sein duerfte.
Weiterhin steht auf dem Screenshot von WinSCP was von Port 22, das waere SSH.
Wie es aussieht scheint WinSCP ueber SSH zu arbeiten.

Es kann natuerlich sein, dass auch diese Programm erstmal einen Ping sendet um zu gucken ob der Host wach ist. Und wenn nichts zurueckkommt meldet "Geht nicht"
Oder aber die Daten-Verbindung konnte bislang nicht aufgebaut werden, was durch die Zeile mit dem RELATED behoben sein sollte.
Also probier erstmal diese beiden Sachen bevor Du weitere Schritte ergreifst.

Falls es dann also immer noch nicht geht wirst Du mal schauen muessen ob vielleicht ein FTPS-Server auf dem System laeuft mit dem WinSCP vielleicht connecten will.
Diesen solltest Du auf TCP-Port 990 finden.

Der nmap hat auch unter Windows kein Fenster, den musst Du in der Shell (also ueber cmd) ausfuehren. Da im Moment ICMP noch geblockt wird brauchst Du auch noch den Parameter -P0
Der teilt nmap mit, dass vor dem Scan kein Ping gesendet werden soll um zu testen ob der Host wach ist.

So, das war der naechste Teil unserer Workshops: Wie basteln wir unsere Firewall 
Viel Erfolg weiterhin.


----------



## bohlen (9. März 2005)

Hallo Reptiler, ist die Reihenfolge der Ketten wichtig? Werden diese von 1 bis Ende abgefragt und sich dementsprechend verhalten?


----------



## Dennis Wronka (9. März 2005)

Wenn eine Regel auf ein Paket zutrifft wird es aus der Chain geworfen und durchlaeuft sie nicht bis zum Ende. Das gilt fuer nahezu alle Targets (also ACCEPT, DROP, etc.). Es gibt jedoch ein paar Ausnahmen wie zum Beispiel LOG und ULOG.
Bei den "normalen" Target ACCEPT, DROP und REJECT wird das Paket aber aus der Chain genommen und der Regel entsprechend verarbeitet.


----------



## bohlen (10. März 2005)

Soweit einiges verstanden, von Tag zur Tag wird alles klarer 

   Nun weitere Frage zur Ports, kann ich ohne weiteres die Ports: 111, 953 sperren?
   Brauche ich die zur meinen Server?
 Bei dieser Konfiguration mit "firewall" habe da noch Frage, ich verstehe daß als aller erste die Ketten der firewall nach der Reihenfolge bearbeitet werden, danach werden die Packete in INPUT weitergeleitet. Wen ich aber noch in INPUT einige Regeln habe, ist das Eintrag         iptables -A INPUT -j firewall   richtig?  



> Was genau machst Du mit WinSCP3? Hab grad mal auf die Website geguckt und da steht was von wegen Secure File Transfer.


  Hier 
http://winscp.sourceforge.net/eng/docs/introduction


----------



## Dennis Wronka (11. März 2005)

Also Port 111 (portmapper, rpcbind) und 953 (RNDC is used by BIND 9) kannst Du ohne Beeintraechtigung der Funktionalitaet sperren.


			
				bohlen hat gesagt.:
			
		

> Bei dieser Konfiguration mit "firewall" habe da noch Frage, ich verstehe daß als aller erste die Ketten der firewall nach der Reihenfolge bearbeitet werden, danach werden die Packete in INPUT weitergeleitet. Wen ich aber noch in INPUT einige Regeln habe, ist das Eintrag iptables -A INPUT -j firewall richtig?


Eingehende Pakete landen zuerst in der Chain INPUT, werden dort mit *iptables -A INPUT -j firewall* in die Chain firewall uebergeben. Falls ein Paket in firewall nicht bearbeitet wird, also keine Regel auf dieses Paket zutrifft, kommt es wieder zurueck in INPUT und wird dort entsprechend weiterverarbeitet, falls dort noch Regeln sind. Falls das Ende der Chain INPUT erreicht wird ohne das eine Regel darauf zutrifft, dann tritt die Policy der Chain in Kraft. Standard-maessig ist das meine ich ACCEPT.
Normalerweise ist das eigentlich nicht wuenschenswert, jedoch ist die von mir gepostete Konfiguration in dem Fall eine Ausnahme. Es kommt ja *kein* Paket aus firewall zurueck in INPUT. Am Ende von firewall wird ja mit *iptables -A firewall -j DROP* alles gedroppt was diese Regel erreicht. Es kommt also nichts mehr zurueck in die Chain INPUT, da auf jeden Fall jedes Paket in der Chain firewall bearbeitet wird.
Wie ich schon zuvor gesagt hab wird ein Paket aus dem Filter genommen und der betreffenden Regel (ACCEPT, DROP, REJECT) weiter verarbeitet wenn eine Regel zutrifft.
Folgendes Beispiel: (UDP/67 ist fuer DHCP, nur mal so als Beispiel jetzt)

```
iptables -A firewall -p udp -j DROP
iptables -A firewall -p udp --dport 67 -j ACCEPT
```
Die erste Regel trifft auf *alle* UDP-Pakete zu, diese werden der Regel entsprechend gedroppt.
Die zweite Regel trifft auf Pakete an UDP-Port 67 (DHCP) zu, und teilt dem Paketfilter mit diese zu akzeptieren.
Das Problem ist hier nun, dass zuerst alle UDP-Pakete gedroppt werden, die zweite Regel wird also *nie* auf ein Paket zutreffen, da kein entsprechendes Paket diese Regel erreichen wird.
Falls UDP bis auf Port 67 gesperrt werden soll, kann das mit folgenden Beispielen realisiert werden.
Beispiel 1:

```
iptables -A firewall -p udp --dport 67 -j ACCEPT
iptables -A firewall -p udp -j DROP
```

Beispiel 2:

```
iptables -A firewall -p udp --dport ! 67 -j DROP
```

Das erste Beispiel laesst erst alle Pakete durch die an UDP-Port 67 gehen und droppt dann den Rest.
Das zweite Beispiel droppt alle UDP-Pakete die nicht an UDP-Port 67 gehen.

Solche Konstrukte brauchst Du in dem Script was ich hier gepostet hab jedoch nicht, Du kannst einfach alles was Du brauchst akzeptieren, der Rest wird am Ende eh gedroppt.
Dass alles am Ende von firewall gedroppt wird, und somit kein Paket aus Firewall zurueck nach INPUT kommt, gibt Dir eine Beschraenkung beim Einfuegen von Regeln in die Chain INPUT. Sie *muessen vor* der Verzweigung nach firewall (iptables -A INPUT -j firewall) eingefuegt werden, ansonsten sind sie ueberfluessig.

Ich hoffe ich konnte wieder ein wenig Licht in's Dunkel bringen. Weiterhin viel Erfolg.


----------



## bohlen (11. März 2005)

(Sorry für Offtopic)
 Hallo Reptiler, ich glaube ... ich bin gescheitert  Ich habe mir ein Buch gekauft (Der eigene Webserver), die iptables schon einigermaßen in "Griff" bekommen, da trifft mich ein neues Problem. Der Rootserver ist eine Nummer zu groß für mich.

 Ich wollte meine Webseite schon Online stellen und weiterhin an der Erforschung des Servers arbeiten. Es stellte sich fest, ich muss ganz unten anfangen, es geht um die richtige Hardware und Mysql Einstellung. Habe eben gerade ein Invisionborad installiert (ist ein unverzichtbares Teil meiner Webseite) und lief soweit gut. Aber, als ich die Startseite des Forums vielmals pro Sekunde aufgefrischt habe (F5 Taste), hängt sich der ganze Server auf (solche Spielchen treiben einige Kids einfach zur Spaß). Danach muß ich den Server reeboten sonnst geht nichts weiter. Ich habe alle iptables gelöscht und das gleiche Problem. In die Logdateien habe ich folgende Fehler ausgelesen:


```
Mar 11 18:40:29 h88942 named[793]: binding TCP socket: address in use
  Mar 11 18:40:29 h88942 named[793]: binding TCP socket: address in use
  Mar 11 18:52:42 h88942 kernel: VM: killing process php
  Mar 11 18:52:45 h88942 last message repeated 2 times
  Mar 11 18:52:45 h88942 kernel: VM: killing process httpd2-prefork
  Mar 11 18:52:45 h88942 kernel: VM: killing process php
  Mar 11 18:52:46 h88942 last message repeated 5 times
  Mar 11 18:52:47 h88942 kernel: VM: killing process httpd2-prefork
  Mar 11 18:52:47 h88942 kernel: VM: killing process named
  Mar 11 18:52:47 h88942 kernel: VM: killing process php
  Mar 11 18:52:47 h88942 kernel: VM: killing process php
  Mar 11 18:52:47 h88942 kernel: VM: killing process httpd2-prefork
  Mar 11 18:52:47 h88942 kernel: VM: killing process php
  Mar 11 18:52:47 h88942 last message repeated 7 times
  Mar 11 18:52:47 h88942 kernel: VM: killing process svscan
  Mar 11 18:52:47 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 last message repeated 2 times
  Mar 11 18:52:48 h88942 kernel: VM: killing process sshd
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process authdaemond.pla
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process nscd
  Mar 11 18:52:48 h88942 kernel: VM: killing process cron
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process tcpserver
  Mar 11 18:52:48 h88942 kernel: VM: killing process httpd2-prefork
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process cron
  Mar 11 18:52:48 h88942 kernel: VM: killing process httpd2-prefork
  Mar 11 18:52:48 h88942 kernel: VM: killing process httpd2-prefork
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process httpd2-prefork
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
  Mar 11 18:52:48 h88942 kernel: VM: killing process php
```
 Mein Server ist eben nicht konfiguriert, was muss ich da tun um die Stabilität des Servers in meinem Fall zu gewährleisten? Bei mir läuft NUR Invisionboard. Meine Webseite wird sehr oft als Ziel des dos und flood atacken, ich brauche deswegen wirkungsvollen Schutz. 
  Ich will nicht einfach aufgeben, ich bin bei www.all-inkl.de schon bei der Menagedserver 2 Wochen lang gewesen (als Übergangslösung) und dort hatte ich auch sehr oft eine Fehleranzeige von Mysql (Max connect user) usw. ....

  Ich habe noch 2 Tage um aus dem Vertrag von Strato zurück zu treten, wo soll ich dann hin   Ich bin fassungslos....


----------



## Dennis Wronka (11. März 2005)

Hmm, also das ist echt schon krass, das der Server stirbt wenn Du einfach ein paar mal refreshst.
In der Materie bin ich nicht ganz so drin, aber es koennte sein, dass der Apache vielleicht eine Moeglichkeit bietet den Refresh nicht so oft zuzulassen. Genau kann ich Dir das nicht sagen.
Ansonsten waere vielleicht QoS (Quality of Service) eine Idee. Also Traffic-Shaping.
Aber damit hab ich selbst noch nix gemacht, ich weiss nur, dass es sowas gibt. 
Sorry, dass ich Dir dabei nicht behilftlich sein kann.


----------



## bohlen (11. März 2005)

Danke, ich werde mich umschauen.


----------



## Dennis Wronka (11. März 2005)

Ich wuensche Dir viel Erfolg.
Und nicht aufgeben!


----------



## bohlen (13. März 2005)

Hallo Reptiler!

  Ich möchte besonders Dir für deine Hilfe danken. Ich bin durch Zufall auf diese hilfreiche Seite gestossen http://www.harry.homelinux.org/. IPgenerator


   Noch mal vielen vielen Dank und schöne Grüße an Alle!
   Bohlen


----------



## Dennis Wronka (14. März 2005)

Hi Bohlen,

Danke fuer den Link. Werd ich mal reinschauen.
Weiterhin viel Erfolg.


----------

