httpd und ssh immer uptodate

tzzaetaynzz

tzzaetaynzz

Tripel-As
hallo an alle,

ich habe nun httpd und ssh immer am netz, welteit offen.

will ich das risko gehackt zu werden minimieren. logisch.
dazu gehört wohl auch, dass immer das aktuelle, gepatchte rpm fuer httpd und sshd installiert ist.

wie kann ich immer uptodate sein, bei genau diesen beiden rpms?
gibt es mailing listen die ich lesen muß, oder kann ich bei neuen, gepatchten rpms
automatisiert eine installation einleiten?

ps: ich nutze fedora core 5.
 
yum check-update sollte da eigentlich reichen. bei sowas gibt es bei fedora relativ flott updates. du kannst dann ja auch dienste mit yum konfigurieren die automatisch laufen etc...
 
dmaphy schrieb:
yum check-update sollte da eigentlich reichen. bei sowas gibt es bei fedora relativ flott updates. du kannst dann ja auch dienste mit yum konfigurieren die automatisch laufen etc...
Nur mal so angemerkt:
Debian (und viele andere Distributioenen) kennen kein yum.
Dafür gibt es aber der Dist. entsprechende andere Paketmanger.

Gruß Wolfgang
 
fedora wüsste ich nicht, aber so habe ich das mal unter debian gelöst:

jede nacht um 0:00 geht ein CronJob durch, der
apt-get update && apt-get dist-upgrade
ausführt. damit wird jede nacht alles aktualisiert, was es zu aktualisieren gibt.

ich denke unter fedora wird es das auch geben. das stichwort yum habe ich schon gelesen oben ;) gugg dir einfach mal die man-pages an ;)

Gruß
Dom
 
grade weil er geschrieben hat, er verwendet fedora, hab ich ja auch yum erwähnt^^ ;)
 
das war mir klar ;)

Aber es gibt auch debian-user die vll das gleiche problem haben und wenn die dann googln landen die hier ;) Kann doch net schlecht sein, wenn eine lösung für ein anderes linux hier steht ;) und das schema ist das gleiche, nur der befehl muss angepasst werden ;)
 
RodNoc schrieb:
fedora wüsste ich nicht, aber so habe ich das mal unter debian gelöst:

jede nacht um 0:00 geht ein CronJob durch, der
apt-get update && apt-get dist-upgrade
ausführt. damit wird jede nacht alles aktualisiert, was es zu aktualisieren gibt.

ich denke unter fedora wird es das auch geben. das stichwort yum habe ich schon gelesen oben ;) gugg dir einfach mal die man-pages an ;)

Gruß
Dom

Und wer bestaetigt, ob die Updates wirklich installiert werden sollen? Das tut der Cron nicht automatisch. Ich denke, dass daher dein System alles andere als up-to-date sein duerfte. *anmerk*
Ausserdem halte ich es auf produktiven Servern nicht fuer sinnvoll dist-upgrade zu automatisieren. Wenn da mal was schief geht, ist naemlich kein Admin da, der sich sofort darum kuemmern kann. Es gibt nunmal oft genug kleinere Schwierigkeiten, gerade beim dist-upgrade. Was bringt es z.B. einen neuen Kernel zu installieren, wenn niemand den Rechner rebootet. Auch laeuft man Gefahr, dass nach einem Update der glibc das System irgendwann komplett crasht, da ja von den Programmen noch die im RAM vorhandenen Reste der aelteren Version genutzt werden.
Deswegen wird wohl jeder verantwortungsvolle Admin keine dist-upgrade per Cron laufen lassen. Aber wie gesagt, deine funktionieren mit ziemlicher Sicherheit nicht.

Unter yum tut es uebrigens ein
Code:
yum update && yum upgrade
Da kommt nach dem Download aber auch nochmal eine Abfrage, die man mit '-y' automatisieren koennte. Also:
Code:
yum update && yum -y upgrade

Die Option funktioniert uebrigens auch bei apt-get.
Code:
apt-get update && apt-get -y dist-upgrade
 
Zuletzt bearbeitet:
guten morgen.
vielen danke an jeden von euch für die vielen anregungen.
ich werde mal schauen was für mich passt
und berichtet dann, was ich gemacht habe.
 
Das war nicht meine komplette Lösung ;)

Ich habe das alles in eine Log umgeleitet und die mir dann selber per Mail zugeschickt... und mit dem -y habe ich es auch gemacht, das ist klar... hatte es nur vergessen anzugeben.... Es war eigentich alles in Ordnung, denke ich ;)

Achja: Den Server gibt es nciht mehr ;) Und weil ich generell keine automatischen updates mehr mache hatte ich das ganze nicht mehr im Kopf. Ich hab gerne die volle Kontrolle über das ganze system und daher starte ich lieber selber die Updates ;)

Gruß
Dom
 
hallo an alle,

habe eure tips in einem skript verarbeitet,
dass ich nach /etc/cron.hourly kopiert habe
(in der hoffnung, dass es nun stuendlich gestartet wird.)

vielleicht habt ihr noch ein paar anmerkungen?

