PDA

Επιστροφή στο Forum : iptables & port forwarding



hlias0
29-03-12, 18:56
Καλησπέρα σε όλους,

Θέλω να ρωτήσω αν ξέρει κανένας πως γίνεται να ρυθμίσω port forwarding σε ένα firewall χρησιμοποιόντας το command line tool 'iptables'. Η ρύθμιση θα γίνει σε router που τρέχει busybox.

# cat /proc/version
Linux version 2.4.17_mvl21-malta-mips_fp_le (root@localhost.localdomain) (gcc ve
rsion 2.95.3 20010315 (release/MontaVista)) #19 Fri Dec 9 17:16:36 CST 2005

Είναι πολύ εύκολο να γίνει χρησιμοποιώντας το web interface του router αλλα δεν μου φτάνει αυτό! Θέλω να το κάνω σε command line για να μπορώ να βάλω την εντολή σε script ώστε να μου ανοίγει πόρτες στο firewall όταν το επιθυμώ (χωρίς να χρειάζεται login στο router και τα λοιπά).

Γνωρίζει κάποιος κάτι πάνω σε αυτό?

klik
29-03-12, 22:17
http://ornellas.apanela.com/dokuwiki/pub:firewall_and_adv_routing

hlias0
30-03-12, 11:52
thanks gia to link. Έχει καλές πληροφορίες για το πως δουλεύει το iptables. Το διάβασα, δεν αναφέρει πουθενά παράδειγμα για port forwarding ρε γμτ. Με τα πολλά, βρήκα και κάτι άλλες πληροφορίες στο ιντερνετ, κατάφερα να περάσω το rule στο IN_FILTER chain.

iptables -A IN_FILTER -p tcp -s 0/0 -d 192.168.0.2 --dport 23 -j ACCEPT

To port forwarding το κάνω για telnet service (port 23).

Αλλά δεν δουλεύει !!! Μάλλον κρύβονται και άλλα από κάτω. Μάλλον πρέπει να βάλω κανένα OpenWRT που έχει full documentation. Γιατί το firmware που έχω τώρα δεν έχει δocumentation (Netgear DG834 που τρέχει modified firmware από την DGTeam -) :001_rolleyes:

bchris
30-03-12, 12:55
Το link που σου εδωσε ο klik το διαβασες?
Αν δεν το διαβασες να το διαβασεις.
Αν το διαβασες και δεν το καταλαβες, δεν εκπλησομαι, μιας και το iptables εχει βλαμμενη συνταξη και παραλογη λογικη. Οπως ολα βεβαια στην κουραδα που λεγεται linux...

Τελος παντων, αυτο που θες να κανεις ειναι να αντιστοιχισεις ενα port στην εξωτερικη IP του firewall, σε ενα port σε καποια IP στο εσωτερικο σου δικτυο.
Κατι σαν αυτο δηλαδη:

iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 23 -j DNAT --to-destination 192.168.0.2:23

Εδω θα προτεινα το εξωτερικο port να μην ειναι το 23 (που ειναι απο τα πρωτα που θα "χτυπησει" καποιος, αλλα καποιο σαν το 22223)
Οποτε το παραπανω γινεται:

iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 22223 -j DNAT --to-destination 192.168.0.2:23

Αυτο βεβαια ειναι για τα incoming connections.
Πρεπει να κανεις αλλο ενα για το outgoing traffic (δηλαδη κανεις εσυ ενα connection απο εξω στην μηχανη --192.168.0.2-- αλλα αυτη δεν μπορει να σου απαντησει)

Το πιο γρηγορο κι ευκολο ειναι το MASQUERADE:

iptables -t nat -A POSTROUTING -s 0/0 -J MASQUERADE


Αυτα τα ολιγα. Αμα το "πιασεις" το iptables, το τιθασευεις σχετικα ευκολα.
Τα παραπανω ενδεχεται να περιεχουν λαθακια, μιας κι εχω (ευτυχως) πολυ καιρο ν' ασχοληθω με το θεμα.


ΥΓ:
Το port που χρησιμοποιεις παραπανω (23) ειναι το port για το telnet.
Ακρως insecure... Τα passwords καθως κι ολη η επικοινωνια ταξιδευει clear text.
Παρατατο και χρησιμοποιησε ssh (port 22) και με pre-shared keys. Ετσι αν σου "φαει" καποιος το password (δυσκολο κι απιθανο, αλλα οχι αδυνατο) παλι να μην μπορει να μπει στην μηχανη, μιας και δεν θα εχει το κλειδι.

