Monthly Archives: August 2008

Bilder vom Chiemsee Reggae Summer 2008

Das ich es gut überstanden habe und es eine einzige große Party war ist wahrscheinlich allen klar. Es hat einmal stark geregnet und schon war die Schlammschlacht geboren. Aber schaut es euch am besten selber an ­čśë

–> Bilder

Category: Allgemein

Google sucht in der Shell…

Ok das ding ist schon älter, aber nachdem ich mich schon so daran gewohnt habe will es nochmals an den Mann bringen. Unter http://goosh.org könnt Ihr in einer Unix/Linux artigen Shell Google suchen lassen. Für jeder der seine Shell genau so liebt wie ich eine praktische alternative.

Es ist wie jede Shell einfach und fix zu bedienen und hat das ein oder andere Kommando auf Lager. Es ist gleich mal was in der Shell übersetzt

guest@goosh.org:/web> translate en de Whats up
translating "Whats up" from english to german:

"Wie geht's"

guest@goosh.org:/web>

Genau so schnell ist dann auch mal im Wikipedia was gefunden oder durch Blogs gestöbert.

Category: Allgemein

Seite war f├╝r ein paar Stunden offline!

So sah das leider heute Nacht/Morgen aus und deluxe-styles.de war nicht mehr erreichbar. Server4You hatte dann wohl mal wieder ein kleines DNS oder Router Problem. Wäre ja nicht das erste mal ­čÖü Eine offizielle Stellungsnahme blieb aber bisher aus.

  8    44 ms    10 ms     9 ms  intergenia-gw.fra3.de.inetbone.net [83.220.157.98]
  9    10 ms     9 ms    10 ms  vs2.fra.routeserver.net [85.25.95.133]
 10     *        *        *     Zeitüberschreitung der Anforderung.
 11     *        *        *     Zeitüberschreitung der Anforderung.
 12     *        *        *     Zeitüberschreitung der Anforderung.
 13     *        *        *     Zeitüberschreitung der Anforderung.
 14     *        *        *     Zeitüberschreitung der Anforderung.
 15     *        *        *     Zeitüberschreitung der Anforderung.
 16     *        *        *     Zeitüberschreitung der Anforderung.
 17     *        *        *     Zeitüberschreitung der Anforderung.
 18     *        *        *     Zeitüberschreitung der Anforderung.
 19     *        *        *     Zeitüberschreitung der Anforderung.
 20     *        *        *     Zeitüberschreitung der Anforderung.
 21     *        *        *     Zeitüberschreitung der Anforderung.
 22     *        *        *     Zeitüberschreitung der Anforderung.
 23     *        *        *     Zeitüberschreitung der Anforderung.
 24     *        *        *     Zeitüberschreitung der Anforderung.
 25     *        *        *     Zeitüberschreitung der Anforderung.
 26     *        *        *     Zeitüberschreitung der Anforderung.
 27     *        *        *     Zeitüberschreitung der Anforderung.
 28     *        *        *     Zeitüberschreitung der Anforderung.
 29     *        *        *     Zeitüberschreitung der Anforderung.
 30     *        *        *     Zeitüberschreitung der Anforderung.

Ablaufverfolgung beendet.
Category: Allgemein

Colorfull Shell

Linux muss nicht immer schwarz/weiß sein. Es geht auch Bunt 

Darum habe ich hier einfach mal ein paar Punkte dazu erfasst.

 

ls mit buntem Output

Vim / Farben und Code Syntax

Linux Logo

 

ls mit buntem Output

Um den Befehl "ls" etwas übersichtlicher zu gestalten kann in der ".bashrc" eine kleine anpassung gemacht werden. Dazu müssen wir in das Homeverzeichniss des jeweiligen Benutzers und die Datei mit öffnen 

# cd
# vi .bashrc 

Danch sollte wir die Datei folgendermasse bearbeiten:

# ~/.bashrc: executed by bash(1) for non-login shells.
export PS1='\h:\w\$ '
umask 022
# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
eval `dircolors`
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

Sobald sich dann der Benutzer neuanmeldet sollte die Aussage von "ls -l" so aussehen:

Vim / Farben und Code Syntax

