WPA Enterprise mit EAP PEAP

Howto für Ubuntu und Debian

Für dieses Howto wird freeradius mit openssl Support benötigt.

Eine Anleitung für freeradius+openssl ist hier zu finden: Freeradius mit EAP Support

Die Pakete wie in der Anleitung beschrieben installieren.

Die unten aufgeführten Konfigurationsteile sind Ergänzungen oder Änderungen der Default Config.

openssl installieren
apt-get install openssl
RootCA anlegen

In das Verzeichnis /etc/freeradius/certs wechseln

cd /etc/freeradius/certs

openssl liefert ein einfaches Script um eine CA anzulegen.

/usr/lib/ssl/misc/CA.pl -newca
CA certificate filename (or enter to create)

Mit [Enter] bestätigen.

Making CA certificate ...
Generating a 1024 bit RSA private key
...............................................++++++
..........++++++
writing new private key to './demoCA/private/cakey.pem'

Ein Passwort definieren und eingeben.

Enter PEM pass phrase:
Verifying – Enter PEM pass phrase:

-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----

Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:München
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Test
Organizational Unit Name (eg, section) []:Testabteilung
Common Name (eg, YOUR name) []:rootca
Email Address []:rootca@example.org

Please enter the following 'extra' attributes
to be sent with your certificate request

2 mal mit [Enter] bestätigen.

A challenge password []:
An optional company name []:

Using configuration from /usr/lib/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            b7:bc:7f:60:3c:98:84:b2
        Validity
            Not Before: Jul 31 07:33:47 2009 GMT
            Not After : Jul 30 07:33:47 2012 GMT
        Subject:
            countryName               = DE
            stateOrProvinceName       = Bayern
            organizationName          = Test
            organizationalUnitName    = Testabteilung
            commonName                = rootca
            emailAddress              = rootca@example.org
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                5C:85:A3:1C:70:8E:E3:60:62:C9:5A:60:83:A2:D5:3C:EA:64:C7:C9
            X509v3 Authority Key Identifier:
                keyid:5C:85:A3:1C:70:8E:E3:60:62:C9:5A:60:83:A2:D5:3C:EA:64:C7:C9
                DirName:/C=DE/ST=Bayern/O=Test/OU=Testabteilung/CN=rootca/emailAddress=rootca@example.org
                serial:B7:BC:7F:60:3C:98:84:B2

            X509v3 Basic Constraints:
                CA:TRUE
Certificate is to be certified until Jul 30 07:33:47 2012 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated
Server Zertifikat erzeugen
openssl req -new -nodes -keyout server_key.pem -out server_req.pem -days 730 -config /etc/ssl/openssl.cnf
Generating a 1024 bit RSA private key
...++++++
..............................................................................++++++
writing new private key to 'server_key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----

Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bayern
Locality Name (eg, city) []:München
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Test
Organizational Unit Name (eg, section) []:Testabteilung
Common Name (eg, YOUR name) []:server
Email Address []:server@example.org

Please enter the following 'extra' attributes
to be sent with your certificate request

A challenge password []:
An optional company name []:

Server Zertifikat mit der rootCA signieren
openssl ca -config /etc/ssl/openssl.cnf -policy policy_anything -out server_cert.pem -infiles ./server_req.pem
Using configuration from /etc/ssl/openssl.cnf

Passwort der CA eingeben:

Enter pass phrase for ./demoCA/private/cakey.pem:

Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            b7:bc:7f:60:3c:98:84:b3
        Validity
            Not Before: Jul 31 08:10:11 2009 GMT
            Not After : Jul 31 08:10:11 2010 GMT
        Subject:
            countryName               = DE
            stateOrProvinceName       = Bayern
            localityName              = M\C3\BCnchen
            organizationName          = Test
            organizationalUnitName    = Testabteilung
            commonName                = server
            emailAddress              = server@example.org
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                D7:95:A8:C4:D7:70:BE:4C:D4:52:B1:E6:B5:A6:CD:37:B2:4A:6B:AE
            X509v3 Authority Key Identifier:
                keyid:5C:85:A3:1C:70:8E:E3:60:62:C9:5A:60:83:A2:D5:3C:EA:64:C7:C9

