Ubuntu Firewall Skript

Hey,

hier n kleines Skript zur bequemeren Konfiguration von iptables unter Ubuntu.

Hier das Konfigurationsskript:

/etc/iptables.sh

#!/bin/sh

# Iptables
FW=”/sbin/iptables”

# vorhandene Regeln & Ketten löschen
$FW -F
$FW -X
$FW -t nat -F

# Standardregeln
$FW -P INPUT ACCEPT
$FW -P FORWARD ACCEPT
$FW -P OUTPUT ACCEPT

$FW -A INPUT -p tcp –dport www -s xxx.xx.xx.x/16 -j ACCEPT
$FW -A INPUT -p tcp –dport www -j DROP
$FW -A INPUT -p tcp –dport https -s xxx.xx.xx.x/16 -j ACCEPT
$FW -A INPUT -p tcp –dport https -j DROP

$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -j DROP

$FW -A INPUT -p tcp –dport 21 -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport 21 -j DROP

$FW -A INPUT -p tcp –dport 7777 -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport 7777 -j DROP

Hier das Init-Skript:

/etc/init.d/firewall

#!/bin/sh
### BEGIN INIT INFO
# Provides: iptables
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the firewall daemon.
### END INIT INFO

. /lib/lsb/init-functions

case “$1” in
start)
/etc/iptables.sh
iptables -L
;;
stop)
iptables -F
iptables -X
iptables -L
;;
status)
iptables -L
;;
*)
echo “Usage: /etc/init.d/firewall {start|stop|status}”
exit 1
;;
esac

exit 0

Automatisches Laden des Skripts in den Default-Runlevels:

update-rc.d firewall defaults

Remote Backup eines Linux-Servers mit SSH

  • Lege auf dem Server, auf dem du die Backups des entsprechenden Servers ablegegen willst, den User “backupid” an.
  • der User muss per public/private Key Authentifizierung auf die zu backupende Server kommen.
  • unter dem home-Verzeichnis von backupid einen ordner für die script anlegen, zb bin.

eine Datei mit dem Namen backup-dirs.sh erstellen und folgenden Inhalt einfügen:


#!/bin/bash
HOSTNAME=$1
CONFIGDIR=`echo $(dirname $0)`
BACKUPDIR_LOCAL=/home/backupid/backupdir
DATE=`date +%d-%m-%Y`


if [ "$HOSTNAME" == "" ]
then
echo error: please enter a hostname
exit 1
else
echo hostname ok > /dev/null
fi


PORTACCESSIBLE=`nmap -p 22 $HOSTNAME | grep "22/tcp open ssh" | wc -l`


if [ "$PORTACCESSIBLE" -eq 0 ]
then
echo "error: ssh port not accessible on $HOSTNAME"
exit 1
else
echo "ssh port is reachable on $HOSTNAME" > /dev/null
fi


if [ -e "$CONFIGDIR"/"$HOSTNAME".cfg ]
then
echo "config file for $HOSTNAME found" > /dev/null
else
echo "error: no config file for $HOSTNAME found"
exit 1
fi


CONFIGLINES=`cat "$CONFIGDIR"/"$HOSTNAME".cfg | wc -l`


if [ "$CONFIGLINES" -eq 0 ]
then
echo "error: config file is empty for $HOSTNAME"
exit 1
else
echo "config file is ok for $HOSTNAME" >/dev/null
fi


mkdir -p "$BACKUPDIR_LOCAL"/$HOSTNAME


rm -rf /tmp/"$HOSTNAME"-ssh-script.sh 1>/dev/null 2>&1
rm -rf /tmp/"$HOSTNAME"-filelist 1>/dev/null 2>&1
echo "#!/bin/bash" > /tmp/"$HOSTNAME"-ssh-script.sh
touch /tmp/"$HOSTNAME"-filelist


if [ -e /tmp/"$HOSTNAME"-ssh-script.sh ]
then
echo "temporary ssh backup script for $HOSTNAME successfully created" > /dev/null
else
echo "error: creation of temporary ssh backup script for $HOSTNAME failed"
exit 1
fi


