Case

= Caseoppgave våren 2010 =

2badr Gruppe 2 Anders Aune, Hallvard Glad, og Atle Jarrett
toc =Behov=

Beskrivelse av bedrite​n
Fiskeribedrift på et mindre tettsted ved kysten som driver med oppdrett av laks, samt videreforedling av laksen til forskjellige produkter Det finnes et hovedkontor lokalt i tettstedet og en rekke produksjonsanlegg spredt omkring i nærområdet. Ved hovedkontoret er det 120 ansatte, ved produksjonsanleggene 24 ansatte. I tillegg er det 5 salgskonsulenter som delvis er på hovedkontoret og delvis på reisefot.

Krav til dataløsning

 * Det skal brukes tynnklient-løsninger, dvs de logger inn på en tjenermaskin og kjører programmene derfra. Det betyr altså at alle data skal lagres på denne lokale tjenermaskinen.
 * Men noen ansatte har også bruk for spesiell programvare som krever Windows. Disse må kunne logge inn fra en Windows-klient for å få tilgang til hjemmeområde.
 * Salgskonsulentene er ofte ute og reiser og disse må ha tilgang til bedriftsnettet når de er på reise.
 * Fjerndrifting skal være mulig.
 * Det skal være mulig å jobbe hjemmefra.
 * Webtjener må være plassert i et eget nett adskilt fra det øvrige nettet av sikkerhetsmessige grunner.
 * Bedriften skal ha en webside for presentasjon av produkter og priser.
 * Løsningen skal være skalérbar, f.eks ved å øke antall tjenermaskiner og antall ansatte
 * Brukeradministrasjon må kunne gjøres effektivt, f.eks ved innlegging av alle brukerkontoene initielt.

Maskinvare
Her velger vi å gjøre det på denne måten, rett og slett fordi det er utstyret vi har tilgjengelig som bestemmer\begrenser mulige løsninger
 * En server som fungerer som NAT-ruter, brannmur, dhcp-server, proxy og VPN
 * En fil -og brukeradministrasjons-server
 * En backupserver
 * En webserver
 * En eller to fysiske svitsjer

Konfigurering og driftsopplegg

 * VPN sørger for tilgang til ressurser uten i fra.
 * Ved bruk av Samba og LDAP sammen har vi en ryddig og fin administrasjon av brukere og dens hjemmeområde. Som kravene sier mappes hjemmområdet automatisk når bruker logger på en Windows-maskin.
 * Webtjener er ikke koblet til lokalnettet
 * Brukere blir ved første gang registrert samtidig og automatisk via 2 script.
 * Backup tas ofte slik at mulige krasj ikke fører til datatap
 * Servere kan fjerndriftes via SSH og VPN

Sikkerhetsvurdering

 * Brannmur hindrer tilgang til lokalnettet og ressursene utenifra
 * Proxy med antivirus sørger for at brukerne ikke får inn infiserte filer via nettleser, og at de ikke surfer på sider som bestemmes forbudt av ledelsen
 * DHCP gir kun ut til de som er koblet til lokalnettet, reserverer på MAC-adresse hvis nødvendig
 * Kun tilgang til internet via ruter.

=Design=

Slik er løsningsdesignet for fiskeribedriften. Dette er løst på en slik måte at det er gjennomførbart i vår lab. I en reell situasjon ville vi ha valgt mer avanserte løsninger, som feks SAN, NAS. Vi ville også da spredd tjeneste mer utover for å få større ytelse og sikkerhet.



=Tynnklient - LTSP=

Last ned: http://releases.ubuntu.com/releases/9.10/ubuntu-9.10-alternate-i386.iso

Under install vinduet: Trykk F4 og velg "Install an LTSP Server"

Etter installasjonen har du en LTSP-server, men for at brukere under boot skal få taki LTSP-servern må man tilføye følgende i dhcp-configen:

Editer DHCP server for PXE
code format="bash" nano /etc/dhcp3/dhcpd.conf code

code format="bash" subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.100; next-server 192.168.0.9; filename "/ltsp/i386/pxelinux.0"; } code
 * 1) IP til ltsp server og boot image på ltsp serveren

Når dette er gjort kan en fint boote via PXE. En kan nå kun logge inn med lokale brukere på LTSP-serveren. Dette er jo ikke bra nok, så vi legger til LDAP-login.

LTSP med LDAP authentification
Sett opp ltsp-serveren som en vanlig ldap-klient. se link,følger samme installasjonsprosess: [] code format="bash" apt-get install libpam-ldap libnss-ldap code Svar følgende på spørsmålene under install: •IP address / hostname of the LDAP server. ie: 192.168.0.2 •The search base of your LDAP domain. ie: dc=samba,dc=2badr-gr2 etc •Velg versjon 3 •"Configuring LIBNSS-LDAP: "OK" :) •Want to make root the DB admin. = "yes" •DB requires logging in, = "No" •root login account for LDAP. cn=admin,dc=samba,dc=2badr-gr2 •LDAP password for the aforementioned LDAP account = passordet

Forskjellen fra å oprette en LDAP klient og en server er følgende linje i setup eller i /etc/ldap.conf

code format="bash" URl ldap://192.168.0.2 code
 * 1) URl ldap://IPtilLDAPserveren

I tilegg må en konfigurere /etc/nsswitch.conf og /etc/pam.d/common-* filene.

Erstatt "compat" med "files ldap" i nsswitch: code format="bash" files ldap code

Og til før følgende setninger ovenfor "pam_unix.so" i common-* filene: code format="bash" auth   sufficient    pam_ldap.so account    sufficient    pam_ldap.so password    sufficient    pam_ldap.so sessiong    sufficient    pam_ldap.so code

Da har du fungerende ldap-klient på ltsp-serveren. Tester det med å logge inn med en bruker direkte på serveren(ssh). Funker Men dette er ikke nok for at ltsp vil kunne bruke ldap-authentification under tynnklient-login. Image'et som blir sendt som "tynnklient" er bygd fra /opt/ltsp/i386. Her ligger alle filene tynnklienten vil bruke(egentlig som et eget filsystem som et fullverdig host-system har). DVS at ldap-konfig.-filene vi konfiguerte ista vil ikke være i imaget som PXE bruker. Det vi må gjøre da er å editere de samme filene i det "virtuelle" filsystemet i /opt/ltsp/i386. Eller enda enklere, kopiere de vi har satt opp fra før og VET funker.

code format="bash" cp /etc/ldap.conf /opt/ltsp/i386/etc/ cp /etc/nsswtich.conf /opt/ltsp/i386/etc/ cp /etc/pam.d/common-* /opt/ltsp/i386/etc/pam.d/ code