Certificate is to be certified until Jul 31 08:10:11 2010 GMT (365 days)

Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries
Data Base Updated
Server Zertifikat zusammenbauen
cat server_key.pem server_cert.pem > server.pem
radiusd.conf
mschap {
 authtype = MS-CHAP
 use_mppe = yes
 require_encryption = yes
 require_strong = yes
clients.conf

In clients.conf muss für den Accesspoint ein „Shared Secret“ festgelegt werden. 192.168.0.10 ist die IP des Accesspoints.

client 192.168.0.10 {
        # This is the shared secret between the Authenticator (the
        # access point) and the Authentication Server (RADIUS).
        secret          = 123password456
        shortname       = accesspoint
    }
users

Einen neuen User anlegen. Am Ende der users Datei einen neuen Benutzer hinzufügen. ACHTUNG in mehreren Howtos wird der Syntax User-Password == „password“ noch verwendet. Dieser Syntax ist für freeradius Version 2.x obsolet. Der neue Syntax lautet Cleartext-Password := „password“.

"mobil-user"     Cleartext-Password := "password123"
eap.conf
eap {
 default_eap_type = peap
  tls {
   CA_file = ${cadir}/demoCA/cacert.pem
  }
}
sites-enabled/default
authorize {
 mschap
 # unix
}

authenticate {
 Auth-Type MS-CHAP {
  mschap
 }
 # unix
}

accounting {
 # unix
}
freeradius testen
freeradius -X

Wenn alles ohne Fehler durchläuft sollte da folgendes erscheinen

Listening on authentication address * port 1812
Listening on accounting address * port 1813
Listening on proxy address * port 1814
Ready to process requests.
Daemon starten
[Strg-C]
/etc/init.d/freeradius start
Accesspoint einstellen -Allgemein-
  • Radiusserver + Radiusport + Shared Secret eingeben
  • Modus: WPA2-Enterprise
Client anbinden -Allgemein-
  • CAcert.pem zu den vertrauten Zertifizierungsstellen hinzufügen
  • Mode WPA2-Enterprise
  • EAP PEAP auswählen
Fertig!

freeradius mit EAP TLS/TTLS/PEAP Support

Howto für Ubuntu und Debian

Das Paket wird leider bei Debian und Ubuntu ohne SSL Support ausgeliefert weshalb alle EAP Varianten die SSL benötigen nicht funktionieren. Das Paket kann aber relativ einfach selbst gebaut werden dank der Debiantools.

Benötigte Pakete
apt-get install build-essentials apt-src
Sourcen laden
cd ~
mkdir build_freeradius
cd build_freeradius
apt-src install freeradius
Änderungen
cd freeradius-2.0.4+dfsg/debian

File: rules

von

...
--without-rlm_eap_tls \
--without-rlm_eap_ttls \
--without-rlm_eap_peap \
...
--without-openssl \
...

auf

...
--with-rlm_eap_tls \
--with-rlm_eap_ttls \
--with-rlm_eap_peap \
...
--with-openssl \
...

und

for pkg in ${pkgs} ; do \
   if dh_shlibdeps -p $$pkg -- -O 2>/dev/null | grep -q libssl; then \
      echo "$$pkg links to openssl" ;\
      exit 1 ;\
   fi ;\
done

entfernen.

File: control

Am Ende der Teile „Build-Depends:“ libssl-dev anfügen.

Source: freeradius
Build-Depends: autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, libpcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev, libssl-dev
Verzeichnis debian verlassen und Paket bauen
cd ..
dpkg-buildpackage -rfakeroot
Pakete sind fertig
drwxr-xr-x 15 root root    4096 30. Jul 11:57 freeradius-2.0.4+dfsg
-rw-r--r--  1 root root    5351 30. Jul 11:54 freeradius_2.0.4+dfsg-6.diff.gz
-rw-r--r--  1 root root    1243 30. Jul 11:54 freeradius_2.0.4+dfsg-6.dsc
-rw-r--r--  1 root root    5382 30. Jul 11:58 freeradius_2.0.4+dfsg-6_i386.changes
-rw-r--r--  1 root root  504906 30. Jul 11:58 freeradius_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root 2953674 19. Mai 2008  freeradius_2.0.4+dfsg.orig.tar.gz
-rw-r--r--  1 root root  205830 30. Jul 11:58 freeradius-common_2.0.4+dfsg-6_all.deb
-rw-r--r--  1 root root  928204 30. Jul 11:58 freeradius-dbg_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root  132494 30. Jul 11:58 freeradius-dialupadmin_2.0.4+dfsg-6_all.deb
-rw-r--r--  1 root root   17190 30. Jul 11:58 freeradius-iodbc_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root   18090 30. Jul 11:58 freeradius-krb5_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root   34740 30. Jul 11:58 freeradius-ldap_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root   24996 30. Jul 11:58 freeradius-mysql_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root   35934 30. Jul 11:58 freeradius-postgresql_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root   71854 30. Jul 11:58 freeradius-utils_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root   85280 30. Jul 11:58 libfreeradius2_2.0.4+dfsg-6_i386.deb
-rw-r--r--  1 root root  104758 30. Jul 11:58 libfreeradius-dev_2.0.4+dfsg-6_i386.deb
Paket installieren
dpkg -i freeradius-common_2.0.4+dfsg-6_all.deb
dpkg -i libfreeradius2_2.0.4+dfsg-6_i386.deb
dpkg -i freeradius_2.0.4+dfsg-6_i386.deb
freeradius auf hold setzen

Damit beim nächsten apt-get upgrade unser selbstgebautes Paket nicht überschrieben wird müssen wir das Paket noch auf hold setzen.

dpkg --get-selections | grep free
freeradius					install
freeradius-common				install
libfreeradius2					install
dpkg --set-selections [enter]
freeradius hold
freeradius-common hold
libfreeradius2 hold
[Strg+D]

Ergebnis kontrollieren

dpkg --get-selections | grep free
freeradius					hold
freeradius-common				hold
libfreeradius2					hold
Fertig

TFTPd – Server

Howto für  Ubuntu und  Debian

Pakete installieren
sudo apt-get install xinetd tftpd tftp
Datei: /etc/xinetd.d/tftp anlegen
nano /etc/xinetd.d/tftp
service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /srv/tftp
disable         = no
}
Ordner anlegen
sudo mkdir /srv/tftp
sudo chmod -R 777 /srv/tftp
sudo chown -R nobody /srv/tftp
tftpd über xinetd starten
sudo /etc/init.d/xinetd start
Test