while read line
do
LINE2=`echo $line | sed 's/\//-/g'`
echo "ssh root@"$HOSTNAME" "tar -cz \"$line\"" | dd of="$BACKUPDIR_LOCAL"/"$HOSTNAME"/"$HOSTNAME"-"$DATE""$LINE2".tar.gz" >> /tmp/"$HOSTNAME"-ssh-script.sh
echo "$BACKUPDIR_LOCAL"/"$HOSTNAME"/"$HOSTNAME"-"$DATE""$LINE2".tar.gz >> /tmp/"$HOSTNAME"-filelist
done < "$CONFIGDIR"/"$HOSTNAME".cfg chmod 750 /tmp/"$HOSTNAME"-ssh-script.sh /tmp/"$HOSTNAME"-ssh-script.sh 1>/dev/null 2>/dev/null


while read line
do
TARLINECOUNT=0
TARLINECOUNT=`tar -tf $line | wc -l`


if [ "$TARLINECOUNT" -eq 0 ]
then
echo "error: $line seems to be empty"
else
echo "$line is ok" > /dev/null
LINE_TO_DEL=`echo $line | sed 's/..-..-....-/*/' | sed 's/backupdir/backupdir.backupsrv/'`
rm $LINE_TO_DEL
cp $line /home/backupid/backupdir.backupsrv/$HOSTNAME
fi


done < /tmp/"$HOSTNAME"-filelist


exit 0

 

  • danach legt man im gleichen Ordner eine Config Datei an, welche entweder der Hostname oder die Ip-Addresse des zu backupenden Hosts als Namen besitzt.

z.b 192.168.1.10.cfg

dort schreibt man die zu sichernden Verzeichnisse hinein.

zb.

/home
/etc
/var
/root

wenn man das Script automatisch einmal pro Tag ausführen will ruft man es unter dem User backupid folgendermaßen auf:


crontab -e


0 5 * * * /home/backupid/bin/backup-dirs.sh

Asus eeePc & Ubuntu 10.04

Grade mal Ubuntu 10.04 LTS auf dem Asus eee PC 1005p installiert, die Installation hat auch soweit funktioniert, auch die Auflösung passte.

Folgende Probleme:

Wlan Karte wurde nicht erkannt -> Netzwerkkabel dran und Updates runterziehen, neustart.

Funktionstasten gehn nicht (oder nicht richtig, manche gingen, die meisten nicht).

-> ACPI fehlt. dieses kann hinzugefügt werden, indem man in der /etc/default/grub folgende Zeile um “acpi_osi=Linux” erweitert:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”

also quasi dann:

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash acpi_osi=Linux”

dann muss man Grub noch updaten. Das funktioniert folgendermaßen:

sudo update-grub2

dann noch einen Neustart und dann sollten die FN-Tasten funzen.

Die Webcam funzt danach auch richtig.

Terminalserver auf Ubuntu 10.04

Hi,

ist lange her, dass ich mich mit sowas wie einem Terminalserver beschäftigt habe. Wenn ich mich recht entsinne ungefähr 4 Jahre. Damals habe ich mal unter großem Zeitdruck einen Windows Terminalserver auf Server 2003 installiert und eingerichtet und war relativ beeindruckt, welche Möglichkeiten sich einem boten.

Beispielsweise wünscht man sich als Administrator oft, auf Lan Partys einen Gastzugang für Leute, die keinen PC dabeihaben einzurichten, auf denen man im Internet surfen kann.

Mit einem Terminalserver kein Problem, einfach einen Rechner auf PXE-Boot umstellen und fertig.

Oft werden beim Einsatz von Terminalservern als Clients so genannte “Thin-Clients” eingesetzt. Thin-Clients sind im Prinzip kleine Rechner, die außer einem Mainboard, Grafikkarte, Soundkarte und Netzwerkkarte (und oft einen kleinen Flash-Speicher, auf dem die Konfiguration des Clients abgelegt ist) nichts besitzen. Sie verbinden sich über das lokale Netzwerk mit dem Terminalserver und übertragen nur das Bild an den Monitor, alle Eingaben die über Tastatur und Maus getätigt werden, werden auf dem Server aktiv.