Vim (vi Improved) kann sehr gut bei der Suche in Configs oder beim Programmieren durch seine Farben und Syntax helfen. Wer sich nicht sicher ist das er "vim" hat kann es sonst auch einfach nachinstallieren.

# apt-get install vim

Danch am besten gleich als standard Editor setzen

# update-alternatives --config editor

Nach dem wir jetzt vim installier haben / hatten können wir die vimrc anpassen

# vi /etc/vim/vimrc

Danch müss die vimrc so angepasst werden wie diese.

" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
" you can find below.  If you wish to change any of those settings, you should
" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
" everytime an upgrade of the vim packages is performed.  It is recommended to
" make changes after sourcing debian.vim since it alters the value of the
" 'compatible' option.
" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim
" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
set compatible
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
set background=dark
" Uncomment the following to have Vim jump to the last position when
" reopening a file
"if has("autocmd")
"  au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
"    \| exe "normal g'\"" | endif
"endif
" Uncomment the following to have Vim load indentation rules according to the
" detected filetype. Per default Debian Vim only load filetype specific
" plugins.
"if has("autocmd")
"  filetype indent on
"endif
" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd             " Show (partial) command in status line.
set showmatch           " Show matching brackets.
set ignorecase          " Do case insensitive matching
set smartcase           " Do smart case matching
set incsearch           " Incremental search
set autowrite           " Automatically save before commands like :next and :make
set hidden             " Hide buffers when they are abandoned
"set mouse=a            " Enable mouse usage (all modes) in terminals
" Source a global configuration file if available
" XXX Deprecated, please move your changes here in /etc/vim/vimrc
if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif

Das ganze speichern ":wq" und dann sollte auch vim bunt sein

Wem das ganze noch nicht passt kann noch die Hintergrundfarbe verändern (hell/dunkel) oder sonstige Änderungen vornehmen. 

 

Linux Logo

Es gibt ein kleines und nette Programm "linux_logo" mit dem solche Logos erstellen kann

 

Die installation ist unter Debian wieder sehr einfach

# apt-get install linuxlogo 

Danach kann das Programm dirket auf der Shell gestart werden

# linux_logo

Und wer das Logo mit den Infos gleich bei jedem anmelden sehen will kan es in die motd packen

# cp /etc/motd /etc/motd.org
# linux_logo -b > /etc/motd 

Linux sicherer machen

Here you can find some stuff to make your Server more Secure.
Absolutely no warranty, use it at your own risk.

1.) Disable the Apache ServerSignature like this one

1
Apache/2.2.3 (Debian) mod_fastcgi/2.4.2 mod_perl/2.0.2 Perl/v5.8.8

Put only these lines in your httpd.conf

1
# Disable ServerInfoServerSignature OffServerTokens Prod

2.) Disable Debugging functions
An attacker may use this flaw to trick your legitimate web users to give him their credentials. Add the following lines for each virtual host in your configuration file to disable the Debugging

1
RewriteEngine onRewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)RewriteRule .* - [F]

3.) Disable ProFTPD Banner
When you connect to your FTP-Server it looks like this

1
Verbindung mit 62.75.xx.xx wurde hergestellt.220 ProFTPD 1.3.0 Server (vsxxxxxx) [62.75.xx.xx]Benutzer (62.75.xx.xx:(none)):

Here can you see the ProFTPD Version -> 1.3.0 To Disable the Banner add, the following line to the proftpd.conf:

1
ServerIdent                    off

4.) Enable SSL in ProFTPD
For a secure File Transfer you can add SSL to your ProFTPD

Create a SSL Certificate:

1
openssl req -new -x509 -days 365 -nodes  -out /etc/proftpd/ssl.crt -keyout /etc/proftpd/ssl.key

Open your proftpd.conf to enable SSL

1
# vi /etc/proftpd/proftpd.conf

enable the last lines like this and set TLSEngine ‚on

1
## SSL via TLS#&lt;IfModule mod_tls.c&gt;TLSEngine                   onTLSLog                      /var/log/proftpd/ftp_ssl.logTLSProtocol                 SSLv23TLSOptions                  NoCertRequest TLSRSACertificateFile       /etc/proftpd/ssl.crt TLSRSACertificateKeyFile    /etc/proftpd/ssl.keyTLSVerifyClient             off &lt;/IfModule&gt;

