# Software > Ασφάλεια >  AWMN Firewall...

## Mick Flemm

Είπα να αρχίσω να γράφω ένα iptables script που θα συνοδεύεται από έναν log analyser και τελικώς θα αποτελεί ένα αρκετά αυστηρό firewall που θα βοηθάει και στον εντοπισμό των διαφόρων παιχνιδιάριδων ανάμεσά μας...

Τι λέτε να βάλω ως default policy ?

ACCEPT και να αρχίσω να κλείνω μια μια τις περίεργες πόρτες/πρωτόκολλα ?

DROP και να αρχίσω να ανοίγω μια μια τις πόρτες/πρωτόκολλα που θέλουμε ?

Θεωρώ καλύτερη την δεύτερη μέθοδο και μάλλον αυτή θα υιοθετήσω, αν κάποιος οστώσο έχει να προτίνει κάτι επι του θέματος θα βοηθούσε...

EDIT: Παρακαλώ όποιος ψηφίζει να γράφει και μιά αιτιολόγηση γιατί το ένα κι όχι το άλλο...

----------


## JS

Αυτό θα είναι για εμάς τους άσχετους ;
Πχ θα μπορούμε με αυτό να βάζουμε/βγάζουμε κάποιο πρροτόκολο/πόρτα χωρίς να γράφουμε Iptables..... ???
Αν ναι είμαι πολύ χαρούμενος  ::   ::   ::   ::

----------


## Mick Flemm

Don't worry θα έχει tutorial μέσα στο script...

Αντε ευκαιρία να κάνουμε κι ένα IPTables Tutorial...

----------


## spirosco

Ειμαι υπερ του DROP policy .
Η λογικη του firewall ειναι να κοβει πρωτα τα παντα (η σχεδον τα παντα) και να εξαιρει απο τον κανονα (επιτρεπει) αυτα που θελουμε εμεις.

----------


## paravoid

Εγώ πάντως λέω να αποφύγουμε προ-setαρισμένα firewalls. Απλά θα δυσκολέψουν το troubleshooting...
Όποιος θέλει security ας διαβάσει howtos και ας στήσει δικό του.

Άλλωστε το firewall ΔΕΝ είναι η πανάκεια, ούτε υπάρχει μια στάνταρ συνταγή.

Πάντως αν προχωρήσεις σε αυτό, κάντο πολύ προσεκτικά και πρόσεξε μην κόβει routed traffic...

----------


## apoikos

Θα συμφωνήσω με τον spirosco, με το DROP έχεις μεγαλύτερες πιθανότητες να καλύψεις μία άγνωστη τρύπα ή κάτι που δε σκέφτηκες.




> Όποιος θέλει security ας διαβάσει howtos και ας στήσει δικό του.


Υπενθυμίζω ότι υπάρχει ένας αριθμός κόμβων οι οποίοι τρέχουν το awmn-debian (ή οποιαδήποτε άλλη διανομή), οι ιδιοκτήτες των οποίων δεν έχουν τις απαραίτητες γνώσεις για την πλήρη διαχείριση των κόμβων τους. Δεν είναι δυνατόν οι κόμβοι αυτοί να παραμένουν ξέφραγα αμπέλια μέχρι οι ιδιοκτήτες τους να μάθουν iptables. Στο κάτω-κάτω ένα ρήγμα ασφαλείας σε έναν κόμβο πιθανόν να έχει επιπτώσεις σε ένα μεγαλύτερο τμήμα του δικτύου. 




> Εγώ πάντως λέω να αποφύγουμε προ-setαρισμένα firewalls. Απλά θα δυσκολέψουν το troubleshooting...


Σύμφωνοι, ένα 100% τυποποιημένο firewall δε θα εξασφαλίσει τη μέγιστη ασφάλεια ή ευελιξία, αφού οι κόμβοι διαφέρουν μεταξύ τους. Σε γενικές γραμμές όμως υπάρχουν κάποια do's και dont's όσον αφορά στις υπηρεσίες που πρέπει να "φαίνονται" προς τα έξω, τα οποία θα μπορούσαν να εφαρμοστούν με ένα υποτυπώδες firewall. Απ' το ολότελα...

Όσοι αμετανοήτοι διαθέτουν X-Windows στο router τους ας δοκιμάσουν το Firewall Builder, πιθανόν να τους βολέψει και να μη χρειαστεί να μάθουν βουντού με iptables  :: .




> κάντο πολύ προσεκτικά και πρόσεξε μην κόβει routed traffic...


Γι' αυτό ακριβώς υπάρχει χωριστά η FORWARD chain  :: 

*Mick Flemm:* Αν ενδιαφέρεσαι και θεωρείς ότι μπορεί να σε βοηθήσει, μπορώ, απο βδομάδα που επιστρέφω, να σου στείλω τους κανόνες που χρησιμοποιώ στο δικό μου router για προστασία του ίδιου του router και του εσωτερικού μου δικτύου.

----------


## ablaz3r

Σίγουρα η DROP policy θα ήταν πιο ασφαλής, αλλά θα συμφωνήσω με τον paravoid ότι προσεταιρισμένα firewalls θα δημιουργήσουν πολύ περισσότερα προβλήματα από ότι θα λύσουν... 
Φανταστείτε γκρίνια τώρα από τον client στο A.P. που αποφάσισε βραδιάτικα να παίξει nfs ή cs ή ότι άλλο με κάποιον άλλο χρήστη και δεν μπορεί να παίξει επειδή έχουμε ξεχάσει να κάνουμε allow τα ports που χρησιμοποιούν τα παιχνίδια... Πολύ γκρίνια  ::  

