Προς το περιεχόμενο

Εισαγωγικός οδηγός iptables


apoikos

Προτεινόμενες αναρτήσεις

Άποικε, συγχαρητήρια για έναν ακόμη απίστευτα καλογραμμένο οδηγό! Είναι αξιέπαινο που αφιερώνεις τόσο χρόνο για την κοινότητα των Insomniacs, πέρα από το moderating. Μακάρι να βρω σύντομα κι εγώ λίγο χρόνο να ανταποδώσω με κάτι αντίστοιχο...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 35
  • Δημ.
  • Τελ. απάντηση

poly kalo post. eyxaristoume gia to polytimo xrono pou die8eses.

mia erwthsh mono (toulaxiston gia arxh..). xrhsimopoiw edw kai peripou ena mhna to shorewall pou einai frontend gia to iptables. exw ftasei se shmeio na kanw drop ola ta tcp kai udp paketa apo oles ti 8yres pou den xrhsimopoiw. parola ayta online scanners opws to shields up! h to pcflank deixnoun tis perisoteres 8yres san closed anti stealthed. yparxei kapios allos tropos na dokimaseis poso aksiopisto einai to firewall xwris na blekseis me online scanning. px me thn egkatastash kapiou paketou?

 

edit: ups molis eida oti anafereis to nmap. sto post sou, gegonos pou me anagkazei na anaskeyasw thn erwthsh mou. yparxei kapios tropos na peraseis ola ayta ta scanners? px ayta tou http://www.pcflank.com

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αντε man και έβγαλα γένια τόσο καιρό να περιμένω.... :P

 

Kατα πάσα πιθανότητα ο καλύτερος ελληνικός οδηγός για iptables.

Τέτοιοι γνώστες με τέτοιο χαρακτήρα σπανίζουν.

 

Είσαι ωραίος :ruleofthumb:

 

Cheers!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 5 μήνες μετά...

Θα ήθελα να σας ρωτήσω κάτι σχετικά με τα iptables.

 

Είναι γνωστό πως όταν φτιάχνουμε τα rules στο firewall πρέπει να έχουνε rules όσο για τι incoming traffic όσο και για το outgoing.

Ώμος σχεδόν όλα τα καινούρια firewalls όπως π.χ του Solaris το ipf ή αυτό της Cisco που χρησιμοποιεί στα router της είναι statefull (όπως άλλωστε και το iptables).

Στα statefull firewalls δεν είναι απαραίτητο ναι φτιάχνεις ένα rule και για τις δυο κατευθύνσεις, δηλαδή αν αφήνεις π.χ το http στο out, όταν έρχεται το traffic για την 80 φτιάχνει αυτόματα rule στο incoming, στο οποίο όπως λέει κρατάει το state.

Το πρόβλημα μου είναι όταν δεν μπορώ να καταλάβω πως ενεργοποιείτε αυτή η λειτουργία στα iptables. Δουλεύω περισσότερο Solaris και εκεί ξερώ πως ακριβός δουλεύει ο firewall . Το iptables το έχω ρυθμίσει στα πάντα εκτός από αυτό και δεν θέλω να φτιάχνω 70 rules για το incoming traffic. Αν ξέρει κάποιος ας βοηθήσει. Έχω FC7 με iptables 1.3.7.

 

 

Ευχαριστώ πολύ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το stateful firewalling στο Linux γίνεται μέσω του connection tracking module και του state match και ενεργοποιείται ως εξής:

>
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Αντίστοιχα μπορείς να το κάνεις και για τη FORWARD και την OUTPUT chain. Από κει και πέρα ορίζεις κανονικά στο firewall ποιες συνδέσεις θα είναι αυτές που επιτρέπεις να δημιουργούνται και άπαξ και αυτές δημιουργηθούν, το firewall θα τις αφήνει να λειτουργήσουν κανονικά. Είναι πολύ σημαντικό ο κανόνας του stateful matching να είναι πάνω-πάνω στην εκάστοτε αλυσίδα.

 

Τέλος, υπάρχουν και βοηθητικά modules για το connection tracking «μυστήριων» πρωτοκόλλων (π.χ. FTP, SCTP κλπ). Από αυτά μάλλον θα χρειαστείς το ip_conntrack_ftp, το οποίο και φορτώνεις με modprobe.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν ξερώ γιατί αλλά δεν μου φορτώνει το ip_conntrack, αντί αυτού έχω το nf_conntrack. Όταν κάνω δε “cat /proc/net/nf_conntrack” βλέπω τα connections που έχουνε γίνει.. Το iptstate δεν μου δείχνει τίποτα.

 

Έβαλα την εντολή iptables -Ι FORWARD 1 -m state --state ESTABLISHED, RELATED -j ACCEPT αλλά δεν βοήθησε.

Με το που βάζω iptables -P FORWARD DROP όλο to incoming traffic κόβετε. Λογικά δεν θα έπρεπε λόγω του πρώτου rule στο forward chain που επιτρέπει το ESTABLISHED traffic να περνάει.

 

Παρακάτω σάς παραθέτω το configuration.

 

