shellshockfix for old Linuxsystems

Author: stephan  |  Category: Linux, Netzwerk


Old Systems which are vunerable because wikipedia
shellshock aren’t that easy to update. One method is compilling bash manually ( stolen from ubuntu )

mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 0 25); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 0 25);do patch -p0 < ../bash43-$i; done #build and install ./configure --prefix=/ && make && make install cd .. cd .. rm -r src



Ältere Systeme die von Shellshock
wikipedia
betroffen sind lassen sich nicht direkt updaten. Eine Option ist das selber Kompilieren ( geklaut bei ubuntu )
mkdir src
cd src
wget http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
#download all patches
for i in $(seq -f "%03g" 0 25); do wget http://ftp.gnu.org/gnu/bash/bash-4.3-patches/bash43-$i; done
tar zxvf bash-4.3.tar.gz
cd bash-4.3
#apply all patches
for i in $(seq -f "%03g" 0 25);do patch -p0 < ../bash43-$i; done #build and install ./configure --prefix=/ && make && make install cd .. cd .. rm -r src

A strange rdiff_backup error and its solution

Author: stephan  |  Category: Linux, Netzwerk, Sonstiges

[lang_de]
Nach einem etwas längeren Umzug eines rdiff_backup repositories lieferte das Backup folgenden Fehler:

[03/20/13 13:31:44] Exception 'Found too many current_mirror incs!' raised of class
'':
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 304,
in error_check_Main
[03/20/13 13:31:44] try: Main(arglist)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 324,
in Main
[03/20/13 13:31:44] take_action(rps)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 280,
in take_action
[03/20/13 13:31:44] elif action == "backup": Backup(rps[0], rps[1])
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 337,
in Backup
[03/20/13 13:31:44] backup_final_init(rpout)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 501,
in backup_final_init
[03/20/13 13:31:44] checkdest_if_necessary(rpout)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 916,
in checkdest_if_necessary
[03/20/13 13:31:44] need_check = checkdest_need_check(dest_rp)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 907,
in checkdest_need_check
[03/20/13 13:31:44] assert len(curmir_incs) == 2, "Found too many current_mirror incs!"

Was war geschehen ? Durch den langen Kopiervorgang waren mehrere current_mirror Statusdateien mitgesynct worden.
In der obigen Fehlermedlung waren es zwei statt einer.
Wie lösen ?
Einfach in allen rdiff_datenverzeichnissen alle current_mirror* bis auf die neuste löschen und das Backup läuft wieder .
[/lang_de][lang_en]
After a longer migration of rdiff_backup repository (4 Weeks) I got this strange error

[03/20/13 13:31:44] Exception 'Found too many current_mirror incs!' raised of class
'':
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 304,
in error_check_Main
[03/20/13 13:31:44] try: Main(arglist)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 324,
in Main
[03/20/13 13:31:44] take_action(rps)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 280,
in take_action
[03/20/13 13:31:44] elif action == "backup": Backup(rps[0], rps[1])
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 337,
in Backup
[03/20/13 13:31:44] backup_final_init(rpout)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 501,
in backup_final_init
[03/20/13 13:31:44] checkdest_if_necessary(rpout)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 916,
in checkdest_if_necessary
[03/20/13 13:31:44] need_check = checkdest_need_check(dest_rp)
[03/20/13 13:31:44] File "/usr/lib/pymodules/python2.6/rdiff_backup/Main.py", line 907,
in checkdest_need_check
[03/20/13 13:31:44] assert len(curmir_incs) == 2, "Found too many current_mirror incs!"

What happened ? Because of the very long Migration of the repository more than one current_mirror Statusfiles had been synced.
In the errormessage above it had been two files .
how to solve ?
Simply delete in all rdiff_datadirs all current_mirror* files except the newest one and your rdiff_backup is running again
[/lang_en]

Apache solr search for my blog

Author: stephan  |  Category: Linux, Netzwerk, Sonstiges

