Firewall-script-check

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Debian_Neuling
Beiträge: 7
Registriert: 20.08.2007 15:02:48

Firewall-script-check

Beitrag von Debian_Neuling » 20.08.2007 15:21:38

Hallo Leute,

wie aus meinem Namen zu schließen ist habe ich von Debian bzw. Linux allgemein nur ein kleines Grundwissen. Aus diesem Grund bitte ich euch Profis hier mein bisheriges Firewall Script zu inspizieren.
Auf der Kiste soll FTP (is wohl doof, aber naja, es muss), HTTP, HTTPS und ssh laufen. Außerdem soll er seine Zeit mit diversen Zeitservern synchronisieren (sehr wichtig, daher derer gleich vier^^)

Als Basis diente mir wie ihr seht der Output von iptables-restore. Diesen habe ich dann noch so modifiziert:

Code: Alles auswählen

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -p udp -s 81.169.163.102 --sport ntp -j ACCEPT
-A INPUT -p udp -s 81.169.163.105 --sport ntp -j ACCEPT
-A INPUT -p udp -s 195.145.119.188 --sport ntp -j ACCEPT
-A INPUT -p udp -s 130.149.17.21 --sport ntp -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 21 -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --dport 21 -j ACCEPT
-A OUTPUT -p tcp --dport 20 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -d 81.169.163.102 --dport ntp -j ACCEPT
-A OUTPUT -p udp -d 81.169.163.105 --dport ntp -j ACCEPT
-A OUTPUT -p udp -d 195.145.119.188 --dport ntp -j ACCEPT
-A OUTPUT -p udp -d 130.149.17.21 --dport ntp -j ACCEPT
COMMIT
Für Anregungen, Kritik und sonstiges Aufzeigen von Fehlern bin ich sehr sehr dankbar!

Beste Grüße

nil
Beiträge: 989
Registriert: 08.06.2005 13:28:36

Beitrag von nil » 20.08.2007 15:32:38

Auf der Kiste soll FTP (is wohl doof, aber naja, es muss)
Liegt doch nur daran, dass die Leute zu faul sind anstatt ihres komischen FTP-Programms vielleicht WinSCP oder ein anderes SFTP-Programm zu nutzen, welches im übrigen viel besser arbeitet. Benenn doch mal ein paar Gründe!

Debian_Neuling
Beiträge: 7
Registriert: 20.08.2007 15:02:48

Beitrag von Debian_Neuling » 20.08.2007 15:36:20

Hallo nil,

naja eigentlich hast du die Hauptgründe schon genannt, es muss halt in erster Linie Anwenderfreundlich sein, ich setz den Server auch nicht für mich auf, sondern für jemand anderen, da muss ich mich halt an die Vorgaben halten. Aber ich werd mich mal mehr über SFTP informieren (bin da auch noch nicht fit), vielleicht kann ich denjenigen, für den ich das mach ja davon überzeugen

Danke schonmal!

Benutzeravatar
ckoepp
Beiträge: 1409
Registriert: 11.06.2005 20:11:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nähe Heidelberg

Beitrag von ckoepp » 20.08.2007 15:40:00

nil hat geschrieben: Liegt doch nur daran, dass die Leute zu faul sind anstatt ihres komischen FTP-Programms vielleicht WinSCP oder ein anderes SFTP-Programm zu nutzen, welches im übrigen viel besser arbeitet.
SFTP "arbeitet" besser als TLS-FTP? Den SFTP-Server will ich sehen der die Features meines proftpd hat ;)
Abgesehen vom Funktionsumfang: TLS-FTP ist nicht weniger sicher als FTP ueber SSH...

Aber zur eigenlichen Fragestellung: sieht doch ganz okay aus. Du solltest aber dieses eklige DROP-All Zeugs rausmachen. Wird meist von den Generatorscripten automatisch eingefuegt ist aber eher kontraproduktiv. Man weist Pakete zurueck (REJECT) statt sie einfach zu verwerfen.
"Es gibt kein Problem, das man nicht mit einem doppelten Scotch lösen könnte!"
Ernest Hemingway

Debian_Neuling
Beiträge: 7
Registriert: 20.08.2007 15:02:48

Beitrag von Debian_Neuling » 20.08.2007 15:43:30

Hallo ckoepp,

ich dachte "DROP" sei besser, da der Server dann keine Arbeit mehr mit dem Paket hat. Bei "REJECT" wird doch dann ne Antwort an den Client/Scanner etc. geschickt, oder? Kostet das nicht Performance?


Danke dir!

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Firewall-script-check

Beitrag von roli » 20.08.2007 15:47:06

