Datenhaufen zu IT und Elektronik.

Autor: kernel-error (Seite 46 von 48)

DKIM

Ich gehe davon aus, das eine funktionsfähige amavis, postfix usw… Konstellation vorhanden ist!

Ich habe einen Server im Internet stehen, welcher sich um meine E-Mails und die meiner Verwanden und Bekannten kümmert. Hier liegen mehrere Domains und die E-Mails in lokalen Postfächern. Diese sind per smtp, imap und webmail zu erreichen.

OS ist Debian Lenny, als MTA nutze ich Postfix welcher mit amavis, spamassassin, clamav, dovecot und etwas Krims mehr zusammenarbeitet.

Meine Idee war nun alle ausgehenden E-Mails jeweils mit DKIM zu signieren und alle eingehenden E-Mails zusätzlich auf eine gültige DKIM Signatur zu prüfen.

Es gibt hier nun mehrere Möglichkeiten dieses umzusetzen. Ich habe mehrere Systeme ausprobiert und finde, für mich ist es über amavis am angenehmsten. Seit der Version 2.6 bringt amavis-new diese Funktionalität mit. Na dann wollen wir mal….

Vorbereitung der Signaturprüfung

Ich habe folgende Einträge in meiner 50-user unter /etc/amavis/conf.d/ dafür ergänzt:

$enable_dkim_verification = 1;

Damit überreden wir amavis die DKIM Signaturen zu prüfen. Dieses läuft in Zusammenarbeit mit spamassassin. Hier müssen folgende Einträge vorgenommen werden:

/etc/spamassassin/v320.pre
loadplugin Mail::SpamAssassin::Plugin::DKIM

Ohne diesen Eintrag wird spamassassin nicht das passende Modul laden und versteht überhaupt nicht was man von ihm will (häufige Fehlerquelle).

/etc/spamassassin/local.cf
#DKIM
score DKIM_VERIFIED -3.0
score DKIM_POLICY_TESTING 0
score USER_IN_DKIM_WHITELIST -8.0
whitelist_from_dkim @kernel-error.de

Hier lege ich nun die Punkte fest, welche von spamassassin vergeben werden. Da natürlich auch Spammer eine DKIM Signatur erstellen könnten (was eher selten ist) gebe ich maximal -3 Punkte für eine erfolgreich geprüfte DKIM Signatur.

Es fehlt nur noch ein Paket: libmail-dkim-perl
Dieses installieren wir einfach schnell mit

apt-get install libmail-dkim-perl

nach!

Ab jetzt werden E-Mails schon auf eine gültige DKIM Signatur überprüft.

Ich werfe, nach einiger Zeit, mal ein: cat /var/log/mail.log|grep dkim_id raus um zu sehen ob schon etwas passiert ist:

Mar 11 10:59:56 kernel-error amavis[10736]: (10736-05) Passed CLEAN, [91.194.xxx.xxx] [91.194.xxx.xxx] <e3@xxxxx.net> -> <xxx@xxx-meckenheim.de>, Message-ID: <0.0.10@e3xxys.net>, mail_id: Cf, Hits: -9.187, size: 33396, queued_as: 6883, dkim_id=eBay@reply.ebay.de,eBay@reply.ebay.de, 6951 ms

Schaut gut aus und im MailHeader dieser E-Mail steht:

Authentication-Results: kernel-error.de (amavisd-new); dkim=pass
header.i=eBay@reply.ebay.de
Authentication-Results: kernel-error.de (amavisd-new); domainkeys=pass

Das geht also schon mal 😀

Vorbereitung der Signierung

In /etc/amavis/conf.d/50-user müssen folgende Konfigurationszeilen eingefügt werden:

