Installing Cacti on Tomato router

First, you need a router with Tomato USB firmware, then you need optware, installation instructions can be found from here:

http://uk.nyclee.net/2012/04/28/installing-optware-in-tomato-usb-shibby/

Installing needed packages

# ipkg-opt install php php-fcgi php-mysql php-mssql mysql ncursesw libuclibc++ net-snmp rrdtool lighttpd

Downloading cacti

# cd /opt/share/www
# wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
# tar zxf cacti-0.8.8a.tar.gz
# rm cacti-0.8.8a.tar.gz
# ln -s cacti-0.8.8a cacti

Configuring mySQL

# mysql

> SET PASSWORD FOR root@localhost = PASSWORD(‘PWDforR00t’);

Remove example database

> DROP DATABASE test;

Create database for cacti

> CREATE DATABASE cacti;
> QUIT

import cacti database tables

# mysql -p cacti < /opt/share/www/cacti/cacti.sql

set user rights

# mysql -p

> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY ‘PWDforC4ct1’;
> FLUSH PRIVILEGES;
> QUIT

Configure cacti

# vi /opt/share/www/cacti/include/config.php

set the mySQL connection info correct
set the directory information correct

Add cactiuser

# adduser cactiuser -D –H  
# cat /etc/passwd
# tail -1 /etc/passwd > /etc/passwd.custom
# nvram setfile2nvram /etc/passwd.custom
# commit
# chown -R cactiuser /opt/share/www/cacti/rra/ /opt/share/www/cacti/log/
# create a poller_helper.sh script
# vi /opt/scripts/poller_helper.sh

#!/bin/sh
cd /opt/share/www/cacti
php poller.php

Go to tomato web interface / Administrator / Scheduler add following to be done every 5 minutes

su cactiuser /opt/scripts/poller_helper.sh > /dev/null 2>&1

Go to the cacti web interface http://tomato/cacti/install/

Correct all paths for binaries

RRDtool
  /opt/bin/rrdtool

PHP
  /opt/bin/php

SNMPWALK
  /opt/bin/snmpwalk

SNMPGET
  /opt/bin/snmpget

SNMPBULKWALK
  /opt/bin/snmpbulkwalk

SNMPGETNEXT
  /opt/bin/snmpgetnext

and you are done! Go ahead start working with Cacti

Etätöistä

Etätyöskentely on mielestäni konttorityöskentelyä hurjasti tehokkaampaan. Olen ollut tätä mieltä vuosia, sainhan tehdä 3 vuotta lähes 100% etätyötä ennen kuin jouduin takaisin kuutioon töitä tekemään. Tämä tehokkuusero kävi rankasti ilmi muutama päivä sitten. Minun pitää tällä hetkellä lukea läpi dokkareita, miettiä sen sisällön logiikkaa, korjata ja kehittää sitä eteenpäin. Sen jälkeen dokkari menee muiden kirjoitettavaksi ja palaa taas takaisin minulle (ja muille luettavaksi sekä kommentoitavaksi). Dokkarin lukemiseen konttorilla meni koko päivä, itseasiassa dokkari tuli luettua huonosti ja osissa, koska muut työntekijät tulivat puhumaan minulle asiasta X tai Y, riippumatta siitä kuinka ankarasti koitin olla saavuttamattomissa työpisteelläni. Kotona, etätöitä tehdessä, dokkari oli käsitelty tunnissa, kun muut häiriötekijät voitiin sulkea pois.
Jotkut kuvittelevat että etätyöntekijä ei pysty tekemään töitä tehokkaasti, koska kotona on kaikenlaisia muita mielenkiintoisia häiriötekijöitä kuten televisio, pyykit, pihatyöt, herra ties mitä. He eivät näe sitä suurta eroa konttorihäiriöiden ja kotihäiriöiden välissä – Etätyöntekijä itse valitsee häiriönsä, silloin kun hänelle sopii, jolloin se on enemmänkin tupakkatauon kaltainen lataushetki, konttorityöntekijä on muiden häirittävänä ilman kontrollia ja häiriötekijät haittaavat keskittymistä ja työn tekemistä. Toki, sitä voisi konttorilla varata palaverikopin ja mennä sinne piiloon, mutta koppeja on vähemmän kuin konttorilla työntekijöitä, joten ei sekään ongelmaa oikein ratkaise.
Etätyö ei toki ole kaikille, osalta puuttuu itsekuri tai kiinnostus omaan työhönsä, jolloin etätyö on vain lorvailua. Itse koen, että etätyöpäivänä pitää luoda jotain näkyvää, jotta kaikki tietävät sinun olleen töissä. Lorvailu ei vain ole mahdollista.
Etätyön määrästä olen nyt viimeisimmän firman politiikan myötä saanut “näkemystä”. Koen että jos mennään malliin missä sallitaan vain osittainen etätyö, silloin etätyön määrä pitää olla merkittävä. Leikkauspiste tulisi olla 2:3 tai 3:2. Jos viikossa sallitaan vain yksi etätyöpäivä tuo päivä saa erikoisarvon, sitä pidetään vähän niin kuin pyhä päivää edeltävänä päivänä. Silloin ei tarvi olla ihan skarppi, silloin voi lopettaa vähän aikaisemmin, silloin voi hoitaa omia juttuja kaupungilla, koska on etäpäivä, se on sellainen epäpäivä, vähäisempi työpäivä. Kun omalta osaltani tilanne oli toisinpäin, konttoripäivä oli se harvinaisuus, se konttoripäivä oli se päivä jolloin ei saada mitään aikaiseksi, koska silloin ollaan moikkaamassa niitä muita konttorilla. Poikkeama rutiinista tai arjesta työpäivässä tekee siitä helposti tehottomamman. Jotta etätyöpäivät olisi tehokkaita ja hyödyllisiä, niitä pitää olla mielestäni 2 tai 3 työviikossa, jolloin ne on työpäiviä siinä missä muutkin, yksi etätyöpäivä on vain tehokkuuden tiputtamista 🙂 . Tälläinen tuskan purkaus tällä kertaa…