Restart proftpd to bring the effect:

1
# /etc/init.d/proftpd restart

5.) Change the SMTP-Banner
If you want to change this Postfix SMTP-Banner:

1
Connected to your-domain.tld.Escape character is '^]'.220 your-domain.tld. ISPCP 1.0 Priamos Managed ESMTP 1.0.0 RC2 OMEGA

Open your „/etc/postfix/main.cf“ and change the SMTP-Banner here to what you want

1
smtpd_banner = $myhostname ISPCP 1.0 Priamos Managed ESMTP 1.0.0 RC2 OMEGA

6. Install & Configure fail2ban
Fail2Ban automatic blocks an IP-Address after some failed Logins.
It works with Apache,SSH,FTP and Mail.

Install fail2ban per apt-get

1
# apt-get install fail2ban

After the installation you can configure fail2ban with these two configs under /etc/fail2ban/

1
/etc/fail2ban/fail2ban.conf/etc/fail2ban/jail.conf

Open your jail.conf to enable the blocks for some Services.

1
# vi /etc/fail2ban/jail.conf

Now you can enable or disable the Services you want to protect. By default SSH is enabled.

If you want to enable Apache,
change:

1
## HTTP servers#[apache]enabled = falseport    = httpfilter  = apache-authlogpath = /var/log/apache*/*access.logmaxretry = 6

to

1
## HTTP servers#[apache]enabled = trueport    = httpfilter  = apache-authlogpath = /var/log/apache*/*access.logmaxretry = 6

For FTP (proftpd)

1
[proftpd]enabled  = falseport     = ftpfilter   = proftpdlogpath  = /var/proftpd/proftp.logmaxretry = 6

change it to

1
[proftpd]enabled  = trueport     = ftpfilter   = proftpdlogpath  = /var/log/auth.logmaxretry = 3

You can change the maximal retry┬┤s before ban with

1
maxretry = X

If you want to change the bantime,

1
bantime  = 600 (is set in seconds)

Warning: fail2ban use Firewall ruls to block the IP.
A ban is per default for 10 minutes active. After this time the IP is unblocked automatically.

The fail2ban Log is under

1
/var/log/fail2ban.log

7.) SSL for Mailservice (Courier)

First we need to install the courier-ssl packages.

1
# apt-get install courier-imap-ssl courier-pop-ssl

A default Certificate will be created during the installation. So we need to change them.

Open the /etc/courier/imapd.cnf

1
# vi /etc/courier/imapd.cnf

and change the attributes to your needs.
And then the same with /etc/courier/pop3d.cnf

1
# vi /etc/courier/pop3d.cnf

After these changes, first backup the old Certificate before we generate some new.

1
# cd /etc/courier/ &amp;&amp; mv pop3d.pem pop3d.pem.orig &amp;&amp; mv imapd.pem imapd.pem.orig

Now we can generate the new one:

1
# dpkg-reconfigure courier-pop-ssl &amp;&amp; dpkg-reconfigure courier-imap-ssl

Done – your Mailservice is now ready for SSL.
Change your Client to use POP3-SSL on port 995 and IMAP-SSL on port 993

8.) Make SSH safer

Every Scriptkiddy checks your Server for a open Port 22 and test to login with the root account.
We will change these things to the good with an other Port and disable the root login via ssh.

First we need a user on the system for a later login. If there is already one, jump over to the next step. If not, create it:

1
# adduser new_username

Open your sshd_config to change the settings:

1
# vi /etc/ssh/sshd_config

Change the Port from

1
Port 22

to

1
Port 222

Change this line:

1
PermitRootLogin yes

to

1
PermitRootLogin no

Restart the SSH-Server

1
# /etc/init.d/ssh restart

Close your connection and connect again to your Server on Port 222 with your new Username.
To become root, only do a:

1
# su

9.) Prevent DOS-Attacks
To prevent simple Denial-of-Service attacks you can use the mod_evasive module. Download the actual version from http://www.zdziarski.com/projects/mod_evasive/ and unpack it. Make sure, that apache2-prefork-dev is installed.

1
# apt-get install apache2-prefork-dev# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz# tar -xzf mod_evasive_1.10.1.tar.gz# cd mod_evasive