Hi,
Debian_Neuling hat geschrieben:wie aus meinem Namen zu schließen ist habe ich von Debian bzw. Linux allgemein nur ein kleines Grundwissen. Aus diesem Grund bitte ich euch Profis hier mein bisheriges Firewall Script zu inspizieren.
Du koenntest auch z.B. Dieste wie c't-Netzwerkcheck damit haettest du schon mal eine "Grundlage".
Debian_Neuling hat geschrieben:Auf der Kiste soll FTP (is wohl doof, aber naja, es muss), HTTP, HTTPS und ssh laufen. Außerdem soll er seine Zeit mit diversen Zeitservern synchronisieren (sehr wichtig, daher derer gleich vier^^)
Das syncen mit den vier Zeitservern ist ein "Client Job", und kein Serverdienst den du anbieten willst, oder? Solange du Verkehr von Innen nach aussen, mit den entsrechenden Antworten zulaesst ist's ok. Wozu du aber gleich 4 Zeitserver brauchst ist mir nicht klar, nimm einen (oder beide) Zeitserver der PTB, und du hast die gesetzliche Zeit der BRD, "eine bessere gibt's in Deutschlad nicht" ;-}
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Debian_Neuling
Beiträge: 7
Registriert: 20.08.2007 15:02:48

Beitrag von Debian_Neuling » 20.08.2007 15:48:23

Kleiner Nachtrag:

ich hab mal nen nmap -sT -P0 -v derserver.de ausgeführt und da ist Folgendes (erschreckenderweise) herausgekommen:

Initiating Connect() Scan at 15:43
Scanning derserver.de (xxx.xxx.xxx.xxx) [1697 ports]
Discovered open port 21/tcp on xxx.xxx.xxx.xxx -->klar
Discovered open port 22/tcp on xxx.xxx.xxx.xxx -->klar
Discovered open port 25/tcp on xxx.xxx.xxx.xxx -->hää?
Discovered open port 80/tcp on xxx.xxx.xxx.xxx -->klar
Discovered open port 110/tcp on xxx.xxx.xxx.xxx -->hää?
Discovered open port 143/tcp on xxx.xxx.xxx.xxx -->hää?
Discovered open port 5190/tcp on xxx.xxx.xxx.xxx -->hää?

Wieso denn das?
Wo ist da mein Denkfehler?
Werden die offenen Mail-Ports (110, 143, 25) durch die ständig laufenden Mail-Dienste im Betriebssystem von Debian offen gehalten? Wenn ja, sollte man das unterbinden?

Kann das an meinem Client liegen, dass da was Falsches beim Scannen rauskommt?

PS:
Das syncen mit den vier Zeitservern ist ein "Client Job", und kein Serverdienst den du anbieten willst, oder?
ja

Ok überzeugt^^, ich werde zwei Zeitserver rausschmeissen
Danke euch
Zuletzt geändert von Debian_Neuling am 20.08.2007 15:54:11, insgesamt 2-mal geändert.

Benutzeravatar
ckoepp
Beiträge: 1409
Registriert: 11.06.2005 20:11:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nähe Heidelberg

Beitrag von ckoepp » 20.08.2007 15:49:54

Debian_Neuling hat geschrieben:ich dachte "DROP" sei besser, da der Server dann keine Arbeit mehr mit dem Paket hat. Bei "REJECT" wird doch dann ne Antwort an den Client/Scanner etc. geschickt, oder? Kostet das nicht Performance?
Es braucht schon eine Menge um einen Rechner per Paketbombadierung wegen REJECT in die Knie zu zwingen. Lass dir keinen Baeren aufbinden, mach die Sache sauber und wie es sich gehoert. Bei einer Firewall kann es vielleicht erwuenscht sein das Ding moeglichst "unsichtbar" zu machen, allerdings gehoert da ne Menge mehr dazu als nur pakete zu droppen ;)

Lies dir das mal durch: http://www.iks-jena.de/mitarb/lutz/usen ... .html#Deny
Der Abschnitt ist nicht unbedingt der Weisheit letzter Schluss, aber ein groben Einstieg hast du damit...
"Es gibt kein Problem, das man nicht mit einem doppelten Scotch lösen könnte!"
Ernest Hemingway

Benutzeravatar
ckoepp
Beiträge: 1409
Registriert: 11.06.2005 20:11:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nähe Heidelberg

Beitrag von ckoepp » 20.08.2007 15:52:20

Debian_Neuling hat geschrieben: Wieso denn das?
Wo ist da mein Denkfehler?
Du hast keinen Denkfehler, aber man sollte schon etwas Grundkentnisse ueber TCP/IP haben um nmap zu verstehen ;)
Offene ports sind nichts Boeses ;)
"Es gibt kein Problem, das man nicht mit einem doppelten Scotch lösen könnte!"
Ernest Hemingway