[Lang_de]
So, nun ist endlich so weit und die Suche dieses Blogs wird durch meinen Apache Solr Suchsserver betrieben
[/lang_de]
[lang_en]
After a long time I finished Integrating my blog into an Apache Solr Search Server
[/lang_en]

version control ist not only for developers

Author: stephan  |  Category: Linux, Sonstiges, windows

[lang_de]
Wer kennt das nicht :
„Ach hätte ich nicht noch die alte Version meiner Bookmarks, meines Lebenslaufes oder anderen wichtigen Oficedokuments“
Da kommt der Gedanke ins Spiel ,solche Dokumente zu versionieren mit einem Versionierungstool , wie es die Entwickler für Code verwenden.
Ein solches Tool ist Git. Git wurde ursprünglich von Linus Torvalds für den Linuxkernel entworfen existiert aber auch für Windows.
Nun wollen wir unser erstes Reposiory anlegen

cd mydir
git init
git add .
git commit

Kommandos um veränderungen anzuschauen
git status
git diff

Commit History
git log
letzte Änderung Rückgängig machen
git revert HEAD

Ein Nützlicher Link:

https://git.wiki.kernel.org/index.php/GitCheatSheet

[/lang_de]
[lang_en]
Who doesn’t know this:
„If I only had an old version of my bookmarks, my curriculum or another important office document“
This is the point to think about version control like developers use for Code.
One version control tool usable for this is git.
Git was developed by Linus Torvalds and others for the Linux Kernel but it also exist a windows version.
Lets make our first repository

cd mydir
git init
git add .
git commit

How track down Changes ?
git status
git diff

Commit History
git log
Howto revert the last commit
git revert HEAD

A useful link

https://git.wiki.kernel.org/index.php/GitCheatSheet

[/lang_en]

Numlock Madness with my ubuntu netbook

Author: stephan  |  Category: Linux, Netbook

[lang_en]
Last weekend my netbook had a very strange behaviour. When pressed „O“ a „6 „appeared instead .; instead of a „.“ a „,“ appeared and so one.
It was the behaviour of a constantly pressed FN Key.
After an hour of debugging I found the solution. I used an external keyboard some days before ( with NUM Lock ) and my system saved this setting. releasing NUM Lock and the strange behaviour was gone.
[/lang_en]
[lang_de]
Letztes Wochenende zeigte mein Netbook ein ganz seltsames Verhalten . Wenn ich ein „O“ drückte kam stattdessen eine „6“ , statt eines „.“ ein „,“ und so weiter . Es war als wäre die FN Taste ständig gedrückt.
Nach einiger Zeit fand ich die Lösung. Ich hatte ein paar Tage zuvor eine externe tastatur angeschlossen ( mit aktiviertem NUM Lock). Dies hatte sich das Netbook gemerkt. Numlock deaktivert und alles war wieder normal.
[/lang_de]

Howto repair a server’s filesystem without rebooting

Author: stephan  |  Category: Linux, Netzwerk

[lang_en]
When you got the message that a drive is readonly because of a faulty filesystem or journal was aborted you want to repair it without rebooting especially if the computer is a remote server.

First shutdown all processes accessing the Filesystem
fuser -v -m /home/

If you have subdrive , umount them first
umount /home/myhome

then
tune2fs -O ^has journal /dev/sda7
fsck /dev/sda7
tune2fs -j /dev/sda7

restart stopped services again
[/lang_en]
[lang_de]
Wenn eine Partion schreibgeschützt ist aufgrund eines Festplattenfehlers oder man die Meldung bekommt “ jounal was aborted“ möchte man die Partiton lieber ohne Reboot reparieren, speziell bei einem entfernten Server.

Als erstes müssen alle Prozese beendet wirden, die das Filesystem belegen.
fuser -v -m /home/

Unterpartitionen müssen ebenfalls ausgehängt werden
umount /home/myhome

dann
tune2fs -O ^has journal /dev/sda7
fsck /dev/sda7
tune2fs -j /dev/sda7

und nun muss man nur beendete Prozesse wieder starten
[lang_de]

