Spis treści
AL-ADMIN-S
Informacje o kursie na stronie stronie ALX.
Autorski kurs dla administratorów.
Listingi
Zawartość katalogu /etc komputera wykładowcy.
-
LDAP
-
Samba
-
Uaktualnienie z 2009.05.24: samba.2009.05.24.tar.gz
-
OpenVPN/IPSec vpn.tar.gz
-
Monitoring: Nagios, Munin nagios.tar.gz munin.tar.gz
-
Monitoring 2009.10.19-20 - tu jest dużo listingów do Nagios-a, oraz informacje przydatne przy wdrożeniach w środowisku Windows.
-
-
NFS nfs.tar.gz
-
Poczta:
-
exim4, sa-exim, dovecot poczta.tar.gz
-
Poczta 2009.05.10 exim4.tar.bz2,
-
Poczta 2009.06.09 2009-06-09-poczta.1.tar.bz2
-
-
XEN xen.tar.gz
-
Linux-Vserver
-
Bacula bacula.tar.bz2
System do ćwiczeń
Systemy do kursów są teraz na stronie głównej.
Monitoring - Nagios
Proste skrypty do monitorowania dysków.
smart.sh
#!/bin/bash set -o pipefail CT=`/usr/sbin/smartctl -a /dev/sda | grep Reallocated_Sector_Ct | awk '{print $10}'` if [ $? -ne 0 ] then echo "UNKNOWN: SMART nie dziala" exit 3 fi if [ "$CT" -gt 0 ] then echo "CRITICAL: Uszkodzone sektory: $CT" exit 2 fi echo "OK: $CT uszkodzonych sektorow" exit 0
temp.sh: (to samo, ale inny atrybut)
#!/bin/bash set -o pipefail TEMP=`/usr/sbin/smartctl -a /dev/sda | grep Temperature_Celsius | awk '{print $10}'` if [ $? -ne 0 ] then echo "UNKNOWN: SMART nie dziala" exit 3 fi if [ "$TEMP" -gt 40 ] then echo "CRITICAL: Temperatura dysku zbyt wysoka" exit 2 fi echo "OK: Temperatura $TEMP" exit 0
Konfigurajca sudo; /etc/sudoers:
nagios ALL=(root) NOPASSWD:/usr/local/bin/smart.sh nagios ALL=(root) NOPASSWD:/usr/local/bin/temp.sh
Konfiguracja nrpe.cfg: (tylko kluczowe dyrektywy)
command[check_users]=/usr/lib/nagios/plugins/check_users -w 10 -c 20 command[check_load]=/usr/lib/nagios/plugins/check_load -w 15,10,5 -c 30,25,20 command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 10% -c 3% command[check_zombie_procs]=/usr/lib/nagios/plugins/check_procs -w 5 -c 10 -s Z command[check_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 500 command[check_smart]=/usr/bin/sudo /usr/local/bin/smart.sh command[check_temp]=/usr/bin/sudo /usr/local/bin/temp.sh command[check_ntp]=LANG=C /usr/lib/nagios/plugins/check_ntp_time -H ntp.fiok.pl -w 0.5 -c 1 #command[check_raid]=/usr/lib/nagios/plugins/check_linux_raid command[check_raid]=/usr/lib/nagios/plugins/check_dummy 0 "Tu nie ma raida." command[check_mail]=/usr/lib/nagios/plugins/check_mailq -w 200 -c 500
Drukarka
Sprawdzamy poziom tonera.
Drukarka to: HP4350 z printserwerem. Na stronie www jest stan tonera:
Źródło strony:
Możemy analizować na przykład następującym skryptem:
#!/bin/bash set -o pipefail CT=`wget -O - http://10.0.3.48/hp/device/this.LCDispatcher 2> /dev/null | grep "^Black Cartridge" | sed -e "s/^Black Cartridge\( \)*\([[:digit:]]*\)%<br \/>$/\2/"` if [ $? -ne 0 ] then echo "UNKNOWN: Nie mozna odczytac" exit 3 fi if [ "$CT" -le 4 ] then echo "CRITICAL: Zostalo $CT%, zamow toner" exit 2 fi echo "OK: Zostalo $CT%" exit 0
Po stronie nagios-a drukarka jest hostem monitorowanym pasywnie, na której jest dodana usługa TONER (też pasywna). Konfiguracja wygląda tak: /etc/nagios3/conf.d/drukarka.cfg
define host { host_name HP4350 use passive-host } define service { host_name HP4350 service_description TONER use passive-service }
Skrypt uruchamiany z cron-a co 5 minut:
#!/bin/bash set -o pipefail WYNIK=$(/usr/lib/nagios/plugins/check_http -H 10.0.3.48 -p 631) KOM="HP4350\t$?\t$WYNIK\n" WYNIK=$(/usr/local/bin/printer.sh) KOM="${KOM}HP4350\tTONER\t$?\t$WYNIK\n" echo -e "$KOM" | /usr/sbin/send_nsca -H 10.0.2.122 -c /etc/send_nsca.cfg > /dev/null
Sprawdzamy, czy host działa łącząc się na port 631 (ipp).
Wrapper NSCA
Przykładowy skrypt, który pozwala przerobić dowolny skrypt, lub wtyczkę używaną z NRPE do pracy z NSCA.
#!/bin/bash set -o pipefail WYNIK=$(/usr/local/bin/printer.sh) echo -e "localhost\tTEST\t$?\t$WYNIK" | /usr/sbin/send_nsca -H 10.0.2.122 -c /etc/send_nsca.cfg > /dev/null
Definicje: hosta i usługi monitorowanych pasywnie
define command { command_name check-dummy command_line /usr/lib/nagios/plugins/check_dummy $ARG1$ } define host{ name passive-host use generic-host active_checks_enabled 0 passive_checks_enabled 1 check_freshness 1 freshness_threshold 660 check_command check-dummy!3 "Host nie raportuje." max_check_attempts 1 register 0 } define service{ name passive-service use generic-service active_checks_enabled 0 passive_checks_enabled 1 check_freshness 1 freshness_threshold 660 max_check_attempts 1 register 0 check_command check-dummy!3 "Nie dziala zdalne raportowanie" }
Monitorowanie portów na switchu
Na przykładzie starego switcha 3com SUPER STACK 1100. Wysyłanie komunikatów SNMP Trap skonfigurowane w następujący sposób:
Konfiguracja snmpdtapd do odbioru komunikatów: (/etc/snmp/snmptrapd.conf)
snmpTrapdAddr 10.0.2.122 authCommunity log,execute monitor
traphandle IF-MIB::linkDown /usr/local/bin/trap.sh down traphandle IF-MIB::linkUp /usr/local/bin/trap.sh up
W Debianie 5.0 należy jeszcze włączyć uruchamianie snmptrapd przy starcie: (/etc/default/snmpd)
TRAPDRUN=yes
Skrypt obsługujący komunikaty: (usr/local/bin/trap.sh)
#!/bin/bash read HOST read IP while read oid val; do if echo $oid | grep "IF-MIB::ifIndex" > /dev/null ; then PORT=${val:1} fi done if [ "$1" == "up" ]; then STATUS=0 else STATUS=2 fi #logger "TRAP *************************************** $HOST $1 $STATUS $cos" echo -e "${HOST}\tPORT-${PORT}\t${STATUS}\tPORT-${PORT} : $1\n" | /usr/sbin/send_nsca -H 10.0.2.122 -c /etc/send_nsca.cfg > /dev/null
Nagios ma zdefiniowany host, odpowiednie usługi oraz komendę do sprawdzania switcha: (/etc/nagios3/conf.d/snmp.cfg)
define command { command_name check-snmp-link command_line /usr/lib/nagios/plugins/check_snmp -H 10.0.2.250 -o IF-MIB::ifOperStatus.$ARG1$ -C public -P 1 -s "up(1)" } define host { host_name 3com address 10.0.2.250 use generic-host } define service { host_name 3com service_description PORT-14 check_command check-snmp-link!114 use generic-service } define service { host_name 3com service_description PORT-13 check_command check-snmp-link!113 use generic-service } #itd... kolejne porty
Porty na switchu są monitorowane synchronicznie (przez komendę check-snmp-link). Oprócz tego, nagios jest informowany asynchronicznie (NSCA) w momencie, gdy zostanie odebrany komunikat SNMP Trap o zmianie stanu na danym porcie.
MRTG - ruch wychodzący do Internetu
Problem: Chcemy zmierzyć ile danych jest wysyłanych przez nasz serwer na zewnątrz (do Internetu), ale urządzenie znajduje się w DMZ-cie lub w sieci lokalnej. Nie możemy po prostu mierzyć ruchu wychodzącego przez ethX, bo wpadnie tam też ruch do LAN-u/DMZ-tu.
Rozwiązanie (jedno z wielu oczywiście):
Dodajemy następujące reguły iptables:
iptables -t mangle -I POSTROUTING -d ! 10.0.2.0/24 iptables -t mangle -I POSTROUTING 2 -d 127.0.0.1
Nie mają celu (-j …), będą tylko aktualizowały liczniki (dostępne po wydaniu polecenia: iptables -t mangle -S -v lub iptables -t mangle -L -v).
Pierwsza reguła wyłapuje wszystkie pakiety wychodzące do sieci innej niż LAN/DMZ (w przykładzie 10.0.2.0/24). Do tej kategorii trafiają też pakiety wysyłane na adres 127.0.0.1, które wyłapuje druga reguła. Wystarczy wydobyć z nich liczniki bajtów i odjąć pierwszą wartość od drugiej, co robi następujący skrypt: licznik.sh
#!/bin/bash # REG1="\-A POSTROUTING -d ! 10.0.2.0/24" REG2="\-A POSTROUTING -d 127.0.0.1" REG_NIE_LAN=$( iptables -t mangle -S POSTROUTING -v | grep "$REG1" ) REG_LO=$( iptables -t mangle -S POSTROUTING -v | grep "$REG2" ) BAJTY_NIE_LAN=$( echo "$REG_NIE_LAN" | awk '{ print $NF }') BAJTY_LO=$( echo "$REG_LO" | awk '{ print $NF }') BAJTY=$(( $BAJTY_NIE_LAN - $BAJTY_LO )) echo $BAJTY echo 0 echo "Ruch wychodzacy" echo "Lokalny"
Na koniec konfiguracja MRTG do rysowania wykresu: /etc/mrtg.cfg:
Target[moj]: `/usr/local/bin/licznik.sh` Title[moj]: "Ruch na zewnatrz" Options[moj]: growright MaxBytes[moj]: 12500000 PageTop[moj]: <h1>Ruch na interfejsie</h1>
XEN
-
Plik konfiguracyjny domeny z Windows (konkretnie Windows 2003 SBS)
-
Sterownik dla systemów Windows (XP, 2003, Vista, 2008, 7) umożliwiający korzystanie z urządzeń dostarczanych przez XEN-a (a nie tylko emulowanych).
-
Opis: wiki.xensource.com/xenwiki/XenWindowsGplPv
-
Pliki do ściągnięcia: meadowcourt.org/downloads
Kopie zapasowe
-
Skrypt rdiff-backup - przykładowy skrypt, który wykonuje kopię zapasową i kasuje pliki starsze niż miesiąc.
-
Opis konfiguracji SSH tak, żeby możliwe było tylko korzystanie z rdiff-backup a nie logowanie.
Replikacja MySQL
Master → Slave
Konfiguracja opisana jest tu: replikacja_mysql
Poczta w bazie SQL
Stosowana niekiedy konfiguracja polegająca na przechowywaniu wszystkich informacji o użytkownikach w bazie SQL, niepowiązanej z systemowymi mechanizmami autoryzacji.
Użytkownik poczty jest jedynie wpisem (rekordem) w bazie danych, a nie kontem systemowym. Cała poczta jest przechowywana jako pliki należące do jednego użytkownika systemowego.
-
Struktura bazy danych core.sql
-
Plik konfiguracujny Exim-a exim-sql.conf
-
Pliki konfiguracujne Dovecot-a dovecot-sql.conf dovecot.conf
Dla większej czytelności pliki mają usunięte komentarze.
Jako ćwiczenie do wykonania samodzielnie pozostawiam sprawdzenie, co się stanie jeżeli spróbujemy autoryzować się (SMTP AUTH) jako dowolny użytkownik z pustym hasłem.
Poczta w bazie SQLite
Amavis-new
To jest stare i nieuaktualniane - amavis nie powinien być używany, ponieważ istnieją lepsze metody konfiguracji filtra antyspamowego i antywirusowego. Chyba, że bardzo chcemy używać jednego z komercyjnych programów antywirusowych dostępnych pod Linuksa - wtedy jest to najprostsza metoda.
Stare listingi Amavis-a. Jak skonfigurować amavis-a, jak podłączyć go to exima i postfix-a. amavis.tgz
Przykładowa próbka maili do uczenia filtrów Bayes-owskich
Nadaje się tylko do testów, nie należy używać w zastosowaniach produkcyjnych. poczta.tar.bz2
SAMBA + LDAP
samba-vscan
Lokalne kopie plików do kompilacji modułu vscan-clamav:
LDAP Browser/Editor
Znakomita aplikacja do przeglądania/edycji katalogu.
-
albo: w wyszukiwarce wpisujemy "ldap browser"
-
albo: od razu wchodzimy tu:
mcs.anl.gov/~gawor/ldap/niestety, wygląda na to, że ten adres już nie działa, można pobrać lokalną kopię.
Należy rozpakować, wejść do katalogu i uruchomić:
java -jar lbe.jar
W Windowsie, z dobrze skonfigurowaną javą - wystarczy dwuklik.
Korzystanie z katalogu LDAP na serwerze Windows 2008 (Standard)
Zdalne wyłączanie komputera z Windows
net rpc -U administrator%admin -I 10.0.3.9 shutdown -C "Komunikat do logow" -t 30
-
-U użytkownik%hasło
-
-I adres IP
-
-t opóźnienie w sekundach
Wyłączenie można anulować, wysyłając abortshutdown zamiast shutdown, lub z linii komend w Windowsie:
shutdown -a
Dodawanie Windows 7 do domeny
Windows 7 wymaga następujących dodatkowych wpisów w rejestrze.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters] "DomainCompatibilityMode"=dword:00000001 "DNSNameResolutionRequired"=dword:00000000