Install it with Apache Extensions Module (apxs).

1
#  apxs2 -i -a -c mod_evasive20.c

The module will be built and installed into your httpd.conf.

Optionally you can change some specific directives in your /etc/apache2/apache2.conf file. Just add the following lines and change them to your needs.

1
&lt;IfModule mod_evasive20.c&gt;DOSHashTableSize    3097DOSPageCount        2DOSSiteCount        50DOSPageInterval     1DOSSiteInterval     1DOSBlockingPeriod   10&lt;/IfModule&gt;

You can also add the following directives:

1
    DOSEmailNotify      you@yourdomain.comDOSSystemCommand    "su - someuser -c '/sbin/... %s ...'"DOSLogDir           "/var/lock/mod_evasive"

After all, just restart your Apache to load the module.

1
# sudo /etc/init.d/apache2 restart

10.) Securing Open DNS server (BIND 9)After a clean install of a Debian server, dnsstuff.com reports the server as an open dns server(anyone can query the server about any domain => high load and high transfer). 2 steps for fixing this problem:

a. first edit /etc/bind/named.conf.options (or /etc/named/named.conf for other distros, options paragraph) and add:

1
recursion no;transfer-format many-answers; //this is for speed up the transfer to a secondary dns

b. we need to modify the template used by ISPCP to generate to zone files, on Debian this is /etc/ispcp/bind/parts/cfg_entry.tpl. The file after modification should looks like:

1
zone "{DMN_NAME}" {type    master;file    "{DB_DIR}/{DMN_NAME}.db";notify  YES;allow-query {any;};};

Restart BIND:

1
/etc/init.d/bind9 restart

You are done.

OpenVZ HowTo

Da das Thema Virtualisierung immer mehr im kommen ist und die Tools schon eine verdammt gutes performanceergebniss erzielen, will ich in diesem HowTo OpenVZ etwas n├Ąher erl├Ąutern. OpenVZ wird schon seit l├Ąngerer Zeit bei vielen Hostern eingesetzt, da Virtuozzo auch auf OpenVZ aufbaut.

Dieses HowTo bezieht sich auf eine Installation unter Debian Etch.

Wer n├Ąheres zu OpenVZ lesen m├Âchte kann auf die Intertseite des Projects schauen -> OpenVZ.org

1. Kernel installieren

Um den OpenVZ Kernel zu installieren ben├Âtigen wir erst die richtige Quelle. Diese tragen wir in der sources.list ein.

1
# vi /etc/apt/sources.list

deb http://download.openvz.org/debian etch main
Danach m├╝ssen wir die Quellen aktualisieren und k├Ânnen den Kernel installieren

1
2
3
# apt-get update
# apt-cache search linux-image-2.6.18-openvz
# apt-get install &lt;linux-image&gt;

Wer seinen Kernel nicht kennt –> „uname -a“

2. Tools installieren

OpenVZ k├Ânnen wir mit einigen Tools steuern. Dise m├╝ssen wir noch installieren:

1
# apt-get install vzctl vzquota

3. Netzwerk am Hostsystem anpassen

1
# vi /etc/network/interfaces

Folgende Zeilen m├╝ssen zur der verwendeten Netzwerkkarte geschrieben werden.
Bitte „%DEV%“ durch das eigentlich Interface ersetzen z.B. eth0

1
2
up sysctl -w net.ipv4.conf.%DEV%.proxy_arp=100
pre-down sysctl -w net.ipv4.conf.%DEV%.proxy_arp=0

Jetzt m├╝ssen wir noch Einstellungen f├╝r den proxy vornehmen:

1
# vi /etc/sysctl.conf

Die Datei muss so angepasst werden

1
2
3
4
5
6
7
8
9
10
11
12
13
# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Enables the magic-sysrq key
kernel.sysrq = 1
# TCP Explict Congestion Notification
# net.ipv4.tcp_ecn = 0
# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0

4. Symlink setzen

Jetzt ben├Âtigen wir noch einen Symlink f├╝r das Verzeichniss VZ

1
# ln -s /var/lib/vz /vz

5. Kernel laden

Um den neuen Kernel zu starten ben├Âtigen wir einen neustart des Systems

1
# reboot

