Informacje o kursie na stronie stronie ALX.
Autorski kurs dla administratorów.
Zawartość katalogu /etc komputera wykładowcy.
Systemy do kursów są teraz na stronie głównej.
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
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).
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
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" }
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.
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>
Master → Slave
Konfiguracja opisana jest tu: replikacja_mysql
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.
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.
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
Nadaje się tylko do testów, nie należy używać w zastosowaniach produkcyjnych. poczta.tar.bz2
Lokalne kopie plików do kompilacji modułu vscan-clamav:
Znakomita aplikacja do przeglądania/edycji katalogu.
Należy rozpakować, wejść do katalogu i uruchomić:
java -jar lbe.jar
W Windowsie, z dobrze skonfigurowaną javą - wystarczy dwuklik.
net rpc -U administrator%admin -I 10.0.3.9 shutdown -C "Komunikat do logow" -t 30
Wyłączenie można anulować, wysyłając abortshutdown zamiast shutdown, lub z linii komend w Windowsie:
shutdown -a
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