I detta inlägg så är det ”städning” av den OpenGeo Suite installation som gjordes i förra inlägget.
Det mesta är beskrivet i den dokumentation som följer med installationen och det jag ändrat på eller anpassat rör sådant jag vill uppnå senare för att ytterligare öka flexibiliteten i IT-plattformen. Det finns även en del steg som helt enkelt inte fungerade för mig, så jag fick klura ut ett annat sätt att få det att fungera.
Jag börjar med PostgreSQL och PostGIS.
PostgreSQL/PostGIS
Sedan tidigare har jag aktiverat root privilegier med sudo su – men det hjälper inte nu. Jag måste nämligen köra ett root kommando som en annan användare, så sudo måste användas i alla fall.
sudo -u postgres psql postgres
\password postgres
\q
Det första kommandot loggar in i postgres med användaren ”postgres”. De efterföljande kommandona är kommandon inne i databasen för att sätta ett lösenord för postgresanvändaren ”postgres”. Jag väljer lösenord ”postgres” för mina tester, vilket du inte skall göra om du skall sätta upp en faktisk produktionsmiljö.
Det mesta av det jag visar här är främst för att få saker att fungera snabbt. Skall det dessutom vara säkert så skall man tänka till några gånger och analysera var man måste vidta åtgärder för att höja säkerheten. Detta gäller inte bara en linuxserver med öppen källkod utan för alla IT-system.
Det är ganska strypta system till att börja med, så innan PostGIS kan användas så behöver man ”öppna” en del av dessa begränsningar.
nano /etc/postgresql/9.3/main/pg_hba.conf
Kommandot ovan startar redigering av en av konfigurationsfilerna för PostgreSQL. Tänk på att använda sudo om du inte har aktiverat root privilegier (sudo su –).
I filen skall du enligt instruktionen leta reda på två rader:
local all all peer ... host all all ::1/128 ident
På dessa byter du ut peer och ident mot md5, sedan sparar och stänger du filen, men detta fungerar inte!
Du behöver även byta ut peer på en rad till mot md5 för att kunna logga in lokalt med kommandot:
sudo service postgresql restart
psql -U postgres -W
För att kunna logga in med PgAdminIII från en annan dator så behöver man göra lite till.
I instruktionen så beskriver man en metod som är lite säkerhetsmässigt tveksam så jag gör såhär:
I samma fil som tidigare så finns det en rad som börjar med host. Denna har en IP adress som redigeras för att passa den adressrymd som skall tillåtas ansluta till databasen för direkt access.
host all all 192.168.0.1/24 md5
I mitt exempel så använder jag masken /24 vilket begränsar tillåtna adresser till 192.168.0.1 – 255.
Något man utelämnat i instruktionen är att du faktiskt behöver ändra en fil till för att servern ens skall lyssna på andra adresser än de lokala. På annan plats föreslår man en lösning som inte heller är helt säkerhetsmässigt pålitlig, så jag gör såhär.
I filen /etc/postgresql/9.3/main/postgresql.conf så finns det en rad som börjar med #listen_addresses. Denna redigeras och localhost ersätts med serverns IP-address.
listen_address = '192.168.0.50'
Har du nu även tagit bort brädgårdstecknet framför raden, sparat och startat om postgresql tjänsten så skall du kunna ansluta från en annan dator med PgAdminIII.
För att kunna använda databasen med egna data så är det bäst att skapa en ny geodatabas för detta ändamål.
PostGIS
Det går att använda PgAdminIII för att skapa en ny databas i ett GUI, men jag tycker det är enklare att göra det i terminalen.
createdb -U postgres geodata psql -U postgres -d geodata -c 'CREATE EXTENSION postgis'
Om du vill ha ett annat namn på databasen så byter du ut geodata mot ett annat namn.
Det finns nu en databas med namnet geodata på den IP-adress som servern har, på porten 5432. I QGIS så kan man enkelt lägga till denna koppling via ”lägg till PostGIS lager” och klicka på ”Ny” vid ”Anslutningar”.
Du får själv välja om du vill spara användarnamn och lösenord, men du skall vara medveten om att dessa i så fall sparas i dina projektfiler i klartext. Vill du att användare som öppnar dina projekt skall tvingas ange egna användarnamn och lösenord så kryssar du inte i dessa rutor.
Ännu så länge är databasen tom och det går inte att ”Lägga till” några lager från databasen. Dialogen för att lägga till data kan därför stängas.
För att lägga till nya ”scheman” och tabeller så är det enklast att använda DB Manager.
När man är ansluten till databasen kan man skapa nya scheman med menyalternativet ”Schema”. Jag har en databas sedan tidigare i bilden ovan, men den jag skapade nyss är den som är markerad.
Scheman kan man säga är ett sätt att organisera olika typer av data. Du kan ha olika scheman för olika ändamål och dessa kan innehålla olika data.
Med menyalternativet ”Tabell” kan man skapa det som skall bli nya tomma lager i databasen. Har du redan data som du vill importera till PostGIS så gör du det via knappen med pilen som pekar nedåt (bilden ovan).
I dialogen för att skapa tabell skall du tänka på att aktivera geometrikolumnen och om du känner till det vilket SRID du skall använda för att lagra geomterierna (3006 är SWEREF99TM).
Ett spatialt index har många fördelar så jag kan inte tänka mig en situation när det är dåligt att skapa ett sådant.
Annars är det bara att experimentera och lägga till nya data, ladda upp gamla och testa lite olika datatyper som helt plötsligt är tillgängliga när man släpper shapefilssargen.
I nästa inlägg skall jag titta närmare på anpassningar på klientsidan för att förenkla hanteringen av servertjänster ytterligare.
Om du vill höja säkerheten på PostGRES så kan du bara tillåta localhost, och sedan sätta upp en SSH-tunnel från den maskin som du vill ansluta från till den med PostGRES.
Detta finns redan stöd för i programmet pgadmin 3.
Då kan man inte komma åt PostGRES om man inte har ett konto på servern som det går att logga in på med SSH.
I PostGRES så sätter man rättigheter på databaser med grupper och användare. Den enda skillnaden är att användare kan logga in, det kan inte grupper. Så då går det att skapa ett ”träd” eller grupper av rättigheter, där grupper och användare ingår. Ganska smidigt att exempelvis ha en grupp WEBUSERS som är alla användare som kommer åt databaser via webbprogram. Då kan man ha en användare per webbprogram, som ingår i gruppen.
I övrigt så har du låst ned maskinen rätt bra.
Tips: Adressen 0.0.0.0 eller 0::0 är alla nätverksanslutningar som är igång när programmet startar. Dvs enkelt sätt att lyssna på både localhost och maskinens ”riktiga” adresser.
Tips: Kontrollera vilka anslutningar som är ingång med programmet nmap och netstat. Då ser man vilka portar som är öppna. För att kontrollera brandvägg, så behöver man köra nmap från annan maskin. Programmet netstat kontrollerar lokalt på maskinen vilka portar som program har öppna (innan brandväggen stänger).
Prova netstat med: sudo netstat -l -n –ip -4 -6 -p
# -l lyssnande -n nummeriska adresser och portar -ip bara ip ej sockets
# -4 -6 IPv4 och IPv6 -p vilket program det är (fungerar bara från root)
Prova nmap med: nmap -A -T4 minmaskin
# -A identifiera OS och program -T4 hur lång tid det tar -6 scanna IPv6
# minmaskin adressen som skall provas (det går även för nät), testa localhost