OG for å få disse nye filene inkludert i image'et som blir sendt til bruker må man kjøre følgende setning:

oppdater image og sshkeys(sshkeys må oppdateres hvis FYLL INN) code format="bash" sudo ltsp-update-sshkeys && sudo ltsp-update-image code

Oppsett for homefolder på LTSP Server
For at LDAP-brukere skal kunne logge inn MÅ de ha homefolders eksisterende på ltsp-maskinen. Står nemlig i LDAP-databasen at de skal ha hjemmeområde /home/%U. Og hvis dette ikke eksisterer på ltsp-maskinen må man lage denne mappen. Dette gjøres via pam_mkir.so, slikt:

code format="bash" nano /etc/pam.d/common-session session required pam_mkhomedir.so umask=0022 skel=/etc/skel/ code

Slik vil hver nye bruker som logger på systemet få opprettet en hjemmemappe. Her skal vi egentlig mappe opp det virkelig hjemmeområdet hver ldap-bruker har på filtjeneren. Dette skjer nemlig ikke automatisk i linux som i windows.

Slik, nå kan alle brukere registert i systemet til bedriften(ldap) logge inn via tynnklient :-)

=Proxy - Squid 3.0=

Install
code format="bash" aptitude install squid3 code

Config
code format="bash" cp /etc/squid3/squid.conf{,.bak} > /etc/squid3/squid.conf nano /etc/squid3/squid.conf code

Paste følgende: code format="bash" acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all icp_access deny all htcp_access deny all http_port 3128 transparent hierarchy_stoplist cgi-bin ? access_log /var/log/squid3/access.log squid acl QUERY urlpath_regex cgi-bin \? cache deny QUERY refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern. 0 20% 4320 icp_port 3130 icap_enable on icap_send_client_ip on icap_service is_kav_req reqmod_precache 0 icap://localhost:1344/av/reqmod icap_service is_kav_resp respmod_precache 0 icap://localhost:1344/av/respmod icap_class ic_kav is_kav_resp icap_access ic_kav allow all coredump_dir /var/spool/squid3 code

**Kaspersky**
Denne trenger minimum v3.0 av Squid pga icap funksjonene Enable backports i sources.list og //aptitude install suid3// (deps kommer auto) code format="bash" dpkg -i kav4proxy_5.5-51_i386.deb code Her trenger man en trial-nøkkel. Pakkescriptet legger til de nødvendige parametere i squid.conf. -her må man bare kopiere over til /etc/squid3/squid.conf (fikk ikke velgt denne mappa) ta vekk //is_kav_req// i squid.conf fra linja som begynner med icap_class ic_kav is_kav_req is_kav_resp
 * obs**

Det anbefales at man oppdaterer AV'ens database hver time, så da setter vi dette i crontab code format="bash" crontab -e 23 * * * * /opt/kaspersky/kav4proxy/bin/kav4proxy-keepup2date -q

code



=Samba og LDAP=

[|Guide som funker]

Bruk av LDAP sammen med Samba er en god løsning for et hybrid system med både windows og linuxmaskiner. Først installerer vi de nødvendige pakker: Her skipper vi bare all konfig, siden vi skal fixe på dette senere code format="bash" aptitude update aptitude install libpam-ldap libnss-ldap resolvconf samba swat smbclient smbfs smbldap-tools slapd mcrypt ldap-utils libgd-tools code Konfigurasjon av slapd code dpkg-reconfigure slapd

code Så tar vi en backup av LDAP databasen for sikkerhets skyld: code format="bash" slapcat > ~/slapd.ldif code Så forbereder vi LDAP schema for Samba: code format="bash" zcat /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz > \ /etc/ldap/schema/samba.schema code Videre må vi genenere et rootdn passord med MD5: (her kunne vi valgt SHA, men MD5 for holde for nå) code format="bash" slappasswd -h {MD5} code Denne skal vi lime inn i //slapd.conf// etterpå Men først tar vi backup av ///etc/ldap/slapd.conf// og lager en egen med support for Samba code format="bash" cp /etc/ldap/slapd.conf{,.bak} code
 * Omit OpenLDAP server configuration? No
 * DNS domain name: samba.2badr-gr2.testlab.aitel.hist.no
 * Organization name: 2badr-gr2
 * Administrator password: FIX!
 * Database backend to use: HDB
 * Do you want the database to be removed when slapd is purged? No
 * Allow LDAPv2 protocol? No

SLAPD-config
code format="bash"
 * 1) This is the main slapd configuration file. See slapd.conf(5) for more
 * 2) info on the configuration options.


 * 1) Global Directives:
 * 1) Global Directives:


 * 1) Features to permit
 * 2) allow bind_v2

include        /etc/ldap/schema/core.schema include        /etc/ldap/schema/cosine.schema include        /etc/ldap/schema/nis.schema include        /etc/ldap/schema/inetorgperson.schema include        /etc/ldap/schema/samba.schema
 * 1) Schema and objectClass definitions

pidfile        /var/run/slapd/slapd.pid
 * 1) Where the pid file is put. The init.d script
 * 2) will not stop the server if you change this.

argsfile       /var/run/slapd/slapd.args
 * 1) List of arguments that were passed to the server

loglevel       none
 * 1) Read slapd.conf(5) for possible values

modulepath /usr/lib/ldap moduleload back_hdb
 * 1) Where the dynamically loaded modules are stored

sizelimit 500
 * 1) The maximum number of entries that is returned for a search operation

tool-threads 1
 * 1) The tool-threads parameter sets the actual amount of cpu's that is used
 * 2) for indexing.

backend hdb
 * 1) Specific Backend Directives for hdb:
 * 2) Backend specific directives apply to this backend until another
 * 3) 'backend' directive occurs
 * 1) 'backend' directive occurs


 * 1) Specific Backend Directives for 'other':
 * 2) Backend specific directives apply to this backend until another
 * 3) 'backend' directive occurs
 * 4) backend
 * 1) backend

database       hdb
 * 1) Specific Directives for database #1, of type hdb:
 * 2) Database specific directives apply to this databasse until another
 * 3) 'database' directive occurs
 * 1) 'database' directive occurs

suffix         "dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no"
 * 1) The base of your directory in database #1

rootdn         "cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no" rootpw         {MD5}/dw1Q5l2T8fbHeXexP3/SA==
 * 1) rootdn directive for specifying a superuser on the database. This is needed
 * 2) for syncrepl.
 * 1) Her settes root passordet vi genererte sist #####

