The_Mentor Δημοσ. 21 Φεβρουαρίου 2007 Share Δημοσ. 21 Φεβρουαρίου 2007 Έχω καταμπερδευτεί... προσπαθώ να αποκλείσω μια διεύθυνση ΙΡ (10.10.10.10) απο το να μπαινει στο ιντερνετ και δεν μπορώ ότι και να δοκίμασα... Διάβασα και του αποικου το ποστ αλλά είμαι σε κατάσταση σοκ!!! Προφανώς πρέπει να μπεί πρίν την δήλωση iptables -I INPUT -s XXX.XXX.XXX.XXX -j DROP iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT διαφορετικά δεν θα παίζει αλλά... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 21 Φεβρουαρίου 2007 Share Δημοσ. 21 Φεβρουαρίου 2007 Περίγραψε την τοπολογία του δικτύου σου και τι ακριβώς θέλεις να κάνεις, αλλιώς δε μπορεί κανείς να βοηθήσει Αν μάντεψα καλά, έχεις ένα εσωτερικό δίκτυο (ας πούμε 10.10.10.0/24), έχεις επίσης και ένα μηχάνημα με IPtables το οποίο έχει ένα interface στο εσωτερικό δίκτυο και ένα interface με public IP address προς το Internet και το μηχάνημα αυτό το έχεις να κάνει NAT ώστε να χρησιμεύει ως gateway του εσωτερικού δικτύου προς το Internet. Όμως σε έναν από τους hosts του εσωτερικού δικτύου θέλεις να απαγορεύσεις την πρόσβαση στο Internet. Έτσι είναι; Σε αυτήν την περίπτωση θα πρέπει να χρησιμοποιήσεις την αλυσίδα Forward, καθώς η αλυσίδα Input αναφέρεται σε πακέτα που προορίζονται για το ίδιο το μηχάνημα με τα Iptables, και να τοποθετήσεις σε κάποιο μέρος αυτής της αλυσίδας αρκετά υψηλό ώστε να μην προλάβει κάποιος κανόνας με ALLOW target να τερματίσει τα πακέτα που σε ενδιαφέρουν (αν υπάρχει τέτοιος κανόνας φυσικά), κάτι σαν: >iptables -A FORWARD -s 10.10.10.10 -j DROP Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
The_Mentor Δημοσ. 22 Φεβρουαρίου 2007 Μέλος Share Δημοσ. 22 Φεβρουαρίου 2007 Μια NIC κάρτα με eth0 62.x.x.x & eth0:1 10.10.10.11 Λοιπόν, Ξεκινάω έτσι: >iptables -F INPUT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -d 10.Χ.Χ.11 -j ACCEPT iptables -A INPUT -i eth0 -s 10.x.x.0/24 -j ACCEPT Επίσης κάνω accept τα ICMP πακέτα και προχωρώ: >iptables -A INPUT -p tcp --dport 80 -j ACCEPT + διάφορά άλλα πορτ που χρειάζομαι για το δίκτυο Τερματίζω: >iptables -P INPUT DROP και μασκάρώ με >echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -d ! 10.x.x.0/24 -j SNAT --to-source 62.x.x.x Στο παραπάνω φαίνεται πως κάνω accept όλοι την κίνηση από το eth0. Θα ήθελα όμως να κόψω Internet (αλλά όχι mail αν γίνεται) από την διεύθυνση 10.10.10.30 πχ. Δοκίμασα όπως είπα και παραπάνω ότι μου περνούσε από το μυαλό (προσπαθώντας να εφαρμόσω και του αποικου το how-to αλλά μπερδεύτηκα μάλλον περισσότερο... Μιά βοήθεια κατανοητή παιδιά... Ευχαριστώ!!! Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 22 Φεβρουαρίου 2007 Share Δημοσ. 22 Φεβρουαρίου 2007 Το σημαντικό είναι να δεις τη διαφορά ανάμεσα στις 3 βασικές αλυσίδες: την INPUT, την OUTPUT και την FORWARD. - Ο,τιδήποτε βάλεις στην αλυσίδα INPUT θα εφαρμοστεί σε πακέτα τα οποία απευθύνονται στον ίδιον τον host που τρέχει τα iptables. Όχι σε πακέτα τα οποία θα δρομολογηθούν. - Ο,τιδήποτε βάλεις στην αλυσίδα FORWARD θα εφαρμοστεί σε πακέτα τα οποία φθάνουν σε κάποιο interface του host που τρέχει τα iptables, όμως δεν έχουν Destination Address κάποια από τις ίδιες IP αυτού του host, οπότε πρόκειται να δρομολογηθούν από κάποιο άλλο Interface. - Ο,τιδήποτε βάλεις στην αλυσίδα OUTPUT θα εφαρμοστεί σε πακέτα τα οποία προέρχονται από τον ίδιον τον host που τρέχει τα iptables. Στο ruleset που δημοσίευσες δεν ανέφερες καθόλου κανόνες για την αλυσίδα FORWARD, που είναι αυτή από την οποία θα περάσουν τα πακέτα προς το internet της διεύθυνσης που θέλεις να περιορίσεις (π.χ. 10.10.10.30). Αυτή τη στιγμή, αφού δεν έχεις κανέναν κανόνα για την αλυσίδα forward, θα εφαρμοστεί το policy για αυτή την αλυσίδα, το οποίο by default είναι ACCEPT. Αν θέλεις να απαγορεύσεις την πρόσβαση του 10.10.10.30 προς το internet, μπορείς να προσθέσεις κάτι σαν: >iptables -A FORWARD -s 10.10.10.30 -j DROP Αν θέλεις να επιτρέψεις την πρόσβαση του 10.10.10.30 μόνο προς SMTP servers που ακούν στην port 25, μπορείς να προσθέσεις πριν από αυτόν τον κανόνα, κάτι σαν: >iptables -A FORWARD -p tcp --dport 25 -s 10.10.10.30 -j ACCEPT Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
The_Mentor Δημοσ. 22 Φεβρουαρίου 2007 Μέλος Share Δημοσ. 22 Φεβρουαρίου 2007 Η θέση όμως που πρέπει να μπεί ποιά είναι? Σε οποιοδήποτε σημείο του rule αν το βάλω θα έχω το ίδιο αποτέλεσμα? Ευχαριστώ Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 22 Φεβρουαρίου 2007 Share Δημοσ. 22 Φεβρουαρίου 2007 Κάθε αλυσίδα έχει δικό της σύνολο θέσεων, η θέση ενός κανόνα έχει σημασία μόνο σε σχέση με τη θέση κανόνων που ανήκουν στην ίδια αλυσίδα. Οπότε για το συγκεκριμένο ζητούμενο πρέπει να προσέξεις μόνο τη σειρά των rules που αναφέρονται στην αλυσίδα FORWARD. Αρκεί να θυμάσαι ότι θα εφαρμόζεται πάντα ο πρώτος κανόνας που αντιστοιχίζει ένα πακέτο (εφόσον έχει τερματικό target, όπως π.χ. ACCEPT, DENY, DROP). Οπότε π.χ. αν έβαζες πρώτα τον rule >iptables -A FORWARD -s 10.10.10.30 -j DROP και μετά τον rule >iptables -A FORWARD -p tcp --dport 25 -s 10.10.10.30 -j ACCEPT ο τελευταίος κανόνας θα αγνοούταν, επειδή ο πρώτος σαν πιο γενικός θα "τερμάτιζε" όλα τα πακέτα τα οποία θα μπορούσε να ταιριάξει ο τελευταίος. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
The_Mentor Δημοσ. 22 Φεβρουαρίου 2007 Μέλος Share Δημοσ. 22 Φεβρουαρίου 2007 Ευχαριστώ πολύ για την βοήθεια... Στον κανόνα στις πρώτες εντολές φάίνεται πως >iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT με αυτή κάνω accept όλη την κίνηση που ξεκινάω εγώ (από το δίκτυο μου). Επομένως ΠΡΙΝ απο αυτή θα πρέπει να μπεί? Ρωτάω διότι λογικά δεν θα έχει πρόβλημα αν του λές: 1. Κάνε accept όλη την κίνηση που ξεκινάω εγώ 2. Κάνε Accept την κίνηση μόνο από την πόρτα 25 της ΙΡ 10.10.10.30 Αυτό το σημείο με έχει μπερδέψει... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 22 Φεβρουαρίου 2007 Share Δημοσ. 22 Φεβρουαρίου 2007 με αυτή κάνω accept όλη την κίνηση που ξεκινάω εγώ (από το δίκτυο μου) Όχι την κίνηση προς το Internet! Οι υπολογιστές του δικτύου σου για να βγουν στο internet δε θα περάσουν ποτέ από την αλυσίδα INPUT. Η INPUT έχει σχέση αποκλειστικά με το ποιος θα μπορεί να επικοινωνήσει απευθείας με το ίδιο το μηχάνημα που τρέχει τα iptables. - Ο,τιδήποτε βάλεις στην αλυσίδα INPUT θα εφαρμοστεί σε πακέτα τα οποία απευθύνονται στον ίδιον τον host που τρέχει τα iptables. Όχι σε πακέτα τα οποία θα δρομολογηθούν. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
The_Mentor Δημοσ. 22 Φεβρουαρίου 2007 Μέλος Share Δημοσ. 22 Φεβρουαρίου 2007 Συνολικός κανόνας > #!/usr/local/bin/bash # # καθαρίζω τον πίνακα συνολικά iptables -F # δέχομαι το loopback από την μηχανή μου iptables -A INPUT -i lo -j ACCEPT # δέχομαι INTRANET συνδέσεις που γίνονται από το δίκτυό μου iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Δέχομαι 5 ping max ta 10 iptables -A INPUT -p icmp --icmp-type echo-request -m limit \ --limit 5/s --limit-burst 10 -j ACCEPT # δέχομαι ICMP packets except echo-request iptables -p icmp --icmp-type ! echo-request -j ACCEPT # δέχομαι traffic στην κάρτα μου eth0 iptables -A INPUT -i eth0 -d 10.10.10.11 -j ACCEPT iptables -A INPUT -i eth0 -s 10.10.10.0/24 -j ACCEPT # Σύνδεση μόνο για email από συγκεκριμένες IPs iptables -A FORWARD -p tcp --dport 25 -s 10.10.10.10 -j ACCEPT # ΑΡΝΟΥΜΑΙ συνδέσεις προς INTERNET από συγκεκριμένες IPs iptables -A FORWARD -s 10.10.10.10 -j DROP # Setting Ports iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp --dport 110 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT iptables -A INPUT -p tcp --dport 23 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 143 -j ACCEPT # πετάμε την υπόλοιπη κίνηση iptables -P INPUT DROP # FTP (passive and active mode) από το firewall modprobe ip_conntrack_ftp # Masquerating echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -d ! 10.10.10.0/24 -j SNAT --to-source 62.x.x.x # Είναι σωστό??? Βάση αυτού θα έχει ο κόσμος Internet εκτός από το 10.10.10.10 που θα έχει ΜΟΝΟ μαιλ???? Και πάλι ευχαριστώ... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 22 Φεβρουαρίου 2007 Share Δημοσ. 22 Φεβρουαρίου 2007 Ναι, αν το ># iptables -A FORWARD -s 10.10.10.30 -j DROP το κάνεις >iptables -A FORWARD -s 10.10.10.10 -j DROP πρέπει να δουλέψει. ΥΣ. Αν θέλεις, αφού δεις ότι δουλεύει, αντικατάστησε το policy της FORWARD με default deny, όπως κάνεις με την INPUT, και κάνε accept όσο το δυνατόν λιγότερα και πιο συγκεκριμένα πράγματα. Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
The_Mentor Δημοσ. 22 Φεβρουαρίου 2007 Μέλος Share Δημοσ. 22 Φεβρουαρίου 2007 Thanks... Eternal Respect... Να ρωτήσω κάτι ακόμα... Στο σημείο που κάνουμε ># δέχομαι traffic στην κάρτα μου eth0 iptables -A INPUT -i eth0 -d 10.10.10.11 -j ACCEPT iptables -A INPUT -i eth0 -s 10.10.10.0/24 -j ACCEPT δέχομαι όλη την κίνηση στην eth0 μου. Αν ήθελα να βγάλω έξω ΜΟΝΟ 5 διευθύνσεις ιρ (10.10.10.10 έως 10.10.10.14) θα έπρεπε να κάνω DROP όλη την κίνηση και μετά ACCEPT τις συγκεκριμένες διευθύνσεις???????? Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
nske Δημοσ. 22 Φεβρουαρίου 2007 Share Δημοσ. 22 Φεβρουαρίου 2007 Μα αφού είπαμε ότι η αλυσίδα INPUT δε σχετίζεται με ο,τι δρομολογείται από ένα interface σε ένα άλλο, μόνο η αλυσίδα FORWARD σχετίζεται! Την INPUT μην την κοιτάς καν όταν θέλεις να καθορίσεις την πρόσβαση του εσωτερικού δικτύου στο Internet, σα να μην υπάρχει. Οπότε θα πάρεις 1-1 τους κανόνες της Forward και θα επαληθεύσεις τη σειρά μεταξύ τους όταν θέλεις να κάνεις οποιαδήποτε αλλαγή. Αυτή τη στιγμή έχεις 2 κανόνες και το default policy της Forward είναι ACCEPT. Λες: 1) iptables -A FORWARD -p tcp --dport 25 -s 10.10.10.10 -j ACCEPT# Όταν ο host 10.10.10.10 προσπαθεί να συνδεθεί στην port 25 απομακρυσμένων hosts επίτρεψε στα πακέτα να περάσουν. 2) iptables -A FORWARD -s 10.10.10.10 -j DROP # Όταν ο host 10.10.10.10 προσπαθεί να συνδεθεί οπουδήποτε πέταξε τα πακέτα του στα σκουπίδια. Φυσικά αν προσπαθεί να συνδεθεί στην 25, θα τον έχει πιάσει ήδη ο από πάνω κανόνας οπότε τα πακέτα του θα περάσουν. 3) iptables -P FORWARD ACCEPT # (αυτό δε το λες αλλά ενοείται επειδή δε λες κάτι άλλο) Ο,τιδήποτε δεν έχει ταιριάξει σε κάποιον κανόνα, κάνε το ACCEPT. Θα μπορούσες να το κάνεις κάπως έτσι: 1) iptables -A FORWARD -p tcp --dport 25 -s 10.10.10.10 -j ACCEPT# Όταν ο host 10.10.10.10 προσπαθεί να συνδεθεί στην port 25 κάνε τα πακέτα του ACCEPT 2) iptables -A FORWARD -s 10.10.10.0/24 ! 10.10.10.10 -j ACCEPT # Ο,τιδήποτε έρχεται από hosts του δικτύου 10.10.10.0/24, εκτός από τον host 10.10.10.10, κάνε το ACCEPT. Μπορείς να βάλεις όσους hosts θέλεις δίπλα δίπλα, επίσης για λόγους τάξης μπορείς να τους ορίσεις σε μια μεταβλητή και να δώσεις στην παράμετρο -s το όνομα της μεταβλητής. 3) iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Ό,τιδήποτε πακέτο ανήκει ή σχετίζεται με μια σύνδεση η οποία έχει ανοίξει ήδη (προφανώς επειδή της έχει επιτραπεί από κάποιον από τους άλλους κανόνες), κάνε το ACCEPT. 4) iptables -P FORWARD DROP # Ο,τιδήποτε δεν έχει ταιριάξει σε κάποιον κανόνα, κάνε το DROP. Οπότε αν ήθελές να εφαρμόσεις αυτό που είπες, το 2) iptables -A FORWARD -s 10.10.10.0/24 ! 10.10.10.10 -j ACCEPT # Ο,τιδήποτε έρχεται από hosts του δικτύου 10.10.10.0/24, εκτός από τον host 10.10.10.10, κάνε το ACCEPT. Μπορείς να βάλεις όσους hosts θέλεις δίπλα δίπλα, επίσης για λόγους τάξης μπορείς να τους ορίσεις σε μια μεταβλητή και να δώσεις στην παράμετρο -s το όνομα της μεταβλητής. θα γινόταν 2) iptables -A FORWARD -s 10.10.10.11 10.10.10.12 10.10.10.13 10.10.10.14 -j ACCEPT # Ο,τιδήποτε έρχεται από τους hosts 10.10.10.11-14, κάνε το ACCEPT. ή πιο όμορφα ALLOWED_HOSTS="10.10.10.11 10.10.10.12 10.10.10.13 10.10.10.14" iptables -A FORWARD -s $ALLOWED_HOSTS -j ACCEPT Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
The_Mentor Δημοσ. 23 Φεβρουαρίου 2007 Μέλος Share Δημοσ. 23 Φεβρουαρίου 2007 Λοιπόν το εφαρμόζω και επανέρχομαι... Σε ευχαριστώ εξαιρετικά για τον κόπο και την βοήθεια σου... Συνδέστε για να σχολιάσετε Κοινοποίηση σε άλλες σελίδες άλλες επιλογές
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.