Ίσως για αρχή μία ALLOW policy θα ήταν πιο ανεκτή, ώστε να μπει σε κόμβους που οι ιδιοκτήτες τους δεν ξέρουν να στήσουν το δικό τους firewall, ώστε να προστατευθεί (μερικώς) ο κόμβος.

----------


## racer

Αφού μιλάμε για αρχάριους καλύτερα DROP και μετά με τον καιρό θα μπορεί να ασχοληθεί μόνος του και να κάνει αλαγές.

----------


## Mick Flemm

OK θα βάλω για τα πακέτα που έχουν προορισμό τον router DROP και για τα πακέτα που γίνονται forward accept...

Θα το δειτε μέχρι τώρα είναι πολύ όμορφο (του έχω βάλει και χρωματάκια κλπ  ::  )...

Περιέχει και optimizations στο /proc/sys/net/ipv4... κλπ οπότε ίσως να βοηθίσει κι αλλού, μόνο που πρέπει να δοκιμαστεί πρώτα...

Επιδέι θα τρέχει παρέα με το Trafic shaping δεν κάνω flush τον mangle οπότε θα πρέπει να είναι ΟΚ έτσι...

Πάρτε μια γεύση απ΄ το script μέχρι τώρα (δεν έχω περάσει καθόλου τους κανόνες  ::  είναι στη φάση που τελειώνουν τα sanity checks), πρέπει να περιέχει κανα δυο λαθάκια αλλά εξαλείφονται ενα-ενα  ::  ...


```
Έφυγε λόγω χόρου, θα δείτε σύντομα το ολοκληρομένο ελπίζω...
```

Αν έχετε να διορθώσετε κάτι σε αυτό το κομάτι πείτε το, έχω ήδη αρχίσει να γράφω τους κανόνες.

Τα comments τα έβαλα στα αγγλικά μπας και βοηθηθεί και κάνας άλλος από αυτό (όπως βοηθηκα κι εγώ)...

Υ.Γ. Αλήθεια πως σας φαίνεται το κοματάκι που λέει για το δίκτυο, θα ήθελα να βάλω κάτι καλύτερο αλλά τα Αγγλικά μου δεν βοηθούν  :: 

δοκιμάστε το και πειτε μου...

----------


## Mick Flemm

Πάρτε κι ένα screenshot  :: ...

ΒΤW τα timestamps θα φύγουν μάλον...

Πάω να την πέσω, αύριο θα γίνει τρελό γλέντι, η taratsa θα πάρει φωτιά  ::

----------


## mindfox

Προσοχή με το κομμάτι του VoIP.

Εκεί είναι περίεργα τα πράγματα.

Μήπως πρώτα να κανονίσουμε ανάλογα με τις εφαρμογές που τρέχουμε, να χρησιμοποιούμε κάποιες default ρυθμίσεις, έτσι ώστε να παίζει σωστά και το firewall?

Εννοώ ότι αν ας πούμε οι πόρτες που χρησιμοποιεί το RTP (σε UDP πάντα) είναι διαφορετικές στον κάθε VoIP user, πως στο καλό θα σεταριστούν σωστά τα firewalls?

Η λογική χρήσης και παραμετροποίησης (έστω και έτοιμης) ενός firewall (και ειδικά iptables) από χρήστες που δεν γνωρίζουν, δεν είναι προτινόμενη.
Και μη ξεχνάμε ότι δεν είμαστε διαθέσιμοι 24ώρες το 24ωρο για να κάνουμε troubleshooting του κάθε firewall.

Ανοίγουμε πληγές Mick, χωρίς να υπάρχει λόγος επί του παρόντος. Κάποια πράγματα δεν μπορούν να είναι προ-σεταρισμένα και σίγουρα δεν μπορούν να σερβίρονται έτοιμα.

Υ.Γ. Δεν ασκώ κριτική στην προσπάθειά σου Mick, απλώς σου την απαγορεύω!!!!!  ::   ::   ::   ::

----------


## Mick Flemm

Σου είπα βρε τα πακέτα που γίνονται forwarded έχουν ACCEPT για default policy, ΔΕΝ θα φιλτράρω τα "καλά" πακέτα ούτε το VoIP κλπ, απλά στα forwarded πακέτα θα κοιτάω να κόβω περίεργο trafic (π.χ. trojan horses, κάποια ICMPs, martians κλπ)  ::  ...

Don't worry.

Α BTW μπορώ να πιάσω το VoIP με διάφορους τρόπους (δεν είνα ανάγκη να το πιάσω ανάλογα με την πόρτα) οπότε και πάλι don't worry, αλλά όπως είπες μένει def. policy το accept μέχρι να αποφασίσουμε κάτι άλλο...

να και τι έχω γράψει...


```
Έφυγε λόγω χόρου, θα δείτε σύντομα το ολοκληρομένο ελπίζω...
```

Την επιλογή την έχω αφήσει (θα μπει ένα if then κλπ) για όσους clients τρέξουν το firewall σε ripοrouter και θέλουν να προστατεύσουν το local lan τους.