$enable_dkim_signing = 1;
dkim_key('kernel-error.de', 'kernel-error', '/pfad/kernel-error.key.pem');
@dkim_signature_options_bysender_maps = (
{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
@mynetworks = qw(127.0.0.0/8);  # list your internal networks

Zeile 1 bringt amavis dazu E-Mails per DKIM zu signieren.
Zeile 2 sagt amavis wo für die jeweilige Domain (hier kernel-error.de) die Schlüsseldatei liegt.
Zeile 3 gibt vor wie und was signiert werden soll.
Zeile 4 gibt an, welche IP-Netze als lokal behandelt werden sollen. Da dieser Server bei uns im Rechenzentrum steht gibt es kein lokales Netzwerk, bis auf 127…

Jetzt müssen wir noch den Schlüssel erstellen. amavis hilft dabei mit folgendem Befehl:

amavisd-new genrsa /pfad/kernel-error.key.pem

Wir können uns den Schlüssel anschauen und direkt Testen ob amavis alles richtig verstanden hat, mit Hilfe dieses Befehls:

amavisd-new showkeys

Die Ausgabe sollte ähnlich dieser sein:

kernel-error._domainkey.kernel-error.de.        3600 TXT (
"v=DKIM1; p="
"MIGfMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC/KYIHw8NZNIB"
"SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS6orDC2DzZ7"
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
"qZZZZZZZZZZZZZZZZZZZZZZZZB")

Genau diesen Schlüssel müssen wir nun in den DNS-Eintrag des DNS-Servers eintragen, welcher für die Domain zuständig ist. Der DNS-Server meiner Domain ist ein Bind9. Um diesem meinen Schlüssel schmackhaft zu machen, muss ich ihn noch etwas umformen. Er wird am Ende so ausschauen:

kernel-error._domainkey.kernel-error.de.        3600 TXT  "v=DKIM1; p="MIGfMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC/KYIHw8NZNIBSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS6orDC2DzZ7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXqZZZZZZZZZZZZZZZZZZZZZZZZB"

Ich habe alle Zeilenumbrüche und ~überfüssige~ ( „ ) sowie die beiden Klammern entfernt. Der Eintrag im Bind schaut nun also so aus:

$ORIGIN .
$TTL 86400      ; 1 day
kernel-error.de         IN SOA  kernel-error.de. root.kernel-error.de. (
xxxxxxxxx ; serial
10000      ; refresh (2 hours 46 minutes 40 seconds)
1800       ; retry (30 minutes)
2419200    ; expire (4 weeks)
86400      ; minimum (1 day)
)
NS      ns1.kernel-error.de.
NS      ns2.kernel-error.org.
A       213.xx.xx.xx
MX      10 smtp.kernel-error.de.

kernel-error._domainkey.kernel-error.de.        3600 TXT  "v=DKIM1; p="MIGfMCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC/KYIHw8NZNIBSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS6orDC2DzZ7XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXqZZZZZZZZZZZZZZZZZZZZZZZZB"


$ORIGIN kernel-error.de.
$TTL 300        ; 5 minutes
imap                    A       213.xx.xx.xx
smtp                    A       213.xx.xx.xx

Ein amavisd-new testkeys sollte nun folgendes ergeben:


TESTING: kernel-error._domainkey.kernel-error.de => pass

Ab jetzt werden alle lokalen E-Mails signiert! Hier ist darauf zu achten, dass nur E-Mails signiert werden, welche als lokal eingestuft werden. Wir erinnern uns daran, dass wir 127.0.0.0/8 als lokales Netzwerk eingestuft haben. Wenn also nun E-Mails von Benutzern signiert werden sollen, welche sich mit ihrem E-Mail Client per smtp am Server anmelden und E-Mails verschicken, dann ist noch etwas mehr Arbeit nötig!

Am einfachsten ist es mit zwei verschiedenen IP-Adressen zu arbeiten und für diese Spezielle Regeln anzulegen. Dazu müssen ein paar Einträge in der /etc/postfix/master.cf vorgenommen werden:

213.xx.xx.xx:smtp      inet  n       -       -       -       -       smtpd 
127.0.0.1:10025 inet n  -       -     -       -  smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
-o local_header_rewrite_clients=

Ist hier mein Eintrag für E-Mails, welche über den MX Eintrag an meinen Mailserver gesendet werden, also für die Domains und User bestimmt sein sollten, welche ich über meinen Mailserver verarbeite. Die User sollten über diese Adresse keine E-Mails einliefen!!

### Einlieferung eigene Nutzer
213.xx.xx.xxx:smtp      inet  n       -       y       -       100     smtpd
-o smtpd_proxy_filter=localhost:10028
-o smtpd_etrn_restrictions=reject
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sasl_auth_enable=yes
-o content_filter=
213.xx.xx.xxx:smtps    inet  n       -       y       -       100       smtpd
-o smtpd_etrn_restrictions=reject
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_tls_wrappermode=yes
-o smtpd_proxy_filter=localhost:10028
-o smtpd_sasl_auth_enable=yes
-o content_filter=

Dieses sind nun meine Einträge für die zweite IP-Adresse. Über welche die User, welche sich per sasl anmelden, ihre E-Mails ins System werfen.

localhost:smtp      inet  n       -       -       -       -       smtpd

Damit auch mein Webmail sauber funktioniert ist dieser Eintrag zuständig. Sonst lauscht halt keiner mehr lokal 😀

Hier ist nun klar zu sehen, das die per smtp angenommenen E-Mails je nach IP anderen Regeln unterliegen und auch lokal an amavis auf anderen Ports weitergeleitet werden. Dieses müssen wir natürlich amavis auch mitteilen. Wenn amavis nicht weiss das es auf weiteren Ports lausch soll, wird es dieses kaum von sich aus tun. Dafür müssen wir einen Eintrag unter /etc/amavis/conf.d/20-debian_defaults ändern.

$inet_socket_port = [10024,10028,10032];  # listen on multiple TCP ports geaendert

Jetzt geben wir in der /etc/amavis/conf.d/50-user noch unsere spezielle Regel für die sasl Benutzer an:

# DKIM
$policy_bank{'SASLNUTZER'} = {   # Einlieferung eigener Nutzer
originating => 1,
os_fingerprint_method => undef,  # eigentlich ueberfluessig
};
$interface_policy{'10028'} = 'SASLNUTZER';

Interessant ist hier im Grunde nur:

originating => 1,

Man könnte originating => 1 auch einfach mit in die 20-debian_defaults werfen und sich das mit der zweiten IP und den amavis Regeln sparen. Damit wird aber jede E-Mail als lokal behandelt. Ob das so gut ist bleibt jedem selbst überlassen 😛

Tja, was soll ich sagen, hier ist nun Ende. Sollte es Fragen oder Probleme geben, könnt ihr euch gerne bei mir melden!

Hier nun noch ein Paar Informationen zu DKIM:

DomainKeys ist ein Identifikationsprotokoll zur Sicherstellung der Authentizität von E-Mail-Absendern, das von Yahoo entwickelt wurde und seit Ende 2004 in Erprobung ist. Es wurde konzipiert, um bei der Eindämmung von unerwünschter E-Mail wie Spam oder Phishing zu helfen.

DomainKeys wurde ursprünglich unter dem Titel Domain-Based Email Authentication Using Public Keys Advertised in the DNS (DomainKeys) im RFC 4870 veröffentlicht und unter dem Titel DomainKeys Identified Mail (DKIM) Signatures durch RFC 4871 abgelöst.

Arbeitsweise

DomainKeys basiert auf asymmetrischer Verschlüsselung. Die E-Mail wird mit einer Digitalen Signatur versehen, die der empfangende Server anhand des öffentlichen Schlüssels, der im Domain Name System (DNS) der Domäne verfügbar ist, verifizieren kann. Schlägt dies fehl, hat der empfangende Mail Transfer Agent (MTA) oder das empfangende Anwendungsprogramm die Möglichkeit, die E-Mail zu verweigern oder auszusortieren.

Kern des Verfahrens ist, dass der sendende MTA jede versendete E-Mail im sogenannten „DomainKey-Signature-Header“ mit einer digitalen Signatur des Inhaltes der E-Mail versieht.

Für die Erzeugung des für die Signatur nötigen Hashwertes unterstützt DKIM die Hashfunktionen SHA-1 und SHA-256, wobei die Verwendung von letzterer empfohlen wird. Die anschließende Verschlüsselung des Hashwertes, die letztlich die digitale Signatur zum Ergebnis hat, wird in beiden Fällen mit dem Verschlüsselungsverfahren RSA realisiert. Damit die Signatur mit dem beim E-Mail-Versand verwendeten ASCII-Zeichensatz dargestellt werden kann, wird sie mit Base64 kodiert.

Die so erzeugte digitale Signatur wird vom empfangenden MTA zunächst base64-dekodiert und dann mit dem öffentlichen Schlüssel der angeblichen Absender-Domäne (z.B. yahoo.com) entschlüsselt, der Hashcode der E-Mail wird neu berechnet. Stimmen der gelieferte entschlüsselte und der selbst berechnete Hashcode überein, stammt die E-Mail wirklich von der angegebenen Domäne. Der oder die verwendeten öffentliche(n) Schlüssel werden hierzu im DNS-Eintrag der sendenden Domäne publiziert. Das heißt, dass der DNS als Zertifizierungsstelle fungiert. Eine mit Hilfe von DomainKeys signierte E-Mail bietet also die Möglichkeit, sicher nachzuprüfen, ob die in der E-Mail-Absenderadresse enthaltene Domäne korrekt ist und dass die E-Mail auf dem Weg der Zustellung nicht verändert wurde.
Spamfilterung

Da es sich bei DomainKeys um einen Authentifizierungsmechanismus handelt, dient DomainKeys nicht dazu, Spam zu filtern. Stattdessen begrenzt DomainKeys die Möglichkeit, E-Mail-Absenderadressen zu verschleiern, da man mit DomainKeys feststellen kann, ob eine E-Mail tatsächlich über die angegebene Domäne versendet wurde.

Diese Nachvollziehbarkeit kann dazu verwendet werden, Bewertungssysteme und Filtertechniken von Spamfiltern wirkungsvoller zu gestalten. Zudem kann DomainKeys den Datendiebstahl durch Phishing begrenzen, da teilnehmende Mailversender ihre E-Mails als Originale zertifizieren können. Fehlt eine solche Zertifizierung, obwohl der vermeintliche Absender angibt, seine E-Mails zu zertifizieren, so kann die E-Mail als mögliche Fälschung betrachtet werden.
Lizenzierung

Yahoo hat das Verfahren patentieren lassen und es bei der IETF zur Standardisierung eingereicht. Das Verfahren wurde mittlerweile als Standard RFC 4871 akzeptiert.

Das DomainKeys-Verfahren kann von Yahoo wahlweise unter den Bedingungen der GPL 2.0 oder den Bedingungen des proprietären Yahoo DomainKeys Patent License Agreement lizenziert und verwendet werden.

Dem DomainKeys-Verfahren werden nach dem Scheitern der Standardisierung von Microsofts Sender ID – bei welchem an keine GNU-Lizenzierung gedacht wurde – gute Chancen eingeräumt, sich neben dem Sender Policy Framework (SPF) im Internet zu etablieren.
Unterstützung

Das DomainKeys-Verfahren erfordert größere Modifikationen am Mailserver – entsprechende Anpassungen existieren derzeit für fast alle gängigen Mail Transfer Agenten. Derzeit wird das DomainKeys-Verfahren nur von sehr wenigen Providern unterstützt; bekannte größere Provider, die Domainkeys einsetzen, sind Yahoo, Gmail und Strato.

Das Problem bei dieser und aller anderen Methoden zur Sicherstellung der Absender-Authentizität ist, dass es einen langen Zeitraum brauchen wird, um ein solches System zu verbreiten, da zuerst die Software angepasst werden muss und diese dann auch noch auf den Mailservern zum Einsatz kommen muss.
Weiterentwicklungen

Im Juli 2005 wurde von Cisco und Yahoo ein gemeinsamer Entwurf mit dem Titel DomainKeys Identified Mail (DKIM) bei der IETF eingereicht. Unterstützt wurde dieser Vorschlag nun auch von anderen Größen der IT-Branche, darunter mit Microsoft und AOL auch von denjenigen, die als Alternativlösung SPF vorschlugen. DKIM wurde im Mai 2007 als RFC 4871 veröffentlicht und ersetzte damit den vorherigen Entwurf RFC 4870.

Samba Projekte

Alt, tot, überholt, nicht nachmachen 🙂


 

 

Projekt Samba­Server

Dieses soll eine kleine Beschreibung über die Gründe, die eigentliche
Installation und Einrichtung meines privaten Samba­Servers werden. Also kein HowTo!

Sollte jemand Fragen oder Anregungen haben, freue ich mich natürlich über jede
E-Mail. Solltest du Fragen stellen achte bitte darauf deine Frage so genau wie irgend
mäglich zu stellen. Beschreibe kurz dein Problem, haue mich nicht mit log und configs
zu und habe etwas Geduld. Ich bekomme nicht nur eine E-Mail am Tag. Darum werde ich ganz
sicher nur auf unfreundliche und ungenaue Fragen antworten. KEINER hat ein Recht drauf von mir
Support zu bekommen!!

Nun, die Situation bei mir schaut ca. so aus: Meine Familie, der Nachbar und ich selbst sitzen
zusammen im Netzwerk. Zu dem kommt immer mal wieder Besuch zu uns. Da wir auch etwas mehr
Platz als der normale Durchschnitt haben, finden auch oft irgendwelche LANs usw. bei uns stat.
Zu dem hängt noch eine Firma und ein geschlossenes WLAN mit drin.

Wenn man mehr als nur einen Rechner hat kommt es schnell vor, dass man bestimmte
Daten nicht nur an einem Rechner braucht. Aus diesem Grund habe ich mir hier einen File­Server
aufgestellt und alle möglichen Daten dort abgelegt. Jetzt stellt sich die Frage wie von
einem anderen Rechner an diesen herankommen? Da ich selbst nur Linux­Systeme nutze (der
File­Server ist also auch Linux basiert) mache ich das ganze über ssh/scp oder
halt über NFS. Jetzt sind aber noch mehr Menschen in meinem Netzwerk. Diese wollen nun
auch ihre Daten dort ablege. Zum Einen, weil dort mehr Platz ist als auf ihrem Rechner und zum
Anderen weil dort täglich eine Datensicherung gefahren wird.
Die Rechte für einen NFS­Share sind schnell angelegt… bringt nur leider nichts,
wenn es Windows­User sind, welche auf die Shares zugreifen wollen. Microsoft
Systeme managen so etwas fast immer über das SMB Protokoll.

Server Message Block (kurz SMB) ist ein Protokoll für Datei­, Druck­ und
andere Serverdienste im Netzwerk unter Microsoft Windows­Betriebssystemen. Es ist
der Kern der Netzwerkdienste von Microsofts LAN­Manager, der Windows­Produktfamilie,
sowie des LAN­Servers von IBM.

Samba ist eine freie Software­Suite, die das Server Message Block ­ Protokoll (SMB)
für Unix­Systeme verfügbar macht. Dieses Protokoll wird manchmal als CIFS (Common
Internet File System), LanManager­ oder NetBIOS­Protokoll bezeichnet.

Samba ist damit in der Lage, Funktionen eines Windows­Server zu übernehmen. Es
gilt als stabiler und performanter als die Windows­Alternative und ist, da zudem noch frei
verfügbar, auch bei vielen Firmen und Organisationen sehr angesehen.

Würde sagen: Ich mach es mit Samba 🙂

Samba wird recht übersichtlich in einer einfachen Konfigurationsdatei konfiguriert. Diese
liegt normalerweise im Ordner /etc/samba und nennt sich smb.conf.

Ich liste erst mal meine hier auf und erläutere dann weiter unten die wichtigsten Einträge!

######### /etc/samba/smb.conf # Anfang #########
[global]
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
#Servername / Domain / usw.
netbios name = kernel­error
server string = HAUPT_Server
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
#Arbeitsgruppe
workgroup = servers
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
#Passwoerter gleichzeitig aedern und Sicherheits..
unix password sync = yes
passwd program = /usr/bin/passwd %U
passwd chat = *password* %n\n *password* %n\n *successfull*
min password length = 2
admin users = kernel
force directory mode = 0750
directory mask = 0750
force create mode = 0750
create mask = 0750
encrypt passwords = Yes
update encrypted = Yes
map to guest = Bad User
host allow 192.168.0. 127.
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
#Server und PDC einstellungen
domain master = Yes
name resolve order = dns host bcast wins
nt acl support = Yes
nt pipe support = Yes
nt smb support = Yes
wins support = Yes
wins proxy = Yes
name resolve order = dns host bcast wins
logon path = \\%L\profiles\%U
time server = Yes
socket options = SO_KEEPALIVE IPTOS_LOWDELAY TCP_NODELAY
keepalive = 120
preferred master = Yes
logon script = %U.bat
domain logons = Yes
os level = 65
logon drive = u:
logon home = \\%L\Profiles\%U
# NT RUMMEL
add user script = /usr/bin/useradd ­d /dev/null ­g machines ­c 'Machine Account' ­s /bin/false ­M %u
add user script = /usr/bin/useradd ­s /bin/false %u
username map = /etc/samba/smbusers
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
# Logs
max log size = 250
log file = /var/log/samba/samba.log.%m
debug level = 3
log level = 1
syslog = 0
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
# Speed
read raw = Yes
write raw = Yes
stat cache = Yes
stat cache size = 50
shared mem size = 5242880
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
# sonstiges
interfaces = 192.168.0.10/24
printing = cups
printcap name = CUPS
load printers = yes
#­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
# Lange Dateinamen und Umlaute
protocol = NT1
default case = lower
mangle case = no
mangled names = yes
case sensitive = no
preserve case = yes
short preserve case = yes

[netlogon]
comment = Logon Scripts
path = /home/netlogon
browseable = no

[homes]
comment = Heimatverzeichnis
writeable = Yes
browseable = No

[system]
comment = Server
path = /
writeable = yes
browseable = no
read only = no
valid users = kernel
write list = kernel
read list = kernel

[pool]
create mask = 0755
directory mask =0755
comment = Der Pool
path = /home/pool
writeable = yes
browseable = no
read only = no

[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mode = 0700
browseable = No
writeable = No

[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
create mask = 0664
directory mask = 0775
######### /etc/samba/smb.conf # Ende #########

 

Wie man sehen kann ist die Konfigurationsdatei in mehrere Bereiche aufgeteilt. Ein Berich
beginnt immer mit:

[bereichname]

Der Bereich „global“ sollte immer vorhanden sein. Einstellungen die man nicht vorgibt
werden vom Samba­Deamon mit den Standardwerten gefahren. Im Bereich „global“ werden
nun alle Einstellungen gesetzt die für den Samba­Server selbst gelten. Die ersten beiden
Punkte lasse ich aus, da sie sich selbst erklären sollten.

Interessant wird es meiner Meinung nach hier:
unix password sync = yes
passwd program = /usr/bin/passwd %U
passwd chat = *password* %n\n *password* %n\n *successfull*
min password length = 2

Hiermit gebe ich dem Samba­Server vor, dass die Benutzer welche auf der Unix­ bzw.
Linuxebene angelegt werden auch gleichzeitig im Samba­Server angelegt werden. Natürlich
mit dem gleichen Passwort, welches aber nicht kürzer als zwei Zeichen lang sein darf.
Zu dem können User auf NT­Basierten Systemen ihr Passwort von diesen aus selbst
ändern, sofern es ihnen erlaubt ist versteht sich. Die User können natürlich mit
ihrem Passwort auch auf der Konsole angelegt werden. Man muss aber darauf achten,
dass der Username schon auf der Unixebene existiert. Sie müssen nicht zwingend
die gleichen Kennwörter unter Unix/Linux und Samba haben. Angelegt wird ein User mit:

smbpasswd -a username [als root auf der Konsole]

Sollte der User schon unter Samba existieren wird sein Eintrag mit einfach nur aktualisiert.

admin users = kernel

Dieser Eintrag gibt den Benutzer an, welcher nach seiner Anmeldung auf den Shares, mit den
Rechten des Unix Users Root Dateien und Ordner anlegt / liest / bearbeiten. Hier sollte
man vorsichtig sein. Dieser User hat wirklich die gleichen Rechte wie der ROOT­User!!

map to guest = Bad User

Ist dies so angegeben, können nur User auf den Server zugreifen, welche sich auch anmelden.
Ein User kann sich am System anmelden, muss aber keinen Zugriff auf einen Share haben.

#Server und PDC einstellungen

Ab diesem Eintrag wird dem Samba­Server gesagt das er als PDC für die oben angegebene
Domain arbeiten soll. Die einzelnen Punkte haben schöne passende Namen, daher sollte
man sie auch so verstehen können. Gibt es Fragen? ==> einfach mailen!
Hat man NT­Basierte Systeme, welche sich auch am PDC anmelden sollten, muss man einen
Computeraccount für den jeweiligen Rechner anlegen. Das ist viel Arbeit pro Rechner. Da
NT­Systeme das aber selbst können, sollten sie doch die Arbeit für uns machen, oder?
Daher müssen wir noch folgendes eintragen:

add user script = /usr/bin/useradd ­d /dev/null ­g machines ­c ‚Machine Account‘ ­s /bin/false ­M %u
add user script = /usr/bin/useradd ­s /bin/false %u
username map = /etc/samba/smbusers

Die beiden Schalter:

read raw = Yes
write raw = Yes

Können dem Samba Server etwas einheizen. Sie können den Server um 50% schneller laufen
lassen. Die Hardware sollte aber mitspielen, sonst verliert man Daten.

Zum Drucken unter Linux nutze ich seit einiger Zeit CUPS. Um Windows jetzt auch den Zugriff
auf diese Drucker zu gewähren muss ich Samba angeben, dass ich CUPS zur Druckerverwaltung
nutze. Dieses mache ich mit diesem Eintrag:

interfaces = 192.168.0.10/24
printing = cups
printcap name = CUPS
load printers = yes

Wenn man den Samba­Server als PDC betreibt möchte man natürlich auch für Windows
die Loginscripte nutzen. Damit einfach und schnell die Uhrzeit abgeglichen wird oder Laufwerke und
Drucker beim Anmelden eingebunden werden. Dazu muss ein neuer Bereich mit dem Namen „netlogon“
angelegt werden. Das Ganze schaut dann wie folgt aus.

[netlogon]
comment = Logon Scripts
path = /home/netlogon
browseable = no

Der Text hinter comment wird als kleine Beschreibung bei den Shares angezeigt.
path gibt den Unixpfad zum Ordner an, welcher „freigegeben“ werden soll.
Ist browseable auf no gesetzt wird die Freigabe nicht in der Netzwerkumgebung usw. angezeigt.

Ich habe hier folgendes aufgenommen um es zu beschreiben. Man sollte das aber nicht machen!
[system]
comment = Server
path = /
writeable = yes
browseable = no
read only = no
valid users = kernel
write list = kernel
read list = kernel

Hier wurde der Bereich system angelegt. Vielleicht sollte ich an dieser Stelle sagen, dass der
Bereichsname auch gleichzeitig der Name des Shares ist. Hier taucht der Schalter writeable und
read only auf. Die Schalter machen von der Logik her das gleiche. Ich setzte immer beide um
sicher zu gehen das auch wirklich das passiert was ich will. Sie verhindern oder erlauben
das Schreiben auf Shares. Der Punkt valid users gibt an, welche user überhaupt das Recht
haben auf diesen Share zuzugreifen. write list bestimmt die User die auf dem Share schreiben
oder verändern dürfen. read list erlaubt oder verbietet halt das lesen.

Folgende Einträge geben an, mit welchen Unix­Berechtigungen Daten auf den Shares
geschrieben werden sollen. Unter Daten fallen auch Ordner.

force directory mode = 0750
directory mask = 0750
force create mode = 0750
create mask = 0750

Ich glaube mit diesen Angaben hat jeder nun schon einen kleinen überblick über
dass, was mit dem Samba­Server möglich ist und wie ich es hier eingesetzt habe.

 

 

 

Routenplaner für Linux

Navigationssystem / Routenplaner für Linux

Ich habe lange Zeit ein Navigationssystem mit Routenplaner für mein Linux Notebook gesucht.

Jetzt habe ich es gefunden!

Die Software nennt sich Navigator 4 Europe und kommt von der Firma Directions Ltd aus England.
Genaueres findet ihr unter der Homepage der Firma unter: http://www.directions.ltd.uk/

Die Software läuft unter Linux (QT 3) und Windows. Zusammen mit der Software wurde mir auch eine USB GPS-Maus, von der Firma NAVI Lock, geliefert. Diese Firma hat natürlich auch eine Homepage die ihr unter folgender Adresse findet: http://www.navilock.de/

Die GPS-Maus NL-202U wird als serielles Gerät erkannt. Sofern der Kernel passend konfiguriert ist. Es muss also im Kernel oder als Modul die USB/Seriell Unterstützung mit übersetzt werden. Ist das gemacht, sollte das Gerät unter /dev/ttyUSB0, /dev/ttyUSB1…. zu finden sein.

Tipp:
Bei GPS-Geräten unterscheidet man zwischen einem Warm- und einem Kaltstart. Als Kaltstart wird der erste Start des GPS-Gerätes bezeichnet. Hier stellt dieses eine ganze Menge komplexer Berechnungen an und synchronisiert sich, auch Datum und Zeit lassen sich später vom Gerät nehmen. Der Kaltstart kann je nach der Qualität des Gerätes bis zu 10 Minuten dauern. Beim Warmstart geht es etwas schneller, das System synchronisiert sich aber auch kurz. In diesem Zustand sollte man das GPS-Gerät nicht von der Stelle bewegen. Sonst bekommt man vielleicht überhaupt kein Signal. Erst nach dem Abschluss des Kalt- bzw. Warmstarts wird einem die Anzahl der gefundenen Satelliten angezeigt. Man braucht min. 3!

In der Software kann man die Sprache im Menü von Englisch auf Deutsch umstellen. Die sprachgesteuerte Navigation (Ja, die Software erzählt einem wann und wo man abbiegen muss) ist dann auch auf Deutsch, wenn man es bei der Installation mit installiert hat.

Die Software hält eine Menge Kartenmaterial vor, fast über ganz Europa. Hier eine kleine Auflistung:

Andorra 100 % – Kartengrösse: 1 MB
Belgien 100 % – Kartengrösse: 113 MB
Dänemark 100 % – Kartengrösse: 95 MB
Deutschland 100 % – Kartengrösse: 1212 MB
Frankreich 100 % – Kartengrösse: 1237 MB
Finnland 79.41 % – Kartengrösse: 173 MB
Großbritanien 100 % – Kartengrösse: 776 MB
Luxemburg 100 % – Kartengrösse: 10 MB
Italien 91,74 % – Kartengrösse: 958 MB
Niederlande 100 % – Kartengrösse: 178 MB
Nord Irland 16.46 % / Rep. von Irland 45.09 % – Kartengrösse: 13MB
Norwegen 100 % – Kartengrösse: 200 MB
Österreich 100 % – Kartengrösse: 168 MB
Polen 4.23 % – Kartengrösse: 44 MB
Portugal 41.28 % – Kartengrösse: 54 MB
San Marino 100 % – Kartengrösse: 1 MB
Schweden 100 % – Kartengrösse: 340 MB
Schweiz 100 % – Kartengrösse: 113 MB
Spanien 79.54 % – Kartengrösse: 494 MB
Tschechische Rep. 72.9 % – Kartengrösse: 108 M

Die ganze Software ist bei mir auf einer DVD gekommen. Wobei die Einzelnen Karten auf der DVD mit RAR komprimiert sind. Der konsolenbasierte Installer entpackt diese ohne Probleme von alleine. Man sollte vorher sicherstellen das man unrar auf seinem Linux-System installiert hat. Das Entpacken und Installieren von allen Karten dauert dann natürlich etwas 😛
Leute mit alten Kirsten sollten sich auch beim Arbeiten mit der Software auf längere Wartezeiten einstellen.

In der Software kann man sehr genau und gezielt suchen. Man kann schon vor der Suche viele Filter anwenden und das Suchergebnis wird einem auch recht übersichtlich präsentiert.

Bei der Routenerstellung kann man unbegrenzt viele Wegpunkte setzten und verschiedene Routenarten und Alternativrouten generieren lassen.

Alles ist ohne Probleme auf Papier zu bringen. Karte sowie auch die Streckenliste. Genaue Entfernung, voraussichtlicher Benzinverbrauch und Kosten lassen sich genau so gut ausgeben.

Keine Software ist perfekt. Daher gibt es immer mal wieder neue Updates, welche direkt von der Homepage des Herstellers herunter geladen werden können. Was ich auch empfehlen würde denn mir ist die gelieferte Version ohne Updates ein paar mal abgeschmiert.

Als Systemvoraussetzung wird unter anderem eine der gängigen grossen Linux-Distributionen (Suse bla…) verlangt. Ich bin das Risiko einfach mal eingegangen und habe es auf Gentoo installiert. Ich kann mich dabei über nichts beklagen.

Soooo… da jeder gerne ein paar Bilder sehen möchte folgen hier nun einige! Ach ja, bevor ich es vergesse. Meiner Meinung nach, ist die Software inkl. GPS-Empfänger sein Geld wert und funktioniert prächtig.

Die Einstellungen
GPS-Ortung
USB GPS-Maus von NAVI Lock
Softwareversion und Information (nach Update)
Ich suchte hier nach MC Donalds in Belgien
Kurze berechnete Route
Gestartetes GPS-Routing
Startbildschirm
     
Kartenübersicht der Software
     

IVTV

Wer mit der PVR 350 von Hauppauge einfach nur TV schauen möchte, ohne Mythtv und ohne vdr der wird etwas länger nach einer passenden Anleitung im Internet suchen. Besonders wenn er einen Satelitenresiever oder ähnliches an seinen Composite-Anschluss seiner PVR350 anschliessen will.

Folgene Einstellungen sollten im Kernel gemacht werden:

Ich nutze hier bei mir Gentoo und den Kernel: Linux PC-02 2.6.16-gentoo-r12 #3 PREEMPT Mon Jul 10 23:54:18 CEST 2006 i686 Pentium III (Coppermine) GNU/Linux

Zuerst einmal sollte unter /etc/modules.d/ eine Datei mit dem Namen ivtv angelegt werden, sofern nicht schon vorhanden:

touch /etc/modules.d/ivtv

Der Inhalt dieser Datei sollte nun so abgeänder werden:

alias char-major-81 videodev
alias char-major-81-0 ivtv
alias char-major-61 lirc_i2c
options msp3400 once=1
add below ivtv msp3400 saa7115 saa7127 tuner
add above ivtv ivtv-fb
add above ivtv lirc_dev lirc_i2c

Das ist jetzt auch der Inhalt meiner ivtv-Datei. Diese ist mit den lirc Optionen auch schon ausgelegt auf den Einsatz zusammen mit Mythtv. Es kann aber alles so übernommen werden. Selbst wenn wir am Ende einfach nur TV schauen wollen.

Jetzt sollte der Treiber installiert werden, welcher es ermöglicht den Hauppauge PVR 350 hardware MPEG-2 chip zu „aktivieren“.
Das Treiberpaket nennt sich ivtv. Die offizielle Homepage zu diesem Projekt ist: http://www.ivtvdriver.org/!

Mit der Version 0.4.0-r3 unter Gentoo hatte ich einige Pobleme mit einem Kernel ab Version 2.6.15 aus diesem Grund habe ich zu einer maskierten Version gegriffen. Zu dem ist f�r den Kernel ab Version 2.6.x ja auch die ivtv Version 0.6.x zuständig!

Ich nutze jetzt die Version 0.6.3. Um diese unter Gentoo zu „demaskieren“ hilft folgendes:

echo "media-tv/ivtv ~x86" >> /etc/portage/package.keywords

Nun kann auch schon mit der Installation des Paketes begonnen werden:

emerge -a ivtv

Ist die installation sauber abgeschlossen kann man sein Modul auch schon laden:

modprobe ivtv

Nun sollte man am besten kurz nachschauen ob das mit dem Laden geklappt hat:

dmesg |grep ivtv

Es sollte sich in etwas so etwas in die Konsole erbrechen:

ivtv: ==================== START INIT IVTV ====================
ivtv: version 0.6.3 (tagged release) loading
ivtv: Linux version: 2.6.16-gentoo-r12 preempt PENTIUMIII REGPARM gcc-4.1
ivtv: In case of problems please include the debug info between
ivtv: the START INIT IVTV and END INIT IVTV lines, along with
ivtv: any module options, when mailing the ivtv-users mailinglist.
ivtv0: Autodetected Hauppauge WinTV PVR-350 card (cx23415 based)
tuner 1-0061: chip found @ 0xc2 (ivtv i2c driver #0)
tda9887 1-0043: chip found @ 0x86 (ivtv i2c driver #0)
saa7115 1-0021: saa7115 found @ 0x42 (ivtv i2c driver #0)
saa7127 1-0044: saa7129 found @ 0x88 (ivtv i2c driver #0)
msp3400 1-0040: MSP4418G-B3 found @ 0x80 (ivtv i2c driver #0)
ivtv0: loaded v4l-cx2341x-enc.fw firmware (262144 bytes)
ivtv0: loaded v4l-cx2341x-dec.fw firmware (262144 bytes)
ivtv0: Encoder revision: 0x02050032
ivtv0: Decoder revision: 0x02020023
ivtv0: Allocate DMA encoder MPEG stream: 128 x 32768 buffers (4096KB total)
ivtv0: Allocate DMA encoder YUV stream: 161 x 12960 buffers (2048KB total)
ivtv0: Allocate DMA encoder VBI stream: 80 x 26208 buffers (2048KB total)
ivtv0: Allocate DMA encoder PCM audio stream: 455 x 4608 buffers (2048KB total)
ivtv0: Create encoder radio stream
ivtv0: Allocate DMA decoder MPEG stream: 16 x 65536 buffers (1024KB total)
ivtv0: Allocate DMA decoder VBI stream: 512 x 2048 buffers (1024KB total)
ivtv0: Create decoder VOUT stream
ivtv0: Allocate DMA decoder YUV stream: 20 x 51840 buffers (1024KB total)
ivtv0: loaded v4l-cx2341x-init.mpg firmware (155648 bytes)
ivtv0: Initialized Hauppauge WinTV PVR-350, card #0
ivtv: ==================== END INIT IVTV ====================

Jetzt kann man schon das erste mal probieren ob man Fernsehen schauen kann. Man braucht nur einen Videoplayer der einen mpeg2 Stream abschpielen kann. Ich nutze dazu fast immer mplayer oder kmplayer.

Ein: mplayer /dev/video0 sollte nun Schnee in den Player zaubern. Nun ist es Zeit seinen Satelitenresiever (oder was auch immer) am Composite-Eingang seiner PVR350 in Gang zu setzen.

Folglich müssen wir unserer Karte nur noch sagen das wir einen anderen Eingang für unser Videosignal nutzen wollen!

ivtvctl -P zeigt uns den gerade genutzten Videoeingang. ivtvctl -n zeigt uns alle möglichen Video Ein- und Ausgänge.

Um ihn zu ändern brauchen wir ivtvctl -p der Composite-Eingang sollte auf 5 oder 6 liegen, also:

ivtvctl -p 5

Na? ist das nicht was? Bild und Ton sollte nun den Schnee aus unserem mplayer vertrieben haben.

Natürlich kann man nun auch mit der Karte ein Video aufnehmen! Einfach mal ein:

cat /dev/video0 > /ORDNERmitPASSENDENrechten/video.mpg

In die Konsole hämmern und schon wird aufgebommen. Ist man fertig mit seiner Aufnahmen kann man alles einfach mit STRG + C abbrechen. Die Datei /ORDNERmitPASSENDENrechten/video.mpg ist nun schon ein komplettes mpg Video und man kann damit machen was man will!

Natürlich kann man auch wärend der Aufnahme einfach mal schauen ob alle glatt geht und mit dem mplayer live testen:

mplayer /ORDNERmitPASSENDENrechten/video.mpg

Die Aufnahme kann dabei natürlich weiter laufen. So lässt sich dann auch die „Pause-Funtion“ nutzen, wenn auch etwas umständlich!

Wer Videorekorder, Teletext, TV-Zeitschrift, Pausefunktion, Netzwerkstreamen usw. usw.usw. haben will sollte sich nun doch vielleicht einmal überlegen MythTV oder VDR zu testen. tvtime xawtv und auch kdetv haben wohl zum Teil Plugins für die PVR350, diese kommen aber auch nicht ohne die ivtv-Treiber aus und mir ist noch keines unter die Nase gekommen, welches wirklich sauber Funktioniert hat.

Commodore – PC Projekt

Ich bin beim Aufräumen und Ausmisten meiner „Bastelecke“ über meinen Commodore 128 D und unzähligen Disketten gestolpert. Natürlich schwelgte ich bei dessen Anblick sofort in Erinnerungen. Die ganzen Spiele, die ersten selbst geschriebenen Programme in Basic und Assembler..

Einige Male habe ich mir schon vorgenommen die ganzen Schlabberdisketten irgendwie ordentlich zu archivieren. Tja, aber wie? Von Schlabberdiskette auf Schlabberdiskette kopieren ist nicht das Gelbe vom Ei. Zum Einen sind die Dinger einfach zu empfindlich und zum Anderen gibt es auch Disketten die sich nicht so einfach kopieren lassen. Ich denke da z.B. an GEOS usw…
Also, was machen? Ein PC-Laufwerk für die Schlabberdisketten kann die Commodore beschriebenen leider nicht lesen. Das liegt jetzt nicht am genutzten Dateisystem auf den Datenträgern, sondern an der Art wie der Kontroller die Daten auf die Diskette packen lässt. Daher fällt es schon einmal flach diese einfach mit einem einfachen PC-Laufwerk kopieren bzw. archivieren zu wollen. Vielleicht kann man das Commodore Laufwerk ja einfach in den PC einbauen? Hm, so einfach geht das nicht aber man könnte über ein Kabel die komplette Floppy an seinen Computer anschließen. Zumindest hat mir google so etwas erzählt. Dann könnte ich auch Disketten 1A kopieren und öhm Images von Disketten machen und diese archivieren. Wie viele C64 Diskette (jede Seite hat ~170,8KB) bekomme ich wohl auf eine CD-ROM oder gar DVD *denk*? Diese Idee mit dem Kabel und der ganzen Floppy am PC hat mir gefallen, daher habe ich google mal nach dem Kabel gefragt.

Die Antwort war dieser Schaltplan zu einem XM1541 Kabel:

Gut, schaut ja nicht sonderlich schwer aus. Ich brauche quasi nur:

– 1 x 25 Pol. LPT Stecker
– 1 x 6 Pol. DIN Stecker
– 4 x Diode BAT85 (sind diese Schottky Dioden), die 1N5819 sollten also auch klappen.
– 1 x 5 Pol. geschirmte Leitung (ungeschirmt geht sicher auch. Nur halt nicht bei Leuten mit Hirn)

Hier habe ich mir mal mit Eagle eine Platine dafür zusammengeklickt

Nach 20 Minuten Lötkolbengefummel schaut des ganze nun so aus:

Jetzt kann ich auch schon meine 1541 Floppy an meinen Laptop anstöpseln:

Ja, so gefällt mir das schon. Schaut doch ganz nett aus, oder?

Den Hardwareteil hätten wir damit. Jetzt müssen wir es nur noch schaffen, der Hardware zu sagen was sie machen soll. Also mal wieder google nach Hilfe gefragt. Cbm4linux soll da wohl die Lösung meiner Probleme sein. Auf der Homepage zu cbm4linux schaut alles auch noch recht einfach aus! Herunterladen, entpacken, kompilieren, installieren, fertig.

Also habe ich mir die Version 0.3.2 herunter geladen. Leider hat sich das Kernelmodul nicht kompilieren lassen. Auf der Seite sprang mir gleich ein Patch für den 2.6er Kernel ins Auge. Leider brachte dieser aber auch keine Abhilfe. Das Kernelmodul wollte sich einfach nicht kompilieren lassen.

Also wieder google… Google hat mir nach und nach 5 – 6 weitere Patche an die Hand gegeben und hier und da noch Tipps für Codeänderungen von Hand. Nach einem Tag herumfummeln klappte das komplette kompilieren dann auch mit meinem 2.6.12er Kernel auf meinem Gentoo Notebook. Ach ja, hier bekommt ihr mein komplett gepatchtes und umgefummeltes Quellcodepaket vom cbm4linux, genau so wie es sich bei mir ohne Probleme kompilieren lassen hat.

cbm4linux-0.3.2-kernel-2.6.tar.gz

Und so klappt es dann:
Als User:

tar xzf cbm4linux-0.3.2-kernel-2.6.tar.gz
cd cbm4linux-0.3.2-kernel-2.6.tar.gz
make
Als Root:
make dev
make install

 (nur wenn /usr/local/lib nicht schon in der /etc/ld.so.conf steht)

echo "/usr/local/lib" >> /etc/ld.so.conf 
ldconfig

 Schon kann man probieren das Kernelmodul zu laden:

modprobe cbm

 Kommt eine Fehlermeldung sollte man das Modul lp entladen

rmmod lp

 Und es jetzt noch einmal mit dem laden von cbm probieren. Modul ohne mucken geladen? Wunderbar weiter geht es!

Jetzt kann man so ziemlich alles machen, was man so machen möchte ;-P
Klickt einfach mal die einzelnen Bilder unten durch! Wer mehr Infos zu den einzelnen Befehlen will, sollte vielleicht mal google oder man dazu befragen.

Richtig geil wird es aber erste wenn man einen C64 / C128 oder ähnlich Emulator benutzt. Ich nutze hier VICE. 1A Teil. Dieser unterstützt nämlich die Anbindung von einer echten Commodore Floppy an einen PC. Weil der PC „etwas“ schneller ist als der Commodore 64 mit seiner 1MHz CPU rennt alles (je nach Einstellung) natürlich auch wie Sau. Schaut selbst:

D-Link DWL 900 AP+ Version B „aufbohren“

D-Link DWL 900 AP+ Version B „aufbohren“

Vor einiger Zeit hat sich mitten im Download mein Access Point, der D-Link DWL 900 AP+ Version B, verabschiedet. Er war über das kabelgebundene LAN noch zu erreichen. Auch konfigurieren war kein Problem. Nur in Sachen WLAN war tote Hose. 🙁

Jetzt bin ich ja jemand der def. Geräte erstmal selbst aufschraubt und schaut. Vielleicht kann man ja selbst etwas machen. Die Garantie war auch durch also „schauen“ wir mal.

Im Access Point selbst war nicht viel zu sehen. Bis auf eine Kleinigkeit. Es schaute so aus als wenn auf der Hauptplatine eine normale PCMCIA WLAN Karte gesteckt ist. Gut, sie war nicht schön bedruckt zu dem hat irgendwer wohl eine externe Antenne an das Kärtchen gelötet, denn noch schaute es aus wie eine normale PCMCIA Karte.

Ich habe sofort etwas im Internet gesucht. Dabei habe ich herausgefunden dass die im DWL900AP+ verbaute PCMCIA Karte fast absolut baugleich mit der DWL650+ ist. Welch ein glücklicher Umstand das doch ist, denn eine DWL650+ liegt bei mir im Schrank und staubt ein. Kurz entschlossen habe ich die Karte einfach mal in den Access Point gesteckt und schon ging auch mein WLAN wieder!

Zufrieden schraubte ich alles zusammen und stellte den AP zurück an seinen Platz. Hm… die Verbindung war aber nicht mehr wie früher. Das Signal riss nach einer geringeren Entfernung ab und auch der Datendurchsatz war geschrumpft.

Die Kiste direkt wieder aufgeschraubt… Mal schauen ob wir die externe Antenne nicht irgendwo angeschlossen bekommen. Nach einigem, nicht sehr professionellem und daher nicht näher beschriebenen, gefummelt hatte ich die Platine meiner DWL650+ freigelegt. Auf dieser ist wirklich eine Buchse zum Anschluss einer Antenne. Die Antenne im DWL900AP+ hat nur leider keinen Stecker sonder war aufgelötet. Daher musste die Buchse weichen und wurde abgelötet.

Da ich nun schon mein SMD-Besteck auf dem Tisch liegen hatte, schaute ich mir die einzelnen Bauteile auf der Karte genauer an. Natürlich schreckte ich in meiner Neugierde auch nicht vor dem öffnen des HF-Gehäuses zurück. Ich tipperte die Bezeichnungen von ein paar Chips mal in google. Kann ja nicht schaden, war mein Gedanke. Nach ein paar Klicks sind mir diese beiden PDF-Dateien in die Hände gefallen.

MAX2242 RF2948B

Mit Hilfe dieser Beiden Dokumente und google fand ich heraus das die Sendeleistung der DWL650+ durch die Höhe der Spannung am Vorverstärker im RF2948 IC eingestellt wird.

Sendeleistung einstellen? Warum sollte man die Leistung freiwillig herunterschrauben? Tja, z.B.: im Notebook oder sonst wo zum Stromsparen. Ich will aber keinen Strom sparen, ich will POWER!!!

Über das Datenblatt des RF2948 kann man nun noch erfahren das PIN8 ein analoger Eingang ist. Je nach Spannung wird nun hier der Vorverstärker eingestellt. Was uns sagt: Viel Spannung an PIN8 gleich viel Power beim Senden (ok ok übertreiben sollte man es auch nicht). Direkt neben PIN8 ist PIN7, schon krass oder? PIN7 ist Power Supply VCC so irgendwas um 2,7832…bla Volt. Schließt man PIN8 mit 7 kurz sagt man dem Vorverstärker: „Junge tu mal mit maximaler Leistung arbeiten“

Der Digital Analog Converter DAC ballert nun also erstmal einen Strom raus, den er so nie abgeben würde. Der Strom liegt aber unter 1mA was dann wohl an einem Widerstand Richtung DAC liegt. So sollte oder besser ist der Strom nicht tödlich für den Chip. Dieser wird nur etwas wärmer als sonst.

Ich habe 32° bis 38°C unter last gemessen, bei einer Umgebungstemperatur von 25°C. Der IC gibt seiner Wärme nur über seine Beinchen und das Kupfer der Platine ab. Wenn der nun im Sommer noch etwas wärmer wird kann es im HF-Gehäuse schnell mal zu „Rechenfehlern“ kommen, was Mist ist. Ausprobieren wollte ich das nun wirklich nicht. Schon hinsichtlich der Lebensdauer meines Chips. Im HF-Gehäuse kann ich aber nun nicht einfach einen Metallkühlkörper auf den IC packen. Einmal ist nicht genug Platz da und dann könnte der die Felder stören und mein Leistungsgewinn ist wieder hin. Darum habe ich einfach mal einen Klecks zähe, nicht leitende Wärmeleitpaste auf den IC gesetzt. Nun hat er zumindest etwas Verbindung zum Metalldeckel des HF-Gehäuses. Da er eh nicht sonderlich warm wird, müsste das reichen.

Die Konstruktion läuft nun seit ca. 1 Jahr bei mir. Ich kann es also als Erfolg verbuchen und somit auch online stellen! Wenn es jemand an seinem Access Point probieren möchte soll er es machen aber wenn ihr euren eigenen AP gekillt habt kommt nicht zu mir und jammert. Die zu setzenden Lötpunkte sind nicht sonderlich groß. Daher sollte man mit dem Brateisen umgehen können. Zu beachten ist auch die maximal Zulässige Sendeleistung. Es werden so ~22,5dBm anstelle der normalen ~17dBm. Jetzt noch ne feine Antenne und……. Also schön das Auge draufhalten und ins Gesetzbuch schauen!

Wie immer stehe ich unter meiner E-Mail Adresse Rede und Antwort.

Hier nun noch ein paar Bilder!

Firewall

Update 2014

BOAR IST DAS SCHLECHT!!! Auf keinen Fall nachmachen… Gott ist das lange her!

 


 

Mein Netzwerk braucht natürlich eine Firewall. Diese muss die einzelnen Zugriffsrechte zwischen den Clients und den Netzen regeln sowie nach „ungewollten“ Packten filtern. Natürlich soll sie auch die Verbindung ins Internet absichern. Damit ich mich auch remote zu meinem Netzwerk verbinden kann habe ich den SSH-Dienst aus Richtung Internet freigegeben. Ich lade mit Hilfe des Programms BitTorrent freie CD- oder DVD-Images von Linux Distributionen wie z.B.: Debian GNU Linux herunter. Um hier nun den Nutzen und Sinn des Programms BitTorrent zu erhalten sind ganz besondere Zugriffsrechte an der Firewall nötig. Damit ich nicht gleich von jedem Script Kiddie genervt werde ist es ganz sinnvoll nicht auf jedes „Ping“ aus dem Internet zu antworten. Mache ich daher auch nicht :-). Es gehört vielleicht nicht ganz in eine Firewall aber ich möchte für einen bestimmten Netzwerkteil die maximale Bandbreite in beide Richtungen begrenzen.

Hier werde ich nun einige Teile meiner Firewall aufführen. Die hier aufgeführte Firewall ist natürlich nicht 1 zu 1 so bei mir im Einsatz. Einige Teile lasse ich weg oder schreibe sie etwas um. Man muss potenziellen Angreifern ja nicht unnötig helfen, oder?

Die Firewall läuft bei mir auf einem eigenen Rechner. Dieser ist ein Pentium 4 mit 2,4 Ghz, 512 MB RAM, zwei 40 GB SCSI Platten im Raid 1 und 3 NICs. Anfänglich waren 1024 MB RAM in dem System installiert. Dieses ist aber auf 512 MB RAM geändert worden, da dieses völlig ausreichend ist. Im Moment zumindest 😉 Als Betriebssystem habe ich Debian GNU Linux 3.0 mit dem Kernel 2.4 gewählt, welches über (das super geile) APT immer schön auf dem neusten Stand gehalten wird. Die Firewall wird über iptables realisiert und die Bandbreite über tc – traffic shaping geregelt.

Wie das eigentliche System nun gehärtet wird, IDS – Intrusion Detection System in meinem System funktioniert und die Dienste weiter abgesichert sind, werde ich vielleicht in einem späteren einmal beschreiben. Fragen dazu kann ich aber gerne beantworten.

Iptables benötigt einen Kernel 2.4 oder höher. Es ist recht weit verbreitet (fast bei jeder Distribution dabei), sehr simpel in der Anwendung und man kann damit sehr komplexe Aufgaben erfüllen. Iptables „speichert“ die Regeln in einer Art Liste / Tabelle. Schlägt irgendwo ein Paket auf schaut Iptables sich dieses an und geht die Regelliste von oben nach unten durch, bis es eine passende Regel gefunden hat. Dieses kann sehr oft zu Fehlern führen an denen man sich totsucht. Hat man im oberen teil z.B.: Erlaubt das vom Client mit der IP 192.168.0.3 alle Pakete ungehindert ins Internet dürfen, etwas weiter unten aber dann dem Client keinen Zugriff auf FTP geben möchten (also Port 21 sperren) werden wir uns wundern warum der Client immer noch FTP darf und suchen. Hier nimmt iptables nämlich die erste zutreffende Regel (alle Pakete ungehindert ins Internet). Iptables wird hier also nie bei der Verbotregel für Port 21 ankommen.

Tc ist seit einiger Zeit fester Bestandteil des offiziellen Linux Kernels. Um es nutzen zu können benötigen wir aber noch iptables und iproute2. Das feine an TC ist, dass man mit der Hilfe von iptables Pakete markieren kann und dessen Bandbreite dann nach festgelegten Regeln managen kann. Da man mit iptables alles mögliche filtern (also auch markieren) kann, ist hiermit fast jeder Idee recht einfach realisierbar.

#!/bin/bash


# TC-Krims
tc qdisc add dev eth2 root handle 1:0 htb default 10
tc qdisc add dev ppp0 root handle 1:0 htb default 10
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 150kbit ceil 250kbit
tc class add dev ppp0 parent 1:0 classid 1:2 htb rate 30kbit ceil 40kbit
tc filter add dev eth2 parent 1: prio 0 protocol ip handle 1 fw flowid 1:1
tc filter add dev ppp0 parent 1: prio 0 protocol ip handle 2 fw flowid 1:2


# iptables-Modul
modprobe sch_htb
modprobe sch_sfq
modprobe cls_fw
modprobe cls_u32
modprobe cls_route
modprobe ip_tables


# Connection-Tracking-Module
modprobe ip_conntrack
modprobe ip_conntrack_irc
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp 


# Tabelle flushen
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X


# Default-Policies setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP


# MY_REJECT-Chain
iptables -N MY_REJECT

# MY_REJECT fuellen
iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
iptables -A MY_REJECT -p icmp -j DROP
iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable


# MY_DROP-Chain
iptables -N MY_DROP
iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
iptables -A MY_DROP -j DROP


# Alle verworfenen Pakete protokollieren
iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "
iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "FORWARD INVALID "


# Korrupte Pakete zurueckweisen
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP


# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP


# SYN und FIN gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP


# SYN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP


# FIN und RST gleichzeitig gesetzt
iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP


# FIN ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP


# PSH ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP


# URG ohne ACK
iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP


# Loopback-Netzwerk-Kommunikation zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


# Maximum Segment Size (MSS) fr das Forwarding an PMTU anpassen
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu


# Connection-Tracking aktivieren
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ! ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# Zocken mit den Kindern
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.0/24 -d 192.168.0.5 -j MASQUERADE


# Bandbeitenregelung
iptables -A POSTROUTING -t mangle -o eth2 -j MARK --set-mark 1
iptables -A POSTROUTING -t mangle -o ppp0 -s 192.168.100.0/24 -j MARK --set-mark 2


# SSH
iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT


# IP-Adresse des LAN-Interfaces ermitteln
LAN_IP=$(ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)
LAN_IP2=$(ifconfig eth2 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d " " -f 1)
LAN_IP3=$(ifconfig eth3 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d " " -f 1)


#NAT fuer BitTorrent
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 6881:6889 -j DNAT --to-destination 192.168.0.9
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 6881:6889 -j SNAT --to-source $LAN_IP
iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d 192.168.0.9 --dport 6881:6889 -j ACCEPT


###########################################################################################################################


# Proxy Server
# Zugriff uerber die Firewall auf den Proxy
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i eth3 -s 192.168.101.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i eth2 -s 192.168.100.0/24 -p tcp --dport 3128 -j ACCEPT


# Diese duerfen alle direkt!
iptables -t nat -A POSTROUTING -o ppp0 -d dl1.antivir.de -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl2.antivir.de -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl3.antivir.de -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl4.antivir.de -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl1.avgate.net -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl2.avgate.net -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl3.avgate.net -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl4.avgate.net -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl5.avgate.net -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl6.avgate.net -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d dl7.avgate.net -p tcp --dport 80 -j MASQUERADE


iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.24 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.10 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.11 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.10 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.26 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.28 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.22 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.9 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.5 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.100 -p tcp --dport 80 -j MASQUERADE


iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -d 213.155.73.106 -p tcp --dport 80 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -d 213.155.73.106 -p tcp --dport 80 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -d 213.155.73.107 -p tcp --dport 80 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -d 213.155.73.107 -p tcp --dport 80 -j MASQUERADE 


## Um ganz sicher zu gehen machen wir die 80 sonst mal ganz zu :)
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.0/24 -p tcp --dport 80 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -p tcp --dport 80 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p tcp --dport 80 -j DROP


###########################################################################################################################


# FTP


# - Kontrollverbindung
# - - Zugriff auf den Server
iptables -A INPUT -i ppp0 -p tcp --dport 1024:65535 --sport 21 ! --syn -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 21 -j ACCEPT 


# - - Forwarding durch die Firewall 
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --sport 1024:65535 --dport 21 -j ACCEPT
iptables -A FORWARD -i eth2 -o ppp0 -p tcp --sport 1024:65535 --dport 21 -j ACCEPT
iptables -A FORWARD -i eth3 -o ppp0 -p tcp --sport 1024:65535 --dport 21 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p tcp --dport 1024:65535 --sport 21 ! --syn -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth2 -p tcp --dport 1024:65535 --sport 21 ! --syn -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth3 -p tcp --dport 1024:65535 --sport 21 ! --syn -j ACCEPT


# - aktives FTP
# - - Zugriff auf den Server
iptables -A INPUT -i ppp0 -p tcp --dport 1024:65535 --sport 20 -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 20 ! --syn -j ACCEPT


# - - Forwarding durch die Firewall
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --sport 1024:65535 --dport 20 ! --syn -j ACCEPT
iptables -A FORWARD -i eth2 -o ppp0 -p tcp --sport 1024:65535 --dport 20 ! --syn -j ACCEPT
iptables -A FORWARD -i eth3 -o ppp0 -p tcp --sport 1024:65535 --dport 20 ! --syn -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p tcp --dport 1024:65535 --sport 20 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth2 -p tcp --dport 1024:65535 --sport 20 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth3 -p tcp --dport 1024:65535 --sport 20 -j ACCEPT


# - passives FTP
# - - Zugriff auf den Server
iptables -A INPUT -i ppp0 -p tcp --dport 1024:65535 --sport 1024:65535 ! --syn -j ACCEPT
iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT


# - - Forwarding durch die Firewall
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -i eth2 -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -i eth3 -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p tcp --dport 1024:65535 --sport 1024:65535 ! --syn -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth2 -p tcp --dport 1024:65535 --sport 1024:65535 ! --syn -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth3 -p tcp --dport 1024:65535 --sport 1024:65535 ! --syn -j ACCEPT


###########################################################################################################################


# LAN-Zugriff auf ethx
iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT
iptables -A INPUT -i eth3 -s 192.168.101.10 -p udp --dport 22 -j ACCEPT
iptables -A INPUT -i eth3 -s 192.168.101.10 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth3 -s 192.168.101.11 -p udp --dport 22 -j ACCEPT
iptables -A INPUT -i eth3 -s 192.168.101.11 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i tun0 -p udp --dport 22 -j ACCEPT
iptables -A INPUT -i tun0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m state --state NEW -i eth2 -j DROP
iptables -A INPUT -m state --state NEW -i eth3 -j DROP


# Default-Policies mit REJECT
iptables -A INPUT -j MY_REJECT
iptables -A OUTPUT -j MY_REJECT
iptables -A FORWARD -j MY_REJECT


# Routing
echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null




###########################################################################################################################


# DNS nach draussen darf nur mein DNS-Server
## Mein lieber DNS-Server
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.10 -p tcp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.10 -p udp --dport 53 -j MASQUERADE
## Tja, und alle die es halt nicht duerfen :)
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.0/24 -p tcp --dport 53 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.0/24 -p udp --dport 53 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p tcp --dport 53 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p udp --dport 53 -j DROP


# Der liebe Sebi darf schoen xMule machen :)
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.9 -p tcp --dport 4000:5000 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.9 -p udp --dport 4000:5000 -j MASQUERADE
# Sonst darf aber kein Schwein xMule....
iptables -t nat -A POSTROUTING -o ppp0 -p tcp --dport 4000:5000 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -p udp --dport 4000:5000 -j DROP


# Kernel darf alles
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.101.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.11 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.11 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.101.11 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.2 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.2 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.101.2 -j MASQUERADE


# Aus dem Netz 192.168.100.0 drfen nur Leutz die ich mag auch auf meinen dns-server zugreifen und auch nur
# auf diesen. Wre ja noch schner wenn da jeder spacken drfte.
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 53 -s 192.168.100.2 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 53 -s 192.168.100.2 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 53 -s 192.168.101.30 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 53 -s 192.168.101.30 -d 192.168.0.10 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 53 -s 192.168.100.100 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 53 -s 192.168.100.100 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 53 -s 192.168.100.22 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 53 -s 192.168.100.22 -d 192.168.0.10 -j MASQUERADE 


# Wlan
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 53 -s 192.168.101.0/24 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 53 -s 192.168.101.0/24 -d 192.168.0.10 -j MASQUERADE


# Cederic darf auf den Printserver fr die Buerodrucker zugreifen
#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.100.2 -d 192.168.0.251 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.101.30 -d 192.168.0.251 -j MASQUERADE


# Cederic darf auf dem Netz 192.168.100.0 auf meinen mail-server zugreife
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 25 -s 192.168.100.2 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 110 -s 192.168.100.2 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 25 -s 192.168.101.30 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 110 -s 192.168.101.30 -d 192.168.0.10 -j MASQUERADE


# Anna darf auch mp3s hoeren
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 137:139 -s 192.168.101.30 -d 192.168.0.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 137:139 -s 192.168.101.30 -d 192.168.0.10 -j MASQUERADE


# Zugriff vom gesammten internen Netz auf die Test mp3 maschine
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 80 -s 192.168.101.0/24 -d 192.168.0.9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -s 192.168.101.0/24 -d 192.168.0.9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 8000 -s 192.168.101.0/24 -d 192.168.0.9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 8000 -s 192.168.101.0/24 -d 192.168.0.9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 80 -s 192.168.100.0/24 -d 192.168.0.9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -s 192.168.100.0/24 -d 192.168.0.9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 8000 -s 192.168.100.0/24 -d 192.168.0.9 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 8000 -s 192.168.100.0/24 -d 192.168.0.9 -j MASQUERADE


# Kernel-Error darf natrlich ins Netz 192.168.100.0 zugreifen :)
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.5 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.110 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.111 -j MASQUERADE


# und natrlich ins wlan
iptables -t nat -A POSTROUTING -o eth3 -s 192.168.0.5 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3 -s 192.168.0.110 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth3 -s 192.168.0.111 -j MASQUERADE


# Einige Ports aus dem Netz 192.168.100.0 werden nicht geroutet.


iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p tcp --dport 25 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p udp --dport 25 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p tcp --dport 110 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p udp --dport 110 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p tcp --dport 443 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -p udp --dport 443 -j DROP


###########################################################################################################################


#Cederic
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 22 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 22 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -d 62.216.176.242 -p tcp --dport 31343 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 8767 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 8766 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 4765 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 6111:6119 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 6111:6119 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 4000 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 4000 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 6667:6669 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 6667:6669 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 1:79 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 1:79 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 81:1024 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 81:1024 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 27000:29000 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 27000:29000 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 14534 -d 82.211.60.25 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 14534 -d 82.211.60.25 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 6003 -d half-life.east.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 6003 -d half-life.east.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 6003 -d half-life.west.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 6003 -d half-life.west.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 6003 -d half-life.central.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 6003 -d half-life.central.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 7002 -d half-life.east.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 7002 -d half-life.east.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 7002 -d half-life.west.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 7002 -d half-life.west.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 7002 -d half-life.central.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 7002 -d half-life.central.won.net -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 5190 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 5190 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p tcp --dport 10636 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -p udp --dport 10636 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d 81.2.131.248 -s 192.168.100.2 -p tcp --dport 26580 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d 81.2.131.248 -s 192.168.100.2 -p udp --dport 26580 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -d 217.172.188.219 -p tcp --dport 6000 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -d 217.172.188.219 -p udp --dport 6000 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -d 81.169.187.190 -p tcp --dport 3445 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -d 81.169.187.190 -p udp --dport 3445 -j MASQUERADE 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -d 62.75.250.105 -p tcp --dport 8000 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.2 -d 62.75.250.105 -p udp --dport 8000 -j MASQUERADE


#Server-Bodo 
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.100 -p tcp --dport 22 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.100 -p udp --dport 22 -j DROP
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.100 -p tcp --dport 1:79 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.100 -p udp --dport 1:79 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.100 -p tcp --dport 81:1024 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.100 -p udp --dport 81:1024 -j MASQUERADE


# Anna
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -p tcp --dport 1:1024 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -p udp --dport 1:1024 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -p tcp --dport 5190 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -p udp --dport 5190 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -p tcp --dport 10636 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -p udp --dport 10636 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -d 213.155.73.107 -p tcp --dport 7670 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.30 -d 213.155.73.107 -p udp --dport 7670 -j MASQUERADE


# AnnA-wlan
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.101 -p tcp --dport 1:1024 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.101 -p udp --dport 1:1024 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.101 -p tcp --dport 5190 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.101 -p udp --dport 5190 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.101 -p tcp --dport 10636 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.101.101 -p udp --dport 10636 -j MASQUERADE


# Alles was aus dem Net 192.168.100.0 kommt und ich nicht erlaubt habe bleibt auch da :)
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 192.168.101.0/24 -j MASQUERADE


# Aus Netz 192.168.0.0 erst mal alles weitere durch lassen
iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/24 -j MASQUERADE


###########################################################################################################################

# SYN-Cookies
echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

# Stop Source-Routing
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

# Stop Redirecting
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

# Reverse-Path-Filter
# Auskommentiert, da IPSEC mit RP_Filter nicht funktioniert!
# for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

# Log Martians
for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

# BOOTP-Relaying ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

# Proxy-ARP ausschalten
for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

# Ungltige ICMP-Antworten ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

# ICMP Echo ignorieren
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 2> /dev/null

# Max. 500/Sekunde (5/Jiffie) senden
echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

# Speicherallozierung und -timing fr IP-De/-Fragmentierung
echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
echo 30 > /proc/sys/net/ipv4/ipfrag_time

# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 Antworten auf ein TCP-SYN
echo 3 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x wiederholen
echo 15 > /proc/sys/net/ipv4/tcp_retries2

 

 

 

Wlan-Sicherheit

Wie finde ich heraus ob mein Wlan sicher ist?
(Bilder werden beim Anklicken gross.)

Hier möchte ich die möglichen „Angriffsmethoden“ zu einem Wlan
beschreiben. Am Ende wird jedem Sysadmin dann selbst auffallen, welche Bereiche
man am besten wie schützen sollte.

Es kommt immer wieder vor, dass Angestellte in der Firma einen AccessPoint
aufstellen. Dieses ohne den Admin darüber zu informieren. Was natürlich
ein grosses Sicherheitsproblem ist. Daher werde ich zum Anfang erst einmal beschreiben, wie
es überhaupt möglich ist ein Wlan zu finden. Alle meine Beschreibungen werden sehr
grob ausfallen. Wer sich wirklich mit diesem Thema beschäftigen möchte sollte sich
besser selbst mit den Einzelheiten auseinandersetzen.

Anhand folgender Ausrüstung, welche ich selbst besitze, werde ich die Beschreibung
und meine Beispiele machen.

Um mich nicht schon beim Suchen mit einem grossen und auffälligen Notebook herumschlagen
zu müssen habe ich den Sharp Zaurus SL-5500G mit einer SanDisk
CompactFlash 802.11b Low Power Wireless LAN Card
. Die Wlan Karte braucht sehr wenig Strom
und hat einen Prism II-Chip verbaut. Will man eine Wlan-Karte, welche ohne Probleme
mit Linux zusammenarbeiten, sollte man auf diesen Chip achten.

Mit Hilfe von meinem kleinen Zaurus kann ich nun sehr bequem und unauffällig durch die Gegend
laufen und nach WLANs ausschau halten. Habe ich dort mit Hilfe vom Wellenreiter ein Funknetzwerk
gefunden, bekomme ich gleich einige wichtige Informationen. Diese helfen mir dann dabei das Wlan einzuordnen.

Hat man ein Netz gefunden, welches interessant ausschaut (meist schon an der SSID zu erkennen),
ist es natürlich angenehmer mit einem Notebook zu arbeiten. Auch die Möglichkeiten sind hier grösser.
Jetzt gibt es aber wieder Probleme. Mit einem Notebook in der Hand fällt man auf. Man muss sich also in eine Ecke
verdrücken. Meist leidet der Empfang darunter. Sitzt man im Auto schirmt das Metall sofort alles ab.
Darum gibt es so etwas:

Links ist ein Standfuss mit Magnet. Dieser hält auch bei 50km/h noch auf dem Autodach.
Auf diesen wird nun die Antenne (Mitte) geschraubt. Dieses kann man nun ohne Probleme in die
Orinoco Gold PCMCIA-Karte (rechts) stecken, hier ist auch ein Prism II Chip verbaut.
Fertig….. Der Empfang ist einfach nur geil. Egal
wo man nun genau sitzt!

Jetzt fehlt nur noch ein Notebook.

Ich nutze ein Fujitsu Siemens LifeBook E 7110! Linux arbeiten mit
allen Komponenten in diesem Notebook ohne Probleme und gebastel zusammen.
Um Funknetzwerke zu finden, muss die Wlan-Karte in den Monitor Mode gesetzt werden.
Im Monitor Mode nimmt die Karte alle Packet an. Egal aus welchem Netz sie kommen und egal
für wen sie bestimmt sind.
Der Standart Linux-Kernel kann die Karte nicht in den Monitor Mode setzen. Dieser muss also gepatch
werden oder es muss ein passendes Kernelmodul erstellt werden. Am einfachsten geht es so:

0. Mit iwpriv schauen ob der eigene Kernel vielleicht schon gepatcht wurde!
1. Quellen des aktuellen Kernels installieren.
2. gcc installieren.
3. Die aktuelle Konfiguration des Kernels ins root der Kernelquellen legen.
Unter Suse: zcat /proc/config.gz > .config
Als Root unter /usr/src/linux
4. Saug dir hier die Datei orinoco-0.13e-SN-5.tar.bz2
5. Datei schön entpacken!
6. Als Root-User folgendes im root des Kernelmodules tippern:
make modules; make install
7. alle Dateien mit der Endung ko in /lib/modules/dein-aktueller-kernel/drivers/net/wireless kopieren.
Vorher Sicherung davon machen, da du einiges überschreiben musst!
8. Neustarten oder die Module entladen und laden.

Jetzt sollte nach der Eingabe von „iwpriv“, beim Teil der Wlan-Karte der Monitor Mode auftauchen.

Um mit dem Notebook nun nach Wlans zu suchen, nutzt man am besten das Programm Kismet.

Dieses sollte vorher noch konfigurieren werden;-). Es gibt unter /etc/kismet/ die Datei:
kismet.conf.
In dieser müssen wir zwei Änderungen vornehmen.
Beim Punkt „suiduser=“ tragen wir hinter dem = unseren Usernamen ein mit dem wir auf der Linux
Kiste arbeiten.
Am Punkt „source=“ tragen wir hinter dem = folgendes ein: orinoco,eth1,orinocosource
Wobei wir eth1 natürlich gegebenenfalls gegen unsere Wlan-Karte austauschen!
Ein „sudo kismet“ in der Userkonsole sollte nun das Programm starten und sogleich nach Netzen
suchen.
Haben wir eines gefunden und wollen erst einmal nachschauen, was genau dort durch die Gegend fliegt.
Brauchen wir dazu ein Programm mit dessen Hilfe wir den Datenstrom auslesen können. Dieses erledigt Ethereal
super. Später ist es auch drin, mit diesem Programm sehr komplexe Filterungen auf den Datenstrom anzuwenden.
Da wir aber nur die Daten annehmen können welche auf unserem Channel gesendet werden.
Betreibt Kismet Channelhopping. D.h.: Kismet springt im ms. Takt vom Einen in den Anderen Channel.
Wenn wir einen konstanten Datenstrom mitlesen wollen, ist das scheisse! Wir können dann ja nur die Daten
mitlesen, wenn wir auch gerade im passenden Channel sind. Daher beenden wir Kismet und setzen die Karte von Hand
in den Monitor Mode und den passenden Channel. Dieses geht als User-Root so:
iwpriv eth1 monitor 1 1
eth1 ist in diesem Fall die Wlan-Karte, mit monitor 1 sagen wir das der Monitor Mode gestartet werden soll
(mit iwpriv eth1 monitor 0 würden wir ihn also wieder beenden) und die letzte 1 gibt den Channel an, in
welchem die Karte gesetzt werden soll.

Ethereal kann nun mit den im Bild angezeitgen Optionen gestartet werden.
Nun würde Ethereal JEDES Datenpaket welches im Channel 1 durch die Gegend fliegt
auffangen und speichern.
Sollte auf dem AccessPoint eine Mac-Adressenfilterung eingerichtet sein, so müssen wir uns um
diese nicht weiter kümmern. Wir versuchen uns ja nicht am AP anzumelden, sondern hören ja einfach
nur zu. Interessant wird es erst, wenn das Netzwerk die Daten verschlüsselt überträgt.
Wir bekommen zwar immer noch alles, können damit aber nichts mehr anfangen.
Es ist aber Möglich WEP-Verschlüsselungen aufzubrechen, den Schlüssel zu errechnen.

AirSnort ist ein Programm welches genau das macht. Es kann die Karte in den Monitor-Mode
packen. Wenn vom User gewünscht auch gleich noch in den passenden Channel. Ab diesem Zeitpunkt
sammelt Airsnort die verschlüsselten Packete. Bei einer 128 Bit WEP Verschlüsselung muss es ca.
6 Millionen Pakete sammeln.
Das liegt daran, dass für die WEP Verschlüsselung nur ein begrenzter
Zufallszahlenraum zur Verfühgung steht. Nach ca. 6 Millionen Paketen wiederholen sich in jedem Fall Teile.
Mit diesen kann AirSnort nun rechnen.
Hat AirSnort den Schlüssel erfolgreich errechnet, tragen wir ihn einfach mit iwpriv bei unserer Wlan-Karte
ein und schon kann es weiter gehen!

WEP Verschlüsselungen mit einer Stärke von 256 Bit sind im Vergleich noch sehr sicher. Es würde
eine sehr lange Zeit dauern die notwendigen Pakete zu sammeln. Leider arbeiten kaum Karten mit 256 Bit WEP
Schlüsseln. Es gibt auch eine neue Methode: WPA… WPA gilt bisher als sicher.

Ich stufe mein Wlan immer noch als ein feindliches Netz ein. So behandelt es auch meine Firewall und so sollte es
jeder Admin behandeln. Es ist und bleibt wohl noch über lange Zeit ein grosses Sicherheitsproblem.

Genauere Fragen zu diesem Thema beantworte ich gerne per E-Mail!
Solltest du Fragen stellen achte bitte darauf deine Frage so genau wie irgend
möglich zu stellen. Beschreibe kurz dein Problem, haue mich nicht mit log und
configs zu und habe etwas Geduld. Ich bekomme nicht nur eine E-Mail am Tag. Darum
werde ich ganz sicher nicht auf unfreundliche und ungenaue Fragen antworten. KEINER
hat ein Recht drauf von mir Support zu bekommen!!

Mailserver

Alt, tot, überholt, schlecht, nicht nachmachen 🙂


 

 

Dieses soll eine kleine Beschreibung über die Gründe, die eigentliche Installation
und Einrichtung meines privaten Mailservers werden. Also kein HowTo!
Sollte jemand Fragen oder Anregungen haben, freue ich mich natürlich
über jede E-Mail.
Solltest du Fragen stellen achte bitte darauf deine Frage so genau wie irgend
möglich zu stellen. Beschreibe kurz dein Problem, haue mich nicht mit log und
configs zu und habe etwas Geduld. Ich bekomme nicht nur eine E-Mail am Tag. Darum
werde ich ganz sicher nur auf unfreundliche und ungenaue Fragen antworten. KEINER
hat ein Recht drauf von mir Support zu bekommen!!

Nun, die Situation bei mir schaut ca. so aus: Meine Familie, der Nachbar und ich
selbst sitzen zusammen im Netzwerk. Zu dem kommt immer mal wieder Besuch zu uns.
Da wir auch etwas mehr Platz als der normale Durchschnitt haben, finden auch oft
irgendwelche LANs usw. bei uns stat. Zu dem hängt noch eine Firma und ein
geschlossenes WLAN mit drin.

Da ist ein Problem mit der Sicherheit natürlich vorprogrammiert und den überblick
kann man da so einfach auch nicht mehr behalten. Das Netzwerk ist daher in mehrere Bereiche,
mit unterschiedlichen Rechten aufgeteilt worden. Das Netzwerk ist zum Internet hin
durch eine Firewall, Proxy und MTA abgeschirmt. Zu Proxy und Firewall sind andere
Projektbeschreibungen zu finden.

Die Hauptgründe für die Einrichtung des MTA sind also folgende:
– Zentraler Check der E-Mails auf Viren
– Zentraler Check der E-Mails auf Spam
– Einfachere Einschränkung der Bandbreite (damit eine E-Mail nicht die Internetverbindung lahmlegt.
– Keine zusätzliche Software auf den Clients
– Interner schneller E-Mail Verkehr, auch mit sehr grossen Daten

Alle E-Mails von externen Usern werden über Fetchmail vom Postfach des jeweiligen
Providers abgeholt. Werden dann sofort vom AntivirMailgate auf Viren überprüft
und müssen dann einen genauen Check durch Spamassassin über sich ergehen lassen.
Ist die E-Mail virenverseucht, bekommt der Postmaster (also ich) eine genaue Information
über den Virus, den Absender und den Empfänger der E-Mail. Der Absender und der
eigentliche Empfänger bekommt eine kurze Nachricht darüber, dass die E-Mail nicht
weitervermittelt wurde und mit welchem Virus diese E-Mail verseucht war. Sollte die E-Mail
als Spam klassifiziert werden wird vor den Betreff der E-Mail das Wort *****SPAM*****
geschrieben, ein kleiner Bericht angefertigt und diesem dann die eigentliche E-Mail
angehängt. Das ganze wird im Postfach des Empfängers abgelegt. So kann dieser
über seinen E-Mail Client die vermeintlichen Spam E-Mails entsprechend seiner Wünsche
weiter sortieren oder gar löschen. Da die vermeintliche Spam E-Mail dem Bericht
angehängt wird, hat er aber immer die Möglichkeit die E-Mail noch einmal zu
begutachten. Es könnte sich ja auch im eine wirkliche E-Mail handeln. Ist die E-Mail
aber virenfrei und kein Spam wird sie einfach im Postfach des Users abgelegt.

Alle E-Mails von den internen Clients durchlaufen die gleiche Routine bis zu einer
bestimmten Stelle. Ist die E-Mail für einen User bestimmt, der auch auf dem Mailserver
existiert, so wird die E-Mail direkt in dessen Postfach abgelegt und muss nicht erst durchs
Internet wandern. Somit ist auch bei 15 MB (1und1) nicht schon Schluss, sondern er wird an
den maximal möglichen Angaben des MTA gemessen.
Sollte die E-Mail für einen User ausserhalb des MTA bestimmt sein, wird sie an den MTA
des ISP weitergeleitet.

So nun aber zur Konfiguration des Ganzen. Konfigurationspunkte, welche ich aus privaten
oder sicherheitstechnischen Gründen lieber nicht öffentlich preisgeben
möchte, habe ich etwas umgeschrieben oder unter den Tisch fallen lassen.

Fangen wir mit der Konfiguration von Fetchmail an. Ich habe mir unter /etc/ eine
Datei mit dem Namen fetchmail.conf angelegt. Diese Datei sollte nach Möglichkeit
nur vom User root und dem User zu lesen sein, der für den Fetchmaildienst verantwortlich
ist. Denn in dieser Datei stehen die Zugangsdaten zu allen E-Mailpostfächern des ISP bzw.
E-Maildienstanbieters im Klartext. Durch einiges herumprobieren habe ich herausgefunden, dass
es bei einer ADSL-Leitung ganz sinnvoll ist alle 320 Sekunden nach neuen E-Mails in den
Postfächern des ISP zu schauen. Zwar blockiert sich Fetchmail nicht selbst, da wenn
Fetchmail gerade mit dem E-Mailchecken beschäftigt ist startet es sich nicht einfach
noch einmal parallel neu aber wenn man die Zeit unter 320 Sekunden setzt kommt es vor dass
der ISP meint es seien jetzt mal zu viele Anmeldungen in zu kurzer Zeit auf das Postfach
und dieses dann einfach mal für ein paar Minuten oder gar Stunden sperrt. Nimmt man
über 320 Sekunden muss man einfach zu lange auf E-Mails warten, da man ja auch wieder
die Zeit mitberechnen muss, die Fetchmail fürs abrufen der E-Mails braucht!

Ich starte fetchmail per init script im runlevel 3 mit dem Befehl:

fetchmail -d 320 -f /etc/fetchmail.conf

 

Die Option d startet fetchmail als Deamon im Hintergrund und zwar alle 320 Sekunden
(dafür die 320). Mit der Option f gebe ich fetchmail die zu nutzende Konfigurationsdatei an.
Die Konfigurationsdatei kann man in mehreren Arten formatieren. Ich habe mich für die
unten angezeigte Art entschieden. Da ich E-Mails von verschiedenen Servern abholen muss
und es so am übersichtlichsten finde. Es muss aber jeder für sich entscheiden
welche ihm besser gefällt. Ich beschränke mich hier aber auf die von mir genutzte Art.

############ /etc/fetchmail.conf # Anfang ############
set postmaster "postmaster"
set bouncemail
set no spambounce
set properties ""

poll pop.gmx.net with proto POP3
user 'info@gmx.net' there with password 'eienei' is 'peter1' here options fetchall
user 'info@gmx.li' there with password 'sksieneu' is 'klaus' here options fetchall

poll pop.1und1.com with proto POP3
user 'pt3732737' there with password 'safadsfg' is 'maus' here options fetchall
user 'pt302020' there with password 'aerfe' is 'peter1' here options fetchall

poll pop.t-online.de with proto POP3
user '000835444444444444400001' there with password '23424364' is 'bilder' here options keep
user '000835888888888001' there with password '334524364' is 'hund' here options keep
############ /etc/fetchmail.conf # Ende ############

 

Wie man sehen kann stehen in den ersten 4 Zeilen ein paar, selbsterklärende Angeben
für Fetchmail. Das Wort poll sagt Fetchmail: „Achtung, aber hier bezieht sich alles
auf den nachfolgenden Server!“ im ersten Fall also auf pop.gmx.net. With proto POP3 gibt
Fechtmail dann noch das zu nutzende Protokoll für die übertragung an. Bei mir in allen
Fällen pop3. in der nächsten Zeile werden Fetchmail nun die Daten für die einzelnen,
auf diesem Server zu überprüfenden, Postfächer übergeben. Hinter user folgt in
Hochkomma der Username für das Postfach beim ISP. there with password braucht normalerweise
auch schon keine genaue Beschreibung mehr. Hier wird in Hochkomma halt das zugehörige Passwort
für das Postfach angegeben. Direkt dahinter taucht is auf. Hinter is wird in Hochkomma nun der
Unix-Username des Benutzers auf dem lokalen MTA angegeben, in wessen Postfach die abgerufenen
E-Mails einsortiert werden. Der Punkt options fetchall weist Fetchmail an alle E-Mails erst vom
Server herunterzuladen und dann dort zu löschen. Es gibt natürlich auch die Möglichkeit
dieser dort liegen zu lassen und nur die Kopien herunterzuladen. Dafür ist die Option keep
zu setzten, was in den letzten beiden Zeilen der Konfigurationsdatei zu sehen ist. Einem
lokalen User kann natürlich auch mehr als ein externes Postfach zugeordnet werden. Dieses
ist in Zeile 7 und 12 zu sehen. Die Konfigurationsdatei sollte sich ohne grosses Denken
sofort verständlich lesen lassen. Fetchmail lässt sich auch dazu überreden die
E-Mails verschlüsselt vom ISP abzuholen. Genaue Informationen gibt es bei mir oder
am besten mit dem Befehl: man fetchmail

Um die E-Mails nun auf dem lokalen System zu bewegen und auch an Spamassassin weiterzugeben,
nutze ich das Programm Procmail. Diese benötigt eine eigene Konfigurationsdatei. Diese
habe ich in /etc/ angelegt und procmailrc genannt.

############ /etc/procmailrc# Anfang ############
PATH=$HOME/bin:/usr/bin:/usr/local/bin:

####################
# AntiSpam Section #
####################
:0 hbfw
| /usr/bin/spamassassin -P
############ /etc/procmailrc # Ende ############

 

Der Aufbau ist so simpel und kurz… Da spare ich mir jede Erklärung. Sollten noch
Fragen da sein: Googeln oder Mailen.

Beim Programm Spamassassin wird es schon wieder interessanter. Es braucht natürlich
auch eine Konfigurationsdatei. Diese ist bei mir unter: /etc/mail/spamassassin zu finden
und nennt sich local.cf

############ /etc/spamassasin/local.cf # Anfang ############
# How many hits before a message is considered spam.
required_hits 5.0
rewrite_header Subject *****SPAM*****
# Encapsulate spam in an attachment
report_safe 1
# Use terse version of the spam report
use_terse_report 0
# Enable the Bayes system
use_bayes 1
# Enable Bayes auto-learning
auto_learn 1
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
############ /etc/spamassasin/local.cf # Ende ############

 

Auch hier sind die Angaben selbsterklärende und schon in der Konfigurationsdatei
beschrieben. Hier taucht erst der Parameter auf, dann eine 0 für deaktiviert, eine
1 für aktiviert oder eine genauerer Angabe zum Parameter. Wenn eine E-Mail mehr als
5.0 Punkte bekommt wird sie als Spam klassifiziert. Spamassassin ist in der Lage
selbstständig zu lernen. Bis es das Filtern von Spam richtig beherrscht sollte man
den Wert vielleicht auf 4.0 oder 4.5 setzten. Hier sollte man ein bischen mit den Werten
herumprobieren.

Jetzt werden die E-Mails also schon mal auf Spam überprüft und sie werden auch
zwischen MTA, in meinem Fall Postfix, usw. herumgereicht. Die E-Mails sollen nun noch auf
Viren getestet werden. Dies sollte aber so passieren, dass keine E-Mail sich am Virenscanner
vorbei schleichen kann. Ich nutze das AntivirMailgate dafür. Dieses stellt einen eigenen
SMPT-Server und lauscht, anstelle von Postfix, auf dem TCP Port 25. Mit den passenden Regeln
in der Firewall (Firewallprojekt) müssen nun alle E-Mails im ganzen Netzwerk hier durch.

Damit das AntivirMailgate auch wirklich so arbeiten muss man natürlich noch ein paar Sachen umstellen..
Im Ordner /etc/ liegt die Datei services. Dort sollte man folgende beiden Einträge hinzufügen:

antivir 10024/tcp #Port for avgated
smtp-backdoor 10025/tcp #Port for postfix backdoor

 

Jetzt können einige Programme das ganze auch etwas übersichtlicher in den logs usw.
aufschlüsseln und wir können mit der Konfiguration des Mailgates fortfahren. Im
Ordner /etc/ sollte die Konfigurationsdatei avmailgate.conf liegen. In dieser müssen
nun diese beiden Einträge eingegeben werden, bzw. die Kommentarzeichen angepasst werden.

ListenAddress localhost port antivir
ForwardTo SMTP: localhost port smtp-backdoor
Der erste Eintrag gibt dem Mailgate an auf dem gerade in den services angegebenen Port zu arbeiten.
Zeile zwei sagt dem Mailgate wohin er die E-Mails nach dem Testen weitergeben soll. Wie man sieht
taucht hier wieder smtp-backdoor auf. Will man sich den Eintrag in /etc/services sparen kann man hier
natürlich dann auch die Ports eintragen. Das ganze kann ich aber nicht empfehlen.

Nun sind noch zwei kleine änderungen an Postfix zu machen. Im Ordner /etc/postfix/ gibt es
die Datei master.cf

In dieser sind folgende änderungen zu machen:

# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
smtp inet n ­ n - - smtpd
localhost:smtp-backdoor inet n ­; n - - smtpd -o content_filter =

 

Mit diesen änderungen sagt man Postfix das es selbst die Finger von den ankommenden E-Mails
lassen soll. Dieses soll ja unser Mailgate erledigen 🙂 Es sollte aber darauf geachtet werden dass,
das erste Zeichen in der Tabelle kein Leerzeichen und kein Tab ist. Sonst gibt es einen Fehler und
man suchst sich Stundenlang tot (ja, es ist mir passiert!).

Zum Schluss nun nur noch folgendes in die Datei main.cf im Ordner /etc/postfix/ packen:

#AntiVir Einbindung
content_filter = smtp:127.0.0.1:10024

 

Jetzt läuft dann auch schon unsere Virenprüfung. Wie man jetzt genau das Programm Antivir
und welche Zusatzoptionen man nun noch beim Mailgate macht, ist wieder so eine Sache mit dem Probieren.
Ich gebe natürlich auch gerne dabei noch eine Hilfestellung. Nur sollte man es selbst
schon einmal ausprobiert haben.

Was fehlt nun noch? Genau die Konfiguration des MTA (Postfix). Sonst geht ja schon alles…
Du solltest sicher gehen das du sasl libs usw. installiert hast. Sonst kommt am Ende die Meldung das
der Service nicht zur Verfügung steht (sobald du versuchst eine E-Mail an deinen ISP weiter zu
schicken). Genau so wichtig ist auch ein installierter popd, welcher auf Port 110 lauscht. Sonst
ist es Essig mit dem Abrufen der E-Mails vom Server.. Hier habe ich in den Anfängen auch
schon mal etwas länger grübeln dürfen.

Ich will alle E-Mails für externe User über den Mailserver von 1und1 schicken. Der ist
über den DNS-Namen smtp.1und1.com zu erreichen. Um E-Mails über den verschicken zu
können muss ich mich dort anmelden. Daher brauche ich dort einen Usernamen und ein Kennwort,
diese habe ich ja automatisch, sobald ich dort eine E-Mail Adresse besitze. Ich habe also im
Ordner /etc/postfix die Datei sasl_passwd angelegt. Die Datei hat folgenden Inhalt:

############ /etc/postfix/sasl_passwd # Anfang ############
smtp.1und1.com pt3333333-3:3333333
############ /etc/postfix/sasl_passwd # Ende ############

 

In diese Datei kommt zuerst der Server um den es sich handelt. Er muss genau so geschrieben
werden wie später der relay host in der postfix Konfiguration. Hier also smtp.1und1.com! Nun folgt
eine Leerzeile und dann pt3333333-3 dieses ist der Username für die Anmeldung am Mailserver des ISP.
Direkt dahinter kommt ein „:“! Dieses gibt an dass hier der Username endet und das zugehörige Passwort
beginnt. In unserem Fall 3333333! Plöp… Das war es auch schon. Man sollte nie vergessen aus diesen
Dateien, auch access und alias.. bla, eine Datenbank zu erstellen. Sonst ist man schon wieder seinen Fehler
am suchen! Das geht mit postmap /pfad/Dateiname

Im gleichen Ordner finden wir nun die Datei access. In dieser sollte man erst mal alle Einträge
auskommentieren. Nur dieser darf drinbleiben:

127 RELAY

 

Das sagt Postfix nun folgendes: Nur E-Mails die von einer IP Adresse kommen welche mit 127 beginnt werden
überhaupt angenommen und weiterverarbeiten. Da die 127..bla für die localhost Geschichte gedacht
ist werden jetzt erst mal nur E-Mails vom eigenen Host angenommen und verarbeitet. Ich habe bei mir
mehrere Netze aber alle beginnen mit 192.168.! Daher schaut meine Datei am Ende so aus:

127 RELAY
192.168 RELAY

 

Hat man nur ein Netz, sagen wir mal 192.168.50.0, dann sollte man das natürlich auch so angeben.
Damit haben wir schon mal sichergestellt, dass keine scheiss Spamer unseren schönen Server als
„offenen relay host“ nutzen können. SEHR WICHTIG!! Gut, speichern und raus.. Was haben wir
vergessen? Genau postmap :-)…

Jetzt schauen wir uns im gleichen Ordner mal die Datei aliases an. In dieser sollte schon so einiges
an Usernamen stehen. Las diese bitte auch erst mal so, es sei denn du weisst was du tust! Der Aufbau ist
aber ganz simpel. Links steht der Aliasname und rechts der wirkliche Username im lokalen System. Möchte
ich also das alle E-Mails die an peter-hat-es-dicke@mailserver.de gesendet werden, dem lokalen User
peter1 zugeteilt werden dann trage ich folgendes ein:

peter-hat-esdick: peter1
Das Spielchen kann ich mit so vielen User- und Aliasnamen machen wie ich Lust und Zeit habe.

Da gibt es nun aber noch eine interessante Datei mit namen canonical! In dieser steht meist nur
auskommentierter Krims. Der Sinn der Datei ist aber folgender. Ist mein Username auf dem lokalen
System hanz, meine E-Mail Adresse aber wurst und ich schicke z.B.: über die Konsole eine E-Mail
ab. So wird als Absender folgendes angegeben:

hanz@mailserver.de 

 

Tja, die Adresse gibt es nicht oder gehört nicht mir. Ist so also schon mal scheisse. Wenn
ich aber nun in die Datei cononical folgendes eintrage:

hanz wurst@mamama.de

 

Wird immer, sofern nicht anders vom Mailclient oder ähnlich angegeben, mein Absender auf
wurst@mamama.de gesetzt. Toll nicht?
So, alles schön gespeichert und auch jeweils an postmap gedacht? Sehr gut! Dann schauen wir uns
mal die Datei main.cf an. Ja, die ist schön voll 🙂 Wir sausen daher mal direkt ans Ende der
Datei. Hier tippern wir nun folgendes ein:

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
relayhost = smtp.1und1.com
smtp_sasl_security_options = noanonymous
smtp_always_send_ehlo = yes
message_size_limit = 1024000000
mailbox_size_limit = 1024000000
myhostname = mailserver.de
smtpd_banner = $myhostname ESMTP (S-wie-Sicker)

 

Dann schauen wir zuerst die ganze Datei durch ob wir nicht damit gerade doppelte
Einträge gemacht haben. Interessant hierbei ist natürlich nur der Teil links
vor dem „=“! Sollten wir doppelte haben, kommentieren wir diese oben aus. Jetzt ganz
schnell wieder runter ans Ende!

smtp_sasl_auth_enable sagt Postfix das wir uns am Mailserver vom ISP anmelden müssen,
smtp_sasl_password_maps sagt Postfix mit welchen Zugangsdaten das ganze passieren soll und
relayhost sagt welcher Host überhaupt der Mailserver unseres ISPs(oder sonst wer) ist.

smtpd_banner verändere ich nur, damit nicht jeder sofort sehen kann, mit welchem SMTP-Server
er sich gerade bei mir unterhält. So hat ein Angreifer es etwas schwerer Sicherheitslöcher
zu nutzen. Da er ja erst mal keine Ahnung hat welche es in diesem System gerade gibt.

mailbox_size_limit gibt die maximale Grösse der Usermailboxen auf dem lokalen System an.
message_size_limit die maximale Grösse der E-Mails, die ein lokaler User verschicken kann.
message_size_limit sollte sinnvollerweise nie grösser als mailbox_size_limit sein.

Tja, das war es dann auch schon.

–==Ende==–

 

 

 

Proxy Server

Alt, tot, überholt, schlecht, nicht nachmachen 🙂


Dieses soll eine kleine Beschreibung über die Gründe, die eigentliche
Installation und Einrichtung meines privaten Proxy­Servers werden. Also kein HowTo!

Sollte jemand Fragen oder Anregungen haben, freue ich mich natürlich über jede
E­Mail. Solltest du Fragen stellen achte bitte darauf deine Frage so genau wie irgend
möglich zu stellen. Beschreibe kurz dein Problem, haue mich nicht mit log und configs
zu und habe etwas Geduld. Ich bekomme nicht nur eine E­Mail am Tag. Darum werde ich ganz
sicher nur auf unfreundliche und ungenaue Fragen antworten. KEINER hat ein Recht drauf von mir
Support zu bekommen!!

Nun, die Situation bei mir schaut ca. so aus: Meine Familie, der Nachbar und ich selbst sitzen
zusammen im Netzwerk. Zu dem kommt immer mal wieder Besuch zu uns. Da wir auch etwas mehr
Platz als der normale Durchschnitt haben, finden auch oft irgendwelche LANs usw. bei uns stat.
Zu dem hängt noch eine Firma und ein geschlossenes WLAN mit drin.

Da ist ein Problem mit der Sicherheit natürlich vorprogrammiert und den überblick kann
man da so einfach auch nicht mehr behalten. Das Netzwerk ist daher in mehrere Bereiche, mit
unterschiedlichen Rechten aufgeteilt worden. Das Netzwerk ist zum Internet hin durch eine Firewall,
Proxy und MTA abgeschirmt. Zu MTA und Firewall sind andere Projektbeschreibungen zu finden.

Die Hauptgründe für die Einrichtung des Proxy­Servers sind also folgende:
­ Zentraler check der vom User angeforderten Webseiten auf z.B.: jugendgefährdende Inhalte
­ Zentraler check der vom User angeforderten Dateien auf Viren
­ Keine zusätzliche Software auf den Clients
­ Schneller Zugriff auf oft abgefragte Internetseiten

Mein Proxy­Server sollte also folgendes leisten können. Zum einen sollte er die
angeforderten Webseiten auf bestimmte Worte in dessen Text durchsuchen können. Findet er
dort Worte welche nur auf Internetseiten vorkommen sollten welche nicht….. sagen wir mal,
für die tägliche Arbeit am Rechner sinnvoll sind, sollte dieser dann den Zugriff auf
diese Seite verweigern. Bei mir bereits als „bedenkliche“ oder gefährliche Webseiten
bekannte Domains, sollte der Proxy natürlich in jedem Fall den Zugriff verweigern. Es kommt in einem
Netzwerk oft vor, dass ein und die selbe Quelle im Internet mehrmals von verschiedenen Usern angefragt wird.
Warum sollte man also diese Seite für jeden Rechner einmal und vor allem immer wieder aufs Neue vom
Webserver herunterladen? Der Proxy­Server sollte also auch in der Lage sein, Webseiten bzw. deren
Inhalte sinnvoll zu cachen. Leider kommen Viren und kleine aber sehr lästige Progämmchen nicht
nur als E­Mails oder auf Grund von Angriffen ins System, sondern leider auch sehr oft durch unbedachte
Downloads von Dateien der User. Um diese mal wieder vor sich selbst schützen zu können, müssen
alle angeforderten Daten auf Viren und der gleichen getestet werden. Ich selbst habe auf alenl meinen Systemen das
Antivirenprogramm Antivir der Firma H+BEDV Datentechnik GmbH installiert. Ich kann dieses Programm für
Unix, besonders aber für Linux Umgebungen nur empfehlen. Daher ist es logisch, dass ich dieses
Programm am liebsten auch zum Testen der Proxydaten einsetzten möchte. So erspare ich mir die Arbeit
gleich mehrere Virenprogramme zu warten.

Folgendes habe ich mir nun also eingerichtet.
Um sicher zu stellen, dass keine normalen Internetseiten mehr, ohne Zwischenspeicherung, Auswertung und
Virentest bei den User ankommt, habe ich über die Firewall alle direkten Verbindungen auf Port 80
und 21 verboten. Meine Erfahrung hat gezeigt, dass Viren und bedenkliche Webinhalte kaum über
verschlüsselte Seiten (also Port 445) gefunden werden. Diese habe ich auch weiterhin durchgelassen.

Als Proxy­Server setze ich das Programm Squid ein. Zur Weitergabe der Daten an den Virenscanner nutze
ich das Programm Squirm. Hier kann ich mir sicher sein, dass alles ohne Probleme zusammenarbeiten wird.
Das eigentliche Scannen der Daten übernimmt, wie schon angedeutet, das Programm Antivir. Das eigentliche
Handling der Daten übernimmt aber das Programm ANDURAS SurfProtect.

Nun aber zur Konfiguration des ganzen!

Beginnen wir mit der Wortfilterung. Um diese zu realisieren und auch ständig erweitern zu können
habe ich mir eine Datei mit dem namen domains.deny im Ordner /etc/squid angelegt. In diese Datei müssen
nun untereinander die Worte geschrieben werden, welche nicht erwünscht sind. Hier ein Auszug aus der Datei:

############ /etc/squid/domains.deny ## Anfang ############
gay
sex
farmsex
nutte
hure
sperma
fotze
arsch
trojaner
hacker
hackertools
crack
keygen
warez
nuke
nuketools
dildo
masturbating
fucking
slut
emule
xmule
edonkey
Kazza
arschficken
spermaschleuder
kindersex
fotzenschleim
############ /etc/squid/domains.deny ## Ende ############

Sollte sich ein User über diese „Einschränkung“ beschweren druckt man am besten die Liste
aus und klärt mit ihm im öffentlichen Gespräch warum er welches Wort denn unbedingt benötigt.
Um dieses nun in den Proxy­Server Squid einzubinden muss die Datei vom Squid­Deamon gelesen werde können.
Daher sollten noch die Rechte gesetzt werden. Jetzt muss noch folgender Eintrag in die Konfigurationsdatei squid.conf:

acl domains.deny urlpath_regex ­i "/etc/squid/domains.deny"
acl domains dstdom_regex ­i "/etc/squid/domains.deny"
http_access deny domains.deny
http_access deny domains

Hier ist aber zu beachten, dass man die Einträge jeweils VOR den anderen acl und http_access Einträgen in
der Konfigurationsdatei schreibt, da diese von oben nach unten abgearbeitet werden.

Nach dem Speichern sollte man nun Squid die neue Konfiguration „einprügeln“:

squid -k reconfigure

[als root in der Konsole]

Erledigt das für uns.

Die acl und http_access Regeln sind in der Konfigurationsdatei ganz gut beschrieben. Daher gehe ich da nicht weiter
drauf ein. Da wir aber gerade bei der Konfigurationsdatei sind… Einige Einträge können wir gleich noch machen.
Dazu gehen wir ganz an das Ende der Datei. Dort tragen wir folgendes ein:

http_port 192.168.100.1:3128
http_port 127.0.0.1:3128
cache_effective_user squid
cache_effective_group squid
visible_hostname router
unique_hostname router
cache_dir ufs /home/spool/squid 1000 16 256
cache_mgr kernel­error@kernel­error.de
emulate_httpd_log off
cache_mem 16 MB
ftp_user root@kernel­error.de

Jetzt müssen wir uns kurz vergewissern ob wir hiermit nicht gerade doppelte Einträge gemacht haben. Also schauen
wir die Konfigurationsdatei durch, ob die einzelnen Einträge nicht schon irgendwo existieren. Interessant ist
natürlich nur der erste Teil.

Unsere Einträge bewirken folgendes:
http_port 192.168.100.1:3128
http_port 127.0.0.1:3128

Hier werden die lokalen IP Adressen und Portnummern fest gelegt auf denen Squid lauschen soll. Die Adresse 127…
bla ist für den localhost, die Adresse 192.168.100.1 ist für die dritte NIC in meinem Proxy­Server
gedacht. Der TCP Port ist jeweils 3128. Wenn man all diese Einstellungen nicht setzt lauscht Squid normalerweise
auf Port 8080, dieses aber auf jeder NIC im System.

cache_effective_user squid
cache_effective_group squid
Hier wird der Username und die Gruppe festgelegt mit welchem Squid die Dateien und Ordner in seinem Cache verarbeitet.

visible_hostname router
unique_hostname router
Hier gebe ich den Computernamen an, welcher dem User angezeigt werden soll.

cache_dir ufs /home/spool/squid 1000 16 256
Hier wird nun angegeben wo genau Squid seine Daten zwischenspeichern soll. Die weitern Angaben sind die maximale
Grösse des Caches in MB, die maximale Anzahl von Ordnern in einem Ordner und die maximale Anzahl von Unterordnern
im Cache. Squid läuft bei mir nun schon seit 4 Jahren. In dieser Zeit habe ich herausgefunden, dass er mit
diesen Einstellungen schnell und stabil läuft. Auf anderen Rechnern mit anderem Dateisystem usw. kann das
natürlich auch anders aussehen. Wieder mal so eine Sache wo man etwas probieren muss.

cache_mgr kernel-error@kernel-error.de
Sollte Squid eine Seite nicht finden, den Zugriff verweigern oder sonst etwas. Sagt er dem User er könne
sich mit seinen Problemen und Sorgen an diese E­Mail Adresse wenden. Will man möglichst wenig genervt
werden sollte man diese dann gegen /dev/null linken 🙂

emulate_httpd_log off
Squid legt natürlich Logdateien an. Leider formatiert squid die standardmässig so, dass kein Mensch
diese lesen kann. Mit dieser Einstellung kann man Squid aber dazu überreden diese lesbar darzustellen.

cache_mem 16 MB
Diese Einstellung sagt Squid wie viel Arbeitsspeicher er sich maximal unter den Nagel reissen darf. Ich habe
256 MB in diesem System verbaut. Mit 16 MB für den Squid läuft das Teil immer noch schön rund
und Squid kommt auch nicht aus der Puste.

ftp_user root@kernel­error.de
Wird über Squid auf einen FTP­Server zugegriffen gibt er diese E­Mailadresse an. Ob das nötig
ist oder nicht muss man selbst entscheiden.

Nun sollte Squid normalerweise laufen und die Webseiten nach Worten filtern. Sollte noch nicht klar
sein, wie man gleich ganze Domains sperrt, sollte man sich noch mal mit dem Punkt ACLs beschäftigen. Im
Notfall antworte ich auch auf E­Mails. Tja, jetzt fehlt uns nur noch der Virenscanner, richtig?

Das Programm ANDURAS SurfProtect funktioniert folgendermassen. Wenn man im Internet surft laufen nun ja alle
Daten durch den Proxy. Dieser gibt bestimmte Dateitypen nun über Squirm weiter an SurfProtect. SurfProtect
ist selbst ein PHP Programm welches auf dem lokalen Webserver (es könnte theoretisch auch auf einem anderen
System laufen) läuft. Squirm gibt nun also die Anforderung der Datei virus.exe, von der Internetseite www.virus.com,
weiter an SurfProtect. Dieses öffnet nun ein Popupfenster auf dem Rechner des Users im welchem ihm mitgeteilt wird,
dass er kurz warten soll. Saugt dann die Datei Virus.exe von der angegebenen Quelle und speichert sie im Temp
zwischen. Nun checkt es mit dem Programm Antivir ob die Datei virenverseucht ist oder nicht. Ist sie es, wird dem
User der Zugriff auf diese Datei verwehrt (Bild 1) und diese dann gelöscht. Anderweitig wird dem User gesagt, die Datei
ist virenfrei und kann jetzt mit einem klick auf „Speichern“ abgespeichert werden (Bild 2). SurfProtect speichert
die Datei nun einen Tag lang zwischen, schaut aber bei jeder neuen Anfrage erst nach ob nicht vielleicht die Datei
auf der Quelle verändert wurde. So muss die Datei nicht bei jeder Anfrage neu heruntergeladen werden.

Um die Daten nun mit der Hilfe von Squirm weiter zu reichen muss folgendes in dessen Konfigurationsdatei eingetragen werden:

abortregexi (^http://192.168.0.200/+surfprot/+surfprot\.php.*$)

# rules to redirect certain files to SurfProtect...
regexi (^.*\.zip$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.zip\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.doc$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.doc\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.exe$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.exe\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.gz$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.gz\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.tar$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.tar\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.com$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.com\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.bat$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.bat\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.scr$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.scr\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.rar$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.rar\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.cmd$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.cmd\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.reg$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.reg\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1

# Skip all local files
abortregexi (^http://192\.168\.0\.1\.*)
abortregexi (^http://192.168.0.200.*)

Schaut etwas wüst aus? Ist es aber nicht 🙂

regexi (^.*\.reg$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1
regexi (^.*\.reg\?.*$) http://192.168.0.200/surfprotect/surfprot.php?url=|\1

Dieser Eintrag sagt: Alle Dateien mit der Endung reg sollten an http://192.168.0.200/surfprotect/surfprot.php?url=
weitergereicht werden. Tja, das ist auch schon alles. Man muss also nur für jede Datei die man scannen will so
einen Eintrag anlegen.

SurfProtect selbst liegt im Ordner /surfprotect unter dem Ordner html im www­Teil des Apache.
Dort liegen auch die Konfigurationsdateien. Ob man den Zugriff auf diese gewehrt oder nicht, ist einem selbst und den
Einstellungen des Apache überlassen. Die User könnten diese zwar nur lesen aber noch nicht mal mehr das
geht sie ja etwas an. Daher sollte man nur den Zugriff auf die Datei surfprot.php genehmigen.

In der Datei surfport.defaults sollte man nun noch unten folgendes eintragen:

define(SCANNER_INCLUDE, "surfprot_hbac.inc");

Damit wird SurfPortect gesagt es soll das Plugin zur Verwendung des Programmes AntiVir laden.

Damit sollte der Proxy nun auch nach Viren suchen.

Hier nun noch zwei Bilder, welche der User zu sehen bekommt. Das, was sich nun für die User ändert:

SurfProtect verweigert den Zugriff.

SurfProtect erlaubt den Zugriff.

« Ältere Beiträge Neuere Beiträge »

© 2025 -=Kernel-Error=-

Theme von Anders NorénHoch ↑