gentoo

 

gentoo

Anti-Post-Privacy Teil 1: OpenVPN-Server unter gentoo einrichten

Bereich: 

openVPNDieses HowTo stellt den ersten Teil einer kleinen Serie von HowTos dar, die jedermann (zumindest aber  Server-Betreibern) helfen sollen, sich ein wenig anonymer durchs Internet zu bewegen. Klar sind die Texte und Anleitungen auf gentoo-Linux zugeschnitten, sollten sich aber eigentlich recht einfach auf andere Distributionen anwenden lassen. 
Wir beginnen die Serie mit einem HowTo welches zeigt, wie man schnell und einfach einen einen OpenVPN-Server aufsetzt.

Vorraussetzungen

Um OpenVPN installieren und einen eigenen Server betreiben zu können, muss im Kernel das TUN/TAP-Device entweder fest einkompiliert oder als Modul aktiviert sein.

  1. cd /usr/src/linux 
  2. make menuconfig

Folgendes sollte aktiviert sein:

  1. Device Drivers ---> 
  2.     Network device support ---> 
  3.         [*]Network device support 
  4.         <M> Universal TUN/TAP device driver support

Danach den Kernel neu kompilieren, oder wenn das Modul schon aktiviert ist, dann kann man das so lassen...

Installation

Die Installation ist - ich wiederhole mich gerne - unter gentoo wie immer sehr einfach:

  1. emerge openvpn

Konfiguration

Erzeugen der SSL-Keys/-Zertifikaten

Bei OpenVPN ist dies nicht sehr schwierig, es bringt einige Skripte mit, dies diesen ganzen Prozess enorm vereinfachen.

  1. cd /usr/share/openvpn/easy-rsa

Hier muss man noch ein paar Variablen in der Konfigurationsdatei anpassen, um das Zertifikat auf seine Bedürfnisse anzupassen,
besonders die Werte für KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG und KEY_EMAIL sollten bearbeitet werden.

  1. nano ./vars

Nun initialisieren wir das PKI:

  1. source ./vars 
  2. ./clean-all 
  3. ./build-ca