Los Angeles -osuuden suunnittelua

Lauantai-ilta, pikkasen viiniä ja isoja metrokarttoja. Los Angeles on tämän illan suunnittelukohteena. Los Angelissa on tarkoitus viettää rantalomaa – sellainen kuuluu jokaiseen lomareissuun Smile.

Los Angelesin metrojärjestelmän kattavuus jättää toivomisen varaa. Meidän pitää 18.09. aamulla klo 07:00 olla tietyn hotellin edessä. Sieltä alkaa meidän reissu kohti Grand Canyonia. Hotellin sijanti ei ole optimaalinen, sillä rannalle on liki 10 kilometriä matkaa.
Saimme idean tutkia polkupyörän käyttöä L.A.:ssa. Rantareissut metrolla ja polkupyörällä näyttävät vaativan useamman kilometrin polkemista. Etäisyys pyöräille ei ole paha, mutta parina liikkuessamme tandem vähentäisi merkittävästi parin välille muodostuvaa kitkaa… Kaupunkin liikenne ja polkupyöräystävällisyys on myös epäselvää, voi olla että liikenne ei ole kovin polkupyöräystävällistä vaikka pyöriä voi vuokrata monesta paikkaa.

Julkisen liikenteen karttaa tutkittuamme päädymme siihen että pohjoispuolelta, Santa Monicasta tai Hollywoodista pitäisi löytyä majoituspaikka. Santa Monica Pier on nähtävä, kun L.A.:ssa kerran käydään. Itseasiassa, majoittuminen Santa Monican lähelle taitaa olla meidän tavoite. Päävalintakriteerinä on mahdollisuus lenkkeillä. Tutkittuamme lenkkeilumahdollisuuksia päädyimme siihen että lenkkeilu aamutuimaan rannalla on se juttu. Näin ollen majoitusetsintä vei meidät Venice beachille hostelleihin. Mitään konkreettista ei tullut vielä tänä iltana varattua. Venice beachin ongelma vaikuttaa olevan kodittomat ihmiset ja mitään selkeää voittajaa hostellien kesken ei löytynyt.

Kahden ja puolen tunnin suunnittelun jäljiltä tiedämme mihin ilmansuuntaan kaupungissa haluamme majoittua, miten metrot kulkevat, että rannalla on paras lenkkeillä aamutuimaan, pyöriä saa viedä metroon ja kodittomat ovat  Venicessa ongelma. Onneksi meillä on kuukausia aikaa…

2013-02-02 19.58.202013-02-02 20.04.37

ESX:n hallintaa yli SSH:n

Joskus tarve säätää iskee silloin kun omaa laitteistoa ei ole sopivasti käsillä tai käsillä oleva laitteisto on isommalla näytöllä varustettu kuin mitä puhelimeni. Tällöin on olisi näppärää vetäistä minimityökaluilla säätö käyntiin. Ehkäpä minua ei huvita jättää jälkeeni ohjelmistoa ja avaimia millä saa VPN yhteyden kotiini, kun todellisuudessa tarvin vain vSphere yhteyden ESX serverille. Silloin tehdään seuraavaa

