LVM Logical Volume verkleinern

Wie das Anlegen eines Logical Volumes funktioniert, habe ich hier erklärt.

Damit das Verkleinern des Logical Volumes erfolgen kann müssen zuvor einige Schritte durchgeführt werden. Dazu gehören:

  • Dienste stoppen, die auf die entsprechende Partition zugreifen
  • Partition aushängen
  • Dateisystemcheck (Defragmentierung)

Vorbereitungen

Ich erkläre das hier am Beispiel des Samba-Servers unter Debian Lenny. Es gelten folgende Annahmen:

  • LV = /dev/mapper/vg00-srv_samba
  • Dateipfad = /srv/samba

Also los. Dienste stoppen

root# /etc/init.d/samba stop
Stopping Samba daemons: nmbd smbd.

Dateisystem aushängen

root# umount /dev/mapper/vg00-srv_samba

Dateisystem überpüfen

root# e2fsck -f /dev/mapper/vg00-srv_samba

Verkleinern

Jetzt also zuerst das Dateisystem verkleinern und dann das Logical Volume:

root# resize2fs /dev/mapper/vg00-srv_samba 512000000
root# lvreduce -L -1000G /dev/mapper/vg00-srv_samba

Danach wieder einhängen

root# mount /dev/mapper/vg00-srv_samba

Installation/Update VMWare-Tools

Vorraussetzungen

Für die Installation und die Kompilierung der VMWare-Module werden die folgenden Pakete benötigt:

  • Kompilierungsprogramme wie make und gcc, die über das Meta-Paket build-essential zu bekommen sind
  • die Header-Pakete für den aktuellen Kernel, den man mit uname -r bestimmen kann.

Zusammengefasst, bekommt man die Pakete mit folgendem Befehl installiert:

aptitude install build-essential linux-headers-$(uname -r)

VMWare-Tools-CD mounten und kopieren

Erstmal über die VMWare-Management-Oberfläche der Link „VMWare-Tools installieren“ anklicken, damit die VMWare-Tools-CD virtuell eingelegt wird. Dann kann man über

mount /dev/cdrom /media/cdrom
bzw. 
mount /dev/sr1

die CD mounten und das entsprechende Tools-Archiv kopieren:

cp /media/cdrom/VMwareTools-X.X.X-XXXXXX.tar.gz /usr/local/src/

Die Xe stehen für die Versionsziffern, die sich bei jedem unterscheiden können.

VMWare-Tools entpacken und installieren

Die kopierte Datei kann jetzt entpackt werden:

cd /usr/local/src/
tar -xzf VMwareTools-X.X.X-XXXXXX.tar.gz

so dass der Ordner

drwxr-xr-x  / root root 4,0K 20. Okt 1009  vmware-tools-distrib

entsteht. Zum Installieren in diesen hineinwechseln und das Installationsscript aufrufen

cd vmware-tools-distrib
./vmware-install.pl

Danach werden alle möglichen Fragen zu Installation gestellt, bei denen man die Defaultwerte übernehmen kann. Abkürzen kann man diese Enter-Klickerei durch den Aufruf

./vmware-install.pl -d

da so alles in den Default-Einstellungen installiert wird. Ggf. sollte man sich die Ausgaben dann aber in eine Datei ausgeben lassen, damit nachträglich diese auf Fehler prüfen kann.

Wenn ein X-Server installiert ist, sollte man die Konfiguration von Hand vornehmen, weil hier auch die Auflösung abgefragt wird.

Netzwerk-Module neu laden

Damit auch die schnelleren VMWare-Treiber eingebunden werden, müssen die Netzwerk-Module ggf. noch neu geladen werden. Diese Zeilen werden ganz am Ende der Installation angezeigt:

/etc/init.d/networking stop
rmmod pcnet32
rmmod vmxnet
modprobe vmxnet
/etc/init.d/networking start

warnungHierbei wird das Netzwerk angehalten, so dass eine bestehende SSH-Verbindung unterbrochen wird. Die Befehle können nur über eine lokale oder Fernwartungs-Konsole (IPMI, iLO) ausgeführt werden!

 

Neustart

Zur Sicherheit sollte doch noch einmal ein Neustart erfolgen.

Installation unter Windows

Bei der Installation unter Windows muss einfach über die VMWare-Management-Oberfläche der Link „VMWare-Tools installieren“ angeklickt werden. Danach einfach den automatisch startenden Installationsassistenten durchlaufen lassen und neustarten.

iptables Debug-Modus

Um den Debug-Modus zentral ein- und auszuschalten empfiehlt sich eine Variable:

#!/bin/sh
# Variablen
DEBUG=0
LAN_IFACE="eth0"
...

welche dann später die Chains bestimmt:

#
# Debug-Variable auswerten
#
if [ $DEBUG == 1 ]; then
  ACCEPT="OWNACCEPT"
  DROP="OWNDROP"
else
  ACCEPT="ACCEPT"
  DROP="DROP"
fi

So kann man dann (hier am Beispiel der lokalen Kommunikation) einen Parameter bei der iptables-Konfiguration übergeben:

### Lokale Kommunikation ###
iptables -A INPUT -i lo -j $ACCEPT
iptables -A OUTPUT -o lo -j $ACCEPT

iptables personal firewall

Personal Firewall einrichten

Die angegebenen Werte sind nur Beispiel-Werte und müssen natürlich angepasst werden.

Hier mal eine Beispiel-Konfiguration:

#!/bin/sh
# Variablen
LAN_IFACE="eth0"
LAN_IP="192.168.XXX.XXX"
LAN_NET="192.168.XXX.0/24"
 
# Setzen von Kernelparametern
for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,send_redirects}; do
    echo 0 > $i
done
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
 
### Firewall initialisieren ###
echo "Initialisiere Firewall ..."
iptables -F                                  # Regeln aller Chains löschen
iptables -X                                  # Alle selbst erstellten Chains löschen
iptables -P INPUT DROP                       # Alles was nicht explizit erlaubt ist ...
iptables -P OUTPUT DROP                      # ... wird gedroppt.
iptables -P FORWARD DROP                     #
iptables -Z                                  # Zähler zurücksetzen
iptables -N OWNDROP                          # Eigene Chain für separate Verarbeitung erstellen
iptables -N OWNACCEPT                        # ...
iptables -N SYN-FLOOD                        # DoS-Attacken eingrenzen
 
### Lokale Kommunikation ###
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
 
### Stateful Inspection Regeln ###
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j OWNDROP
iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
 
### Eigene Chains OWNDROP und OWNACCEPT konfigurieren (Logging) ###
iptables -A OWNDROP -j LOG --log-prefix "FW-DROP: "
iptables -A OWNDROP -j DROP
iptables -A OWNACCEPT -j LOG --log-prefix "FW-ACCEPT: "
iptables -A OWNACCEPT -j ACCEPT
 
### Schutz vor Syn-Flooding ###
# limits incoming packets
iptables -A SYN-FLOOD -m limit --limit 10/second --limit-burst 50 -j RETURN
# log attacks
iptables -A SYN-FLOOD -j LOG --log-prefix "SYN flood: "
# silently drop the rest
iptables -A SYN-FLOOD -j DROP
 
### Ports und Dienste nach aussen freischalten ###
# Eingehende SSH-Verbindungen
iptables -A INPUT -p tcp --dport 22 -j OWNACCEPT
# Ausgehende SSH-Verbindungen
iptables -A OUTPUT -p tcp --dport 22 -j OWNACCEPT
# PING
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
# ausgehende DNS-Anfragen
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
# WWW
iptables -A INPUT -p tcp --dport 80 -j OWNACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j OWNACCEPT
iptables -A INPUT -p tcp --dport 443 -j OWNACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j OWNACCEPT
# Mails
iptables -A OUTPUT -p tcp --dport 25 -j OWNACCEPT
iptables -A OUTPUT -p tcp --dport 110 -j OWNACCEPT
iptables -A OUTPUT -p tcp --dport 143 -j OWNACCEPT
# Samba
iptables -A INPUT -p udp -m multiport --destination-port 137,138 -s $LAN_NET -j ACCEPT
iptables -A INPUT -p tcp -m multiport --destination-port 139,445 -s $LAN_NET -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --destination-port 137,138 -d $LAN_NET -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --destination-port 139,445 -d $LAN_NET -j ACCEPT
iptables -A INPUT -p udp --sport 137 -s $LAN_NET -j OWNACCEPT
# NTP
iptables -A INPUT -p udp --dport 123 -s $LAN_NET -j ACCEPT
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
# SNMP
iptables -A INPUT -p udp --dport 161 -s $LAN_NET -j ACCEPT
iptables -A INPUT -p tcp --dport 161 -s $LAN_NET -j ACCEPT
iptables -A OUTPUT -p udp --dport 161 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 161 -j ACCEPT
 
# Protokollierung aller übriggebliebenen Pakete, die verworfen werden
iptables -A INPUT -j LOG --log-prefix "FW-LAST-DROP: "
 
### Fertig ###
echo "Firewall ist konfiguriert und aktiv"

Eigene Logdateien

Log-Präfix einstellen