Der letzte Befehl (build-ca) erstellt die Certificate Authority (CA) durch Aufruf eines interaktiven openssl-Befehls:

  1. Generating a 1024 bit RSA private key 
  2. ............++++++ ...........++++++ 
  3. writing new private key to 'ca.key' 
  4. ----- 
  5. You are about to be asked to enter information 
  6. that will be incorporated into your certificate 
  7. request. What you are about to enter is what 
  8. is called a Distinguished Name or a DN. 
  9. There are quite a few fields but you can leave 
  10. some blank For some fields there will be a default 
  11. value, If you enter '.', the field will be left 
  12. blank. 
  13. ----- 
  14. Country Name (2 letter code) [DE]: 
  15. State or Province Name (full name) [RLP]: 
  16. Locality Name (eg, city) [SOMEWHERE]: 
  17. Organization Name (eg, company) [OpenVPN-TEST]: 
  18. Organizational Unit Name (eg, section) []: 
  19. Common Name (eg, your name or your server's hostname) []:OpenVPN-CA 
  20. Email Address [me@myhost.mydomain]:

Hier kann man nochmal die unterschiedlichen Werte anpassen. Falls dies schon in der vars-Datei geschehen ist, kann man fast
überall mit Enter die vorgeschlagenen Werte übernehmen. Lediglich der "Common Name" muss angegeben werden!

Zertifikat & Schlüssel für den Server

Durch den folgenden befehl startet man die Generierung des Zertifikates und des Private Keys für den OpenVPN-Server:

  1. ./build-key-server server

Wie schon im ersten Schritt kann man hier fast alle vorgeschlagenen Werte übernehmen, lediglich bei der Frage nach dem Common Name
sollte man "server" angeben. Die Fragen "Sign the certificate? [y/n]" und "1 out of 1 certificate requests certified, commit? [y/n]" muss man
mittels "y" bejahen.

Als nächstes erstellen wir die Schlüssel für den Client:

  1. ./build-key client

Eigentlich das gleiche Spielchen wie oben, hier aber für jeden Client einen eindeutigen Bezeichner als "Common Name" angeben!

Die Diffie Hellman Parameter

Als nächstes müssen die DH-Parameter generiert werden, wobei uns OpenVPN auch wieder mit einem Skript unterstützt:

  1. ./build-dh

Ausgabe (für einen 1024-Bit Schlüssel):

  1. Generating DH parameters, 1024 bit long safe prime, generator 2 
  2. This is going to take a long time 
  3. .................+........................................... 
  4. ...................+.............+.................+......... 
  5. ...................................... 
Die Key-Files

OpenVPN hat nun ein Unterverzeichnis mit dem Namen keys angelegt in dem sich alle Schlüssel befinden. Alle Dateien, deren Dateiendung *.key ist,
sind besonders schützenswert, da sie die privaten Schlüssel enthalten. Als nächstes sollte man über einen sicheren Kanal die Client-Schlüssel und das CA-Zertifikat
zum Client bringen. Empfohlen wird SSH! Wenn jemand die Dateien abfangen kann, ist unsere ganze Sicherheit für die Katz.

  1. scp ./ca.crt user@client-machine:/home/user/.vpn/ 
  2. scp ./client.* user@client-machine:/home/user/.vpn/
Doppelte Sicherheit

Um unser VPN vor den sogenannten ManInTheMiddle-Attacken zu sichern, nutzen wir eine doppelte Verschlüsselung mittels den Secret-Keys und dem Zertifikat. Die benötigte
Konfiguration ist sehr simpel:

  1. mkdir -p /etc/openvpn/privnet 
  2. mv /usr/share/openvpn/easy-rsa/keys/* /etc/openvpn/privnet/ 
  3. #everytime you update openvpn you might lose these files creating a backup is only a good idea! 
  4. tar cfzp /root/openvpn-privnet.tar.gz /etc/openvpn/privnet/ 
  5. chmod 400 /root/openvpn-privnet.tar.gz 
  6. chmod 700 /etc/openvpn/privnet

Konfiguration des Servers

Nach einigem Rumprobieren hat sich bei mir die folgende Konfiguration als funktional erwiesen (Datei /etc/openvpn/openvpn.conf):

  1.  
  2. # non default port to prevent worm attacks! 
  3. port 11194 
  4. # the tun-device did not work for me! 
  5. dev tap 
  6. proto tcp-server 
  7. tls-server 
  8. ca privnet/ca.crt 
  9. cert privnet/server.crt 
  10. key privnet/server.key 
  11. dh privnet/dh2048.pem 
  12. mode server 
  13. duplicate-cn 
  14. ifconfig 10.1.0.1 255.255.255.0 
  15. ifconfig-pool 10.1.0.2 10.1.0.11 255.255.255.0 
  16. # ip range for openvpn client 
  17. ifconfig-pool-persist ipp.txt 
  18. keepalive 10 120 
  19. comp-lzo 
  20. user nobody 
  21. group nobody 
  22. persist-key 
  23. persist-tun 
  24. resolv-retry infinite 
  25. status openvpn-status.log 
  26. verb 1 
  27. log openvpn.log 
  28. push "dhcp-option DNS 10.1.0.1" 
  29. # push DNS entries to openvpn client 
  30. push "route-gateway 10.1.0.1" 
  31. # push default gateway 
  32. push "route 10.1.0.0 255.255.255.0 10.1.0.1"

Service automatisch starten

Als Nächstes binden wir den openVPN-Service in unser default-runlevel ein, so dass dieser bei jedem Reboot (was nicht allzu häufig passieren sollte ;-))
automatisch startet und starten ihn auch noch einmal manuell:

  1. rc-update add openvpn default 
  2. /etc/init.d/openvpn start

Vorschau

Im nächsten Teil dieser HowTo-Serie zeige ich Euch dann, wie man sich unter den unterschiedlichsten Systemen (Linux/Android/...) mit dem VPN verbindet.
Windows kann ich leider nicht beschreiben, da ich in meinem Umfeld kein Windows mehr greifbar habe, um die Verbindung zu testen! Der dritte Teil wird dann auf dem
Server ein Transparenter Tor-Proxy eingerichtet, so dass alle Netzwerkzugriffe über das VPN nach aussen dann durch das Tor-Netzwerk geroutet werden.

Tor-Bridge unter gentoo Linux betreiben

Bereich: 

Wer selbst eifrig Tor nutzt, kennt die Einschränkungen des Netzwerkes nur zu gut: geringe Bandbreiten und damit Geschwindigkeiten. Das Ganze ist relativ unproblematisch bei textlastigen Webseiten, ist aber einfach nur nahezu unbenutzbar, wenn man z.B. ein Distributions-Torrent über das Tornetz saugen möchte, oder eben auf Webseiten stößt, bei denen die Entwickler mit Bildern nur so um sich schmeissen.

Um das Netzwerk zu unterstützen, bietet es sich an auf einem eigenen Server - sogar Desktop-PCs mit Flatrate sind denkbar - einen Tor-Exit-Node oder eine -Birdge zu betreiben.

Rechtliches

Während das Betreiben einer Exitnode immer noch eine rechtliche Grauzone darstellt - man kann hier auf keine zuverlässingen Gerichtsurteile verweisen, jedes Gericht entscheidet anders - ist der Betrieb einer Bridge unbedenklich. Hier werden nur verschlüsselte Anfragen empfangen und weitergeroutet. Da es nichts brauchbares zum Loggen gäbe, entbindet dies auch von der angeblichen Loggingpflicht eines Dienstbetreibers.

Installation und Konfiguration

Unter gentoo-Linux ist die Installation und der Betrieb des benötigten Tor-Ebuilds wie immer recht unproblematisch.

Installation

Die Installation ist wie immer ein Einzeiler:

  1. emerge tor

Es werden alle benötigten Abhängigkeiten installiert.

Konfigurtation

Zunächst erstellen wir und die kleine benötigte Tor-Konfiguration unter /etc/tor/torrc

  1. User tor
  2. Nickname SoHeisstMeineTorBridge
  3.  
  4. PIDFile /var/run/tor/tor.pid
  5. Log notice file /var/log/tor/notices.log
  6. #Log debug file /var/log/tor/debug.log
  7. DataDirectory   /var/lib/tor/data
  8.  
  9. # Hier kann man Beschraenkungen bzgl. der Bandbreite treffen
  10. RelayBandwidthRate 40 KB  
  11. RelayBandwidthBurst 100 KB
  12. MaxAdvertisedBandwidth 10KB
  13.  
  14. SocksPort 0
  15. ORPort 9001
  16. BridgeRelay 1
  17. Exitpolicy reject *:*

Danach starten wir Tor einfach wie gewohnt mit

  1. /etc/init.d/tor start

und wir haben unsere Tor-Bridge!

KMail2 unter gentoo Linux loswerden Teil 2

Bereich: 

Um die aktuellen KDEPim-Pakete dauerhaft zu maskieren konnte man bislang einen Symlink auf eine Datei im KDE-Overlay benutzen, wie ich auch im ersten Teil dieses HowTos beschrieben habe. Leider gibt es dieses File nicht mehr, so dass man sich selbst behelfen muss.

Hierzu erstellt man sich einfach eine Date (z.B. /ets/portage/package.mask/kdepim) mit folgendem Inhalt:

  1. >kde-base/kdepim-meta-4.5.0
  2. >kde-base/kdepim-l10n-4.5.0      
  3. >kde-base/kdepim-icons-4.5.0   
  4. >kde-base/kabcclient-4.5.0   
  5. >kde-base/blogilo-4.5.0   
  6. >kde-base/kdepim-runtime-4.5.0   
  7. >kde-base/kontact-4.5.0   
  8. >kde-base/kdepim-kresources-4.5.0   
  9. >kde-base/kdepim-strigi-analyzer-4.5.0   
  10. >kde-base/kalarm-4.5.0      
  11. >kde-base/konsolekalendar-4.5.0   
  12. >kde-base/kleopatra-4.5.0   
  13. >kde-base/korganizer-4.5.0
  14. >kde-base/kdepim-wizards-4.5.0
  15. >kde-base/akregator-4.5.0
  16. >kde-base/kjots-4.5.0
  17. >kde-base/knotes-4.5.0
  18. >kde-base/kaddressbook-4.5.0
  19. >kde-base/knode-4.5.0
  20. >kde-base/ktimetracker-4.5.0
  21. >kde-base/kmail-4.5.0

Danach sind alle relevanten Pakete vor Updates auf die - IMHO immer noch nicht nutzbare - KDEPIM-Version sicher.

KMail2 unter gentoo Linux loswerden

Bereich: 

Ich hatte schon einige Blogartikel darüber geschrieben und ich bleibe dabei: KMail2 ist in der aktuellen Version nicht nutzbar, egal ob man MySQL als akonadi-Backend einsetzt (eigener Serverprozess oder der bereits laufende Server) oder einigen Tipps im Internet folgt und SQLite3 nutzt. Spätestens wenn man KMail2 nutzen möchte, um ein IMAP-Postfach zu verwalten, das mehr als einige hundert Mails vorhält wird es einfach unheimlich langsam.

Das Anklicken einer Mail führt zu 1-x Sekunden Wartezeit, um den Mailinhalt zu lesen, egal ob man die Mail vom Server holt oder einen "Disconnected IMAP-Account" eingerichtet hat, sprich die Mails sich lokal auf dem Rechner befinden. Immer noch ist das Filtererstellen anhand einer MailinglistenID ausgegraut und man muss sich - je nach ML - mit Empfänger, Ansender oder CC als Filter aushelfen. Das ist alles andere als nutzerfreundlich.

Während man unter anderen Linuxdistributionen irgendwelche Verrenkungen vornehmen müsste um zu kdepim-4.4 zurück zu kehren (die vorkompilierten Pakete führen dann zu einem KDE-Downgrade oder man muss mühsam die ganzen DEV-Pakete installieren und danach nicht mehr updatebare eigene Pakete schnüren), bietet gentoo einfachere Möglichkeiten, dies zu tun:

Maskieren von KMail2 und dessen Abhängigkeiten

Um die aktuellen KDEPim-Pakete einfach zu maskieren, kann man wunderbar das KDE-Overlay benutzen, hierzu installiert man layman, falls noch nicht geschehen:

  1. emerge layman

Danach bindet man einfach das KDE-Overlay ein:

  1. layman -a kde

Innerhalb dieses Overlays gibt es bereits ein "Mask-File" für die ganzen aktuellen KDEPim-Pakete, welches wir einfach in unser lokales Mask-Verzeichnis verlinken:

  1. ln -s /var/lib/layman/kde/Documentation/package.mask/kdepim-4.6 /etc/portage/package.mask/kdepim-4.6

Danach kann man sehr einfach den Downgrade durchführen. Bei der Installation des KDEPim-Metapakets mit

  1. emerge -C kdepim-meta && emerge kdepim-meta

werden die neueren PAkete einfach durch die "alten" KDEPim-Pakete ersetzt und man kann danach KMail wieder zur täglichen Arbeit nutzen!

GNOME3 unter gentoo installieren

Bereich: 

Nachdem ich auch nach mehrfachem "googlen" nicht fündig geworden bin, was HowTos zum Thema "Gnome3 unter gentoo installieren" angeht, verfasse ich doch einfach mal mein eigenes kleines HowTo.



Dieses HowTo wird sowas wie "Work in Progress", da ich momentan noch mitten in der Installation stecke. Mein Netbook ist leider der einzige 32-Bit Rechner zuhause, deswegen fällt distcc flach, da ich meine reinen 64-Bitter nicht mit den 32-Bit-Libs "versauen" möchte.


1. Overlays einbinden

Ich habe die folgenden vier Overlays eingebunden, da jedes davon andere Teile des unstabilen Gnome3 beinhaltet:


  1. layman -a gnome
  2. layman -a keruspe
  3. layman -a suka
  4. layman -a rubenqba

2. USE-Flags und Pakete demaskieren

Da wir Gnome3 wollen, kommen wir nicht umhin, GTK3 und das USE-Flag "instrospection" zu benutzen, welches leider maskiert ist.


Deswegen legen wir uns die Datei "/etc/portage/profile/use.mask" mit folgendem Inhalt an:


  1. -gtk3
  2. -introspection



Jetzt demaskieren wir die benötigten Pakete einfach durch Verlinkung der "package.mask" aus dem Gnome-Overlay in das entsprechende Verzeichnis:

  1. ln -s /var/lib/layman/gnome/profiles/package.mask /etc/portage/package.unmask/gnome




Nun müssen wir noch drei Paketen die entsprechenden Keywords geben, das funktioniert in der Datei "/etc/portage/package.keywords/gnome":

  1. x11-libs/gtk+:3 **
  2. >=dev-libs/glib-2.27.0 **
  3. gnome-base/gvfs **

Gnome3 installieren

  1. #~ emerge -av gnome



Eventuell fehlende USE-Flags werden angemeckert und sind recht schnell gesetzt. Danach steht einem Gnome3-Vergnügen nichts mehr im Wege...

Update 28.10.2011:

Im ersten Kommentar gibt es einen Link zu einer etwas aktuelleren Version des "HowTo Gnome3 on gentoo", danke hierfür!

DLNA-Server unter gentoo Linux aufsetzen

Bereich: 

Da ist er nun, mein neuer Blu-Ray-Player aus dem Hause Sony.



Nach einigen Recherchen habe ich mich für das Modell Sony BDP-S370 und gegen die Konkurrenz aus dem Hause LG oder Samsung entschieden. Grund waren erstens die Möglichkeit den Player via Kabel ans Hausnetz anzuschliessen (Ich hab Internet über Unitymedia, also Kabel -> der Router steht neben dem Fernseher.) und auf WLAN zu verzichten, und zweitens die Möglichkeit Medieninhalte vom kleinen Hausserver über DLNA zu streamen. Klar kann die Sony Playstation 3 das auch, aber da ich nicht DER Zocker bin (schon gar nicht Konsole!) fällt diese Möglichkeit flach, zumal ein Blu-Ray-Player auch ein wenig leiser ist.



Nachdem der Medienserver schon per NFS/Samba seine Files im Netz verteilt, suchte ich nun eine Möglichkeit, diese auch per DLNA/UPnP zu verteilen und habe dazu verschiedenen Möglichkeiten angetestet. Unter anderem den ps3mediaserver, mediatomb und ushare. Der PS3Mediaserver ist ein Javaprogramm und hat eine sehr schlecht dokumentierte Konfiguration. Mediatomb ist im offiziellen Portage-Tree, ebenso wie uShare. Leider waren beide nicht bereit mit meinem Blu-Ray-Player zusammenzuarbeiten, zumal bei beiden Lösungen UPnP im Vordergrund steht und DLNA nur als Zusatz geboten wird.



Deswegen bin ich nach kurzer Zeit auf den minidlna gestoßen. Installation und Konfiguration sind kinderleicht (sofern man Verzeichnisse anlegen und Dateien editieren kann ;-)).


Installation

Das ebuild befindet sich im normalen portage-tree, also installiert man es mit emerge minidlna


Konfiguration

Die Konfiguration ist extrem simpel, lediglich die Pfade zu meinen 3 Share-Verzeichnissen mussten angepasst werden in der Datei /etc/minidlna.conf:

  1. # port for HTTP (descriptions, SOAP, media transfer) traffic
  2. port=8200
  3.  
  4. # network interface to bind to (this is the only interface that will serve files)
  5. #network_interface=eth0
  6.  
  7. # set this to the directory you want scanned.
  8. # * if have multiple directories, you can have multiple media_dir= lines
  9. # * if you want to restrict a media_dir to a specific content type, you
  10. #   can prepend the type, followed by a comma, to the directory:
  11. #   + "A" for audio  (eg. media_dir=A,/home/jmaggard/Music)
  12. #   + "V" for video  (eg. media_dir=V,/home/jmaggard/Videos)
  13. #   + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures)
  14. media_dir=A,/share/mp3
  15. media_dir=V,/share/videos
  16. media_dir=P,/share/images
  17.  
  18. # set this if you want to customize the name that shows up on your clients
  19. friendly_name=openDLNA
  20.  
  21. # set this if you would like to specify the directory where you want MiniDLNA to store its database
  22. db_dir=/var/cache/minidlna
  23.  
  24. # this should be a list of file names to check for when searching for album art
  25. # note: names should be delimited with a forward slash ("/")
  26. album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg
  27.  
  28. # set this to no to disable inotify monitoring to automatically discover new files
  29. # note: the default is yes
  30. inotify=yes
  31.  
  32. # set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO
  33. enable_tivo=no
  34.  
  35. # set this to strictly adhere to DLNA standards.
  36. # * This will allow server-side downscaling of very large JPEG images,
  37. #   which may hurt JPEG serving performance on (at least) Sony DLNA products.
  38. strict_dlna=no
  39.  
  40. # default presentation url is http address on port 80
  41. #presentation_url=http://www.mylan/index.php
  42.  
  43. # notify interval in seconds. default is 895 seconds.
  44. notify_interval=900
  45.  
  46. # serial and model number the daemon will report to clients
  47. # in its XML description
  48. serial=12345678
  49. model_number=1




Danach startet man den Server:

  1. #~ /etc/init.d/minidlna start


...und gibt ihm etwas Zeit, die Dateien einzulesen.



Danach kann ich auf dem Blu-Ray-Player auf Bilder, Videos und MP3s auf dem Server zugreifen und diese abspielen, inkl. Pause, Spulen, ...




Jens

gentoo Linux: USE-Flag global unmask

Bereich: 

Nachdem ich mir auf meinem Netbook unter gentoo Linux mal die Gnome-Shell installieren wollte, bin ich auf das Problem gestoßen, dass introspection als USE-Flag global maskiert ist, schön zu erkennen an den vielen "(-introspection)"-Einträgen bei einem "emerge -pv gnome-shell".



Die Lösungsansätze, in denen man dieses USE-Flag für die einzelnen Pakete (pango, atk, ...) demaskiert, führen zwar zum Erfolg, sind aber mit viel Tipparbeit oder viel Copy&Paste verbunden. Es gibt jedoch auch die Möglichkeit, solche Maskierungen global aufzuheben, und zwar in wenigen Schritten:


  1. #~ mkdir -p /etc/portage/profile
  2. #~ echo "-introspection" >> /etc/portage/profile/use.mask




Et voila... Das USE-Flag ist jetzt ganz einfach zu benutzen, entweder über

  1. #~ USE="introspection" emerge gnome-shell

oder man trägt es manuell in die Datei "/etc/make.conf" bei

  1. USE=" ... introspection ..."

ein, etwas komfortabler geht es mit dem ufed Paket: installieren, aufrufen und das entsprechende USE-Flag einfach aktivieren.



Hoffe geholfen zu haben,



Jens

RSS - gentoo abonnieren