directory      "/var/lib/ldap"
 * 1) Where the database file are physically stored for database #1


 * 1) The dbconfig settings are used to generate a DB_CONFIG file the first
 * 2) time slapd starts.  They do NOT override existing an existing DB_CONFIG
 * 3) file.  You should therefore change these settings in DB_CONFIG directly
 * 4) or remove DB_CONFIG and restart slapd for changes to take effect.

dbconfig set_cachesize 0 2097152 0
 * 1) For the Debian package we use 2MB as default but be sure to update this
 * 2) value if you have plenty of RAM


 * 1) Sven Hartge reported that he had to set this value incredibly high
 * 2) to get slapd running at all. See http://bugs.debian.org/303057 for more
 * 3) information.

dbconfig set_lk_max_objects 1500 dbconfig set_lk_max_locks 1500 dbconfig set_lk_max_lockers 1500
 * 1) Number of objects that can be locked at the same time.
 * 1) Number of locks (both requested and granted)
 * 1) Number of lockers

index objectClass                      eq,pres index ou,cn,sn,mail,givenname          eq,pres,sub index uidNumber,gidNumber,memberUid    eq,pres index loginShell                       eq,pres index uid                              pres,sub,eq index displayName                      pres,sub,eq index nisMapName,nisMapEntry           eq,pres,sub index sambaSID                         eq index sambaPrimaryGroupSID              eq index sambaDomainName                   eq index default                           sub index uniqueMember                     eq index sambaGroupType                    eq index sambaSIDList                      eq
 * 1) Indices to maintain for this database
 * 1) required to support pdb_getsampwnam
 * 1) required to support pdb_getsambapwrid

lastmod        on
 * 1) Save the time that the entry gets modified, for database #1

checkpoint     512 30
 * 1) Checkpoint the BerkeleyDB database periodically in case of system
 * 2) failure and to speed slapd shutdown.


 * 1) Where to store the replica logs for database #1
 * 2) replogfile /var/lib/ldap/replog

access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdMustChange,sambaPwdLastSet by self write by anonymous auth by * none
 * 1) users can authenticate and change their password

access to attrs=shadowLastChange,shadowMax by self write by * read
 * 1) those 2 parameters must be world readable for password aging to work correctly
 * 2) (or use a priviledge account in /etc/ldap.conf to bind to the directory)

access to * by * read
 * 1) all others attributes are readable to everybody


 * 1) For Netscape Roaming support, each user gets a roaming
 * 2) profile for which they have write access to
 * 3) access to dn=".*,ou=Roaming,o=morsnet"
 * 4)        by dn="cn=admin,dc=example,dc=com" write
 * 5)        by dnattr=owner write


 * 1) Specific Directives for database #2, of type 'other' (can be hdb too):
 * 2) Database specific directives apply to this databasse until another
 * 3) 'database' directive occurs
 * 4) database
 * 1) database