Έχω αφήσει DROP μόνο για όσα πακέτα πάνε στον router (δεν νομίζω να τρέχει κανέις VoIP στον router, ακόμα κι αν το κάνει θα βάλω ένα option για να περνάει...

----------


## spirosco

Νικο αυτα ισως σου φανουν χρησιμα:



```
Source:  Call Manager		Destination:  Gatekeeper

Description	Type	Destination Port
H.225 RAS	UDP	1719

Source:  Gatekeeper		Destination:  Call Manager

Description	Type	Destination Port
H.225 RAS	UDP	1710 (dynamic?)

Source:  Call Manager		Destination:  Call Manager

Description	Type	Destination Port
H.225 Call Setup	TCP	1720
H.245 Call Control	TCP	1024-5000


Source:  Gatekeeper		Destination:  Gatekeeper

Description	Type	Destination Port
H.225 RAS	UDP	1719

Source:  Call Manager		Destination:  Terminal

Description	Type	Destination Port
Skinny	TCP	49190 (dynamic?)

Source:  Terminal		Destination:  Call Manager

Description	Type	Destination Port
Skinny	TCP	2000


Source:  Terminal		Destination:  Terminal

Description	Type	Destination Port
RTP (Audio Data Streams)	UDP	1024-65535
RTCP (Control Information)	UDP	1024-65535
```

----------


## Mick Flemm

Μην μου αγχώνεστε κάτι από τα παρακάτω θα δουλεύει (τουλάχιστον όσοι τα δοκίμασαν ήταν ΟΚ)...

και με χρήση modules & nated παρακαλώ...
http://soggie.soti.org/linux/gm/

Γενικοί κανόνες με βάση την πόρτα από το WiKi του Asterisk...
# SIP on UDP port 5060. Other SIP servers may need TCP port 5060 as well 
-A INPUT -p udp -m udp --dport 5060 -j ACCEPT 
# IAX2- the IAX protocol 
-A INPUT -p udp -m udp --dport 4569 -j ACCEPT 
# IAX 
-A INPUT -p udp -m udp --dport 5036 -j ACCEPT 
# RTP - the media stream 
-A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT 
# SSH? - Secure shell sessions 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Κανόνες με βάση το TOS αυτό φαίνεται ποιό secure, ας το δοκιμάσει κάποιος με voip να δούμε...

-p udp -m u32 --u32 "0&0x00FF0000>>16=0xb8" # RTP
-p udp -m u32 --u32 "0&0x00FF0000>>16=0x68" # SIP

Αν μπορεί κάποιος να τα δοκιμάσει και να μου πει θα γλίτωνα αρκετό χρόνο...

----------


## paravoid

Mick καταρχάς μπράβο, ωραία δουλειά και well-commented.
Πρόσεχε όμως, έχεις βάλει π.χ. syncookies, ECN και διάφορα άλλα καλούδια που μπορεί να δημιουργήσουν πρόβλημα...

Ακόμα δεν μπορώ να καταλάβω πως μπορεί να φανεί χρήσιμο το firewall σε έναν router ΜΟΝΟ του. Ό,τι ανοίγω στον router μου θέλω να είναι προσβάσιμο. Τι τρέχουν άλλωστε; SSH, Zebra/OSPFd/RIPd, DNS άντε και κανέναν Apache...
Το firewall στον router έχει έννοια να μπλοκάρει unwanted traffic στο εσωτερικό (trusted) interface. Όμως αυτό δεν μπορεί να γίνει τυποποιημένο, δεν ξέρεις τι τρέχει ο καθένας...
Άσε που για να γίνει σωστή δουλειά σε backbone κόμβους (services σε κάποια μηχανήματα, workstations κάποια άλλα) πρέπει να κάνεις πιο σύνθετο configuration - ενδεχομένως και με DMZ.

----------


## Mick Flemm

Το configuration είναι σχεδόν έτοιμο και κατά τύχη είναι ακριβώς 256 γραμμές (μιλάμε έχω γίνει ένα με το PC, πρέπει να πάω για αποτοξίνωση σύντομα  ::   ::   ::  )...

Τα απαίσια Αγγλικά μου δείνουν ρεσιτάλ, παρακαλώ όποιον αγγλομαθή mod να κάνει ένα edit μην γίνω τελείως ρεζίλι (racer ? )  ::  

Πάρτε το...



```
Έγινε update...
```

Ελπίζω να καταλάβατε περίπου τι παίζει, το firewall από μόνο του είναι αυτή τη στιγμή στις 1068 γραμμές με τα comments μέσα και έχει λίγο δουλείτσα ακόμα...[/code]

----------


## racer

Με μιά γρήγορη ματία μου φαίνετε μια χαρούλα, cool  :: 

(για τα comments λέω)

----------


## ysam

> Με μιά γρήγορη ματία μου φαίνετε μια χαρούλα, cool 
> 
> (για τα comments λέω)


Ηλία του έστειλα ένα PM με κάποιες πολύ μικρές αλλαγές. Στην ουσία 
συντακτικό και γραμματική. Κατά τα άλλα μια χαρά είναι, well done m8 Mick  :: 

-Γιάννης

----------


## Mick Flemm

Thanx  ::  όταν τελειώσω και με τις ρουτίνες που θα κάνουν έλεγχο κλπ θα το ανεβάσω (θα αργήσει λίγο γιατί έχω τρεξίματα)...

----------


## Mick Flemm

Πετάω εδώ το configuration που δεν χρειάζεται checking, το firewall πρέπει να το checkάρω πρώτα στο linuxομηχάνημά μου εδωπέρα και μετά θα χρειαστώ κάποιον εθελοντή (ενδιαφέρεται κανείς ?)...



```
Βλ. τελευταίο post...
```

Μένει να βάλω ένα κανόνα για να ελέγχει μόνο το forwarded traffic από κόμβους που απέχουν 1 hop (μπορεί και να βάλω user - defined τον αριθμό των hops)...

Η επόμενη έκδοση θα έχει μερικά dirty thingies όπως π.χ. να κρύβεις το firewall στο traceroute και να κάνεις redirect traffic σε honeypot (είπαμε είμαι τρελάρας  ::  )...

----------


## vegos

> Firewall 1869 γραμμές...
> Configuration 340 γραμμές...
> 
> Πετάω εδώ το configuration που δεν χρειάζεται checking, το firewall πρέπει να το checkάρω πρώτα στο linuxομηχάνημά μου εδωπέρα και μετά θα χρειαστώ κάποιον εθελοντή (ενδιαφέρεται κανείς ?)...
> 
> 
> 
> ```
> #========================================================#
> ...


Να ρωτήσω κάτι (καλοπροαίρετα, γιατί εδώ δεν πάμε καλά τελευταία  ::   ::   ::  )... 

Αφού είναι script για το AWMN, γιατί τα comments είναι στα αγγλικά;

Και εσύ κουράζεσαι να τα μεταφράσεις, κι εμείς να τα ξαναμεταφράσουμε  ::

----------


## paravoid

Αδιόρθωτος είσαι... Τι να σου πω...

----------


## Mick Flemm

Vegos: τα comments είναι στα αγγλικά για να βοηθάνε τον κόσμο που θα το διαβάσει (που μάλλον απ' ότι φαίνεται δεν θα είναι από το awmn αλλά τέσπα), είναι καθήκον μου αφού κάπιοι καλοί άνθρωποι που μιλάνε αγγλικά είχαν την ευγενή καλοσύνη να κάνουν το ίδιο για να καταλάβω εγώ, όπως με βοηθίσανε βοηθάω, so simple, έτσι βοηθάμε την κοινότητα...

Θα έπρεπε και μέρος του site κλπ να μεταφραστεί, είναι άδικο να παίρνουμε γνώση από τους ξένους και να μην τους δείνουμε τίποτα...

Επίσεις το προτιμώ από το να τα έγραφα σε greeklish (γιατί αν τα έγραφα στα ελληνικά, θα έπρεπε να κάνω ολόκληρο tutorial για το πως βάζεις ελληνικά στην κονσόλα)...

paravoid: να μου πεις να μου πεις  ::

----------


## ysam

...και να προσθέσω και κάτι πολύ σημαντικό. Αν μεταφραστούν και κάποιες τεχνικές λέξεις/έννοιες τότε θα θέλεις μετάφραση της μετάφρασης. Άσε που μερικές δεν μεταφράζονται κιόλας ή αν τις μεταφράσεις θα γίνει cartoon και όχι script για firewall.

Χωρίς καμία πρόθεση τσακομού.

-Γιάννης

----------


## vegos

> Vegos: τα comments είναι στα αγγλικά για να βοηθάνε τον κόσμο που θα το διαβάσει (που μάλλον απ' ότι φαίνεται δεν θα είναι από το awmn αλλά τέσπα), είναι καθήκον μου αφού κάπιοι καλοί άνθρωποι που μιλάνε αγγλικά είχαν την ευγενή καλοσύνη να κάνουν το ίδιο για να καταλάβω εγώ, όπως με βοηθίσανε βοηθάω, so simple, έτσι βοηθάμε την κοινότητα...


Ok, τότε πάω πάσο (αν κι εγώ γράφω μόνο ελληνικά, πχ εδώ  ::  )




> ...και να προσθέσω και κάτι πολύ σημαντικό. Αν μεταφραστούν και κάποιες τεχνικές λέξεις/έννοιες τότε θα θέλεις μετάφραση της μετάφρασης. Άσε που μερικές δεν μεταφράζονται κιόλας ή αν τις μεταφράσεις θα γίνει cartoon και όχι script για firewall.


Σαφώς και δεν μεταφράζουμε τις τεχνικές έννοιες.. Τι είμαστε, το RAM; LOLLLLLLlllllllll

----------


## Mick Flemm

> Σαφώς και δεν μεταφράζουμε τις τεχνικές έννοιες.. Τι είμαστε, το RAM; LOLLLLLLlllllllll


  ::   ::   ::   ::  

Υ.Γ. Στην σελίδα που έδωσες δεν έχει οριστεί σωστά το encoding, check it out...  :: 

Υ.Γ.2 Πολύ ωραία progs...

----------


## ysam

> Σαφώς και δεν μεταφράζουμε τις τεχνικές έννοιες.. Τι είμαστε, το RAM; LOLLLLLLlllllllll



Χαχαχαχα και είπα να το γράψω αλλά λέω άσε μην μας βλέπει κανείς και 
μας πει τίποτα..

Υ.Γ. Το LOL όμως δεν το μεταφράζεις... Για να σε δω!

-Γιάννης

----------


## vegos

> Υ.Γ. Στην σελίδα που έδωσες δεν έχει οριστεί σωστά το encoding, check it out...


Αφού παίζει, πάλι καλά.. Έχω προβλήματα με τον server σήμερα  ::   ::   ::  




> Υ.Γ.2 Πολύ ωραία progs...


Thx  ::

----------


## jason2

> Αρχική Δημοσίευση από Mick Flemm
> 
> Firewall 1869 γραμμές...
> Configuration 340 γραμμές...
> 
> Πετάω εδώ το configuration που δεν χρειάζεται checking, το firewall πρέπει να το checkάρω πρώτα στο linuxομηχάνημά μου εδωπέρα και μετά θα χρειαστώ κάποιον εθελοντή (ενδιαφέρεται κανείς ?)...
> 
> 
> 
> ...


Πολύ σωστή η παρατήρησις. Καλό θα είναι επίσης, όχι μόνο τα σχόλια αλλά και η γλώσσες προγραμματισμού να μεταφραστούν και αυτές στα ελληνικά. 
Δεν νομίζω να είναι δύσκολο αυτό. 
Το βούρνειον κέλυφος, όπως και όλα τα άλλα κελύφη, η μαργαριταρένια γλώσσα, καθώς επίσης και η Ιάβα είναι γλώσσες διερμηνευτικές, οπότε η μετάφρασή τους είναι ευκολότατη, για έναν έμπειρο Έλληνα (το Ε κεφαλαίο) προγραμματιστή. Λίγες δυσκολίες ίσως έχουμε στην Γ++.

----------


## vegos

> Λίγες δυσκολίες ίσως έχουμε στην Γ++.


To G=Γ, το C = Σι ή Ψ, διαλέγεις και παίρνεις...

----------


## Mick Flemm

To Firewall είναι πλέον σε φάση που μπορεί να γίνει το πρώτο release, το script θα δημοσιευθεί σύντομα, για να μην γίνει μπάχαλο το thread θα μετακηνίσω όλα τα μυνήματα από το flame στα off-topic...

----------


## Mick Flemm

Configuration, 345 γραμμές...



```
#========================================================#
#AWMN Firewall Configuration...                          #
#========================================================#
#                                                        #
# AWMN stands for Athens Wireless Metropolitan Network.  #
# It is an open wireless network created by common       #
# people who wanted free unlimited communication,        #
# knowledge and fun.                                     #
#                                                        #
# The network operates in Athens/GR and you can find     #
# info about it at www.awmn.gr (soon in english).        #
#                                                        #
#========================================================#
#                                  #
#Written by Mick_Flemm ([email protected])#
#                                  #
#      Version 1.0                 #
#                                  #
#==================================#
#                                  #
#For more info read the firewall   #
#script (/etc/init.d/awmn-firewall #
#or visit www.awmn.gr              #
#                                  #
#==================================#

#Some notes before starting... 
#------------------------------ 
#If any of the variables is left empty, it will switch to defaults... 
#If the variable is a path to some binary and left empty, it will 
#try to find it using "which". 
#If you disable logging, LNCOUNT will still track and count packets... 
#If an "X"iface variable is blank then all configs about that interface 
#will be ignored...

#Iptables location. If iptables are not in /sbin/iptables and can't be located with "which" 
#command, you have to define it's path here, for example IPT=/usr/sbin/iptables. Else leave 
#it blank... 
IPT=""


#How many users are using this firewall (this is used to limit new connections to user_no/sec) ?
Users="64"

#After you finish configuration, switch the folowing to "Y"...

OK="Y"

#===============================================================================================================================#

#Global config...

#===============================================================================================================================#

#LNCOUNT Options...
#-------------------------------------------------------------------------------------------------------------------------------#

#Here are the options for the ruleset that does all the tracking stuff... 
#You can enable/disable logging from the firewall, and enable/disable 
#tracking of some things. It is suggested that you don't change anything 
#except the log variable...

#Enable logging? Possible values are Y/N, default is Y(es)... 
#If for some reason you don't want to log stuff in the syslog 
#you may disable logging of tracked packets by saying N here... 
#
Log="Y"

#Track martians ? Possible values are Y/N, default is Y(es)...
#By enabling this, martians (packets from/to invalid IPs)
#are tracked down in the LNCOUNT chain and get counted...
#
Martians="Y"

#Track port scans and weird packets? Possible values are Y/N, default is Y(es)... 
#By enabling this, (stealth)port scan attempts and invalid packets (bad flags, 
#malformed, suspicious) are tracked down to the LNCOUNT chain and get counted... 
#
PortScans="Y"

#Track possible flood atacks ? Possible values are Y/N, default is N(o)...
#By enabling this, flood attempts are tracked down in the LNCOUNT chain and
#get counted. Warning this is highly experimental and does not always work,
#consider this as "not tested" ...
#
Floods="N"

#Track Backdoors? Possible values are Y/N, default is Y(es)... 
#By enabling this, some known backdoors are tracked down to the LNCOUNT chain 
#and get counted... 
#
Backdoors="Y"

#Track Trojan Horses? Possible values are Y/N, default is Y(es)... 
#By enabling this, some known trojan horses are tracked down to the LNCOUNT chain 
#and get counted...
#
Trojans="Y"

#Track NetBIOS ? Possible values are Y/N, default is Y(es)...
#
NetBios="Y"

#Track dangerous (old) services ? Possible values are Y/N, default is Y(es)...
#
Dangerous="Y"

#Track useless-dangerous ICMP ? Possible values are Y/N, default is Y(es)...
#By enabling this, some ICMP traffic is tracked down in the LNCOUNT chain 
#and gets counted...
#
ICMP="Y"

#Track down connection attempts on RPC dynamic udp port ? Possible values are Y/N, default is Y(es)...
#
RPC="Y"
#For this to work you also have to define where "rpcinfo" and "perl" is (or the script will try to find it 
#using the "which" command
#
PERL="perl"
RPC_INFO="rpcinfo"
#If the above do not work it will be disabled...

#Custom user rules (UALLOW/UDENY chains)...
#----------------------------------------------------------------------------------------------------------------------#

#Here you may allow/deny any port/protocol you want or even write your own iptables
#rules, DALLOW overrides UALLOW, UALLOW overrides LNCOUNT and UDENY overrides all of them
#

#Here declare tcp ports to allow, separated by spaces, for example 
#Tcp_Allow="6245 6375 5059" etc... 
#
Tcp_Allow=""

#Same for UDP...
Udp_Allow=""

#Here you declare protocols to allow (check /etc/protocols), seperated by space,
#for example Proto_Allow="37 121" etc...
#
Proto_Allow=""

#Here declare tcp ports to deny, separated by spaces, for example 
#Tcp_Deny="6245 6375 5059" etc... 
#
Tcp_Deny=""

#Same for UDP...
Udp_Deny=""

#Here you declare protocols to deny (check /etc/protocols), separated by spaces, 
#for example PROTO_ALLOW="37 121" etc... 
#
Proto_Deny=""

#Here you may enter your own iptables rules 
#To specify each iptables rule use this format: 
#$IPT -t filter -A UALLOW ... 
#or 
#$IPT -t filter -A UDENY ...

#USER DEFINED RULES START HERE
#-----------------------------

#-----------------------------
#USER DEFINED RULES END HERE


#===============================================================================================================================#

#Forwarded traffic - interface specific...

#===============================================================================================================================#


#Backbone interfaces...
#-------------------------------------------------------------------------------------------------------------------------------#

#We DON'T filter BB traffic, common BB traffic which uses high bandwidth is allowed 
#by default as soon as it reaches the firewall so we save CPU and latency. If some weird (unexpected) 
#BB traffic reaches the firewall and passes the first ruleset (DALLOW chain) you can route 
#it through LNCOUNT chain to log weird traffic and keep stats from it, you can only keep stats 
#(route it through COUNT chain) or do nothing and simply accept it...

#Enter your Backbone interfaces here, separated by spaces, for example 
#BBifaces="eth0 eth1 wlan0" etc... 
#
BBifaces=""

#Enable tracking of suspicious packets? Possible values are Y/N, default is Y(es)... 
#By enabling this, traffic is passed through LNCOUNT ruleset that logs 
#martians, port scans, invalid packets, malformed packets, Trojan horses, 
#worms, netbios etc. From there, traffic goes to COUNT chain and gets counted 
#so we can have stats about the traffic through the network. If you don't 
#want to log them but only count them, set the Log="" variable to "N"... 
#
BBtrack="Y"



#Access point interfaces...
#-------------------------------------------------------------------------------------------------------------------------------#

#Here you may deny stuff only if you have network problems... 
#It is suggested that you use the rulesets explained above for tracking down weird traffic 
#(LNCOUNT chain) instead of just logging and/or keeping stats here. 
#You may drop weird packets and if you want you may also apply custom rules. 
# 
#

#Enter your AP Interfaces here or the interfaces that are in the same subnet with 
#your AP, separated by spaces, for example APifaces="wlan0 wlan1 eth4" etc... 
#
APifaces=""

#Track down weird traffic ? Possible values are Y/N, default is Y(es)...
#
APtrack="Y"

#Drop weird traffic? Possible values are Y/N, default is N(o)... 
#By saying Y here all weird traffic coming from or going to any of the APifaces 
#you specified above will get dropped after it passes through LNCOUNT chain... 
#APLog must be enabled for this to work... 
#
APDrop="N"

#Enable custom rules for APifaces? Possible values are Y/N, default is N(o)... 
#By saying Y here, traffic coming from or going to any of the APifaces 
#you specified above will pass through UALLOW and UDENY chains (see beginning of config file) 
#
APCustom="N"

#Drop everything else that does not match DALLOW and UALLOW chains
#Possible values are Y/N, default is N(o)...
#
APDDrop="N"



#Local LAN interfaces...
#-------------------------------------------------------------------------------------------------------------------------------#

#Here you can set the interfaces that conect to your Local LANs, 
#you can log and/or count weird packets, drop them, use custom rules or do 
#whatever you want as soon as you don't affect the rest of the network...
#

#Enter your LAN's interfaces here, seperated by spaces, for example 
#LANifaces="eth0 eth2" etc...
#
LANifaces=""

#Track down weird traffic ? Possible values are Y/N, default is Y(es)...
#
LANtrack="Y"

#Drop weird traffic ? Possible values are Y/N, default is Y(es)...
#By saying Y here all the weird traffic coming from or going to any of the LANifaces 
#you specified above will get droped after it passes through LNCOUNT chain...
#LANLog must be enabled for this to work...
#
LANDrop="Y"

#Enable custom rules for CLifaces ? Possible values are Y/N, default is N(o)...
#By saying Y here, traffic coming from or going to any of the LANifaces 
#you specified above will pass through UALLOW and UDENY chains (see begining of config file)
#
LANCustom="N"

#Drop everything else that does not match DALLOW and UALLOW chains
#Possible values are Y/N, default is Y(es)...
#
LANDDrop="Y"



#Client interface...
#-------------------------------------------------------------------------------------------------------------------------------#

#In case this firewall runs on a client's router (one with no AP nor BB links)
#you can log and/or count weird packets, drop them, use custom rules or do 
#whatever you want as soon as you don't affect the rest of the network...
#

#Enter your client interface here, or the interface tat's in the same subnet with
#your client(wifi2ethernet), for example CLiface="eth1" etc...
#
CLiface=""

#Log and/or count weird traffic ? Possible values are Y/N, default is Y(es)...
#
CLtrack="Y"

#Drop weird traffic ? Possible values are Y/N, default is Y(es)...
#By saying Y here all the weird traffic coming from or going to any of the CLifaces 
#you specified above will get droped after it passes through LNCOUNT chain...
#CLLog must be enabled for this to work...
#
CLDrop="Y"

#Enable custom rules for CLiface ? Possible values are Y/N, default is N(o)...
#By saying Y here, traffic coming from or going to the CLiface 
#you specified above will pass through UALLOW and UDENY chains (see begining of config file)
#
CLCustom="N"

#Drop everything else that does not match DALLOW and UALLOW chains
#Possible values are Y/N, default is Y(es)...
#
CLDDrop="Y"

#===============================================================================================================================#

#Input traffic...

#===============================================================================================================================#

#Track down weird traffic ? Possible values are Y/N, default is Y(es)...
#
INtrack="Y"

#Drop weird traffic ? Possible values are Y/N, default is Y(es)...
#By saying Y here all the weird traffic coming from or going to any of the LANifaces 
#you specified above will get droped after it passes through LNCOUNT chain...
#LANLog must be enabled for this to work...
#
INDrop="Y"

#Enable custom rules ? Possible values are Y/N, default is N(o)...
#By saying Y here, traffic coming from or going to any of the interfaces 
#you specified above will pass through UALLOW and UDENY chains (see begining of config file)
#
INCustom="N"

#Drop everything else that does not match DALLOW and UALLOW chains
#Possible values are Y/N, default is Y(es)...
#
INDDrop="Y"

#===============================================================================================================================#
#			T	H	E		E	N	D	!	!	!				#
#===============================================================================================================================#
```

----------


## Mick Flemm

Firewall, 1990 γραμμές...


 ::   ::   ::   ::  

Δεν χώραγε το ριμάδι εδωπέρα, σας κάνω atach το tar.gz κατευθείαν...

----------


## paravoid

Εμ, δεν μπορούσες να το κάνεις attachment...;
Μόλις μεγάλωσες δραματικά το search index...

----------


## Atlantis

Drop και απο εμενα. Οπως προαναφερθη δεν υφιστατε Security ανοιγοντας τα παντα και κλεινοντας ολιγα. 

Δια μεταφραση: Πωλειται λεξικο Μπαμπινιοτη σε πολυ καλη τιμη με πολυ καλες ερμηνιες και μεταφρασεις σε κυριολεκτικα καταστροφικα αποτελεσματα  ::

----------


## mojiro

προτεινω και εγω το drop

ετσι και ξεχασεις τις πορτες για multiplayer games κλειστες........

----------


## Mick Flemm

Το δοκίμασε κανείς ?

----------


## Mick Flemm

Διόρθωσα κάτι επιπολαιότητες στο script και τώρα φαίνεται να δουλεύει Ο.Κ., κατεβάστε το, κάντε το config και τρέξτε 

./firewall start

Αν σας βγάλει μύνημα οτι δεν βρίσκει το ipp2p τότε πρέπει manualy να ορίσετε ποιές πόρτες θέλετε για τα p2p προγράμματά σας ή να αλάξετε το CLDDROP/LANDDROP σε Ν...

----------


## middle_EAST_WEST

που είναι το καινούργιο?

----------


## Mick Flemm

Διορθώθηκε...

----------


## Acinonyx

Φτιάχνω ένα δικό μου firewall και κατέβασα το script σου για να πάρω καμιά ιδέα. Διαβάζοντας το script νομίζω ότι βρήκα μερικά προβληματάκια στο firewall. Δεν έχω και πολλές γνώσεις από iptables γι'αύτο αν είναι διορθώσε με.

Στη γραμμή 408


```
#Accept ourselves...
$IPT -t filter -A DALLOW -i lo -j ACCEPT
```

Δεν θα έπρεπε να κάνεις ACCEPT και για τα εξερχόμενα πακέτα από το loopback? Δηλαδή να προσθέσεις: $IPT -t filter -A DALLOW -o lo -j ACCEPT

Στη γραμμή 411


```
#SYN Flood protection & save us some resources (practicaly this mean limiting new connections to 1/sec for eash user)...
$IPT -t filter -A DALLOW -p tcp --syn -m limit --limit $Users/s -j ACCEPT
```

Αυτό από ότι καταλαβαίνω κάνει ACCEPT όλα τα TCP SYN σε όλες τις θύρες αρκεί να γινονται με rate μικρότερο από $Users ανά δευτερόλεπτο. Αμέσως όμως αναιρει τα επόμενα rules που κάνουν ACCEPT για νεες συνδέσεις ΜΟΝΟ σε συγκεκριμένες υπηρεσίες. Δεν θα ήταν πιό σωστό να μπει αυτό; -> $IPT -t filter -A DALLOW -p tcp --syn -m limit ! --limit $Users/s -j DROP

Στη γραμμή 699


```
#In case we missed something we use another way of grabing illegal flags etc...
if [ "$Log" = "Y" ];then
$IPT -t filter -A LNCOUNT -m state --state INVALID -j LOG --log-prefix "Weird packet: "
```

Έτσι πιάνεις και ICMP πακέτα. Νομίζω το σωστό θα ήταν κάτι σαν $IPT -t filter -A LNCOUNT ! -p icmp -m state --state INVALID -j LOG --log-prefix "Weird packet: "

----------


## Mick Flemm

LoL pathetic  :: , έχεις δίκιο Acinonyx  ::   ::   ::  thanx !!!

Χαίρομαι που κάποιος ασχολήθηκε  ::  με τόσους κανόνες έχασα τον μπούσουλα, ποιό πολύ για αναφορά το έφτιαξα (γι' αυτό και τα πολά comments). Ελπίζω να σε βοήθησε να φτιάξεις το δικό σου.

(πω ρεζιλίκια  ::  το 2 που λες αναιρεί όλο το fw  ::  )

Μπορείς να ανεβάσεις την διορθομένη έκδοση εδωπέρα ?  :: 

Υ.Γ. τα εξερχόμενα πακέτα από το loopback πάνε στην output chain όχι στην input οπότε δεν περνάν από την LNCOUNT ούτως η άλλως, επίσης το INVALID ψάχνει για περίεργες TCP Flags δεν παίζει με ICMP απ' όσο ξέρω...

----------


## Acinonyx

Ναι με βοήθησε πάρα πάρα πολύ!  ::  Ε λογικό είναι να υπάρχουν και κάποια bugs  ::  . Είναι τεράστιο!

Κάτι πρόβλημα έχω με τον κανόνα NEW connection χωρίς SYN και με τον state INVALID. Μου χτυπάνε false alarms. Δεν μπορώ να το εντοπίσω όμως.  ::

----------


## Mick Flemm

Το NEW not SYN είναι και καλά αν το πρώτο πακέτο tcp που δει από κάποιον και δεν είναι σχετικό με κάποιο ήδη υπάρχον session, δεν είναι SYN (δεν είναι δηλαδή καινούρια connection), το κόβει, κανονικά δεν πρέπει να πετάει false alarms, εκτώς αν δουλεύεις με FTP πολύ και μπερδεύεται με το passive FTP, δες αν έχεις πρόβλημμα εκειπέρα αλλιώς απλά κάνει την δουλειά του, δεν είναι απίθανο λόγω lost packets να νομίσει οτι ένα πακέτο είναι καινούριο ενώ στην πραγματικότητα να έιναι από μία προηγούμενη σύνδεση που ψόφησε...

Το INVALID μπορείς και να το βγάλεις, πρακτικά τα περίεργα flags στα TCP headers τα πιάνω με τους κανόνες ποιό πριν (αυτούς που λέω για nmap κλπ) και τα υπόλοιπα malformed packets (όσα μπορεί να καταλάβει τεσπα) τα πιάνει το UNCLEAN...

----------


## Mick Flemm

Η έκδοση 1.1 είναι έτοιμη και θέλω να πιστεύω οτι δουλεύει σωστά, προς το παρόν την δοκιμάζω στον κόμβο μου (αν και πραγματική δοκιμή θα γίνει αφού γίνουν τα BB links) και μετά θα την βγάλω εδωπέρα (έκανα και .deb για όποιον θέλει - γίνεται να μπει στο repository ?)...

----------


## NetTraptor

> Το NEW not SYN είναι και καλά αν το πρώτο πακέτο tcp που δει από κάποιον και δεν είναι σχετικό με κάποιο ήδη υπάρχον session, δεν είναι SYN (δεν είναι δηλαδή καινούρια connection), το κόβει, κανονικά δεν πρέπει να πετάει false alarms, εκτώς αν δουλεύεις με FTP πολύ και μπερδεύεται με το passive FTP, δες αν έχεις πρόβλημμα εκειπέρα αλλιώς απλά κάνει την δουλειά του, δεν είναι απίθανο λόγω lost packets να νομίσει οτι ένα πακέτο είναι καινούριο ενώ στην πραγματικότητα να έιναι από μία προηγούμενη σύνδεση που ψόφησε...
> 
> Το INVALID μπορείς και να το βγάλεις, πρακτικά τα περίεργα flags στα TCP headers τα πιάνω με τους κανόνες ποιό πριν (αυτούς που λέω για nmap κλπ) και τα υπόλοιπα malformed packets (όσα μπορεί να καταλάβει τεσπα) τα πιάνει το UNCLEAN...





> NEW not SYN logs are usually caused by the non-standard conformant TCPIP stack used by Microsoft


Hmmmm??  ::

----------


## Mick Flemm

> The SYN[chronize] flag is the TCP packet flag that is used to initiate a TCP connection. A packet containing solely a SYN flag is the first part of the "three-way handshake" of TCP connection initiation. It is responded to with a SYN-ACK packet.
> Packets setting the SYN flag can also be used to perform a SYN flood and a SYN scan.





> ```
> September 1981                                                          
>                                            Transmission Control Protocol
>                                                 Functional Specification
> 
> 
> 
>     Current Segment Variables
> 
> ...


Δεν νομίζω η M$ να ξέσκισε τόσο πολύ το TCP, αν όντως το έχει κάνει τότε σίγουρα δεν φταίει το firewall που τα κόβει, η SYN Flag είναι εκεί για συγκεκριμένο σκοπό και την φέρουν συγκεκρημένα πακέτα. Όπως βλέπεις και στο διάγραμμα όλα ξεκινάν με την αποστολή ενός πακέτου με SYN Flag, οπότε αν ένα πακέτο σου έρθει ξαφνικά από κάποιον (είναι το πρώτο που παίρνεις = δεν ανοίκει σε κάποιο υπάρχον session) τότε το ποιό λογικό είναι να υποθέσεις οτι είναι από κάοπιο session που έλειξε ή κάποιος "παίζει" μαζί σου στέλνοντάς σου πακέτα προσπαθώντας να "χωθεί" σε κάποιο από τα sessions σου και να σου στείλει ότι θέλει...

Υ.Γ. Αν σε ενδιαφέρει καλό θα ήταν να διαβάσεις το RFC793 για να καταλάβεις ακριβώς τι παίζει.

DISCLAYMER: Μην πιστεύεις ότι διαβάζεις, για να είσαι σίγουρος διάβασε τα RFCs μπορεί κι εγώ και αυτός που έγραψε το κομάτι που έκανες quote να σου λέει ανακρίβειες, η γνώση είναι δύναμη gogogo !!!

Υ.Γ.2 JON POSTEL LIVES !!!

----------


## NetTraptor

Να σε καλά για τον κόπο… thanks…για αυτό και το hmmmm…
Σαν σκέψη το παρέθεσα μπας και ήξερε κανείς τίποτα για αυτό…. Κάποιος σε ένα forum του IPCOP το διαφήμιζε πολύ…
Οσο για τα RFC … ανεπιφύλακτα σε όλους… είναι Α&Ω

----------


## Mick Flemm

Να 'σαι καλά, anytime  ::

----------