6.)Installation pr├╝fen

Nachdem das System wieder erreichbar ist k├Ânnen wir „uname -a“ sehen ob der OpenVZ Kernel geladen wurde

1
2
openvz:/# uname -a
Linux openvz 2.6.18-openvz-12-1etch1-686 #1 SMP Sat May 5 00:26:59 CEST 2007 i686 GNU/Linux

Wenn das so passt sollten wir auch ein neues Netzwerkinterface „venet0“ haben

1
2
3
4
5
6
7
8
9
openvz:/# ifconfig
...
...
venet0    Protokoll:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00
UP BROADCAST PUNKTZUPUNKT RUNNING NOARP  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenl├â┬Ąnge:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

7. Templates installieren

Jetzt kommen wir zu den eigentlichen Templates (Betiebsystemen) f├╝r OpenVZ.
Hier ist ein gr├Â├čer Unterschied zwischen OpenVZ und VMWare festzustellen.
Unter OpenVZ kann nur wieder ein Linux gestartet werden, nicht aber ein Windows.

Es gibt schon eine gro├če Sammlung von OpenVZ Templates auf der Seite des Projektes -> Template Diese sind schon vorkonfiguriert und m├╝ssen nur noch heruntergeladen werden. Wir wollen jetzt einfach mal ein OpenSuSE 10 in OpenVZ zum laufen zu bringen.

7.1 Templates herunterladen

Die Templates m├╝ssen in das folgende Verzeichniss abgelegt werden:

1
openvz:/var/lib/vz/template/cache#

Am besten nehmen wir gleich wget um das fertige Template auf unseren Rechner zu bringen:

1
# wget http://download.openvz.org/template/precreated/opensuse-10-i386-default.tar.gz

8. Erste Virtual Environment anlegen

Nachdem wir das Template heruntergeladen haben, k├Ânnen wir es einmal installieren und immer wieder f├╝r eine neue Maschine ben├╝tzen.Es muss auch nicht entpackt werden.
Los gehts:

1
# vzctl create 101 --ostemplate opensuse-10-i386-default

Damit erstellen wir eine neue VE mit der ID 101 und dem Template von OpenSuSE
Wichtig ist das die ID gr├Â├čer 100 sein muss. Das ganze sollte dann so aussehen:

1
2
3
4
5
openvz:/# vzctl create 101 --ostemplate opensuse-10-i386-default
Creating VPS private area: /var/lib/vz/private/101
Performing postcreate actions
VPS private area was created
openvz:/#

Jetzt m├╝ssen wir der VE noch eine IP vergeben:

1
# vzctl set 101 --ipadd 192.168.100.217 --save

Wenn das auch geklappt hat sollte ein „Save parameters for VPS 101“ erscheinen. Das war es auch schon mit der einrichtung und wir k├Ânnen die VE starten:

1
# vzctl start 101

9. Virtual Environment testen

Nachdem die VE jetzt l├Ąuft k├Ânnen wir direkt Befehle in der VE absetzen. Der Grundbefehl lautet:

1
# vzctl exec VEID

So k├Ânnen wir mal alle Prozesse die innerhalb der VE laufen abfragen:

1
# vzctl exec 101 ps ax

Jegliches Command kann abgesetzt werden wir es jeder von Linux kennt. Es muss jedeglich ein „vzctl exec VEID“ davor gestellt werden.

SSH ist normalerweise bei den vorkonfigurierten schon am laufen. Es muss nur noch das root Passwort neu gesetzt werden und man kann sich direkt per SSH an der VE anmelden.

10. VE Sichern (Backup)

Wer von seinen VE eine Sicherung machen will, der sollte vzdump installieren

1
2
# wget http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump_1.0-2_all.deb
# dpkg -i vzdump_1.0-2_all.deb

vzdump ist eigentlich ziemlich selbst erkl├Ąren:

1
2
3
4
5
6
7
8
9
vzdump OPTIONS [--all ]
--compress              compress dump file (gzip)
--dumpdir DIR           store resulting files in DIR
--xdelta                create a differential backup using xdelta
--mailto EMAIL          send notification mail to EMAIL
--stop                  stop/start VPS if running
--suspend               suspend/resume VPS when running
--snapshot              use LVM snapshot when running
--restore FILENAME      restore FILENAME

