26 Wrz

Bash Vulnerability CVE-2014-6271 „ShellShock” and CVE-2014-7169

Bash Vulnerability CVE-2014-6271 „ShellShock”

Szybkiej weryfikacji podatności dokonujemy korzystając z polecenia:

$ env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
Bash is vulnerable!
Bash Test

…słowo „vulnerable” w wyniku oznacza, że jesteśmy podatni na zagrożenie CVE-2014-6271 [powyższy wynik]

bash: warning: VAR: ignoring function definition attempt
bash: error importing function definition for `VAR'
Bash Test

Powyższy wynik otrzymamy w momencie brak podatności naszego systemu.

Jeżeli niestety okazało sie, że jestesmy podatni, powinniśmy jak najszybciej wgrać patch do basha:
1. Ubuntu/ Debian [apt-get]

sudo apt-get update && sudo apt-get install --only-upgrade bash

2. Red Hat, Fedora, CentOS [yum]

sudo yum update bash

W celu sprawdzenia swoich serwerów polecam skorzystać ze strony bashsmash.ccsir.org, gdzie istnieje możliwość wysłania specjalnie spreparowanego nagłówka.

Warto przyjrzeć się także narzędziu shellshock.brandonpotter.com, które weryfikuje możliwość uruchomienia komend curl, wget.

Szczegóły dotyczące podatności znajdują się w bazie NVD: nvd.nist.gov

W chwili pisania tego artykułu vendorzy tacy jak Cisco, Fortinet czy Paloalto udostepnili sygnatury do swoich IPsów.


Niestety update basha nie chroni nas do końca, nowa podatność nosi numer CVE-2014-7169. Test podatności wykonujemy komendą:

$ env var='() {(a)=>\' bash -c "echo date"; cat echo  

…w wyniku czego powiniśmy otrzymać (po załataniu basha dla CVE-2014-6271)

bash: var: line 1: syntax error near unexpected token `='
bash: var: line 1: `'
bash: error importing function definition for `var'
Thu Sep 27 17:30:32 EDT 2014

 

17 Wrz

Instalacja i konfiguracja MNTOS

Instalacja i konfiguracja  MNTOS – Multi Nagios Tactical Overview System

…czyli system do przeglądu wszystkich dostępnych nagiosów. Skrypt pozwala nam na bardzo ogólne zebranie informacji o wszystkich nagiosach, które używamy do monitoringu sieci. Skrypt szczególnie polecam dla osób chcących ogarnąć w jednym miejscu wszystkie nagiosy

1. Instalacja skryptu MNTOS

Pobieranie i instalacja skryptu z odpowiednimi uprawnieniami

wget http://assets.nagios.com/downloads/nagiosxi/scripts/NagiosXI-MNTOS-install.sh

…wykonywanie skryptu z odpowiednimi uprawnieniami

chmod +x NagiosXI-MNTOS-install.sh<br />chown -R nagios:apache .

…dodatkowo warto zainstalować pakiety, które mogą się przydać do prawidłowego działania skryptu:

yum install -y php-xsl

…lub jeżeli używamy php53

yum install -y php53-xml

…wykonywanie skryptu do katalogu /opt/ W tym momencie skrypt przeprowadzi nas przez cały proces konfiguracji, począwszy od osób kontaktowych po monitorowane nagiosy. Do pełnej konfiguracji niezbędne będą takie informacje jak: nazwa użytkownika i hasło do interfejsu webowego oraz adresy IP nagiosów.

./NagiosXI-MNTOS-install.sh

2. Konfiguracja

W celu dodania lub zmodyfikowania osób kontaktowych lub informacji o nagiosach wystarczy wprowadzić drobne zmiany w plikach contacts.ini oraz networks.ini znajdujących się w katalogu /opt/mntos-1.0/

…definicja osób kontaktowych znajduje się w pliku contact.ini

[Pawel]
id=1
name="Pawel Nowak"
address="Zalotowa 12"
zipcode="50-123"
city="Warszawa"
country="PL"
email="pawel@localhost.localdomain"
privatephone="999-999-999"
profession=""

[Jacek]
id=2<br />name="Jacek Donosny"
address="Morska 12"
zipcode="23-234"
city="Watrszawa"
country="PL"
email="jacek@localhost.localdomain"
privatephone="000-000-000"
profession=""

…konfiguracja nagiosów znajduje się w pliku networks.ini

[NagiosWewnetrzny]
id=1
location="NagiosWewnetrzny"
network="NagiosWewnetrzny"
nagios="http://nagiosadmin: admin_password@192.168.1.1/nagios/cgi-bin/tac.cgi"
public="http://192.168.1.1/nagios/"<br />contacts=1,2<br />icon="img/globe.png"