OpenLDAP Backup

Author: stephan  |  Category: Linux

[Lang_de]
Die einfachste Möglichkeit den Datenbestand eines OpenLDAP Servers zu sichern bietet das Programm slapcat:

linux ~# /usr/sbin/slapcat -l backup.ldif

Analog erfolgt die Wiederherstellung:

linux ~# /usr/sbin/slapadd -l backup.ldif
[/lang_de]
[lang_en]
The easiest way to backup your LDAP is slapcat:

linux ~# /usr/sbin/slapcat -l backup.ldif
Restore:

linux ~# /usr/sbin/slapadd -l backup.ldif
[/lang_en]

Last but not least – a redundant internet connection (Part 4)

Author: stephan  |  Category: Linux, Netzwerk, openwrt

[lang_en]
myNetz
foreword
1.) You need at least 2 Linux Boxes for this. I used my OpenSuse Server with the VDSL Connection and the wrt160NL with Openwrt and UMTS/3G for this. 2 Openwrt Boxes are also suitable
2.) On Openwrt 10.03 I had Problems with Quagga-vtysh so I don’t used it
( On the Suse Box vtysh was working fine)
Main
First you have to install the Quagga Packets. For OpenWRT install

opkg install quagga quagga-libospf quagga-libzebra quagga-ospfd

For the second box please refer to the manual of your distribution.
If you don’t install vtysh , you can access to different consoles with
telnet 127.0.0.1 zebra (2601)
telnet 127.0.0.1 ospfd (2601)

For our case the interesting part is the ospf Configuration
router ospf
router ospf
ospf router-id 192.168.1.254
redistribute kernel
redistribute connected
network 192.168.1.0/24 area 0.0.0.0
neighbor 192.168.1.1
!
!

And the Configuration of the Suse Box

router ospf
ospf router-id 192.168.1.1
redistribute kernel
network 192.168.1.0/24 area 0.0.0.0
neighbor 192.168.1.254
!

Now let us check the routing table on both Boxes
suse# sh ip ro
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

O 0.0.0.0/0 [110/200] via 192.168.1.254, eth1, 00:04:37
K>* 0.0.0.0/0 is directly connected, dsl0

openwrt# sh ip ro
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, H - HSLS, L - OLSR, M - BATMAN, > - selected route, * - FIB route

O 0.0.0.0/0 [110/200] via 192.168.1.1, br-lan, 00:00:48
K>* 0.0.0.0/0 is directly connected, ppp0

Both Router had their own defaultroutes and the Defaultroute of each other via ospf.
Has one router lost its connection , it has still the one of his neighbor

Source
http://www.taunusstein.net/index.php?option=com_content&view=article&id=62:routing&catid=15:linux
[/lang_en]