Chain FORWARD (policy ACCEPT)

num target prot opt source destination

1 ACCEPT 0 -- anywhere anywhere state RELATED,ESTABLISHED

2 bad_tcp_packets tcp -- anywhere anywhere

3 Internet_Out 0 -- anywhere anywhere

 

Chain OUTPUT (policy ACCEPT)

num target prot opt source destination

 

Chain Allowed (5 references)

num target prot opt source destination

1 ACCEPT tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN

2 ACCEPT tcp -- anywhere anywhere state RELATED,ESTABLISHED

3 DROP tcp -- anywhere anywhere

 

Chain Internet_Out (1 references)

num target prot opt source destination

1 Allowed tcp -- domain-controller.genet.gr anywhere tcp dpt:pop3

2 Allowed udp -- domain-controller.genet.gr anywhere udp dpt:domain

3 Allowed tcp -- domain-controller.genet.gr anywhere tcp dpt:smtp

4 DROP 0 -- domain-controller.genet.gr anywhere

5 Allowed udp -- eth0-ns1.genet.gr anywhere udp dpt:domain

6 Allowed tcp -- 10.0.0.0/24 anywhere multiport dports http,webcache,https,ftp-data,ftp,ssh,pop3,smtp,msnp

 

Chain bad_tcp_packets (1 references)

num target prot opt source destination

1 REJECT tcp -- anywhere anywhere tcp flags:SYN,ACK/SYN,ACK state NEW reject-with tcp-reset