Debian_Neuling
Beiträge: 7
Registriert: 20.08.2007 15:02:48

Beitrag von Debian_Neuling » 20.08.2007 15:56:38

Von Linux/Debian hab ich nicht viel Ahnung, aber bisher dachte ich, dass ich mit Netzwerk - Technologien relativ fit bin. Erklär mir doch bitte, warum die Ports, die ich mit hää? gekennzeichnet hab offen sind.

Vielen Dank

Benutzeravatar
ckoepp
Beiträge: 1409
Registriert: 11.06.2005 20:11:23
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nähe Heidelberg

Beitrag von ckoepp » 20.08.2007 16:13:10

"netstat -tulpen" wird dir das sagen koennen :)
Da laeuft wohl etwas...
"Es gibt kein Problem, das man nicht mit einem doppelten Scotch lösen könnte!"
Ernest Hemingway

nil
Beiträge: 989
Registriert: 08.06.2005 13:28:36

Beitrag von nil » 20.08.2007 16:13:45

SFTP "arbeitet" besser als TLS-FTP? Den SFTP-Server will ich sehen der die Features meines proftpd hat Wink
Abgesehen vom Funktionsumfang: TLS-FTP ist nicht weniger sicher als FTP ueber SSH...
sieht nicht danach aus, dass TLS-FTP eingesetzt werden soll. Sonst stimme ich dem natürlich zu. Im übrigen geht wenn man auch einen Linux-Client hat nichts über SSHFS, damit ist man dann dieses dauernde Up- und Download-Gefrickel los.

Debian_Neuling
Beiträge: 7
Registriert: 20.08.2007 15:02:48

Beitrag von Debian_Neuling » 25.08.2007 17:13:04

Hallo Leute,

ich wollte mal ein Minimalscript schreiben, nur für http(s), ssh und ntp.
Hier ist es:

Code: Alles auswählen

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p udp -s 81.169.163.102 --sport ntp -j ACCEPT
-A INPUT -p udp -s 195.145.119.188 --sport ntp -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp --dport 20 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -d 81.169.163.102 --dport ntp -j ACCEPT
-A OUTPUT -p udp -d 195.145.119.188 --dport ntp -j ACCEPT
COMMIT

Code: Alles auswählen

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443
ACCEPT     udp  --  81.169.163.102       0.0.0.0/0           udp spt:123
ACCEPT     udp  --  195.145.119.188      0.0.0.0/0           udp spt:123

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     0    --  0.0.0.0/0            0.0.0.0/0
ACCEPT     0    --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:20
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     udp  --  0.0.0.0/0            81.169.163.102      udp dpt:123
ACCEPT     udp  --  0.0.0.0/0            195.145.119.188     udp dpt:123


Wie kann es nun sein, dass nmap zigtausend offene Ports findet? Was mach ich falsch?

Hab grade mal nmap auf dem Server installiert, da zeigt er mir nur das, was er soll:



Danke euch!

Code: Alles auswählen

Not shown: 1677 filtered ports
PORT    STATE  SERVICE
22/tcp  open   ssh
80/tcp  open   http
443/tcp closed https

Debian_Neuling
Beiträge: 7
Registriert: 20.08.2007 15:02:48

Beitrag von Debian_Neuling » 25.08.2007 17:30:17

Also da ich nun beruhigt bin hier mein finales Script:

Es soll ein Webserver (http/https), ein FTP- Server (nur temporär), ein Mailserver mit verschlüsselter Übertragung (pop3/smtp mit tls), außerdem soll er sich die Zeit via ntp holen und dns auflösen können.

Code: Alles auswählen

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp --sport 1024: --dport 110 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --sport 1024: --dport 995 -m state --state NEW -j ACCEPT
-A INPUT -p tcp --sport 1024: --dport 25 -m state --state NEW -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT
-A INPUT -p udp -s 81.169.163.102 --sport ntp -j ACCEPT
-A INPUT -p udp -s 195.145.119.188 --sport ntp -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 25 --sport 1024: -m state --state NEW  -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 21 -j ACCEPT
-A OUTPUT -p tcp --dport 21 -j ACCEPT
-A OUTPUT -p tcp --dport 20 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT
-A OUTPUT -p udp -d 81.169.163.102 --dport ntp -j ACCEPT
-A OUTPUT -p udp -d 195.145.119.188 --dport ntp -j ACCEPT
COMMIT
Für Tipps bin ich wie immer sehr sehr dankbar!

Antworten