PHP:
#!/bin/bash

# Emailadressen
EMAIL_ADRESSEN="admin"

# Welche RPM Versionen sind installiert?
HTTPD_INSTALLED=`rpm -qa httpd`
OPENSSHD_INSTALLED=`rpm -qa openssh`

# Sind Updates für openssh und httpd vorhanden?
yum update openssh httpd 2&>1 > /dev/null
yum -y upgrade openssh httpd 2&>1 > /dev/null

# Sind neue RPMs aktualisiert?
HTTPD_UPDATED=`rpm -qa httpd`
OPENSSHD_UPDATED=`rpm -qa openssh`

# Wenn mindestens ein RPM aktualisiert wurde: Mailtext generieren
if [ $HTTPD_INSTALLED != $HTTPD_UPDATED ] || \
        [ $OPENSSHD_INSTALLED != $OPENSSHD_UPDATED ]; then
                AKTUALISIERT="Mindestens ein RPM wurde aktualisiert: $HTTPD_UPDATED oder $OPENSSHD_UPDATED.\n\nDie vorherigen Versionen waren: $HTTPD_INSTALLED und $OPENSSHD_INSTALLED."
fi

# Wenn httpd aktualisiert wurde: Dienst neustarten.
if [ $HTTPD_INSTALLED != $HTTPD_UPDATED ]; then
        service httpd restart 2&>1 /dev/null
                # Wenn der HTTPD nicht gestartet werden konnte: Mailtext generieren.
                if [ $? -gt 0 ]; then
                FEHLSTART_HTTPD="Jedoch konnte der neue HTTPD nicht gestartet werden!"
                fi
fi

# Wenn openssh aktualisiert wurde: Dienst neustarten.
if [ $OPENSSHD_INSTALLED != $OPENSSHD_UPDATED ]; then
        service sshd restart 2&>1 /dev/null
                # Wenn der SSHD nicht gestartet werden konnte: Mailtext generieren.
                if [ $? -gt 0 ]; then
                        FEHLSTART_OPENSSHD="Jedoch konnte der neue SSHD nicht gestartet werden!"
                fi
fi

# Generierten Mailtext senden.
if [ -n "$AKTUALISIERT" ]; then
        # Ergebnisse vie Mail versenden.
        echo -e "$AKTUALISIERT\n\n$FEHLSTART_HTTPD\n$FEHLSTART_OPENSSHD" | \
                mail -s AKTUALISIERT\! $EMAIL_ADRESSEN
fi
 
Hallo,

insgesamt ein schönes Skript. Ein paar Anmerkungen fielen mir dazu ein:

1. Ist das Skript ausführbar?
2. Es ist ein Shell-Skript, kein PHP-Code (*klugscheiss*)
3. Man sollte immer eine PATH-Variable setzen, aus Eindeutigkeits- und Sicherheitsgründen.

4.
Code:
HTTPD_INSTALLED=`rpm -qa httpd`
OPENSSHD_INSTALLED=`rpm -qa openssh`

Hier ist `rpm -q httpd` völlig ausreichend, wenn man den Namen des Packets kennt.

5. Du fragst doppelt ab, ob die Versionen INSTALLED und UPDATED sich unterscheiden, das reicht eigentlich einmal.

Code:
if [ $HTTPD_INSTALLED != $HTTPD_UPDATED ] ; then
    HTTPD_AKTUALISIERT="Der Webserver wurde aktualisiert von Version $HTTPD_INSTALLED auf Version $HTTPD_UPDATED.";
    service httpd restart 2&>1 >/dev/null || FEHLSTART_HTTPD="Jedoch konnte der neue HTTPD nicht gestartet werden";
fi

Bei OPENSSH genauso und dann musst Du halt den Mailtext zum Schluss umbauen.

6. Die Umlenkung in Deinem CODE ist IMHO inkorrekt.

Code:
service httpd restart 2&>1 >/dev/null

legt den Fehlerkanal mit dem Ausgabekanal zusammen und schickt den Ausgabekanal nach /dev/null. Ich nehme an, das wolltest Du.

7. Als Tipp, man kann sowas auch in eines der Logfiles eintragen. Dafür gibt es das Kommano "logger". man logger. Wenn ich als root Updates ausführe, habe ich die auch gerne in den Logs. Beispiel: Am Ende des Skripts:

Code:
PRI="daemon.info"
test "$FEHLSTART_HTTPD" != "" && PRI="daemon.warn"
logger -p $PRI -t AUTO-UPDATE "Das nächtliche Update wurde durchgeführt. $HTTPD_AKTUALISIERT --- $$FEHLSTART_HTTPD"

8. Ein hübscheres Ende ;)
Code:
logger -t AUTO-UPDATE "Das Update wurde beendet";

exit
# end of script

So hast Du im Log zum Ende des Skripts einen sauberen Zeitstempel. Wenn Du das am Anfang auch machst, kannst Du nach Auswertung der Logs sogar sagen, wie lange es gedauert hat.

Gruß
 

Ähnliche Themen

HD Parameter setzen Suse 10.3, lahmer gehts kaum!

Zurück
Oben