[lang_de]
myNetzVorwort
1.) Man benötigt mindestens 2 Linuxrechner dafür . Ich habe meinen Linuxserver mit Opensuse und der VDSL Leitung und den wrt160nl mit Openwrt und UMTS verwendet. Mit zwei Openwrtmaschinen funktioniert es aber genau so.
2.) Mit Openwrt 10.03 gab es mit der vtysh Problem, deswegen habe ich sie weggelassen ( Unter OpenSuse gab es keine Probleme mit der vtysh

Haupteil
Als erstes muss Quagga installiert werden. Für OpenWRT muss folgendes installiert werden

opkg install quagga quagga-libospf quagga-libzebra quagga-ospfd

Für die zweite Maschine verweise ich auf die Dokumenation der jeweiligen Distribution
Wenn man vtysh nicht installiert kann man die einzelnen Konsolen folgendermassen erreichen
telnet 127.0.0.1 zebra (2601)
telnet 127.0.0.1 ospfd (2601)

In unserem Fall ist die OSPF Konfiguration das Interessante


router ospf
ospf router-id 192.168.1.1
redistribute kernel
network 192.168.1.0/24 area 0.0.0.0
neighbor 192.168.1.254
!

Und die Konfiguration des zweiten Router
router ospf
router ospf
ospf router-id 192.168.1.254
redistribute kernel
redistribute connected
network 192.168.1.0/24 area 0.0.0.0
neighbor 192.168.1.1
!
!

Nun lasst uns die Routingtable anschauen
suse# sh ip ro
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

O 0.0.0.0/0 [110/200] via 192.168.1.254, eth1, 00:04:37
K>* 0.0.0.0/0 is directly connected, dsl0

openwrt# sh ip ro
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, H - HSLS, L - OLSR, M - BATMAN, > - selected route, * - FIB route

O 0.0.0.0/0 [110/200] via 192.168.1.1, br-lan, 00:00:48
K>* 0.0.0.0/0 is directly connected, ppp0

Beide Router haben ihre eigene Kernel Defaultroute und die jeweils andere Defaultroute via OSPF.
Verliert einer der Router seine eigene Verbindung hat er noch die Defaultroute des Nachbarrouters

Quelle
http://www.taunusstein.net/index.php?option=com_content&view=article&id=62:routing&catid=15:linux

[/lang_de]

Installing 3G/UMTS ( Huawei e220 ) onto WRT 160nl and Openwrt(Part 3)

Author: stephan  |  Category: Linux, Netzwerk, openwrt

[lang_en]

First we need to install a bunch of packets

opkg install kmod-ar9170 kmod-usb-core kmod-usb-serial comgt kmod-usb-uhci kmod-usb2 kmod-ppp huaweiaktbbo

The E220 has two modes . To switch from USB Stick to UMTS you need huaweiaktbbo

root@OpenWrt:~# huaweiAktBbo
Searching modem...found supported modem!
Modem poked!

Its a clever idea to put it into init.d for startup. I used this script by Simon Josefsson


root@OpenWrt:/etc/init.d# cat huaweiAktBbo
#!/bin/sh /etc/rc.common
# Written by Simon Josefsson 2009-03-05. Released into the public domain.

START=70
start() {
huaweiAktBbo
}

Make the script accessible and enable it
And you need the following

root@OpenWrt:/# cat /etc/modules.d/60-usb-serial
usbserial vendor=0x12d1 product=0x1003

Then Reboot the Router

Next step ist to get ppp working. My working scripts ( I had a few tries before I found a working config)

root@OpenWrt:/# cat /etc/chatscripts/3g.chat
ABORT BUSY
ABORT 'NO CARRIER'
ABORT ERROR
REPORT CONNECT
TIMEOUT 10
"" "ATX"
OK "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
OK 'AT+CGDCONT=1,"IP","$USE_APN","0.0.0.0"'

SAY "Calling UMTS/GPRS"
TIMEOUT 30
#OK "ATD*99***1#"
OK "ATD*99#"
CONNECT ' '


root@OpenWrt:/# cat /etc/ppp/options
115200
logfile /dev/null
noaccomp
nopcomp
nocrtscts
lock
maxfail 0
lcp-echo-failure 0
lcp-echo-interval 0
ipcp-max-failure 30


root@OpenWrt:/# cat /etc/config/network
...
#### UMTS configuration
config interface ppp0
option ifname ppp0
option proto 3g
option device /dev/ttyUSB0
option 'service' 'umts'
option apn internet.eplus.de
option pincode 0000
option 'defaultroute' '1'
option 'peerdns' '1'

With an ifup ppp0 , the 3G modem should start connecting

My Sources
http://www.it-slav.net/blogs/2010/06/12/howto-use-3g-dongle-huawei-e1750-in-openwrt/
http://josefsson.org/openwrt/dongle.html

[/lang_en]
[lang_de]

Zuerst benötigen wir eine Menge Packete

opkg install kmod-ar9170 kmod-usb-core kmod-usb-serial comgt kmod-usb-uhci kmod-usb2 kmod-ppp huaweiaktbbo

Das E220 hat Zwei Modi .
Um vom USB STick zum Modem zu wechseln benötigt man das Program huaweiaktbbo

root@OpenWrt:~# huaweiAktBbo
Searching modem...found supported modem!
Modem poked!

es ist jetzt eine gute Idee , das ganze via Startup zu automatisieren.
Ich verwende hierfür das Script von Simon Josefsson


root@OpenWrt:/etc/init.d# cat huaweiAktBbo
#!/bin/sh /etc/rc.common
# Written by Simon Josefsson 2009-03-05. Released into the public domain.

START=70
start() {
huaweiAktBbo
}

Das Script sollte man nun ausführbar machen und enablen damit es bei jedem Start wieder ausgeführt wird

Und man braucht das folgende

root@OpenWrt:/# cat /etc/modules.d/60-usb-serial
usbserial vendor=0x12d1 product=0x1003

Danach den Router neu starten

Der nächste Schritt ist den PPP zum Laufen zu bekommen . Anbei meine funktionierenden scripte ( Ich habe ein bischen probieren müssen bevor es lief)


root@OpenWrt:/# cat /etc/chatscripts/3g.chat
ABORT BUSY
ABORT 'NO CARRIER'
ABORT ERROR
REPORT CONNECT
TIMEOUT 10
"" "ATX"
OK "ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0"
OK 'AT+CGDCONT=1,"IP","$USE_APN","0.0.0.0"'

SAY "Calling UMTS/GPRS"
TIMEOUT 30
#OK "ATD*99***1#"
OK "ATD*99#"
CONNECT ' '


root@OpenWrt:/# cat /etc/ppp/options
115200
logfile /dev/null
noaccomp
nopcomp
nocrtscts
lock
maxfail 0
lcp-echo-failure 0
lcp-echo-interval 0
ipcp-max-failure 30


root@OpenWrt:/# cat /etc/config/network
...
#### UMTS configuration
config interface ppp0
option ifname ppp0
option proto 3g
option device /dev/ttyUSB0
option 'service' 'umts'
option apn internet.eplus.de
option pincode 0000
option 'defaultroute' '1'
option 'peerdns' '1'

Mit einem ifup ppp0 ,sollte das UMTS Modem anfangen sich zu verbinden

Meine Quellen
http://www.it-slav.net/blogs/2010/06/12/howto-use-3g-dongle-huawei-e1750-in-openwrt/
http://josefsson.org/openwrt/dongle.html

[/lang_de]

Another try with the wrt160nl and openwrt(Part 2) – Installing virtual WLANs

Author: stephan  |  Category: Linux, Netzwerk, openwrt

[lang_en]

The next goal was the Konfiguration of two „virtual“ WLANs on one physical router ; one private and protected WLAN and one open for Guests ( otherwise protected )

The Code is very simple :

config wifi-iface
option device radio0
option network lan
option mode ap
option ssid Secret-WLAN
option encryption psk
option key Secret
option hidden 1

config wifi-iface
option device radio0
option network lan2
option mode ap
option ssid OpenWLAN
option encryption none
option hidden 1

At last , you need a virutal ethernetdevice as bridiging point for the Second WLAN

config interface lan2
option ifname eth0.2
option type bridge
option proto static
option ipaddr 172.27.1.1
option netmask 255.255.255.0

[/lang_en]

[lang_de]

Der nächste Schritt war die Konfiguration zweier virtueller WLANs auf einem physikalischen Accesspoint ; ein geschützes für private Zwecke und ein offenes für Gäste ( auf anderem Weg geschützt)

Die Konfiguration ist sehr einfach:

config wifi-iface
option device radio0
option network lan
option mode ap
option ssid Secret-WLAN
option encryption psk
option key Secret
option hidden 1

config wifi-iface
option device radio0
option network lan2
option mode ap
option ssid OpenWLAN
option encryption none
option hidden 1

man braucht jetzt nur noch eine virtuelles Ethernet Device für die Bridge

config interface lan2
option ifname eth0.2
option type bridge
option proto static
option ipaddr 172.27.1.1
option netmask 255.255.255.0

[/lang_de]