1) Putty:lla SSH yhteys reitittimelle, portti ohjaukset ESX serverin portteihin 443 ja 902

2) Lisätään hosts tiedostoon (C:\WINDOWS\system32\drivers\etc\hosts) TUPESXP00? missä ? on joko 1 tai 2, riippuen kummalle koneelle menen.

tämän jälkeen kaikki toimii kuin olisi kotona. \o/

Physical security

All digital security is meaningless if the physical security is lacking. There for getting this right is one of the key things. I’m not going into the details of cooling or fire alarms or any such thing, but do note that these have effect on the security when implemented without care. Example when fire extinguisher is activated doors open so that everyone can exit and firemen and easily enter. The way the doors open should always be out of the main space. Emergency opening mechanisms should not leave the door open, they should unlock it only temporarily, this of course is again subject to local laws. No server room should have windows.

I would divide server hosting to three different security levels.

  • normal
  • secure
  • high secure

At normal level access to server facility should be limited to authorized personnel only, noting that not all servers should be accessible by all admins. Normal level security for financial servers and normal level security for example web servers should be implemented so that these servers are in different rooms with different accesses. Of course, now I’m assuming that one has sufficient staff for this kind of separation. Practicalities must be taken in to account, could be that all standard security servers are accessible by all three administrators that the company has. Normal level must of course log all entering the space, with video camera being the preferable way. The loading bay and the way to get the servers in needs to be protected at least at the same level than any other entry to these rooms.

Secure level is a bit upwards from normal level. These servers could be located in the same place as normal level servers, but physical access to these is limited little bit more. The rack they are located in must be locked and monitored with a camera from front and back. At the very basic level at least network equipment should be security classified devices, but network HSM’s or servers with card readers, internal HSM or anything that needs to be physically activated should generally be located here. Major mistake with these racks is pointing the cameras so that the passwords of the administrators can be read when they use the console for these servers. Cameras should never point so that passwords could be read from the recording. Keys to the rack should be somewhere else, perhaps with a guard or receptionist or monitoring, somewhere where human interaction is required to get those keys to the racks. Naturally here we need process so that people can’t go willi-nilly getting the keys. – A valid reason is needed, such could be an approved work order or a production incident.

High security, now we are talking guards, dual access, sealed walls, full blown “nuclear bomb level” protection copied from military practices. Designer needs to be bat-crap insane and really sure others are out to get him or his computers. This deservers a good, deep explanation of the security requirements, so I’ll safe it to the next post.

How to do security stuff in company settings?

A friend, who’s opinion I do value, told me that the previous texts regarding building a CA was too simple, stuff that could easily be figured out and that stuff just was nothing to talk about. Granted, all that could be figured out from the web. Apparently dual control, split roles and such would be things that would be interesting and not enough is written about it. So, here goes.

I’ll take the goal of building a serious CA in a company environment where one would have resources at their disposal. These settings could be generalized to any security server and I, by far, am not a specialist on all the stuff I cover, I try to point out where my knowledge gets thin.

Lets get to basics and build up from there. This section of my blogs will be a mixture of physical, technical and process in an order that I feel writing about.

Reittisuunnitelma

2013-01-26 12.40.26Makuuhuoneen ovessa on ollut pitkään tuloste Pohjois- ja Etelä-Amerikasta, johon on saanut piirtää ja merkata haluamiaan kohteita.

Vuodenvaihteen jälkeen aloimme Kristan johdolla työstämään halutuista kaupungeista reittiä kasaan. Torstai 24.01. tilasimme liput ja näin ollen runko on lyötynä lukkoon. Allaoleva kuva on suunnittelustamme. Liitutaulu on lyömätön suunnittelutyökalu Smile

Liikkelle 24.08.2013 Helsingistä kohti New Yorkia. Washingtonin kautta Buffaloon, josta matka vie meidät Los Angelesiin, missä teemme pienen reissun kohti Grand Canyonia tämän jälkeen matkustellaan Chileen moikkaamaan tuttuja ja sieltä palataan Rio De Janeiron (sweeeeeet) kautta Suomeen niin että 11.10. 2013 olemme Helsingissä taas.

Lähtösuunnitelma

CRL

Viimeinen palanen mikä tarvitaan toimivan PKI rakenteen ylläpitämiseen on varmenteiden hylkäyslista (CRL) tai OCSP, joka puolestaan vastaa reaaliajassa varmenteen tilan.

