pf für spamd vorbereiten

« spamd installieren

Jetzt öffnen wir unsere '/etc/pf.conf' und ändern sie wie folgt ab:

  1. Im Abschnitt "Tables" ergänzen wir folgende Zeile, die verhindert, dass interne IPs nicht von außen ankommen dürfen:

    table <rfc1918> persist
    table <spamd> persist
    table <spamd-white> persist
    table <whitelist> persist file "/etc/pf_files/whitelist.lst"
    table <blacklist> persist file "/etc/pf_files/blacklist.lst"

  2. Jetzt fügen wir noch folgende Weiterleitungsregeln ein. Achte dabei auf die Reihenfolge, da dies erreichen könnte, dass überhaupt keine Mail mehr ankommt.

    rdr pass on $if proto tcp from <whitelist> to $if port 25 -> $mail_ip port 25
    rdr pass on $if proto tcp from <blacklist> to $if port 25 -> 127.0.0.1 port 8025
    rdr pass on $if proto tcp from <spamd> to $if port 25 -> 127.0.0.1 port 8025
    rdr pass on $if proto tcp from <spamd-white> to $if port 25 -> $mail_ip port 25
    rdr pass on $if proto tcp from !<spamd-white> to $if port 25 -> 127.0.0.1 port 8025
    rdr pass on $if proto tcp from any to $if port 25 -> $mail_ip port 25

    $if: Ist das Interface, bspw. eth0
    $mail_ip: Ist die interne IP des Mailservers (z.B. einer Jail)

  3. Bei den Block-Regeln tragen wir noch folgendes ein:

    block in quick on $if inet from <rfc1918> to any

  4. Bei den pass-Regeln tragen wir noch diese Zeilen ein. Diese bewirken, dass pflogd vom Mailverkehr erfährt und somit in die Whitelist aufgenommen werden.

    pass out log on $if inet proto tcp from $mail_ip to any port 25 keep state
    pass in log on $if inet proto tcp from any to $if port 25 keep state

  5. Ein wichtiger Hinweis: Da du wahrscheinlich eine dynamische IP-Adresse hast, wird dein Mailclient nicht mit dem Mailserver verbinden können. Ist logisch, da spamd sagt, dass du später wiederkommen sollst. Um das zu verhindern, kannst du entweder die Regeln entschärfen, dass du sagst, wenn der Host nicht in einer Blacklist steht, dann darf er durch (setze hierzu einfach eine '#' vor die zwei <spamd-white>-Zeilen), oder du erstellst eine weitere rdr pass-Regel, die einen anderen Port weiterleitet und stellst deinen Mailclient dann auf diesen Port ein (hier 8825). Beispiel:

    rdr pass on $if proto tcp from any to $if port 8825 -> $mail_ip port 25
Einen Kommentar hinzufügen

Einen Kommentar hinzufügen

This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)
Code im diesem Bild:
Ihr Name(*):
Kommentar(*):
 
  • November 9, 2007, 4:18 pm - Benedikt

    Hallo Sven.
    Schau dir mal das Tutorial zur Firewall an: http://www.serverzeit.de/FreeBSD/Firewall/

    Da findest du eine Beispiel, welches dir auch zeigt, wo du was reinschreiben musst. Das sollte für eine erste Orientierung ausreichend sein. Ich nehme deine Anregung, die vorgeschrieben Reihenfolge irgendwo zu beschreiben, gerne in die Liste für die nächste Version auf.

    Viele Grüße,
    Benedikt

  • November 9, 2007, 2:29 pm - sven

    hallo, könntet ihr erklären wohin die weiterleitungsregeln also die rdr-regeln kommen, bzw. könnte jemand eine muster pf.conf mal hochladen.

    ciao sven