11. Comannds im ├╝berblick

Hier ein kurzer ├ťberblick der OpenVZ Commandos. Quelle: Wikipedia

1
vzctl create VEID [--ostemplate ] [--config ]

Dieser Befehl erzeugt ein neues VE, das eine numerische ID, ein angegebenes OS-Template (eine Linux Distribution) und die Ressourcen, die in der angegebenen Konfigurationsdatei spezifiziert sind, hat. Die beiden Parameter –ostemplate und –config sind optional. Die Hauptkonfigurationsdatei enth├Ąlt Standardwerte f├╝r beide.

1
vzctl start VEID

Startet das angegebene VE. Das Starten bedeutet das Erzeugen eines Virtual Environment im Kernel, Initialisieren von allen Ressourcenverwaltungsparametern und Starten des VE’s /sbin/init in diesem Umfeld.

1
vzctl stop VEID

Stoppt das angegebene VE. Ein VE kann auch mit Hilfe von eigenen /sbin/halt oder /sbin/reboot -Befehlen gestoppt oder neu gestartet werden.

1
vzctl exec VEID

Startet den Befehl im angegebenen VE. Um beispielsweise alle Prozesse im VE 102 anzeigen zu lassen, kann man vzctl exec 102 ps ax nutzen.

1
vzctl enter VEID

├ľffnet die VE-Shell. Das ist n├╝tzlich, wenn z. B. sshd nicht gestartet ist und Sie das Problem untersuchen m├Âchten.

1
vzctl set VEID --parameter  [...] [--save]

Setzt den angegebenen Parameter f├╝r das VE. Hier k├Ânnen verschiedene Parameter benutzt werden; Um die Festplattenquota f├╝r das VE festzulegen, verwenden Sie

1
vzctl set VEID --diskspace soft:hard --save.

Um das Kernel-RAM-Soft-Limit und ÔÇôHard-Limit f├╝r VE zu (re)definieren, m├╝ssen Sie den Befehl so starten:

1
vzctl set VEID --kmemsize barrier:limit --save

Und um eine VE wieder zu l├Âschen

1
vzctl destroy VEID

OpenVPN HowTo

Jeder der sich auf seinem Server einw├Ąhlen m├Âchte, egal ob aus Sicherheitsgr├╝nden um den SSH Port zu schlie├čen oder um die MySQL DB mit Access bearbeiten findet hier ein HowTo f├╝r Debian Etch das genau dies alles erm├Âglicht.

1. OpenVPN Server installieren

Hier gehen wir ganz den einfachen Debian weg:

1
2
# apt-get update
# apt-get install openvpn openssl

2. Erstellen der Zertifikate

Bevor wir mit der Schl├╝sselerstellung anfangen, noch ein Hinweis. Es wird bei der Erstellung der Schl├╝ssel auch eine Abfrage gestartet, wo Land, Stadt, Benutzer E-Mail usw. eingegeben werden m├╝ssen. Daf├╝r kann man immer die gleiche Bezeichnung nehmen mit einer Ausnahme

Der CommonName muss immer verschieden sein.
Wechseln in das SSL Verzeichniss

1
# cd /etc/ssl/

Erstellen eines Unterverzeichniss

1
# mkdir Zertifikate

Jetzt erstellen wird die Schl├╝ssel f├╝r das CA (Certifikate Authority)

Wir ben├╝tzen dazu die OpenSSL Tools

1
# openssl genrsa -aes256 -out private/vpn-cakey.pem 2048

Was macht der Befehl:
openssl: startet die Prozedur genrsa: generiert die Schl├╝ssel
-aes256: ist der Verschl├╝sselungsalgorithmus
-out: erstellt die Ausgabedatei

Beim ausf├╝hren muss ein Passwort eingegeben werden:

(Enter Pass Phrase for vpn-cakey.pem: )

Diese wird sp├Ąter gebraucht um unsere Zertifikate zu verifizieren.

Danach erstellen wir unser CA

1
# openssl req -new -x509 -days 365 -key private/vpn-cakey.pem -out vpn-ca.pem -set_serial 1

Was macht der Befehl:

req: erstellt eine Anfrage ( Request )
-new: sagt das wir eine neue Anfrage schicken
-x509: verwendeter Standart f├╝r das CA
-days: solange ist das Zertifikat g├╝ltig
-key: der verwendete Masterschl├╝ssel zum erstellen des CA
-set_serial: die Seriennummer die hochgez├Ąhlt wird.

Jetzt erstellen wir die Clientzertifikate. Der Serverschl├╝ssel wird als erstes von den Schl├╝sselpaaren erstellt

1
# touch index.txt &amp;&amp; echo "01" &gt; serial

index.txt: damit man sp├Ąter die Zertifikate sperren kann echo ÔÇ×01ÔÇť > serial: um eine 1 in die Serialdatei zu schreiben

Jetzt erstellen wir die Zertifikatanfrage und den Schl├╝ssel
(alles in eine Zeile)

1
2
# openssl req -new -newkey rsa:2048 -out Zertifikate/server_csr.pem
-nodes -keyout private/server_key.pem -days 365

newkey: erstellt einen neuen Schl├╝sselbund
rsa:2048: ist die Schl├╝ssell├Ąnge
-nodes: es wird kein Passwort auf das Zertifikt gelegt (sollte aber bei den Clientzertifikaten nicht verwendet werden)
-keyout: Ausgabe des Schl├╝ssel in die Datei server_csr.pem: Zertifikatanfrage
So jetzt der Schl├╝ssel und das signierte Zertifikat
(alles in eine Zeile)

1
2
# openssl x509 -req -in Zertifikate/server_csr.pem -out Zertifikate/server_cert.pem
-CA vpn-ca.pem -CAkey private/vpn-cakey.pem  -CAserial serial -days 365

-in: sagt uns welche Zertifikatanfrage verarbeitet werden soll
-out: Zertifikatname
-CA: f├╝r das Unterzeichnen des Zertifikates
-Cakey: Masterschl├╝ssel f├╝r das erstellen des Zertifikates
Nun die Clients (daselbe wie beim Server und wieder alles in eine Zeile)

1
2
# openssl req -new -newkey rsa:2048 -out Zertifikate/Client1_csr.pem -keyout private/Client1_key.pem -days 365
# openssl x509 -req -in Zertifikate/Client1_csr.pem -out Zertifikate/Client1_cert.pem -CA vpn-ca.pem -CAkey private/vpn-cakey.pem -CAserial serial -days 365

Zum Schluss noch den Diffie Hellman Parameter erzeugen.

1
# openssl dhparam -out dh2048.pem 2048

Das erzeugen des Diffie Hellman Parameter dauert sehr lange.

Erstellen der Config-Dateien

Nun m├╝ssen wir die Configdateien f├╝r den Server und f├╝r den Client erstellen. Dieses habe ich auf meinen Windowsrechner mit dem Texteditor gemacht. Beim speichern ist darauf zu achten, dass die Config f├╝r den Server unter „Server.ovpn“ und die Config f├╝r den Windows Client unter „Client.ovpn“ gespeichert werden. Bei Speicher darauf achten das die endung „.ovpn“ bleibt.

Server-Config (Server.ovpn)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# Port Standardport 1194
port 1194
 
# Die Revoke Liste ├╝berpr├╝fen #crl-verify /etc/ssl/crl.pem
# TCP oder UDP? proto udp mode server tls-server dev tap
 
# Unsere Server IP
ifconfig 192.168.100.1 255.255.255.0
ifconfig-pool 192.168.100.2 192.168.100.9
 
# Server IP Adresse (Adressbereich. in dem Fall alles von 10.10.10.0)
#server
#Wo liegen unsere Zertifikate
ca /etc/ssl/vpn-ca.pem cert /etc/ssl/Zertifikate/server_cert.pem key /etc/ssl/private/server_key.pem
 
# Diffie-Hellmann Parameter
dh /etc/ssl/dh2048.pem
 
#Die Selbe IP in der n├Ąchsten Sitzung vergeben
#ifconfig-pool-persist ipp.txt
#IPs in den IP Tables eintragen,
#DNS neu vergeben und ├╝ber Den Server das Routing machen,
#dass man z.B. ├╝ber den Tunnel auf ein
# lokales Intranet zuzugreifen
#push "route 10.0.0.0 255.0.0.0"
#push "dhcp-option DNS 192.168.1.xyz"
#push "redirect-gateway"
#push "route 0.0.0.0 0.0.0.0"
 