CRL on vanha tuttu, joten aloitin sen kanssa. Itseasiassa CRL:n liittyvät asiat olin päättänyt jo juuri CA:ta tehdessä. CRL tulee löytyä osoitteesta crl.leivo.org. Jotta varmenteet toimivat ulkopuolellekin oikein on tuo crl.leivo.org julkisesti saavutettavissa. Se on itseasiassa tämä web palvelin. Toinen tärkeä huomioitava asia on, että sisäverkossa homman on toimittava myös, joten sisäverkossani crl.leivo.org onkin minun Microsoft Home server. Näinollen WLAN tunnistus, kun sinne saakka päästään, tulee toimivaan vaikka nettiyhteys olisikin kentässä jostain syystä.

OpenSSL on helppo virittää sylkemään pihalle CRL:ää. Minulla palvelin on viritetty sylkemään 30 minuutin välein uusi CRL. Tämä tarkoittaa sitä että varastettu/menetetty varmenne on käyttökelpoinen noin 30 minuuttia sen hylkäämisenkin jälkeen. OpenSSL luo normaalisti PEM muotoisia CRL:iä. Windows käyttäytyy kauniisti DER muotoisten CRL:n kanssa, joten valitse oma myrkkysi.

PEM: openssl ca -config testca.cnf -gencrl -out crl/Rootca-crl.pem
DER: openssl ca -config testca.cnf -gencrl -outform DER -out crl/LeivoI-CA.crl

kuten konfiguraatioista huomaa, minä sotkin PEM ja DER muotoja keskenään. Tämä siksi, että huomasin Windowsin ominaisuuden vasta myöhemmin Smile.

Tämän jälkeen skriptejä päivittämään CRL pitkin eri web palvelimia ja homma on kunnossa.

Kevyen taisteluväsymyksen vuoksi, en tässä vaiheessa konffaa OCSP:tä käyttöön. Se tulkoon myöhemmin.

Sub CA

Tämän operaation jälkeen voin alkaa jo käyttämään tätä rakennelmaa, eli luomaan varmeneita koneilleni. Ei ollut edes vaikea setti Open-mouthed smile.

Pohjatyöt

Samat kuin aikaisemmin katso OpenSSL ja CA:n luominen. Varsinainen konfiguraatiotiedosto:

Konfiguraatiotiedosto

Alku on pitkälti sama, muutetaan vaan määritykset täsmäämään uuteen hakemistorakenteeseen ja varmenteisiin.

#
# OpenSSL configuration for Leivo Sub CA
#

# This definition stops the following lines choking if HOME isn’t
# defined.
HOME            = .
RANDFILE        = $ENV::HOME/.rnd

####################################################################
[ ca ]
default_ca    = Leivo_sub        # The default ca section

############################# Defining CA ######################################
[ Leivo_sub ]

dir        = d:/temp/sub-testCA    # Where everything is kept
certs        = $dir/certs        # Where the issued certs are kept
crl_dir        = $dir/crl        # Where the issued crl are kept
database    = $dir/index.txt    # database index file.
new_certs_dir    = $dir/newcerts        # default place for new certs.

certificate    = $dir/Leivo_sub.pem    # The CA certificate
serial        = $dir/serial         # The current serial number
crlnumber    = $dir/crlnumber    # the current crl number
crl        = $dir/crl.pem         # The current CRL
private_key    = $dir/private/sub-ca.key # The private key
RANDFILE    = $dir/private/.rand    # private random number file
string_mask    = utf8only

######################## End of defining CA ####################################

Tästä kohtaa alkaa pääasialliset erot. Luulen, että yleensä allekirjoitan palvelimen SSL varmenteita, joten peruslaajennus, joka lisätään varmenteeseen on ssl_cert. Myönnän yleensä vuoden voimassaolevia varmenteita, joten default_days on 365. CRL on voimassa maksimissaan 3 päivää, ei vuoden kuten juuri CA:n kanssa.

#################### Defining certificate signing ##############################
x509_extensions    = ssl_cert        # The extentions to add to the cert
name_opt     = ca_default        # Subject Name options
cert_opt     = ca_default        # Certificate field options

crl_extensions    = crl_ext

default_days    = 365            # how long to certify for
default_crl_days= 3             # how long before next CRL
default_md    = sha256        # use public key default MD
preserve    = no            # keep passed DN ordering

policy        = policy_match

# For the CA policy
[ policy_match ]
countryName            = match
organizationName        = match
commonName            = supplied
emailAddress                   = optional

################## End of defining certificate signing #########################

