character set, they may be replaced/re-encoded. Try to inhibit auto-conversion to UTF-8, until we (inevitably?) switch to el_GR.UTF-8 some time in the future. Obtained from: FreeBSD Greek Documentation Project
363 lines
15 KiB
Text
363 lines
15 KiB
Text
<!--
|
||
|
||
The FreeBSD Greek Documentation Project
|
||
|
||
%SOURCE% en_US.ISO8859-1/articles/dialup-firewall/article.sgml
|
||
%SRCID% 1.43
|
||
|
||
-->
|
||
|
||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EL">
|
||
%articles.ent;
|
||
]>
|
||
|
||
<article lang="el">
|
||
<articleinfo>
|
||
<title>Σύνδεση Μέσω Τηλεφώνου και Τείχος Προστασίας στο FreeBSD</title>
|
||
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Marc</firstname>
|
||
<surname>Silver</surname>
|
||
|
||
<affiliation>
|
||
<address><email>marcs@draenor.org</email></address>
|
||
</affiliation>
|
||
</author>
|
||
</authorgroup>
|
||
|
||
<pubdate>$FreeBSD$</pubdate>
|
||
|
||
<legalnotice id="trademarks" role="trademarks">
|
||
&tm-attrib.freebsd;
|
||
&tm-attrib.general;
|
||
</legalnotice>
|
||
|
||
<abstract>
|
||
<para>Αυτό το άρθρο περιγράφει πως μπορείτε να ρυθμίσετε ένα τείχος προστασίας (firewall)
|
||
χρησιμοποιώντας μια PPP σύνδεση μέσω τηλεφώνου στο FreeBSD με το IPFW.
|
||
Πιο συγκεκριμένα, περιγράφει τη ρύθμιση ενός τείχους προστασίας σε μια σύνδεση μέσω τηλεφώνου που
|
||
έχει δυναμική IP διεύθυνση. Αυτό το κείμενο δεν ασχολείται με το πως
|
||
θα ρυθμίσετε την αρχική σας σύνδεση μέσω PPP. Για περισσότερες
|
||
πληροφορίες σχετικά με τις ρυθμίσεις μιας σύνδεσης μέσω PPP δείτε τη
|
||
σελίδα βοήθειας &man.ppp.8;.</para>
|
||
</abstract>
|
||
</articleinfo>
|
||
|
||
<sect1 id="preface">
|
||
<title>Πρόλογος</title>
|
||
|
||
<para>Αυτό το κείμενο περιγράφει την διαδικασία που χρειάζεται για να
|
||
ρυθμίσετε ένα τείχος προστασίας στο FreeBSD όταν η IP διεύθυνση δίνεται δυναμικά
|
||
από τον ISP σας. Παρόλο που έχω προσπαθήσει να κάνω αυτό το κείμενο
|
||
όσο το δυνατόν πιο πλήρες και σωστό, είστε ευπρόσδεκτοι να στείλετε τις
|
||
διορθώσεις, τα σχόλια ή τις προτάσεις σας στη διεύθυνση του συγγραφέα:
|
||
<email>marcs@draenor.org</email>.</para>
|
||
</sect1>
|
||
|
||
<sect1 id="kernel">
|
||
<title>Παράμετροι του πυρήνα</title>
|
||
|
||
<para>Για να μπορέσετε να χρησιμοποιήσετε το IPFW, πρέπει να ενσωματώσετε
|
||
την σχετική υποστήριξη στον πυρήνα σας. Για περισσότερες πληροφορίες
|
||
σχετικά με τη μεταγλώττιση του πυρήνα, δείτε το <ulink
|
||
url="&url.books.handbook;/kernelconfig.html">τμήμα
|
||
ρυθμίσεων του πυρήνα στο Εγχειρίδιο</ulink>. Θα πρέπει να προσθέσετε
|
||
τις παρακάτω επιλογές στις ρυθμίσεις του πυρήνα σας για να
|
||
ενεργοποιήσετε την υποστήριξη για το IPFW:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><literal>options IPFIREWALL</literal></term>
|
||
|
||
<listitem>
|
||
<para>Ενεργοποιεί τον κώδικα τείχους προστασίας του πυρήνα.</para>
|
||
<note>
|
||
<para>Αυτό το κείμενο θεωρεί ότι έχετε εγκαταστήσει την έκδοση 5.X
|
||
του FreeBSD ή μια πιο πρόσφατη. Αν χρησιμοποιείτε την έκδοση 4.X,
|
||
τότε θα πρέπει να ενεργοποιήσετε την επιλογή
|
||
<emphasis>IPFW2</emphasis> και να διαβάσετε τη σελίδα βοήθειας
|
||
&man.ipfw.8; για περισσότερες πληροφορίες σχετικά με την επιλογή
|
||
IPFW2. Προσέξτε ιδιαίτερα το
|
||
τμήμα <emphasis>USING IPFW2 IN FreeBSD-STABLE</emphasis>.</para>
|
||
</note>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>options IPFIREWALL_VERBOSE</literal></term>
|
||
|
||
<listitem>
|
||
<para>Στέλνει τα μηνύματα για τα κατάλληλα πακέτα στο log του
|
||
συστήματος.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>options
|
||
IPFIREWALL_VERBOSE_LIMIT=<replaceable>500</replaceable></literal></term>
|
||
|
||
<listitem>
|
||
<para>Βάζει κάποιο όριο στις φορές που κάποια εγγραφή θα
|
||
καταγράφεται. Έτσι μπορείτε να καταγράφετε τα μηνύματα από το
|
||
τείχος προστασίας χωρίς τον κίνδυνο να γεμίσουν τα αρχεία
|
||
καταγραφής του συστήματός σας αν δεχτείτε κάποια επίθεση.
|
||
Το όριο <replaceable>500</replaceable> μηνυμάτων είναι μια αρκετά
|
||
λογική τιμή, αλλά μπορείτε να προσαρμόσετε αυτή την τιμή ανάλογα
|
||
με τις απαιτήσεις του δικού σας δικτύου.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>options IPDIVERT</literal></term>
|
||
|
||
<listitem>
|
||
<para>Ενεργοποιεί τα <emphasis>divert</emphasis> sockets, που θα
|
||
δούμε αργότερα τι κάνουν.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<warning>
|
||
<para>Μόλις τελειώσετε με τις ρυθμίσεις και την μεταγλώττιση του πυρήνα
|
||
σας <emphasis>μην κάνετε επανεκκίνηση!</emphasis> Αν κάνετε
|
||
επανεκκίνηση σε αυτό το σημείο μπορεί να κλειδωθείτε απέξω από το
|
||
σύστημά σας. Πρέπει να περιμένετε μέχρι να εγκατασταθούν οι κανόνες
|
||
του τείχους προστασίας και να ενημερωθούν όλα τα σχετικά αρχεία
|
||
ρυθμίσεων.</para>
|
||
</warning>
|
||
</sect1>
|
||
|
||
<sect1 id="rcconf">
|
||
<title>Αλλαγές στο <filename>/etc/rc.conf</filename> για να φορτώνεται
|
||
το τείχος προστασίας</title>
|
||
|
||
<para>Για να ενεργοποιείται το τείχος προστασίας κατά την εκκίνηση του
|
||
συστήματος και για να ορίσετε το αρχείο με τους κανόνες του τείχους
|
||
προστασίας, πρέπει να ενημερώσετε το
|
||
αρχείο <filename>/etc/rc.conf</filename>. Απλά προσθέστε τις παρακάτω
|
||
γραμμές:</para>
|
||
|
||
<programlisting>firewall_enable="YES"
|
||
firewall_script="/etc/firewall/fwrules"</programlisting>
|
||
|
||
<para>Για περισσότερες πληροφορίες σχετικά με τη σημασίας καθεμιάς από
|
||
αυτές τις γραμμές, ρίξτε μια ματιά στο
|
||
<filename>/etc/defaults/rc.conf</filename> και διαβάστε την man σελίδα
|
||
&man.rc.conf.5;</para>
|
||
</sect1>
|
||
|
||
<sect1>
|
||
<title>Ενεργοποιήστε την Ενσωματωμένη Μετάφραση Διευθύνσεων του PPP</title>
|
||
|
||
<para>Για να επιτρέψετε σε άλλα μηχανήματα του δικτύου σας να συνδέονται
|
||
με τον έξω κόσμο μέσω του FreeBSD, χρησιμοποιώντας το
|
||
ως <quote>πύλη</quote>, θα πρέπει να ενεργοποιήσετε την ενσωματωμένη
|
||
μετάφραση διευθύνσεων του PPP (NAT). Για να γίνει αυτό, προσθέστε στο
|
||
αρχείο <filename>/etc/rc.conf</filename> τις παρακάτω γραμμές:</para>
|
||
|
||
<programlisting>ppp_enable="YES"
|
||
ppp_mode="auto"
|
||
ppp_nat="YES"
|
||
ppp_profile="<replaceable>προφίλ_της_σύνδεσης</replaceable>"</programlisting>
|
||
|
||
<para>Στη θέση του <literal>προφίλ_της_σύνδεσης</literal> πρέπει να βάλετε
|
||
το όνομα της σύνδεσής σας, όπως το έχετε αποθηκεύσει στο
|
||
αρχείο <filename>/etc/ppp/ppp.conf</filename>.</para>
|
||
</sect1>
|
||
|
||
<sect1 id="rules">
|
||
<title>Οι κανόνες του firewall</title>
|
||
|
||
<para>Το μόνο που απομένει τώρα είναι να ορίσουμε τους κανόνες του
|
||
firewall. Οι κανόνες τους οποίους περιγράφουμε εδώ είναι αρκετά καλοί
|
||
για τους περισσότερους χρήστες με dialup σύνδεση, αλλά ούτε υποχρεωτικοί
|
||
είναι, ούτε είναι δυνατόν να ταιριάζουν με τις ανάγκες όλων των χρηστών
|
||
dialup. Μπορούν, όμως, να χρησιμεύσουν ως ένα καλό παράδειγμα ρυθμίσεων
|
||
του IPFW και είναι σχετικά εύκολο να τους προσαρμόσετε στις δικές σας
|
||
ανάγκες.</para>
|
||
|
||
<para>Ας αρχίσουμε όμως με τις βασικές αρχές ενός κλειστού τείχους
|
||
προστασίας. Ένα κλειστό τείχος προστασίας απαγορεύει κατ' αρχήν κάθε
|
||
σύνδεση. Ο διαχειριστής μπορεί ύστερα να προσθέσει κανόνες για να
|
||
επιτρέψει μόνο συγκεκριμένες συνδέσεις να περνάνε από το τείχος
|
||
προστασίας. Η πιο συνηθισμένη σειρά των κανόνων σε ένα κλειστό τείχος
|
||
είναι: πρώτα οι κανόνες που επιτρέπουν μερικές συνδέσεις, και τέλος οι
|
||
κανόνες που απαγορεύουν οποιαδήποτε άλλη σύνδεση. Η λογική πίσω από
|
||
αυτό είναι ότι πρώτα βάζετε τους κανόνες που επιτρέπουν πράγματα να
|
||
περάσουν και ύστερα όλα τα άλλα απαγορεύονται αυτόματα.</para>
|
||
|
||
<para>Φτιάξτε, λοιπόν, ένα κατάλογο στον οποίο θα αποθηκεύονται οι κανόνες
|
||
του τείχους προστασίας. Σε αυτό το άρθρο χρησιμοποιούμε ως παράδειγμα
|
||
τον κατάλογο <filename
|
||
class="directory">/etc/firewall</filename>. Αλλάξτε κατάλογο μέσα σε
|
||
αυτόν και δημιουργήστε το αρχείο <filename>fwrules</filename> που το
|
||
όνομά του είχαμε γράψει στο <filename>rc.conf</filename>. Σημειώστε πως
|
||
μπορείτε να αλλάξετε το όνομα του αρχείου αυτού σε ότι θέλετε. Αυτός ο
|
||
οδηγός δίνει αυτό το όνομα σαν παράδειγμα και μόνο.</para>
|
||
|
||
<para>Ας δούμε τώρα ένα παράδειγμα τείχους προστασίας με αρκετά
|
||
επεξηγηματικά σχόλια.</para>
|
||
|
||
<programlisting># 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</programlisting>
|
||
|
||
<para>Τώρα έχετε ένα ολοκληρωμένο τείχος προστασίας, το οποίο συνδέσεις στις
|
||
θύρες 22 και 80 και καταγράφει όλες τις άλλες συνδέσεις στο αρχείο καταγραφής του
|
||
συστήματος. Πλέον είστε έτοιμοι για επανεκκίνηση. Το τείχος προστασίας θα
|
||
ενεργοποιηθεί αυτόματα και θα φορτώσει τους κανόνες που προσθέσατε. Αν δε γίνει αυτό ή έχετε
|
||
οποιαδήποτε προβλήματα, ή αν έχετε κάποιες προτάσεις για να
|
||
διορθωθεί αυτό το άρθρο, επικοινωνήστε μαζί μου με email.</para>
|
||
</sect1>
|
||
|
||
<sect1>
|
||
<title>Ερωτήσεις</title>
|
||
|
||
<qandaset>
|
||
<qandaentry>
|
||
<question>
|
||
<para>Βλέπω μηνύματα όπως <errorname>limit 500 reached on entry
|
||
2800</errorname> και μετά από αυτό το σύστημά μου σταματάει να
|
||
καταγράφει τα πακέτα που εμποδίζονται από το τείχος προστασίας.
|
||
Δουλεύει ακόμα το firewall μου;</para>
|
||
</question>
|
||
|
||
<answer>
|
||
<para>Αυτό απλά σημαίνει πως έχει χρησιμοποιηθεί το μέγιστο όριο
|
||
καταγραφής (logging) για αυτό τον κανόνα. Ο κανόνας ο ίδιος
|
||
εξακολουθεί να δουλεύει, αλλά δεν θα στέλνει πια μηνύματα στο αρχείο καταγραφής
|
||
του συστήματος μέχρι να μηδενίσετε πάλι τους μετρητές. Μπορείτε
|
||
να μηδενίσετε τους μετρητές με την εντολή</para>
|
||
|
||
<screen>&prompt.root; <userinput>ipfw resetlog</userinput></screen>
|
||
|
||
<para>Εναλλακτικά, μπορείτε να αυξήσετε το όριο
|
||
καταγραφής στις ρυθμίσεις του πυρήνα σας με την επιλογή
|
||
<option>IPFIREWALL_VERBOSE_LIMIT</option> όπως περιγράψαμε
|
||
παραπάνω. Μπορείτε να αλλάξετε αυτό το όριο (χωρίς να
|
||
μεταγλωττίσετε πάλι τον πυρήνα σας και να κάνετε reboot)
|
||
χρησιμοποιώντας την &man.sysctl.8; τιμή
|
||
net.inet.ip.fw.verbose_limit.</para>
|
||
</answer>
|
||
</qandaentry>
|
||
|
||
<qandaentry>
|
||
<question>
|
||
<para>Κάποιο λάθος πρέπει να έγινε. Ακολούθησα τις εντολές κατά
|
||
γράμμα και τώρα κλειδώθηκα απέξω.</para>
|
||
</question>
|
||
|
||
<answer>
|
||
<para>Αυτός ο οδηγός υποθέτει ότι χρησιμοποιείτε το
|
||
<emphasis>userland-ppp</emphasis>, γι αυτό κι οι κανόνες που
|
||
δίνονται χρησιμοποιούν το <devicename>tun0</devicename> interface,
|
||
που αντιστοιχεί στην πρώτη σύνδεση που φτιάχνεται με το
|
||
&man.ppp.8; (αλλιώς γνωστό και ως <emphasis>user-ppp</emphasis>).
|
||
Η επόμενη σύνδεση θα χρησιμοποιούσε το
|
||
<devicename>tun1</devicename>, μετά το
|
||
<devicename>tun2</devicename> και πάει λέγοντας.</para>
|
||
|
||
<para>Θα πρέπει επίσης να θυμάστε ότι το &man.pppd.8; χρησιμοποιεί
|
||
το interface <devicename>ppp0</devicename>, οπότε αν ξεκινήσετε τη
|
||
σύνδεσή σας με το &man.pppd.8; θα πρέπει να αντικαταστήσετε το
|
||
<devicename>tun0</devicename> με <devicename>ppp0</devicename>.
|
||
Παρακάτω θα δείξουμε ένα εύκολο τρόπο να αλλάξετε τους κανόνες του
|
||
firewall κατάλληλα. Οι αρχικοί κανόνες σώζονται σε ένα αρχείο με
|
||
όνομα <filename>fwrules_tun0</filename>.</para>
|
||
|
||
<screen> &prompt.user; <userinput>cd /etc/firewall</userinput>
|
||
/etc/firewall&prompt.user; <userinput>su</userinput>
|
||
<prompt>Password:</prompt>
|
||
/etc/firewall&prompt.root; <userinput>mv fwrules fwrules_tun0</userinput>
|
||
/etc/firewall&prompt.root; <userinput>cat fwrules_tun0 | sed s/tun0/ppp0/g > fwrules</userinput>
|
||
</screen>
|
||
|
||
<para>Για να καταλάβετε αν χρησιμοποιείτε το &man.ppp.8; ή το
|
||
&man.pppd.8; μπορείτε να εξετάσετε την έξοδο της &man.ifconfig.8;
|
||
αφού ενεργοποιηθεί η σύνδεσή σας. Π.χ., για μια σύνδεση που
|
||
ενεργοποιήθηκε από το &man.pppd.8; θα δείτε κάτι σαν αυτό
|
||
(δείχνονται μόνο οι σχετικές γραμμές):</para>
|
||
|
||
<screen> &prompt.user; <userinput>ifconfig</userinput>
|
||
<emphasis>(skipped...)</emphasis>
|
||
ppp0: flags=<replaceable>8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524</replaceable>
|
||
inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --> <replaceable>xxx.xxx.xxx.xxx</replaceable> netmask <replaceable>0xff000000</replaceable>
|
||
<emphasis>(skipped...)</emphasis>
|
||
</screen>
|
||
|
||
<para>Από την άλλη, για μια σύνδεση που ενεργοποιήθηκε με το
|
||
&man.ppp.8; (<emphasis>user-ppp</emphasis>) θά πρεπε να δείτε κάτι
|
||
παρόμοιο με το παρακάτω:</para>
|
||
|
||
<screen> &prompt.user; <userinput>ifconfig</userinput>
|
||
<emphasis>(skipped...)</emphasis>
|
||
ppp0: flags=<replaceable>8010<POINTOPOINT,MULTICAST> mtu 1500</replaceable>
|
||
<emphasis>(skipped...)</emphasis>
|
||
tun0: flags=<replaceable>8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1524</replaceable>
|
||
<emphasis>(IPv6 stuff skipped...)</emphasis>
|
||
inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --> <replaceable>xxx.xxx.xxx.xxx</replaceable> netmask <replaceable>0xffffff00</replaceable>
|
||
Opened by PID <replaceable>xxxxx</replaceable>
|
||
<emphasis>(skipped...)</emphasis></screen>
|
||
</answer>
|
||
</qandaentry>
|
||
</qandaset>
|
||
</sect1>
|
||
</article>
|
||
|
||
<!--
|
||
Local Variables:
|
||
mode: sgml
|
||
coding: iso-8859-7
|
||
sgml-indent-data: t
|
||
sgml-omittag: nil
|
||
sgml-always-quote-attributes: t
|
||
End:
|
||
-->
|