[NagiosZewnetrzny]
id=2
location="NagiosZewnetrzny"
network="NagiosZewnetrzny"
nagios="http://nagiosadmin: admin_password@192.168.1.2/nagios/cgi-bin/tac.cgi"
public="http://192.168.1.2/nagios/"
contacts=2
icon="img/globe.png"

3. Aktualizacja konfiguracji

…podczas każdej zmiany konfiguracji należy wykonać polecenie

/usr/bin/php /opt/mntos-1.0/mntos.php

…jeżeli cały konfig jest OK, tworzymy cron

crontab -e

…w efekcie uzyskamy efekt podobny do:

 mntos_test
17 Wrz

Typowe błędy występujące w nagiosie

1. „Error: Invalid max_check_attempts value for host”

Błąd ten dotyczy braku zdefiniowania wartości max_check_attemps dla danego hosta.

[root@localhost objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios Core 3.5.1
Copyright (c) 2009-2011 Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 08-30-2013
License: GPL

Website: http://www.nagios.org
Reading configuration data...
 Read main config file okay...
Processing object config file '/usr/local/nagios/etc/objects/commands.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/contacts.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/timeperiods.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/templates.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/localhost.cfg'...
Processing object config file '/usr/local/nagios/etc/objects/serwery_www.cfg'...
Error: Invalid max_check_attempts value for host 'www.onet.pl'
Error: Could not register host (config file '/usr/local/nagios/etc/objects/serwery_www.cfg', starting on line 1)
 Error processing object config files!

***> One or more problems was encountered while processing the config files...

Check your configuration file(s) to ensure that they contain valid
 directives and data defintions. If you are upgrading from a previous
 version of Nagios, you should be aware that some variables/definitions
 may have been removed or modified in this version. Make sure to read
 the HTML documentation regarding the config files, as well as the
 'Whats New' section to find out what has changed.

…w celu usunięcia błędu należy dodać tą wartość do definicji hosta (12 linia poniższego przykładu) w pliku /usr/local/nagios/objects/templates.cfg

define host{
 name generic-host
 notifications_enabled 1
 event_handler_enabled 1
 flap_detection_enabled 1
 failure_prediction_enabled 1
 process_perf_data 1
 retain_status_information 1
 retain_nonstatus_information 1
 notification_period 24x7
 register 0
 max_check_attempts 10
 }

2. „Return code of 127 is out of bounds – plugin may be missing”

W 99,9% przypadków problem dotyczy braku wtyczek. Pierwszym krokiem jest sprawdzenie obecności używanej wtyczki w katalogu /usr/local/nagios/libexec/. W przypadku jej braku należy ją doinstalować. Poniżej widok katalogu zaraz po instalacji wtyczek.


[root@localhost libexec]# ls -l
total 3856
-rwxr-xr-x. 1 nagios nagcmd 91298 Sep 17 13:57 check_apt
-rwxr-xr-x. 1 nagios nagcmd 2254 Sep 17 13:57 check_breeze
-rwxr-xr-x. 1 nagios nagcmd 104660 Sep 17 13:57 check_by_ssh
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_clamd -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 68130 Sep 17 13:57 check_cluster
-r-sr-xr-x. 1 root nagcmd 99457 Sep 17 13:57 check_dhcp
-rwxr-xr-x. 1 nagios nagcmd 99258 Sep 17 13:57 check_dig
-rwxr-xr-x. 1 nagios nagcmd 128713 Sep 17 13:57 check_disk
-rwxr-xr-x. 1 nagios nagcmd 9148 Sep 17 13:57 check_disk_smb
-rwxr-xr-x. 1 nagios nagcmd 107151 Sep 17 13:57 check_dns
-rwxr-xr-x. 1 nagios nagcmd 63703 Sep 17 13:57 check_dummy
-rwxr-xr-x. 1 nagios nagcmd 3056 Sep 17 13:57 check_file_age
-rwxr-xr-x. 1 nagios nagcmd 6318 Sep 17 13:57 check_flexlm
-rwxr-xr-x. 1 nagios nagcmd 102970 Sep 17 13:57 check_fping
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_ftp -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 86681 Sep 17 13:57 check_game
-rwxr-xr-x. 1 nagios nagcmd 101201 Sep 17 13:57 check_hpjd
-rwxr-xr-x. 1 nagios nagcmd 217421 Sep 17 13:57 check_http
-r-sr-xr-x. 1 root nagcmd 108803 Sep 17 13:57 check_icmp
-rwxr-xr-x. 1 nagios nagcmd 74078 Sep 17 13:57 check_ide_smart
-rwxr-xr-x. 1 nagios nagcmd 15137 Sep 17 13:57 check_ifoperstatus
-rwxr-xr-x. 1 nagios nagcmd 12601 Sep 17 13:57 check_ifstatus
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_imap -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 6890 Sep 17 13:57 check_ircd
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_jabber -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 85931 Sep 17 13:57 check_load
-rwxr-xr-x. 1 nagios nagcmd 6020 Sep 17 13:57 check_log
-rwxr-xr-x. 1 nagios nagcmd 20287 Sep 17 13:57 check_mailq
-rwxr-xr-x. 1 nagios nagcmd 74570 Sep 17 13:57 check_mrtg
-rwxr-xr-x. 1 nagios nagcmd 73453 Sep 17 13:57 check_mrtgtraf
-rwxr-xr-x. 1 nagios nagcmd 86076 Sep 17 13:57 check_nagios
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_nntp -> check_tcp
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_nntps -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 103025 Sep 17 13:57 check_nt
-rwxr-xr-x. 1 nagios nagcmd 103087 Sep 17 13:57 check_ntp
-rwxr-xr-x. 1 nagios nagcmd 96073 Sep 17 13:57 check_ntp_peer
-rwxr-xr-x. 1 nagios nagcmd 93237 Sep 17 13:57 check_ntp_time
-rwxr-xr-x. 1 nagios nagcmd 129446 Sep 17 13:57 check_nwstat
-rwxr-xr-x. 1 nagios nagcmd 8324 Sep 17 13:57 check_oracle
-rwxr-xr-x. 1 nagios nagcmd 86748 Sep 17 13:57 check_overcr
-rwxr-xr-x. 1 nagios nagcmd 107891 Sep 17 13:57 check_ping
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_pop -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 108119 Sep 17 13:57 check_procs
-rwxr-xr-x. 1 nagios nagcmd 84038 Sep 17 13:57 check_real
-rwxr-xr-x. 1 nagios nagcmd 9584 Sep 17 13:57 check_rpc
-rwxr-xr-x. 1 nagios nagcmd 1412 Sep 17 13:57 check_sensors
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_simap -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 155669 Sep 17 13:57 check_smtp
-rwxr-xr-x. 1 nagios nagcmd 155382 Sep 17 13:57 check_snmp
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_spop -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 82120 Sep 17 13:57 check_ssh
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_ssmtp -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 88211 Sep 17 13:57 check_swap
-rwxr-xr-x. 1 nagios nagcmd 134741 Sep 17 13:57 check_tcp
-rwxr-xr-x. 1 nagios nagcmd 83976 Sep 17 13:57 check_time
lrwxrwxrwx. 1 root root 9 Sep 17 13:57 check_udp -> check_tcp
-rwxr-xr-x. 1 nagios nagcmd 95152 Sep 17 13:57 check_ups
-rwxr-xr-x. 1 nagios nagcmd 66150 Sep 17 13:57 check_users
-rwxr-xr-x. 1 nagios nagcmd 2939 Sep 17 13:57 check_wave
-rwxr-xr-x. 1 nagios nagcmd 88261 Sep 17 13:57 negate
-rwxr-xr-x. 1 nagios nagcmd 82350 Sep 17 13:57 urlize
-rwxr-xr-x. 1 nagios nagcmd 1939 Sep 17 13:57 utils.pm
-rwxr-xr-x. 1 nagios nagcmd 2728 Sep 17 13:57 utils.sh

3. Serwer Apache działa, konfiguracja jest poprawna – brak dostępu do nagiosa

W takiej sytuacji warto sprawdzić konfigurację firewalla:


[root@localhost mntos-1.0]# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

…należy wyłączyć profilaktycznie firewalla poleceniem. Jeżeli to pomoże musimy dodać odpowiednią regułę do firewalla przepuszczającą nagiosa.

service iptables stop

4. „Error: Could not read host and service status information!”

…w trakcie opisu

nagios_error

16 Wrz

Instalacja i konfiguracja Nagiosa na CentOS, Fedora

Instalacja Nagiosa Core sprowadza się zaledwie do kilkunastu kroków.

1. Przygotowanie systemu

  • Instalacja niezbędnych paczek takich jakł Apache, PHP, GCC compiler, GD Development libraries. Paczki instalujemy korzystając z wbudowanego w CentOS (…i RedHat, Fedore) menadżera paczek: yum
yum install httpd php
yum install gcc glibc glibc-common
yum install gd gd-devel

2. Konta użytkowników

  • zmieniamy się w użytkownika root
su -l
  • zakładamy konto użytkownika i nadajemy mu hasło
/usr/sbin/useradd -m nagios
passwd nagios
  • zakładamy nową grupę zezwalającą na dostęp do interfejsu web nagiosa
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache

3. Pobieranie nagiosa i pluginów

  • Tworzymy katalog, gdzie zostanie pobrany nagios:
mkdir ~/download_nagios
cd ~/download_nagios
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz

4. Kompilacja i instalacja nagiosa

  • rozpakowujemy nagiosa do stworzonego wcześniej katalogu
cd ~/download_nagios
tar xzf nagios-3.5.1.tar.gz
cd nagios
  • wykonywanie skryptu nagiosa dla wcześniej utworzonej grupy
./configure --with-command-group=nagcmd
  • kompilacja źródeł nagiosa oraz instalacja plików binarnych skryptów, przykładowych konfiguracji
make all
make install
make install-init
make install-config
make install-commandmode

5. Dostosowanie konfiguracji

  • przykładowe konfiguracje zostały zainstalowane w katalogu /usr/local/nagios/etc
  • edytujemy plik contacts.cfg w celu określenia osób otrzymujących powiadomienia z nagiosa
nano /usr/local/nagios/etc/objects/contacts.cfg

6. Konfiguracja interfejsu webowego

  • instalacja pliku konfiguracyjnego nagiosa w katalogu conf.d serwera Apache
make install-webconf
  • tworzenie konta umożliwiającego na dostęp przez interfejs webowy
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  • restart serwera Apache
service httpd restart

7. Kompilacja i instalacja pluginów nagiosa

  • rozpakowanie pluginów
cd ~/downloads
tar xzf nagios-plugins-1.4.16.tar.gz
cd nagios-plugins-1.4.16
  • kompilacja i instalacja pluginów
./configure --with-nagios-user=nagios --with-nagios-group=nagcmd
make
make install

8. Uruchamianie Nagiosa

  • Uruchamianie Nagiosa przy każdym starcie systemu
chkconfig --add nagios
chkconfig nagios on
  • Weryfikacja konfiguracji nagiosa przed restartem usługi
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  • jeżeli system nie wyrzucił błędów możemy bezpiecznie uruchomić nagiosa
service nagios start

9. Modyfikacja ustawień SELinux

  • W systemie CentOS standardowo jest uruchomiona usługa SELinux (Security Enhanced Linux) w trybie enforce. Jeżeli podczas próby uzyskania dostępu co CGI Nagiosa otrzymamy komunikat „Internal Server Error” będzie to oznaczało, że usługa jest aktywna. Status usługi można sprawdzić poleceniem:
getenforce
  • W celu zmiany trybu na Permissive wprowadzamy:
setenforce 0
  • Aby zmienić ustawienia na stałe należy dokonać modyfikacji w pliku in/etc/selinux/config oraz zrestartować Nagiosa.Instead of disabling SELinux or setting it to permissive mode, you can use the following command to run the CGIs under SELinux enforcing/targeted mode:
  • Zamiast wyłączać SELinuxlub lub ustawiać go w tryb permissive można użyć następującego polecenia, do uruchamiania skryptów CGI spod SELinux enforcing/targeted
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/

10. Logowanie do interfejsu Webowego

  • W celu uruchomienia nagiosa wystraczy w przeglądarce otworzyć:
http://localhost/nagios/
23 Cze

Instalacja SpeedTest Mini na Debianie Wheezy

Czasami przychodzą nam do głowy dziwne rzeczy, jedną z nich była chęć posiadania własnego testera prędkości łącza i tak trafiło na SpeedTest Mini, który działa na takiej samej zasadzie jak SpeedTest.net. SpeedTest Mini jest darmowy, ma to też swoje minusy, którymi są brak jej wsparcia a instalacja odbywa się na własne ryzyko.  Więcej informacji można znaleźć tutaj. Przejdźmy do konkretów, instalacja ST jest bardzo prosta i sprowadza się zaledwie do kilku kroków:

1. Odwiedzamy główny katalog naszego serwera www

#cd /var/www/html/

2. Kolejno wystarczy pobrać SpeedTest Mini poleceniem wget

# wget http://c.speedtest.net/mini/mini.zip

3. W następnym kroku rozpakowujemy SpeedTest Mini

# unzip mini.zip

4. Zmieniamy nazwę pliku w zależności od tego na jakim serwerze chcemy używać SpeedTest (PHP, ASP.NET, ASP lub JSP.) Zmian dokonujemy na jednym z plików: index-asp.html, index-aspx.html, indes-jsp.html, index-php.html. Pozostałe można usunąć.

# mv index-php.html index.html

5. Na sam koniec resetujemy serwer http

# service httpd restart

Od tej pory możemy cieszyć się własnym testerem prędkości łącza

Przykład działania SpeedTest Mini - www.jottingIT.net/speedtest/