#Authentifizierungsmethode auth SHA1
 
#Verschl├╝sselungs Algorithmus cipher aes-256-cbc
 
#Benutze Komprimierung comp-lzo
 
#Setzt die Rechte user nobody group nogroup
 
#Wird wegen user nobody/group nobody ben├Âtigt. persist-key persist-tun
 
#Logging 0, (Zum testen:5) verb 7

Client-Config (Client.ovpn)

Die Client-Config nicht blind kopieren. Es muss noch die „Serveradresse“ durch die IP vom Server ersetzt werden!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#Festlegen als was fungiert wird
tls-client
pull
 
# Methode festlegen tun oder tap dev tap
# Protokoll auswaehlen udp oder tcp proto udp
# IP/Name und Port des Servers (bitte ├Ąndern) remote 123.123.123.123 1194
# Aufl├Âsen des Hostnames des Servers resolv-retry infinite
# Localen Port festlegen oder freigeben nobind
# Verbindung immer gleich halten persist-key persist-tun
#zu verwendende Zertifikate und Schl├╝ssel ca C:\\Programme\\Openvpn\\config\\vpn-ca.pem cert C:\\Programme\\Openvpn\\config\\Client1_cert.pem key C:\\Programme\\Openvpn\\config\\Client1_key.pem
 
# Verschl├╝sselung cipher AES-256-CBC
 
# Komprimiernug comp-lzo
 
# Authentifizierungsmethode auth SHA1
 
# "Gespr├Ąchigkeit" des Tunnels verb 3
 
# Silence repeating messages mute 20

So nun folgende Dateien mit z.B. WinSCP auf den Clientrechner unter „C:\Prorgamme\OpenVPN\config“ kopieren

1
2
3
4
vpn-ca.pem
client1_cert.pem
client1_key.pem
Client.ovpn

Wir sind fast fertig mit der Installation. Nur noch unsere erstellte „Server.ovpn“ mit z.B WinSCP auf den Server unter

1
/etc/openvpn/

kopieren. Um sp├Ątere Warnungen zu vermeiden ├Ąndern wir noch die Rechte der „server_key.pem“ ab

1
# chmod 600 /etc/ssl/private/server_key.pem

Serverconfig testen

Bevor wir den Tunnel starten, sollten wir die Config mal testen

1
openvpn --config /etc/openvpn/Server.ovpn

Hier sollten keine Fehler auftauchen.

Tunnel starten

Wenn wir beim Configtest keine Fehler erhalten haben k├Ânnen wir das ganze jetzt starten:

openvpn /etc/openvpn/Server.ovpn

Sobald der Server l├Ąuft k├Ânnen wir versuchen, uns mit dem Client zu verbinden: Am Client auf Start -> Programme -> OpenVPN -> OpenVPN GUI In der Taskleiste erscheint dann ein Symbol mit 2 roten Bildschirmen und einer Weltkugel. Dieses Symbol klicken wir mit der ÔÇ×rechten MaustasteÔÇť an Dann gehen wir im Auswahlfeld auf „Verbinden“, geben unser Passwort ein und klicken auf ÔÇ×OkÔÇť. Nun wird eine Verbindung zum Server aufgebaut. Dies sieht man daran, das das VPN-Symbol von rot auf gelb wechselt. Ist der Verbindungsaufbau abgeschlossen erscheint das VPN-Symbol in gr├╝n. Und „Hurra“ wir haben einen VPN-Tunnel zu unserem Server aufgebaut.

Chiemsee Reggae ┬┤08

Jetzt dürft Ihr drei mal raten WO ich dieses Jahr an meinem Geburtstag bin 8)

Diese Jahr will ich es schaffen! Die Karte ist schon daheim und jetzt kann (eigentlich) nichts mehr schief gehen, ich hoffe es zumindest. Jahr für Jahr wollte ich immer wieder aufs CRS aber nie hat es wirklich geklappt. Somit werde ich mein Geburtstag dann mit bester Laune und chilligen Vibes am Chiemsee genießen. Big UP!

Category: Allgemein