Tässä kohtaa sisältö on jo täysin eri. Sub CA ei saa allekirjoittaa itselleen Sub CA, joten kaikki varmenteet ovat mallia basicConstraints= CA:FALSE. SSL_CERT on normaali SSL varmenne SSL palvelin laajennuksin. USR_CERT on käyttäjävarmenne SSL asiakas laajennuksin. OCSP on OCSP:n varmenne rakenne.

################## Certificate types #########################

[ ssl_cert ]
basicConstraints        = CA:FALSE
keyUsage            = critical, keyEncipherment, digitalSignature
extendedKeyUsage        = serverAuth
crlDistributionPoints     = URI:http://crl.leivo.org/LeivoICA-crl.crl
authorityInfoAccess         = OCSP;URI:http://ocsp.leivo.org:4444

[ usr_cert ]
basicConstraints        = CA:FALSE
keyUsage            = critical, nonRepudiation, keyEncipherment, digitalSignature
extendedKeyUsage        = clientAuth
crlDistributionPoints     = URI:http://crl.leivo.org/LeivoICA-crl.crl
authorityInfoAccess         = OCSP;URI:http://ocsp.leivo.org:4444

[ crl_ext ]
issuerAltName            = issuer:copy
authorityKeyIdentifier    = keyid:always

[ ocsp ]
basicConstraints        = CA:FALSE
subjectKeyIdentifier        = hash
authorityKeyIdentifier    = keyid:always,issuer
extendedKeyUsage        = critical, 1.3.6.1.5.5.7.3.9
crlDistributionPoints     = URI:http://crl.leivo.org/LeivoICA-crl.crl

################## End of Certificate types #########################

########################### Basic SSL request ##################################
[ req ]
default_bits            = 2048
default_keyfile         = privkey.pem
distinguished_name        = req_distinguished_name
req_extensions        = extensions
string_mask            = utf8only

[ req_distinguished_name ]
countryName            = Country Name (2 letter code)
countryName_default        = FI
countryName_min        = 2
countryName_max        = 2

0.organizationName        = Organization Name (eg, company)
0.organizationName_default    = Leivo.org

# get the DN name for the certificate
commonName            = Server FQDN
commonName_max        = 64

[ extensions ]
basicConstraints         = CA:FALSE
keyUsage             = critical, keyEncipherment, digitalSignature
extendedKeyUsage        = serverAuth
#subjectAltName         = @alt_names

[alt_names]
#IP.1 = 192.168.8.3        # Invalid according to CA/B forum
#DNS.2 = homeserver        # Invalid according to CA/B forum
#DNS.1 = home.leivo.org

######################### End basic SSL request ################################

CA hörskymään

Kun pohjatyöt ja konfiguraatiotiedosto on kohdallaan jäljelle jää enää CRL:n jatkuva julkaisu ja OCSP:n laittaminen päälle.

Auta toista

Pyöräilin keskiviikkoiltana yhdentoistamaissa kohti kotia, kun näin miehen makaamassa lumihangessa kävelytien reunalla. Pysähdyin ja kysyin onko kaikki OK? Hän päästyään pystyyn totesi suomalaiseen äijätyyliin, että hän on ihan kunnossa. Katsoessani miestä totesin hänen olevan vanhempi herrasmies ja “hyvässä maistissa”. Hyppäsin pois pyörän päältä ja kysyin kävisikö hänelle jos kävelen hänen kanssa kotiin. Hän hyväksyi tarjoukseni ja otin hänet käsikyykkään. Kävelimme 15-20 minuuttia hänen asunnolleen jutellen niitä näitä. Matkan aikana hän kyseli minulta “Mitä minä saan tästä?”, johon minä vastasin “Jos tilanne on koskaan toisinpäin, toivon että joku auttaa minua”. Hän matkan aikana toisti monesti “Olet hyvä ihminen”. Minulle myös paljastui että hän on lopulta vain pikkujoulujen uhri Smile.

Iltani kohokohta oli se hetki kun pääsimme hänen kerrostalon rappuun ja hän sai oven auki. Hän otti kasvoistani kiinni ja kiitti minua vielä kerran kertoen minulle kuinka hyvä ja harvinainen ihminen olen. Tuo toisen ihmisen kiitollisyys lämmitti sydäntäni valtavasti ja jää mieleeni pitkäksi aikaa. Tuon vuoksi kirjoitin tämän blogiviestin. Tahdon muille yhtä mahtavan fiiliksen! Auttakaa toista ihmistä, jos se vaan suinkin on mahdollista, se tunne auttamisen jälkeen on sanoinkuvaamaton.