Damit man die Logs, die iptables erzeugt, vom normalen syslog trennen kann, muss man die Logging-Einträge erst einmal eindeutig kennzeichnen. Dazu am besten eigene Ketten erstellen:

# Eigene Chains MYDROP und MYACCEPT konfigurieren (Logging)
iptables -A OWNDROP -j LOG --log-prefix "FW-DROP: "
iptables -A OWNDROP -j DROP
iptables -A OWNACCEPT -j LOG --log-prefix "FW-ACCEPT: "
iptables -A OWNACCEPT -j ACCEPT

oder die vorhandenen anpassen:

iptables -A DROP -j LOG --log-prefix "FW-DROP: "
iptables -A DROP -j DROP
iptables -A ACCEPT -j LOG --log-prefix "FW-ACCEPT: "
iptables -A ACCEPT -j ACCEPT

Der entsprechende Präfix ist natürlich frei wählbar.

rsyslogd konfigurieren

Jetzt muss man nur noch eine entsprechende Konfigurations-Datei unter /etc/rsyslog.d/iptables.conf anlegen und folgende Zeilen einfügen:

:msg, contains, "FW-ACCEPT: " /var/log/iptables/accept.log
& ~
:msg, contains, "FW-DROP: " /var/log/iptables/drop.log
:msg, contains, "FW-LAST-DROP: " /var/log/iptables/drop.log
& ~

Damit werden alle Einträge die „FW-ACCEPT: „, „FW-DROP: “ oder „FW-LAST-DROP: “ enthalten in separate Logdateien geschrieben. Man muss sich auch keine Gedanken um das Anlegen der Dateien machen. Das erledigt der RSyslog-Daemon bei dem obligatorischen Neustart von alleine:

/etc/init.d/rsyslogd restart

Die letzte Zeile mit dem Inhalt „& ~“ bedeutet, dass diese Nachrichten nicht mehr in das Standard-Log geschrieben werden.

In neueren rsyslog-Versionen ist die Tilde „~“ deprecated, weshalb man sie ersetzen sollte. Die neue Schreibweise sieht so aus:

:msg, contains, "FW-ACCEPT: " /var/log/iptables/accept.log
& stop
:msg, contains, "FW-DROP: " /var/log/iptables/drop.log
:msg, contains, "FW-LAST-DROP: " /var/log/iptables/drop.log
& stop

Logs rotieren

Damit die Logdateien nicht irgendwann die Festplatte zulaufen lassen, sollte auch eine entsprechende logrotate-Konfiguration nicht fehlen. Siehe Logrotate/iptables.

Postfix

Allgemein

Ich bevorzuge Postfix statt Exim. An die Konfiguration habe ich mich gewöhnt und sie ist für mich gut strukturiert.

Benötigte Pakete

Ich installiere die folgenden Pakete (unter Debian), die ggf. noch einige Abhängigkeiten nach sich ziehen:

  • postfix
  • mailx
  • mutt
  • libsasl2-2 libsasl2-modules (nur in Verbindung mit Smarthost)

Zusätzliche Konfiguration

Zusätzlich zur Standard-Konfiguration, die unter Debian bereits bei der Installation angelegt wird, nutze ich meist noch die folgenden Einstellungen:

# Authentifizierung gegen externes Mail-Relay
#SMTP mit SASL-Authentification verwenden
smtp_sasl_auth_enable = yes
#Die Passwort-Datei
smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
#Identifikationsmethode:
smtp_sasl_security_options = noplaintext noanonymous
# Adress-Umsetzungstabelle
sender_canonical_maps = hash:/etc/postfix/sender_canonical

Die Dateien smtp_auth und sender_canonical im postfix-Ordner müssen angelegt und nach allen Änderungen mit

postmap <Konfigurationsdatei>

in das Postfix-Format gebracht werden. Danach ist ein Reload bzw. Restart des Postfix-Dienstes durchzuführen.

smtp_auth

Die Datei wird für die Authentifizierung gegen ein oder mehrere SMTP-Relays genutzt. Für jedes Relay ist eine Zeile mit

<Name-des-Relays> <Anmeldename>:<Passwort>

aufzuführen. Der Name-des-Relays muss genau so geschrieben werden, wie in der main.cf:

relayhost = <Name-des-Relays>

sender_canonical

Die Datei wird für das Umschreiben von Absenderadressen genutzt. Beim Versand über ein Relay ist das Pflicht, weil sonst die lokalen Benutzer als Absenderadresse (root@localhost) abgelehnt werden. Der Aufbau ist wie folgt:

<Alte-Adresse> <Neue-Adresse>
root email@example.com