hlias0
30-03-12, 13:06
thanks chris. ναι το διάβασα, έιχα δοκιμάσει κάτι παρόμοιο αλλά δεν δούλεψε.

με αυτό που προτίνεις δούλεψε. και για να αφαιρέσεις το rule

iptables -t nat -D PREROUTING [rule number]

Γιατί όμως, σε αυτο που μου πρότινες κάνεις jump στο DNAT table?

EDIT: απευθύνομαι στο iptables -t nat -A PREROUTING -p tcp -s 0/0 --dport 23 -j DNAT --to-destination 192.168.0.2:23

bchris
30-03-12, 13:11
Το DNAT δεν ειναι table. Ειναι TARGET...



Απο το iptables(8)
.
.
.
DNAT
This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and
user-defined chains which are only called from those chains. It specifies that the des-
tination address of the packet should be modified (and all future packets in this con-
nection will also be mangled), and rules should cease being examined. It takes one type
of option:

hlias0
30-03-12, 13:19
οκ cool. πρέπει να το καταλάβω καλύτερα. το quote από που το πήρες? Δεν είναι απο το link του klik.

bchris
30-03-12, 13:22
Ειναι απο το man του iptables. (Αστο αμφιβαλλω αν κι ιδιοι που το εγραψαν, καταλαβαινουν τιποτα απο κει μεσα)

man iptables (http://linux.die.net/man/8/iptables)

hlias0
30-03-12, 13:27
ΥΓ:
Το port που χρησιμοποιεις παραπανω (23) ειναι το port για το telnet.
Ακρως insecure... Τα passwords καθως κι ολη η επικοινωνια ταξιδευει clear text.
Παρατατο και χρησιμοποιησε ssh (port 22) και με pre-shared keys. Ετσι αν σου "φαει" καποιος το password (δυσκολο κι απιθανο, αλλα οχι αδυνατο) παλι να μην μπορει να μπει στην μηχανη, μιας και δεν θα εχει το κλειδι.


Εντάξει τα καταλαβαίνω όλα αυτα. To SSh dεν είναι διαθέσιμο παντού. Μερικά εταιρικά δίκτυα το block-άρουν για να αποφεύγουν το SSH tunneling (για να μην μπαίνεις στο facebook και παπαριές). Και δε λύνεται απλά ανοίγοντας SSH σε άλλο port πέραν του 22.

Τα κάνω όλα αυτά με το iptables για να μπορώ να ανοίγω το port όταν το χρειάζομαι και να το κλείνω όταν τελειώσω την δουλειά μου με ένα script. Οπότε είτε είναι port 23 είτε 40023 δεν έχει και πολύ σημασία αφού είναι ευφήμερο.

Όσο για το non-encrypted password αυτό είναι πρόβλημα... αλλά αν δεν έχεις SSH available δεν υπάρχει άλλη λύση.

hlias0
30-03-12, 13:29
Ειναι απο το man του iptables. (Αστο αμφιβαλλω αν κι ιδιοι που το εγραψαν, καταλαβαινουν τιποτα απο κει μεσα)

man iptables (http://linux.die.net/man/8/iptables)

xaxa το κακό είναι ότι τα περισσότερα linux tools έχουν γραφεί από άτομα που απλώς δεν τους νοιάζει!

bchris
30-03-12, 13:32
Δεν καταλαβαινω ακριβως τι θες να πεις...
Κοβουν το ssh και αφηνουν το telnet? Μου ακουγεται το λιγοτερο περιεργο.

Εσυ τι θες να κανεις?
Να μπαινεις απο την δουλεια σου στο σπιτι σου ή απο το σπιτι σου στην δουλεια σου?

hlias0
30-03-12, 13:37
Με το telnet δεν μπορείς να κάνεις tunneling, τουλάχιστον όχι με έτοιμο software.

Από οπουδήποτε στο σπίτι μέσω SSH. Και όταν το SSH δεν την παλεύει (όταν είμαι στην δουλειά δηλαδή) τότε με telnet ανοίγωντας την πορτ xx23 για λίγο, μπαίνω κάνω τα δικά μου, βγαινω κλείνω την πόρτα πίσω μου :-)

joeiwannou
31-03-12, 13:49
Αν δεν βρεις λυση εδω δες

http://ubuntu.gr/ (http://ubuntu.gr/)
http://www.adslgr.com/
http://www.insomnia.gr/