Es müssen aber nicht unbedingt Thin-Clients sein, man kann auch einen normalen Rechner dafür einsetzen. Die einzige Vorraussetzung dabei ist, dass das Bios und die Netzwerkkarte PXE-Boot unterstützen.

Es muss aber kein teurer Windows-Terminalserver sein, nein für Linux gibt es sowas auch, und natürlich kostenlos.

Wo beim Windows-Terminalserver für die Anzahl der Clients Lizenzen gekauft werden müssen, limitiert bei Linux einzig die Rechenleistung die Anzahl der Clients.

Realisiert wird der Terminalserver über das so genannte Linux Terminal Server Project (LTSP).

Terminalumgebung konfigurieren

Nun aber zu Linux:

  1. Dem Server eine statische IP-Adresse zuweisen, falls noch nicht geschehen.
  2. Das Standardpaket von LTSP ist schon installiert, allerdings müssen noch folgende Pakete besorgt werden: sudo apt-get install ltsp-server-standalone openssh-server sudo apt-get install dhcp3-server
  3. Wenn dies installiert ist, richtet man die Terminalumgebung ein, dazu wird einfach ein Abbild des Systems erstellt und in den entsprechenden Ordner geschoben. Der Befehl dazu: sudo ltsp-build-client
  4. Danach muss der Desktop geupdatet werden. sudo apt-get update sudo apt-get upgrade

Die Terminalumgebung ist jetzt im Prinzip fertiggestellt, jetzt muss der DHCP-Server konfiguriert werden.

DHCP-Server konfigurieren

Bei dem LTSP-Paket ist schon eine Beispielkonfiguration enthalten. Sie befindet sich in /etc/ltsp/dhcpd.conf .

die erste Zeile versichert, dass Clients diesen DHCP-Server nutzen.

authoritative;

Hiermit wird das gewünschte Subnetz mit Maske eintragen:

subnet 192.168.7.0 netmask 255.255.255.0 {

Die nächste Zeile gibt an, welche Ip-Adressrange der DHCP-Server bedienen soll:

range 192.168.7.125 192.168.7.246;

Hier kann man den Clients einen DNS-Server mitgeben:

option domain-name-servers 12.32.34.32;

Hiermit wird die Broadcast-Adresse festgelegt.

option broadcast-address 192.168.7.255;

Hiermit gibt man den Router für das Netz an (Ist auch gleichzeitig Gateway in andere Netze)

option routers 192.168.7.2;

Nun die eigentliche Konfiguration für die Clients

Hiermit erstellt man die Konfiguration für den Host ws205

host ws205 {

[… damit der Server die Hostnamen den Ip-Adressen zuordnen kann, müssen die Hosts in die Datei /etc/hosts mit folgendem Syntax eingetragen werden:

 192.168.7.202 ws202
192.168.7.203 ws203
 192.168.7.205 ws205
192.168.7.206 ws206 ...]

Anschließend muss man dem Server die MAC-Adresse der Netzwerkkarte des angelegten Clients mitgeben:

hardware ethernet 00:13:90:00:D7:8F;

Nun kann man dem Rechner eine feste Ip-Adresse zuordnen:

Fixed-address 192.168.7.205;

Zu guter Letzt gibt man den Pfad des Pxe-Bootloaders an:

filename "/ltsp/i386/pxelinux.0";

Eine vollständige Konfiguration würden dann beispielsweise so aussehen:

subnet 192.168.7.0 netmask 255.255.255.0 {
authoritative;
range 192.168.7.125 192.168.7.246;
option domain-name-servers 12.32.34.32;
option broadcast-address 192.168.7.255;
option routers 192.168.7.2;
host ws205 {
hardware ethernet 00:13:90:00:D7:8F;
fixed-address 192.168.7.205;
filename "/ltsp/i386/pxelinux.0";
}
host ws247 {
hardware ethernet 00:13:90:00:67:AF;
fixed-address 192.168.7.247;
filename "/ltsp/i386/pxelinux.0";
}

Nun muss man die Datei /etc/ltsp/dhcpd.conf nach /etc/dhcp3-server kopieren und die vorhandene Datei dhcpd.conf ersetzen.

Zum Schluss startet man den DHCP-Server und die LTSP-Dienste neu.

Dazu folgende Befehle ausführen:

sudo /etc/init.d/dhcp3-server restart
sudo ltsp-update-sshkeys
sudo  ltsp-update-image

Man sollte dann noch Benutzer mit eingeschränkten Rechten anlegen, ist aber optional und kann auch noch später erledigt werden, die Clients können sich ab jetzt mit dem Server verbinden.

Ubuntu 10.04 Features

Das neue Ubuntu 10.04 ist raus. Ja ich weiß, es ist schon länger raus, ich bin leider jetzt erst dazu gekommen es zu installieren. In diesem Artikel möchte ich das neue Ubuntu etwas näher beschreiben und die Neuerungen aufzeigen, die mir aufgefallen sind.

Allgemein

Vielleicht zu allererst: ich hab es in einer virtuellen Maschine installiert. Das schöne ist, es zeigt nun auch bei der Installation die Festplatte als Vmware Virtual Hard Disk an, wodurch man sicher sein kann dass man die richtige Festplatte gewählt hat.

Auch hat sich designtechnisch etwas getan. Man kann nun verschiedene Themen auswählen, die sich in Farbe und Symbolen unterscheiden. Als Hintergrund gibt es nun auch die Möglichkeit eine Diashow auszuwählen, dann ändert sich in zyklischen Abständen das Hintergrundbild. Desweiteren gibt es nun auch visuelle Effekte, wie sich diese allerdings genau äußern konnte ich noch nicht feststellen, da dafür eine virtuelle Maschine definitiv nicht ausreicht.

Installation

Die Installation läuft wie gewohnt ab, Zeitzone, Tastaturlayout wählen, Benutzername und Passwort vergeben. Neu sind jetzt nur das Cover und andere Farben.

Erste Schritte

Erster neustart und es sieht gut aus 🙂 Man wird direkt gefragt ob man irgendwelche Chatkonten einrichten will. diese sind dann direkt oben in der “Taskleiste” mit eingebunden.

Chatintegration in Ubuntu 10.04

Remote Zugriff

Eine weitere Neuerung ist der vereinfachte Remotezugriff auf Ubuntu. In vorherigen Versionen konnte man natürlich auch immer mit Ssh auf die Maschine zugreifen. Wenn man allerings die grafische Oberfläche benötigte, ging es schon ins Eingemachte und man musste immer wieder nachlesen, welche Einstellungen denn nun alle gemacht werden müssen (eine gute Anleitung dazu auf der Homepage von Nico Maas).

Remote Zugriff auf den Rechner



Einstellungen vom Remote Zugriff

Rechner-Hausmeister

Ja er heißt wirklich so 🙂

Der Rechner-Hausmeister ist das Äquivalent zur Datenträgerbereinigung bei Windows. Er verspricht “das System aufzuräumen, dass es einem frisch Installierten ähnelt.” Er gibt Speicherplatz frei, indem er z.b nicht mehr benötigte Programme entfernt.

Rechner Hausmeister

Music Player

Eine wirklich coole Neuerung. Der neue Music Player sieht auf den ersten Blick fast so aus wie iTunes. Er ist sehr intuitiv aufgebaut. Über wenige Klicks in der Navigationsleiste kann man sich Podcasts ansehen, seine eigene Mp3-Sammlung hören, im Ubuntu Music Store neue Musik finden und herunterladen.

Itunes ähnlicher Music Player

Fazit

Der Grund warum viele Leute vor Linux zurückschrecken ist nach Ansicht des Autors der, dass die meisten mit Linux direkt etwas Tristes oder die bei Linux-/Unixexperten geschätzte Kommandozeile. Viele denken, dass Linux ein Betriebssystem ist, in dem bei den einfachsten Anwendungen oft Fehler auftauchen, die man als Laie nicht beheben kann. Nun, vor 10 Jahren war das so 🙂

Nein, ernsthaft. Mit den letzten Versionen von Ubuntu wird eindeutig der Laie angesprochen, was durch verbesserte Bedienerfreundlichkeit und erweiterte Multimedia-Angebote realisiert wird. In Ubuntu 10.04 wurden eben diese Aspekte stark verbessert, man könnte sich vorstellen, dass normaler User sich recht gut damit zurechtfinden könnten.