Testfile anlegen

root@test4:/root# dd bs=1000 count=5 if=/dev/urandom of=testfile.txt

root@test4:/root# ls -la testfile.txt
-rw-r--r-- 1 root root 5000 2009-07-22 19:49 testfile.txt

Verbinden mit TFTP Server und Datei übertragen

root@test4:/root# tftp 10.1.1.1
tftp> put testfile.txt
Sent 5000 bytes in 0.0 seconds
tftp> quit

In Serververzeichnis wecheln

cd /srv/tftp

File ist vollständig angekommen

root@test4:/srv/tftp# ls -la testfile.txt
-rw------- 1 nobody nogroup   5000 2009-07-22 19:50 testfile.txt
Fertig

danted SOCKS4 Server

Howto für Ubuntu und Debian

danted installieren
apt-get install dante-server
Configfile anpassen
#logoutput: stderr
logoutput: syslog
#the above line will send any logs to /var/log/syslog instead to a terminal

internal: eth0 port = 1080
internal: 127.0.0.1 port = 1080

external: eth0

method: username none
#the above puts no username or password. Access will instead be controlled via client ip address/range.
#if there is no username or password - then danted socks server needs to run as nobody,   i.e.

#method: pam
# if you choose to use pam instead - a valid username&password as required for sshing to   the socks server is required.
#Note: not sure if proxy login details are sent in clear text.

#user.privileged: proxy
user.notprivileged: nobody

client pass {
        from: 10.1.1.0/24 port 1-65535 to: 0.0.0.0/0
        # 10.1.1.1/0 = specific ip address.
        # 10.1.1.0/24 = specific address range.
} 

client pass {
        from: 127.0.0.0/8 port 1-65535 to: 0.0.0.0/0
}

client block {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        log: connect error
}

#Finally block other traffic
block {
  from: 0.0.0.0/0 to: 127.0.0.0/8
  log: connect error
}

pass {
  from: 10.1.1.0/24 to: 0.0.0.0/0
  protocol: tcp udp
}

pass {
  from: 127.0.0.0/8 to: 0.0.0.0/0
  protocol: tcp udp
}

block {
  from: 0.0.0.0/0 to: 0.0.0.0/0
  log: connect error
}
danted starten
/etc/init.d/danted start
check
netstat -tulpen

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
...
tcp        0      0 10.1.1.206:1080        0.0.0.0:*               LISTEN      0          1194455     25994/danted
...

Atheros Madwifi Treiber installieren

Howto für Ubuntu

Nötige Pakete installieren
sudo apt-get install build-essential linux-headers-386 subversion
Madwifi herunterladen
cd /tmp
svn checkout http://madwifi-project.org/svn/madwifi/trunk madwifi
cd madwifi
Treiber kompilieren und installieren
export KERNELPATH=/usr/src/linux-headers-$(uname -r)
export KERNELRELEASE=$(uname -r)

make
sudo make install
make clean
ath_pci Treiber aktivieren
sudo nano /etc/modprobe.d/blacklist-ath_pci.conf

#blacklist ath_pci
blacklist ath5k

und

sudo nano /etc/modules

ath_pci
wlan

einfügen.

Treiber laden
rmmod ath5k
modprobe ath_pci
modprobe wlan
überprüfen
dmesg | grep ath
Fertig!

Export einer Liste installierter deb Pakete

Howto für Ubuntu und Debian

Um eine Liste mit Paketen auszugeben einfach

dpkg -l

ausführen.

Wenn man die Liste der installierten Pakete für eine Neuinstallation auf einem anderen System verwenden will funktioniert folgendes Kommando.

Nur Anzeigen
dpkg -l | awk '{print $2}' | sed ':a;N;$!ba;s/\n/ /g'
Direkt in eine Datei schrieben
dpkg -l | awk '{print $2}' | sed ':a;N;$!ba;s/\n/ /g' > /tmp/installed_debs

Achtung: Es sollten die gleichen Paketquellen verfügbar sein! /etc/apt/sources.list mitkopieren.