5 Οι κανόνες του firewall

Το μόνο που απομένει τώρα είναι να ορίσουμε τους κανόνες του firewall. Οι κανόνες τους οποίους περιγράφουμε εδώ είναι αρκετά καλοί για τους περισσότερους χρήστες με dialup σύνδεση, αλλά ούτε υποχρεωτικοί είναι, ούτε είναι δυνατόν να ταιριάζουν με τις ανάγκες όλων των χρηστών dialup. Μπορούν, όμως, να χρησιμεύσουν ως ένα καλό παράδειγμα ρυθμίσεων του IPFW και είναι σχετικά εύκολο να τους προσαρμόσετε στις δικές σας ανάγκες.

Ας αρχίσουμε όμως με τις βασικές αρχές ενός κλειστού τείχους προστασίας. Ένα κλειστό τείχος προστασίας απαγορεύει κατ' αρχήν κάθε σύνδεση. Ο διαχειριστής μπορεί ύστερα να προσθέσει κανόνες για να επιτρέψει μόνο συγκεκριμένες συνδέσεις να περνάνε από το τείχος προστασίας. Η πιο συνηθισμένη σειρά των κανόνων σε ένα κλειστό τείχος είναι: πρώτα οι κανόνες που επιτρέπουν μερικές συνδέσεις, και τέλος οι κανόνες που απαγορεύουν οποιαδήποτε άλλη σύνδεση. Η λογική πίσω από αυτό είναι ότι πρώτα βάζετε τους κανόνες που επιτρέπουν πράγματα να περάσουν και ύστερα όλα τα άλλα απαγορεύονται αυτόματα.

Φτιάξτε, λοιπόν, ένα κατάλογο στον οποίο θα αποθηκεύονται οι κανόνες του τείχους προστασίας. Σε αυτό το άρθρο χρησιμοποιούμε ως παράδειγμα τον κατάλογο /etc/firewall. Αλλάξτε κατάλογο μέσα σε αυτόν και δημιουργήστε το αρχείο fwrules που το όνομά του είχαμε γράψει στο rc.conf. Σημειώστε πως μπορείτε να αλλάξετε το όνομα του αρχείου αυτού σε ότι θέλετε. Αυτός ο οδηγός δίνει αυτό το όνομα σαν παράδειγμα και μόνο.

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

# Define the firewall command (as in /etc/rc.firewall) for easy
# reference.  Helps to make it easier to read.
fwcmd="/sbin/ipfw"

# Define our outside interface.  With userland-ppp this
# defaults to tun0.
oif="tun0"

# Define our inside interface.  This is usually your network
# card.  Be sure to change this to match your own network
# interface.
iif="fxp0"

# Force a flushing of the current rules before we reload.
$fwcmd -f flush

# Divert all packets through the tunnel interface.
$fwcmd add divert natd all from any to any via tun0

# Check the state of all packets.
$fwcmd add check-state

# Stop spoofing on the outside interface.
$fwcmd add deny ip from any to any in via $oif not verrevpath

# Allow all connections that we initiate, and keep their state,
# but deny established connections that don't have a dynamic rule.
$fwcmd add allow ip from me to any out via $oif keep-state
$fwcmd add deny tcp from any to any established in via $oif

# Allow all connections within our network.
$fwcmd add allow ip from any to any via $iif

# Allow all local traffic.
$fwcmd add allow all from any to any via lo0
$fwcmd add deny all from any to 127.0.0.0/8
$fwcmd add deny ip from 127.0.0.0/8 to any

# Allow internet users to connect to the port 22 and 80.
# This example specifically allows connections to the sshd and a
# webserver.
$fwcmd add allow tcp from any to me dst-port 22,80 in via $oif setup keep-state

# Allow ICMP packets: remove type 8 if you don't want your host
# to be pingable.
$fwcmd add allow icmp from any to any via $oif icmptypes 0,3,8,11,12

# Deny and log all the rest.
$fwcmd add deny log ip from any to any

Τώρα έχετε ένα ολοκληρωμένο τείχος προστασίας, το οποίο συνδέσεις στις θύρες 22 και 80 και καταγράφει όλες τις άλλες συνδέσεις στο αρχείο καταγραφής του συστήματος. Πλέον είστε έτοιμοι για επανεκκίνηση. Το τείχος προστασίας θα ενεργοποιηθεί αυτόματα και θα φορτώσει τους κανόνες που προσθέσατε. Αν δε γίνει αυτό ή έχετε οποιαδήποτε προβλήματα, ή αν έχετε κάποιες προτάσεις για να διορθωθεί αυτό το άρθρο, επικοινωνήστε μαζί μου με email.

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.