doc/el_GR.ISO8859-7/articles/dialup-firewall/article.sgml
Giorgos Keramidas c62d5942d6 When editing or merging these files with UTF-8 as the default
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
2008-12-08 03:10:54 +00:00

363 lines
15 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
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&lt;UP,POINTOPOINT,RUNNING,MULTICAST&gt; mtu 1524</replaceable>
inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --&gt; <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&lt;POINTOPOINT,MULTICAST&gt; mtu 1500</replaceable>
<emphasis>(skipped...)</emphasis>
tun0: flags=<replaceable>8051&lt;UP,POINTOPOINT,RUNNING,MULTICAST&gt; mtu 1524</replaceable>
<emphasis>(IPv6 stuff skipped...)</emphasis>
inet <replaceable>xxx.xxx.xxx.xxx</replaceable> --&gt; <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:
-->