code Nå er det på tide å lage en LDAP database! code format="bash" /etc/init.d/slapd stop rm -rf /var/lib/ldap/* slapadd -l ~/slapd.ldif slapindex chown -Rf openldap:openldap /var/lib/ldap /etc/init.d/slapd start code
 * 1) The base of your directory for database #2
 * 2) suffix "dc=debian,dc=org"

Samba-config
Først backup av eksisterende ///etc/samba/smb.conf//, så sette vi inn vår egen code format="bash" [global] dos charset = UTF-8 display charset = UTF-8 workgroup = WORKGROUP realm = debian-virt server string = %h server map to guest = Bad User passdb backend = ldapsam:ldap://127.0.0.1/ pam password change = Yes passwd program = /usr/sbin/smbldap-passwd -u %u passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated* unix password sync = Yes syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 time server = Yes socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 add user script = /usr/sbin/smbldap-useradd -m %u delete user script = /usr/sbin/smbldap-userdel %u add group script = /usr/sbin/smbldap-groupadd -p %g delete group script = /usr/sbin/smbldap-groupdel %g add user to group script = /usr/sbin/smbldap-groupmod -m %u %g delete user from group script = /usr/sbin/smbldap-groupmod -x %u %g set primary group script = /usr/sbin/smbldap-usermod -g %g %u add machine script = /usr/sbin/smbldap-useradd -w %u logon script = logon.bat logon path = \\%N\profiles\%U logon drive = U: domain logons = Yes os level = 65 preferred master = Yes domain master = Yes dns proxy = No wins support = Yes ldap admin dn = cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no ldap delete dn = Yes ldap group suffix = ou=group ldap idmap suffix = ou=idmap ldap machine suffix = ou=computer ldap suffix = dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no ldap ssl = no ldap user suffix = ou=people panic action = /usr/share/samba/panic-action %d map acl inherit = Yes case sensitive = No hide unreadable = Yes map hidden = Yes map system = Yes

[homes] comment = Home Directories valid users = %S read only = No create mask = 0600 directory mask = 0700 browseable = No

[printers] comment = All Printers path = /var/spool/samba create mask = 0700 printable = Yes browseable = No

[print$] comment = Printer Drivers path = /var/lib/samba/printers

[netlogon] path = /var/lib/samba/netlogon browseable = No

[profiles] path = /var/lib/samba/profiles force user = %U read only = No create mask = 0600 directory mask = 0700 guest ok = Yes profile acls = Yes browseable = No csc policy = disable

[public] path = /tmp read only = No guest ok = Yes code

Så må vi ha et passord for Samba å lage mapper for netlogon og profiler: code format="bash" smbpasswd -w HEMMELIG mkdir -p /var/lib/samba/netlogon /var/lib/samba/profiles chown -Rf root:root /var/lib/samba/netlogon /var/lib/samba/profiles chmod 1777 /var/lib/samba/profiles code Da var det endelig på tide å teste oppsettet og starte opp samba! code format="bash" testparm # Sjekk for errors her! /etc/init.d/samba restart code

For å få Samba og LDAP til og være snille med hverandre har vi installert smbldap-tools. (noen scipts for å bla synce passwd mellom samba og unix) Disse trenger litt forberedelse, slik: code format="bash" zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > \ /etc/smbldap-tools/smbldap.conf cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf \ /etc/smbldap-tools/smbldap_bind.conf code Så må ///etc/smbldap-tools/smbldap.conf// fixes på Men her trenger vi en SID som vi får fra følgende: code format="bash" net getlocalsid code

smbldap-config
Her er det viktig å få med de riktige verdiene, sånn at smb.conf og slapd.conf stemmer overens med denne (sambadomain, MD5 osv) Slik ble vår konfig: code format="bash"
 * 1) $Source: $
 * 2) $Id: smbldap.conf,v 1.18 2005/05/27 14:28:47 jtournier Exp $
 * 3) smbldap-tools.conf : Q & D configuration file for smbldap-tools
 * 1) smbldap-tools.conf : Q & D configuration file for smbldap-tools


 * 1)  This code was developped by IDEALX (http://IDEALX.org/) and
 * 2)  contributors (their names can be found in the CONTRIBUTORS file).
 * 3)                 Copyright (C) 2001-2002 IDEALX
 * 4)  This program is free software; you can redistribute it and/or
 * 5)  modify it under the terms of the GNU General Public License
 * 6)  as published by the Free Software Foundation; either version 2
 * 7)  of the License, or (at your option) any later version.
 * 8)  This program is distributed in the hope that it will be useful,
 * 9)  but WITHOUT ANY WARRANTY; without even the implied warranty of
 * 10)  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * 11)  GNU General Public License for more details.
 * 12)  You should have received a copy of the GNU General Public License
 * 13)  along with this program; if not, write to the Free Software
 * 14)  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 * 15)  USA.
 * 1)  You should have received a copy of the GNU General Public License
 * 2)  along with this program; if not, write to the Free Software
 * 3)  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 * 4)  USA.


 * 1)  Purpose :
 * 2)       . be the configuration file for all smbldap-tools scripts


 * 1) General Configuration
 * 1) General Configuration
 * 1) General Configuration

SID="S-1-5-21-3705681840-1717937394-3299713818"
 * 1) Put your own SID. To obtain this number do: "net getlocalsid".
 * 2) If not defined, parameter is taking from "net getlocalsid" return

sambaDomain="WORKGROUP"
 * 1) Domain name the Samba server is in charged.
 * 2) If not defined, parameter is taking from smb.conf configuration file
 * Ex: sambaDomain="IDEALX-NT"


 * 1) LDAP Configuration
 * 1) LDAP Configuration
 * 1) LDAP Configuration


 * 1) Notes: to use to dual ldap servers backend for Samba, you must patch
 * 2) Samba with the dual-head patch from IDEALX. If not using this patch
 * 3) just use the same server for slaveLDAP and masterLDAP.
 * 4) Those two servers declarations can also be used when you have
 * 5) . one master LDAP server where all writing operations must be done
 * 6) . one slave LDAP server where all reading operations must be done
 * 7)   (typically a replication directory)

slaveLDAP="127.0.0.1"
 * 1) Slave LDAP server
 * Ex: slaveLDAP=127.0.0.1
 * 1) If not defined, parameter is set to "127.0.0.1"

slavePort="389"
 * 1) Slave LDAP port
 * 2) If not defined, parameter is set to "389"

masterLDAP="127.0.0.1"
 * 1) Master LDAP server: needed for write operations
 * Ex: masterLDAP=127.0.0.1
 * 1) If not defined, parameter is set to "127.0.0.1"

masterPort="389"
 * 1) Master LDAP port
 * 2) If not defined, parameter is set to "389"

ldapTLS="0"
 * 1) Use TLS for LDAP
 * 2) If set to 1, this option will use start_tls for connection
 * 3) (you should also used the port 389)
 * 4) If not defined, parameter is set to "1"

verify="require"
 * 1) How to verify the server's certificate (none, optional or require)
 * 2) see "man Net::LDAP" in start_tls section for more details

cafile="/etc/smbldap-tools/ca.pem"
 * 1) CA certificate
 * 2) see "man Net::LDAP" in start_tls section for more details

clientcert="/etc/smbldap-tools/smbldap-tools.pem"
 * 1) certificate to use to connect to the ldap server
 * 2) see "man Net::LDAP" in start_tls section for more details

clientkey="/etc/smbldap-tools/smbldap-tools.key"
 * 1) key certificate to use to connect to the ldap server
 * 2) see "man Net::LDAP" in start_tls section for more details

suffix="dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no"
 * 1) LDAP Suffix
 * Ex: suffix=dc=IDEALX,dc=ORG

usersdn="ou=people,${suffix}"
 * 1) Where are stored Users
 * Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG"
 * 1) Warning: if 'suffix' is not set here, you must set the full dn for usersdn

computersdn="ou=computer,${suffix}"
 * 1) Where are stored Computers
 * Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG"
 * 1) Warning: if 'suffix' is not set here, you must set the full dn for computersdn

groupsdn="ou=group,${suffix}"
 * 1) Where are stored Groups
 * Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG"
 * 1) Warning: if 'suffix' is not set here, you must set the full dn for groupsdn

idmapdn="ou=idmap,${suffix}"
 * 1) Where are stored Idmap entries (used if samba is a domain member server)
 * Ex: groupsdn="ou=Idmap,dc=IDEALX,dc=ORG"
 * 1) Warning: if 'suffix' is not set here, you must set the full dn for idmapdn

sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
 * 1) Where to store next uidNumber and gidNumber available for new users and groups
 * 2) If not defined, entries are stored in sambaDomainName object.
 * Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
 * Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"

scope="sub"
 * 1) Default scope Used

hash_encrypt="MD5"
 * 1) Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)

crypt_salt_format="%s"
 * 1) if hash_encrypt is set to CRYPT, you may set a salt format.
 * 2) default is "%s", but many systems will generate MD5 hashed
 * 3) passwords if you use "$1$%.8s". This parameter is optional!


 * 1) Unix Accounts Configuration
 * 1) Unix Accounts Configuration
 * 1) Unix Accounts Configuration

userLoginShell="/bin/bash"
 * 1) Login defs
 * 2) Default Login Shell
 * Ex: userLoginShell="/bin/bash"

userHome="/home/%U"
 * 1) Home directory
 * Ex: userHome="/home/%U"

userHomeDirectoryMode="700"
 * 1) Default mode used for user homeDirectory

userGecos="System User"
 * 1) Gecos

defaultUserGid="513"
 * 1) Default User (POSIX and Samba) GID

defaultComputerGid="515"
 * 1) Default Computer (Samba) GID

skeletonDir="/etc/skel"
 * 1) Skel dir

defaultMaxPasswordAge="365"
 * 1) Default password validation time (time in days) Comment the next line if
 * 2) you don't want password to be enable for defaultMaxPasswordAge days (be
 * 3) careful to the sambaPwdMustChange attribute's value)


 * 1) SAMBA Configuration
 * 1) SAMBA Configuration
 * 1) SAMBA Configuration

userSmbHome=""
 * 1) The UNC path to home drives location (%U username substitution)
 * 2) Just set it to a null string if you want to use the smb.conf 'logon home'
 * 3) directive and/or disable roaming profiles
 * Ex: userSmbHome="\\PDC-SMB3\%U"

userProfile=""
 * 1) The UNC path to profiles locations (%U username substitution)
 * 2) Just set it to a null string if you want to use the smb.conf 'logon path'
 * 3) directive and/or disable roaming profiles
 * Ex: userProfile="\\PDC-SMB3\profiles\%U"

userHomeDrive="U:"
 * 1) The default Home Drive Letter mapping
 * 2) (will be automatically mapped at logon time if home directory exist)
 * Ex: userHomeDrive="H:"

userScript="logon.bat"
 * 1) The default user netlogon script name (%U username substitution)
 * 2) if not used, will be automatically username.cmd
 * 3) make sure script file is edited under dos
 * Ex: userScript="startup.cmd" # make sure script file is edited under dos

mailDomain="2badr-gr2.testlab.aitel.hist.no"
 * 1) Domain appended to the users "mail"-attribute
 * 2) when smbldap-useradd -M is used
 * Ex: mailDomain="idealx.com"


 * 1) SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
 * 1) SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
 * 1) SMBLDAP-TOOLS Configuration (default are ok for a RedHat)

with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd"
 * 1) Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap_conf.pm) but
 * 2) prefer Crypt::SmbHash library

with_slappasswd="0" slappasswd="/usr/sbin/slappasswd"
 * 1) Allows not to use slappasswd (if with_slappasswd == 0 in smbldap_conf.pm)
 * 2) but prefer Crypt:: libraries

code Nå begynner vi å nærme oss slutten... Men først må ///etc/smbldap-tools/smbldap_bind.conf// forandres: code format="bash" slaveDN="cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no" slavePw="HEMMELIG" masterDN="cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no" masterPw="HEMMELIG" code Pass på at filene har korrekte rettigheter code format="bash" chmod 0644 /etc/smbldap-tools/smbldap.conf chmod 0600 /etc/smbldap-tools/smbldap_bind.conf code Så kan vi endelig "sette innbyggere" i Samba LDAP schema code format="bash" smbldap-populate slapcat > ~/smbldap.ldif code
 * 1) comment out the following line to get rid of the default banner
 * 2) no_banner="1"
 * 1) Credential Configuration #
 * 2) Notes: you can specify two differents configuration if you use a
 * 3) master ldap for writing access and a slave ldap server for reading access
 * 4) By default, we will use the same DN (so it will work for standard Samba
 * 5) release)
 * 1) By default, we will use the same DN (so it will work for standard Samba
 * 2) release)
 * 1) Husk backup av den nye DB'en til LDAP

LDAP w/ PAM/NSS-config
code format="bash" dpkg-reconfigure libnss-ldap * LDAP server Uniform Resource Identifier: ldap://127.0.0.1 * Distinguished name of the search base: dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no * LDAP version to use: 3 * Does the LDAP database require login? No   * Special LDAP privileges for root? Yes * Make the configuration file readable/writeable by its owner only? Yes * LDAP account for root: cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no * LDAP root account password: FIX! code Så sette vi opp auth med ldap i nsswitch Legg inn dette i ///etc/nsswitch.conf// code passwd: files ldap group: files ldap shadow: files ldap hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 ldap code Så skal ///etc/ldap/ldap.conf tilpasses for LDAP klientene:// code format="bash" host localhost base dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no binddn cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no bindpw HEMMELIG-PASSORD

bind_policy soft pam_password exop timelimit 15

nss_base_passwd dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?sub nss_base_shadow dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?sub nss_base_group ou=group,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?one code

NSS-config
Så var det NSS sin tur //etc/libnss-ldap.conf// Men her er det bare noen linjer som må fixes på, siden debconf har tatt seg av det meste code format="bash" bind_policy soft pam_password md5 nss_base_passwd dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?sub nss_base_shadow dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?sub nss_base_group ou=group,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?one code Konfigurer libpam-ldap med følgende //dpkg-reconfigure libpam-ldap//: code format="bash" code
 * LDAP server Uniform Resource Identifier: ldap://127.0.0.1
 * Distinguished name of the search base: dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no
 * LDAP version to use: 3
 * Make local root Database admin. Yes
 * Does the LDAP database require login? No
 * LDAP account for root: cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no
 * LDAP root account password: CHANGE
 * Local crypt to use when changing passwords. MD5
 * PAM profiles to enable: Unix authentication, LDAP Authentication//

PAM-config
Så ordner vi på de samme linjene som før, men denne gangen for PAM code format="bash" bind_policy soft pam_password md5 nss_base_passwd dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?sub nss_base_shadow dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?sub nss_base_group ou=group,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no?one code

Common-*
Per default, kommer Debian med korrekt LDAP auth setup under ///usr/share/pam-configs/ldap// Så den trenger vi ikke tenke på. Men så kommer det en liste over hvordan common-* filene skal se ut (disse finner du under /etc/pam.d/)

Common-account code format="bash" account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 default=ignore] pam_ldap.so account requisite pam_deny.so account required pam_permit.so code Common-auth code format="bash" auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_ldap.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so code Common-passwd code format="bash" password [success=2 default=ignore] pam_unix.so obscure md5 password [success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok try_first_pass password requisite pam_deny.so password required pam_permit.so code Common-session code format="bash" session [default=1] pam_permit.so session requisite pam_deny.so session required pam_permit.so session required pam_unix.so session optional pam_ldap.so code Så kommer det en liten sær sak fra Debian. Udev leter etter noen ikke-eksisterende grupper hos NSS og kommer deretter med en advarsel Denne gidder vi ikke og setter inn følgende: code format="bash" addgroup --system nvram addgroup --system rdma addgroup --system fuse addgroup --system kvm adduser --system --group --shell /usr/sbin/nologin --home /var/lib/tpm tss code Nå er det bare å legge til brukere
 * 1) here are the per-package modules (the "Primary" block)
 * 1) here's the fallback if no module succeeds
 * 1) prime the stack with a positive return value if there isn't one already;
 * 2) this avoids us returning an error just because nothing sets a success code
 * 3) since the modules above will each just jump around
 * 1) and here are more per-package modules (the "Additional" block
 * 1) here are the per-package modules (the "Primary" block)
 * 1) here's the fallback if no module succeeds
 * 1) prime the stack with a positive return value if there isn't one already;
 * 2) this avoids us returning an error just because nothing sets a success code
 * 3) since the modules above will each just jump around
 * 1) here are the per-package modules (the "Primary" block)
 * 1) here's the fallback if no module succeeds
 * 1) prime the stack with a positive return value if there isn't one already;
 * 2) this avoids us returning an error just because nothing sets a success code
 * 3) since the modules above will each just jump around
 * 1) and here are more per-package modules (the "Additional" block
 * 1) here are the per-package modules (the "Primary" block)
 * 1) here's the fallback if no module succeeds
 * 1) prime the stack with a positive return value if there isn't one already;
 * 2) this avoids us returning an error just because nothing sets a success code
 * 3) since the modules above will each just jump around
 * 1) and here are more per-package modules (the "Additional" block)
 * Finale finito!**

Scripting
For at man skal kunne scripte innlegging av brukere i samba og ldap må man gjøre følgende: [|Tweake smbldap-passwd scriptet]

Etter dette er gjort trenger vi 2 scripts. Et for opprettelse av buker og ett for å sette passord.(Vi kunne satt sammen disse til et, men det er jo greit med to om du bare skal gjøre den ene tingen)

Lager brukere fra liste ./Script liste code format="bash" for x in $(cat $1); do smbldap-useradd -B 1 -a -m ${x}  ; done code
 * 1) !/bin/sh
 * -B 1** for at brukeren må bytte passord ved innlogging
 * -a** for opprettelse av samba-konto
 * -m** for å opprette brukermappe på /home

Så setter vi passord for brukerne i lista ./Script liste code format="bash" for x in $(cat $1); do smbldap-passwd ${x} x${x} ; done
 * 1) !/bin/sh

code

=OpenVPN=

Install
Installerer OpenVPN på router/firewall maskinen.

Følger http://gr2linux.wikispaces.com/OpenVPN guiden.

OpenVPN LDAP Auth

 * Brukerautentisering mot LDAP.
 * Enkel Apache-style konfigurasjonsfil.
 * LDAP gruppebasert tilgangsbegrensninger.
 * Testet mot OpenLDAP, plugin autentisasjon mot LDAP-server som støtter LDAP bindings, inkludert Active Directory.

Info: []

Last ned openvpn-auth-ldap
code format="bash" cd /tmp wget http://openvpn-auth-ldap.googlecode.com/files/auth-ldap-2.0.3.tar.gz tar zvxf auth-ldap-2.0.3.tar.gz code

Last ned og installere re2c
openvpn-auth-ldap er avhengig av re2c, re2c er en scanner generator som har fokus på å generer effektiv kode for regex matching. For mer info: []

code format="bash" cd /tmp wget http://sourceforge.net/projects/re2c/files/re2c/0.13.5/re2c-0.13.5.tar.gz/download tar xvfz re2c-0.13.5.tar.gz cd re2c-0.13.5.tar.gz ./configure make make install code

Install OpenLDAP
Pluginen trenger OpenLDAP, men ikke behov for noe database backend (BDB/HDB), så diabler de i configure. code format="bash" wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.21.tgz tar xvfz openldap-2.4.21.tgz ./configure --disable-bdb --disable-hdb make depend make install code

Install gobjc package
GNU Objective-C, kompilerer objective-c og bruker gcc backend for å generere optimalisert kode. En dependecy for å kompilere openvpn-auth-ldap. code format="bash" aptitude install gobjc code

OpenVPN Source
En må ha kildekoden tilgjenlig for å kompiliere openvpn-auth-ldap code format="bash" mkdir /src cd /src mkdir openvpn cd openvpn apt-get source openvpn tar xvfz openvpn_2.1~rc11.orig.tar.gz mv openvpn_2.1~rc11 source code

Configure openvpn-auth-ldap
code format="bash" cd /tmp/auth-ldap-2.0.3 ./configure –prefix=/usr/local –with-openldap=/usr/local –with-openvpn=/src/openvpn/source make make install code

openvpn-auth-ldap conf filen
Edit auth-ldap.conf: code format="bash" nano /tmp/auth-ldap-2.0.3/auth-ldap.conf code

Vi satt den opp mot LDAP serveren med følgende konfig: code format="bash"  URL            ldap://192.168.0.2
 * 1) LDAP server URL

BindDN         "cn=admin,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no"
 * 1) Bind DN (If your LDAP server doesn't support anonymous binds)

Password      mySecretPass
 * 1) Bind Password

Timeout        15
 * 1) Network timeout (in seconds)

TLSEnable      no
 * 1) Enable Start TLS

FollowReferrals yes
 * 1) Follow LDAP Referrals (anonymously)


 * 1) TLS CA Certificate File
 * 2) TLSCACertFile /usr/local/etc/ssl/ca.pem


 * 1) TLS CA Certificate Directory
 * 2) TLSCACertDir  /etc/ssl/certs


 * 1) Client Certificate and key
 * 2) If TLS client authentication is required
 * 3) TLSCertFile   /usr/local/etc/ssl/client-cert.pem
 * 4) TLSKeyFile    /usr/local/etc/ssl/client-key.pem


 * 1) Cipher Suite
 * 2) The defaults are usually fine here
 * 3) TLSCipherSuite        ALL:!ADH:@STRENGTH

 BaseDN         "ou=people,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no"
 * 1) Base DN

SearchFilter "uid=%u"
 * 1) User Search Filter
 * 2) SearchFilter  "(&(uid=%u)(accountStatus=active))"


 * 1) SearchFilter "(&(sAMAccountName=%u)(msNPAllowDialin=TRUE))"

RequireGroup   false
 * 1) Require Group Membership


 * 1) Add non-group members to a PF table (disabled)
 * 2) PFTable       ips_vpn_users

 code En må husk å tilpasse SearchFilter til LDAP databasen.
 * 1) 
 * 2)       BaseDN          "ou=Group,dc=samba,dc=2badr-gr2,dc=testlab,dc=aitel,dc=hist,dc=no"
 * 3)       SearchFilter    "(|(cn=developers)(cn=artists))"
 * 4)       MemberAttribute uniqueMember
 * 5) Add group members to a PF table (disabled)
 * 6) PFTable       ips_vpn_eng
 * 7) 

Nå kopier .conf filen over til openvpn folderen, siden filer som ender på .conf i /etc/openvpn blir autokjørt av openvpn renamer vi den til .cfg. Det spiller ingen roller hva vi kaller den.

code format="bash" cp auth-ldap.conf /etc/openvpn/auth-ldap.cfg code

Så setter vi opp openvpn til å bruke pluginen og cfg filen. code format="bash" nano /etc/openvpn/server.conf code

Skriver inn: code format="bash" plugin /usr/local/lib/openvpn-auth-ldap.so auth-ldap.cfg code

Husk også at klienten må være satt opp for å bruke denne type auth. Vi bruker openvpn på klientsiden også, så det settes opp ved å editere client.conf. code format="bash" nano /etc/openvpn/client.conf code

Legg til: code format="bash" auth-user-pass

code

=Webtjener=

Installerer webtjeneren Apache med ssl sertifikasjon

Apache med SSL cert
code format="bash" aptitude install apache2 code

code format="bash" sudo mkdir /etc/apache2/ssl code Lage SSL cert. code format="bash" sudo openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache2/ssl/apache.pem code

code format="bash" sudo a2enmod ssl code

code format="bash" sudo nano /etc/apache2/sites-available/default code Lag en kopi/paste av hele VirtualHost *:80, og endre til VirtualHost *: 443 code format="bash"  ... ... 

 ... ...  code Legg til under begge VirtualHost code format="bash" ServerName ditt.domene.dot code Under  code format="bash" SSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.pem code

code format="bash" sudo /etc/init.d/apache2 force-reload code

Sånn, da er webtjeneren oppe og kjører. Test ved å taste ip i nettleser. Legg til sertifikat hvis bruk av HTTPS

Feilmelding
code format="bash" Restarting web server: apache2apache2: apr_sockaddr_info_get failed for apache2 apache2: Could not reliably determine the servers fully qualified domain name, using 127.0.0.1 for ServerName code Fix: code format="bash" sudo hostname ditt.domene.dot code

mySQL og PHP
Se her hvordan dette ble lagt inn: mySQL og PHP

=Router=

Vi har følgende oppsett: eth0 = external 158.38.56.68 eth1 = internal 192.168.0.1

Install
code format="bash" aptitude install dhcp3-server code

Configuration
Edit dhcpd.conf code format="bash" nano /etc/dhcp3/dhcpd.conf code

code format="bash" default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.0.255; option routers 192.168.0.1; option domain-name-servers 192.168.0.2, 8.8.8.8; option domain-name "gr2.fisk";

subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.100; } code

Sett default interface. code format="bash" nano /etc/default/dhcp3-server code

code format="bash" INTERFACE="eth1" code

code format="bash" /etc/init.d/dhcp3-server start code

IP Forwarding
Edit /etc/sysctl.conf og fjern kommentering code format="bash" Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 code

For å unngå restart: code format="bash" echo 1 > /proc/sys/net/ipv4/ip_forward code

Masquerade
Er en Linux-nettverk funksjon, Masquerade, også kalt IPMASQ eller MASQ, tillater en eller flere datamaskiner i et nettverk uten tildelte offentlig IP-adresse til å kommunisere med Internett ved hjelp av Linux-serverens IP-adresse. IPMASQ serveren fungerer som en gateway, og de andre enhetene er usynlige bak den. Hos andre maskiner på Internett vil den utgående trafikken se ut til å komme fra IPMASQ serveren og ikke de interne PCene.

code format="bash" iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE code

Firewall
Vi bestemte oss for en REJECT ALL løsning, dvs kun accept på det vi trenger og reject resten.

firewall.stop
Script for å stoppe "firewall" (flushe rules) og tillate alt.

code format="bash" clear echo "Stopping firewall and allowing everyone..." iptables -F iptables -X iptables -t nat -F iptables -t nat -X iptables -t mangle -F iptables -t mangle -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT code
 * 1) !/bin/sh

firewall.start
Selve scriptet med rules for iptables.

code format="bash" sh /root/firewall.stop
 * 1) Flush

EXTIF="eth0"
 * 1) External

EXTIP=$(/sbin/ip addr show dev "$EXTIF" | perl -lne 'if(/inet (\S+)/){print$1;last}');
 * 1) External IP address

INTIF="eth1"
 * 1) Internal interface

INTIP="192.168.2.4/32"
 * 1) Internal IP address

INTNET="192.168.2.0/24"
 * 1) Internal network address

UNIVERSE="0.0.0.0/0"
 * 1) anything/everything

echo "External: [Interface=$EXTIF] [IP=$EXTIP]" echo "Internal: [Interface=$INTIF] [IP=$INTIP] [Network:$INTNET]"

echo echo -n "Loading rules..." echo

echo 1 > /proc/sys/net/ipv4/ip_forward
 * 1) Enabling IP forwarding

ipt="iptables"


 * 1) INPUT ########

$ipt -A INPUT -i tun+ -j ACCEPT
 * 1) Allow TUN og OpenVPN

$ipt -A INPUT -p tcp -s 158.38.0.0/16 --dport 1194 -j ACCEPT $ipt -A INPUT -p tcp -s 192.168.0.0/16 --dport 1194 -j ACCEPT

$ipt -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
 * 1) Loopback

$ipt -A INPUT -i $INTIF -s $INTNET -d $UNIVERSE -j ACCEPT
 * 1) Local interface, local machines

$ipt -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j REJECT
 * 1) Spoofing

$ipt -A INPUT -i $EXTIF -p ICMP -s $UNIVERSE -d $EXTIP -j ACCEPT
 * 1) ICMP

$ipt -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 * 1) Any Related Traffic Back to server

$ipt -A INPUT -p udp -i $EXTIF --sport 53 --dport 1024:65535 -j ACCEPT
 * 1) DNS

$ipt -A INPUT -i $INTIF -p tcp --sport 68 --dport 67 -j ACCEPT $ipt -A INPUT -i $INTIF -p udp --sport 68 --dport 67 -j ACCEPT
 * 1) DHCP

$ipt -A INPUT -i $EXTIF -p tcp --dport 3128 -j ACCEPT
 * 1) SQUID

SSH="192.168.1.0/24 192.168.2.0/24 158.38.0.0/16"
 * 1) SSH

for sip in $SSH do $ipt -A INPUT -p tcp -s $sip --dport 22 -j ACCEPT done $ipt -A INPUT -p tcp --dport 22 -j REJECT

HTTP="192.168.1.0/24 192.168.2.0/24 158.38.0.0/16"
 * 1) HTTP/HTTPS traffic allowed to server from $HTTP

for sip in $HTTP do $ipt -A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s $sip -d $EXTIP --dport 80 -j ACCEPT $ipt -A INPUT -i $EXTIF -m conntrack --ctstate NEW,ESTABLISHED,RELATED -p tcp -s $sip -d $EXTIP --dport 443 -j ACCEPT done

$ipt -A INPUT -s $UNIVERSE -d $UNIVERSE -j REJECT
 * 1) Reject rest


 * 1) OUTPUT ########

$ipt -A OUTPUT -m conntrack -p icmp --ctstate INVALID -j DROP

$ipt -A OUTPUT -o lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
 * 1) Loopback

$ipt -A OUTPUT -o $INTIF -s $EXTIP -d $INTNET -j ACCEPT
 * 1) Any source to local net

$ipt -A OUTPUT -o $INTIF -s $INTIP -d $INTNET -j ACCEPT
 * 1) Any source from server to local net

$ipt -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j REJECT
 * 1) Deny stuffed routing

SITES="microsoft.com hist.no"
 * 1) Block HTTP Sites

for dip in $SITES do $ipt -A OUTPUT -d $dip -j DROP done
 * 1) Uncomment if you want to block all, not just HTTP
 * 2) $ipt -A FORWARD -d $dip -j DROP

$ipt -A OUTPUT -o $EXTIF -s $EXTIP -d $UNIVERSE -j ACCEPT
 * 1) Everything else accept

$ipt -A OUTPUT -o $INTIF -p tcp -s $INTIP --sport 67 -d 255.255.255.255 --dport 68 -j ACCEPT $ipt -A OUTPUT -o $INTIF -p udp -s $INTIP --sport 67 -d 255.255.255.255 --dport 68 -j ACCEPT
 * 1) DHCP

$ipt -A OUTPUT -p udp -o $EXTIF --dport 53 --sport 1024:65535 -j ACCEPT
 * 1) DNS

$ipt -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j REJECT
 * 1) Reject rest


 * 1) FORWARD ########

$ipt -A FORWARD -i $EXTIF -o $INTIF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT $ipt -A FORWARD -i $EXTIF -o $tun+ -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
 * 1) Accept solicited(ødnsket) tcp packets

$ipt -A FORWARD -i $INTIF -o $INTIF -j ACCEPT $ipt -A FORWARD -i $INTIF -o tun+ -j ACCEPT $ipt -A FORWARD -i tun+ -o $INTIF -j ACCEPT
 * 1) Allow packets across the internal interface

$ipt -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT $ipt -A FORWARD -i tun+ -o $EXTIF -j ACCEPT
 * 1) Forward packets from the internal network to the Internet

$ipt -A FORWARD -j REJECT
 * 1) Catch-all REJECT rule


 * 1) NAT ########

iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-port 3128
 * 1) Squid

$ipt -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE code
 * 1) Masquerade

=Backup=

Vi har satt opp en backupløsning med backuppc, som kjører incrementel backup daglig, og full engang i uka.

Install
code format="bash" aptitiude install backuppc code

Du får utgitt et passord, det kan endres hvis en ønsker det. code format="bash" htpasswd /etc/backuppc/htpasswd backuppc code

Backup med rsync
Vi bruker rsync til å kjøre backup av linux maskinker.

code format="bash" aptitiude install rsync sudo adduser backuppc code
 * På klient maskiner:**

Legg backuppc til i sudoers: code format="bash" echo "backuppc ALL=NOPASSWD: /usr/bin/rsync" >> /etc/sudoers code

Lager et ssh key pair for backuppc brukeren: code format="bash" su - backuppc ssh-keygen -t rsa -C "backuppc" ssh-copy-id backuppc@client code
 * På backuppc serveren:**

XFER settes til rsync, her kan en velge om det er default eller pr bruker. En må endre litt på cmd siden sudo brukes. code RsyncClientCmd :$sshPath -q -x -l backuppc $host sudo $rsyncPath $argList+ RsyncClientRestoreCmd: $sshPath -q -x -l backuppc $host sudo $rsyncPath $argList+ code

Backup med Samba
Alt settes opp via web-gui. Setter XFER til smb, og fyller inn: code Click "Xfer" Select "smb" Windows host (client) share name Windows host (client) "username" Windows host (client) "password" code

=Arbeidsprosess=

Timeliste
Arbeidstimer ||  ||   ||   ||   ||   ||   || 137 ||
 * || Mandag 12\04 || Tirsdag 13\04 || Onsdag 14\04 || Mandag 19\04 || Tirsdag 20\04 || Onsdag 21\04 || SUM ||
 * Anders Aune || 08.30 -13.00 || 10.30 - 19.30 || 10.00 - 16.00 || 10.00 - 16.00 || 12.00 - 19.00 || 11.00 -22.30 || 44 ||
 * Hallvard Glad || 08.30 -13.00 || 10.30 - 18.30 || 10.00 - 16.00 || 10.00 - 16.00 || 12.00 - 23.00 || 11.00 - 22.30 || 47 ||
 * Atle Jarrett || 08.30 -13.00 || 10.30 - 19.30 || 10.00 - 16.00 || 10.00 - 16.00 || 12.00 - 21.00 || 11.00 -22.30 || 46 ||
 * Totalt antall

Arbeidsfordeling
__Mandag 12\04__: Intro forelesning om case-oppgaven, så jobbet vi med løsningsdesign og planla hva vi måtte gjøre for å esse oppgaven. Lagde PowerPoint til fremføringen dagen etter. __Tirsdag 13\04__: Fremføring av løsningsdesign. Så bynte vi med å sette opp svitsj, NAT-ruter slik at vi fikk nett etc. Fortsatte med DHCP,brannmur,proxy etc. Oppretta serverne vi skulle ha. Installerte. __Onsdag 14\04__: Anders fortsatte med NAT, iptables og VPN. Atle satt opp LTSP-server og Webtjener, Hallvard satt opp samba og Ldap-server.Filtjener. Samarbeidet om de fleste oppgaver, hjalp hverandre. __Mandag 19\04__: Fortsatte med å sette opp, og feilsøking, og gjorde tilpassniner slik at alt fungerer perfekt sammen. La til LDAP autentisering i både openVPN og på LTSP-serveren(tynnklient). Ordnet slik at brukere som logger inn via tynnklient blir autentisert gjennom LDAP og får hjemmemappe lagd. __Tirsdag 20\04__: Begynte med å skrive en ordentlig "case-wiki". Samlet det vi hadde skrevet fra før, satt sammen, og skrev videre på wiki. Diskuterte og utbedra diverse løsninger. __Onsdag 21\04__: Skriver ferdig wiki. Tester også ut andre mulige løsninger for morroskyld.

Det skal sies vi har hatt lunsjpauser, og vi har også jobbet hjemme etter skoletid. Siste dagen ble utført hjemme i fra da vi skrev på wiki'en. Sanntidssamarbeid via msn!