2 LOG tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW LOG level warning prefix `New not syn:'

3 DROP tcp -- anywhere anywhere tcp flags:!FIN,SYN,RST,ACK/SYN state NEW

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 3 εβδομάδες αργότερα...

Έχω ανοίξει 2 πόρτες για το Azureus μια udp και μια tcp.

Θέλω να έχω λίγες πόρτες ανοιχτές και σκέφτομαι να έχω μια πόρτα και για τα 2 πρωτόκολλα για το azureus μόνο, είναι σωστό αυτό;

ευχαριστώ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 4 μήνες μετά...

καλησπέρα σε όλους

πολύ καλό το site και εξαιρετικό το post για τα iptables.

θα ήθελα να κάνω μια ερώτηση σχετικά με κάποιο script που έχω βρει

# See URL: http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html.'>http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html. το script θελει να πετύχει το εξής. θέλουμε κάποιος να παίρνει ip (192.168.1.χχχ) από έναν server ο οποίος server θα είναι και gateway gia to δίκτυο. πρέπει όμως να μην μπορεί να δει κανένα άλλο μηχάνημα εκτός από ένα. (to http://www.google.com ας πούμε).

 

το ζητούμενο είναι όμως όταν ζητάει κάποια άλλη σελίδα να τον φιλτράρει ο server με ενα μήνυμα από το squid που θα έχει εγκατεστημένο.

 

το παρακάτω script πετυχαίνει το φιλτράρισμα αλλά αφήνει όλη την κίνηση εκτός web να περνάει. θα ήθελα να μην μπορεί να βγει καθόλου προς τα έξω.

 

ουσιαστικά θέλω να πετύχω να του βγάζει ένα μήνυμα ότι πρέπει να κάνει vpn σε ένα συγκεκριμένο μηχάνημα(οπότε πρέπει να βλέπει το μηχάνημα αυτό) και μετά απο αυτό να μπορεί να βγει έξω.

 

#!/bin/sh

# ------------------------------------------------------------------------------------

# See URL: http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html

# © 2006, nixCraft under GNU/GPL v2.0+

# -------------------------------------------------------------------------------------

# squid server IP

SQUID_SERVER="192.168.1.10"

# Interface connected to Internet

INTERNET="eth2"

# Interface connected to LAN

LAN_IN="eth1"

# Squid port

SQUID_PORT="3128"

 

# DO NOT MODIFY BELOW

# Clean old firewall

iptables -F

iptables -X

iptables -t nat -F

iptables -t nat -X

iptables -t mangle -F

iptables -t mangle -X

# Load IPTABLES modules for NAT and IP conntrack support

modprobe ip_nat_pptp

modprobe ip_gre

modprobe ip_conntrack

modprobe ip_conntrack_ftp

# For win xp ftp client

#modprobe ip_nat_ftp

echo 1 > /proc/sys/net/ipv4/ip_forward

# Setting default filter policy

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

# Unlimited access to loop back

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

# Allow UDP, DNS and Passive FTP

iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT

# set this system as a router for Rest of LAN

iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE

iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT

# unlimited access to LAN

iptables -A INPUT -i $LAN_IN -j ACCEPT

iptables -A OUTPUT -o $LAN_IN -j ACCEPT

# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy

iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT

# if it is same system

iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT

# DROP everything and Log it

iptables -A INPUT -j LOG

iptables -A INPUT -j DROP

 

 

καμία πρόταση ???

σας ευχαριστώ πολύ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 6 μήνες μετά...

Προσπαθώ να ορίσω κάποιους κανόνες και η iptables επιστρέφει Invalid argument:

 

>
#iptables -v -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT
ACCEPT  all opt -- in * out *  0.0.0.0/0  -> 0.0.0.0/0  state ESTABLISHED
iptables: Invalid argument

 

Στο netfilter/iptables FAQ αναφέρει πως κάτι τέτοιο γίνεται

http://www.netfilter.org/documentation/FAQ/netfilter-faq.html#toc3.20

 

όταν το μέγεθος δομής (structure size) ανάμεσα στον πυρήνα και στο userspace αλλάζει, δηλαδή, συνεχίζει, όταν έχουν περαστεί κάποια patches στον κώδικα του πυρήνα. Εγώ έχω 2.6.25 τον οποίο έχω κάνει compile μόνος μου. Παρ' όλα αυτά έκανα compile μόνος μου και το iptables αλλά το πρόβλημα συνεχίζει και μετά την εγκατάσταση του δικού μου πακέτου iptables. Οι δυνατότητες netfilter του πυρήνα έχουν γίνει compiled in και όχι σαν modules.

 

Τι μπορεί να συμβαίνει;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το CONFIG_NETFILTER_XT_MATCH_STATE συγκεκριμένα από το configuration του πυρήνα είναι compiled in (=y);

 

Χρησιμοποιούσες το state match και πριν και το πρόβλημα εμφανίστηκε ξαφνικά μετά από κάτι ή τώρα το πρωτοχρησιμοποίησες;

 

ΥΣ. Γιατί βγήκε από Sticky ο οδηγός χωρίς να υπάρχει στο WiKi; Είναι κρίμα να μην υπάρχει πρόχειρος κάπου!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τι να πω, σε vanilla kernel 2.6.25.3 με netfilter-layer7-v2.18 patch και το εξής σχετικό configuration (grep -i 'ip_nf\|netfilter' ):

>CONFIG_NETFILTER=y
# CONFIG_NETFILTER_DEBUG is not set
CONFIG_NETFILTER_ADVANCED=y
# Core Netfilter Configuration
CONFIG_NETFILTER_NETLINK=m
# CONFIG_NETFILTER_NETLINK_QUEUE is not set
# CONFIG_NETFILTER_NETLINK_LOG is not set
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
CONFIG_NETFILTER_XT_TARGET_NFLOG=m
CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
CONFIG_NETFILTER_XT_TARGET_RATEEST=m
CONFIG_NETFILTER_XT_TARGET_TRACE=m
CONFIG_NETFILTER_XT_TARGET_SECMARK=m
CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
CONFIG_NETFILTER_XT_MATCH_COMMENT=m
CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
CONFIG_NETFILTER_XT_MATCH_DCCP=m
CONFIG_NETFILTER_XT_MATCH_DSCP=m
CONFIG_NETFILTER_XT_MATCH_ESP=m
CONFIG_NETFILTER_XT_MATCH_HELPER=m
CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
CONFIG_NETFILTER_XT_MATCH_LENGTH=m
CONFIG_NETFILTER_XT_MATCH_LIMIT=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_MARK=m
CONFIG_NETFILTER_XT_MATCH_OWNER=m
CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_NETFILTER_XT_MATCH_RATEEST=m
CONFIG_NETFILTER_XT_MATCH_REALM=m
CONFIG_NETFILTER_XT_MATCH_SCTP=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NETFILTER_XT_MATCH_LAYER7=m
# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
CONFIG_NETFILTER_XT_MATCH_STRING=m
CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
CONFIG_NETFILTER_XT_MATCH_TIME=m
CONFIG_NETFILTER_XT_MATCH_U32=m
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_MATCH_RECENT=m
CONFIG_IP_NF_MATCH_ECN=m
CONFIG_IP_NF_MATCH_AH=m
CONFIG_IP_NF_MATCH_TTL=m
CONFIG_IP_NF_MATCH_ADDRTYPE=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_TARGET_LOG=m
CONFIG_IP_NF_TARGET_ULOG=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
CONFIG_IP_NF_TARGET_REDIRECT=m
CONFIG_IP_NF_TARGET_NETMAP=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_TARGET_CLUSTERIP=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m

 

δουλεύει κανονικά, φορτώνοντας αυτόματα τα απαραίτητα modules. To iptables είναι precompiled από πακέτο και δεν έχει γίνει update καθόλου πρόσφατα -άρα δεν πιστεύω να φταίει αυτό-.

 

Μήπως αν κάνεις compile με CONFIG_NETFILTER_DEBUG τυπώσει κάτι πιο συγκεκριμένο στο kernel log;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο /var/log/messages.log εμφανίζει αυτό:

>
can't load conntrack support for proto=2

Θα κοιτάξω πάλι προσεκτικά τις επιλογές στο configuration του πυρήνα και βλέπουμε. Μάλλον κάτι έχω αφήσει απ' έξω

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κατά 99% είναι αυτό που λέει ο nske: έχεις ξεχάσει το connection tracking support.

 

Όσο για το sticky, νόμιζα ότι το είχα μεταφέρει στο wiki, αλλά μάλλον έκανα λάθος ;-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

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

Επισκέπτης
Αυτό το θέμα είναι πλέον κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...