Populaarsete teenuste pidamine OpenBSD abil

Allikas: Kuutõrvaja
Redaktsioon seisuga 31. oktoober 2009, kell 22:23 kasutajalt Imre (arutelu | kaastöö) (DHCP server)

Sissejuhatus

OpenBSD abil teenuste, nt nimeserveri ja veebiseveri pidamisel torkab Linuxi ja Solarise kasutajatele ilmselt olulise erinevusena silma

  • puuduvad nö tavapärased /etc/init.d/serverinimi käivitusskriptid (mis on tegelikult üks nn BSD-line ilming; õigupoolest on ses mõttes Linux ja Solaris System V legacy'ga)
  • vaikimisi on teenused pigem chroot'itud

Teenuste käivitumist bootimisejärgselt saab juhtida /etc/rc.conf, õigemini /etc/rc.conf.local faili abil. Seaditusfailides tehtud muudatuste kehtestamiseks tuleb saata protsessile sobiv signaal või kasutada sobivat utiliiti, nt named puhul on olemas programm rndc.

Nimeserver

Nimeserveri tarkvara sisaldub OpenBSD opratsioonisüsteemis, seadistusfailid asuvad kataloogis /var/named. Nimeserveri käivitamiseks tuleb öelda

 # named

/etc/rndc.key moodustamiseks ja chroot alla kopeerimiseks sobib öelda

 # rndc-confgen -a
 # cp /etc/rndc.key /var/named/etc

Veebiserver

Veebiserveri takrkvara sisaldub OpenBSD operatsioonisüsteemis, seadistusfailid asuvad kataloogis /var/www. Veebiserveri käivitamiseks tuleb öelda

# httpd

Kui veebiserver peaks käivituma mitte-chrootitult, tuleb lisada lõppu võti -u.

DHCP server

DHCP server tarkvara sisaldub OpenBSD operatsioonisüsteemi põhiosas, serveri tööd juhib seadistusfail /etc/dhcpd.conf. Olgu ülesandeks pakkuda OpenBSD tulemüüri kahe füüsilise võrguseadme külge ühendatud võrkudes

  • em0 - jagada aadresse vahemikus 192.168.10.32 - 192.168.10.63
  • em2 - jagada aadress vahemikus 192.168.252.32 - 192.168.252.63
  • mac aadressiga 00:11:25:85:64:34 arvutil on fikseeritud ip aadress 192.168.10.216

Lisaks öeldakse klientidele vaikelüüsi ja nimeserveri aadresse.

Vastav seadistusfail võiks olla näiteks sellise sisuga

shared-network wifi {
  option  domain-name-servers 192.168.10.254;
  option domain-name "wifi";   
 
  subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.32 192.168.10.63;
    option broadcast-address 192.168.10.255;
    option routers 192.168.10.254;
  }

  host arvuti-1.wifi {
    hardware ethernet 00:11:25:85:64:34;
    fixed-address 192.168.10.216;
    option broadcast-address 192.168.10.255;
    option routers 192.168.10.254;
  }
}
 
shared-network kontor {
  option  domain-name-servers 192.168.252.254;
  option domain-name "kontor";   
 
  subnet 192.168.252.0 netmask 255.255.255.0 {
  range 192.168.252.32 192.168.252.63;
  option broadcast-address 192.168.252.255;
  option routers 192.168.252.254;
  }
}

Käivitamine toimub käsuga, kus em0 em2 on nende võrguseadmete nimed, millel dhcp teenus tööle hakkab, seejuures on oluline, et vastaval füüsilisel seadmele on seadistatud ip aadress

 # dhcpd em0 em2

OpenBSD nn baasi kuuluv dhcpd tarkvara erineb nt ISC DHCP serverist, mida kasutatakse paljudes Linuxi distributsioonides selle poolest, et OpenBSD dhcpd ei kuula nö UDP porti, vaid kasutab BPF'i (Berkeley Packet Filter).

Ajaserver

Süsteemi õige aeg on oluline näiteks logifailide kasutamise seisukohast. OpenBSD nn baas-komplekti kuulub ntpd programm (OpenNTPD tarkvara), mille seadistusfailiks on /etc/ntpd.conf. Süsteemi enda aja õigena hoidmiseks piisab seadistusfailis ridadest, kus ip aadres on sobiva võrguseadme aadress

 listen on 127.0.0.1
 servers pool.ntp.org

ntpd käivitamiseks sobib öelda, -s võti seab nö järsku käivitamisel aja õigeks (vastasel korral võib kuluda päevi kuni kellaaeg tasakesi korrigeeritakse)

 # ntpd -s

Logisse ilmub samal ajal

 # tail -f /var/log/daemon
 ...
 Jun  8 00:21:05 cpq ntpd[14069]: listening on 127.0.0.1
 Jun  8 00:21:05 cpq ntpd[14069]: ntp engine ready
 Jun  8 00:21:05 cpq ntpd[10430]: set local clock to Mon Jun  8 00:21:05 EEST 2009 (offset -0.000471s)
 Jun  8 00:21:26 cpq ntpd[14069]: peer 194.204.30.8 now valid

Kui lisada järele võti -d on võimalik jälgida aja sünkroniseerimise protsessi

 # ntpd -d
 # ntpd -d                                                                                                                              
 ntp engine ready
 reply from 81.20.144.33: offset -0.044867 delay 0.000408, next query 7s
 reply from 81.20.150.42: offset -0.049221 delay 0.000622, next query 5s
 reply from 193.40.133.142: offset -0.046872 delay 0.003714, next query 8s
 reply from 193.40.5.113: offset -0.046573 delay 0.003994, next query 8s
 reply from 84.50.81.46: offset -0.045684 delay 0.045518, next query 9s

Kuna süsteemis puudub ntptrace laadne utiliit, siis sedasi on sobiv jälgida ntpd toimimist, nt kas tal õnnestub pääseda läbi eemaloleva tulemüüri välja vajalike ajaserveriteni.

-s võtme lisades on pilt selline

 # ntpd -d -s
 ntp engine ready
 reply from 81.20.144.33: offset -11050.410252 delay 0.000351, next query 6s
 set local clock to Sat Aug 16 23:51:20 EEST 2008 (offset -11050.410252s)

Kui soovida seda arvutit kasutada kohaliku ajaserverina tuleb lisada seadistusfaili rida

 listen on 192.168.11.254

Sellise teenuse käest saab pärida aega näiteks selliselt

 # rdate -p 192.168.11.254 
 Sat Aug 16 23:49:12 EEST 200

OpenBSD OpenNTPD tarkvarale on iseloomulik, et temalt ei saa Debiani ntp paketist pärit ntptrace kliendiga läbi, aga kliendi sünkroniseerituse kontrolliks sobib öelda ka ntpq -p, tärn rea algul tähendab praktiliselt seda, et klient on ennast ära sünkroniseerinud

 # ntpq -p
    remote                    refid      st t when poll reach   delay   offset  jitter
 =====================================================================================
 *ntp.loomaaed.tartu.ee 194.204.30.8     3 u    9   64   77    0.278  -13.143  19.441

Squid

OpenBSD 4.5 versioonis saab paketiga squid-2.7.STABLE6 pidada transparent proxit. Esmalt paigaldada pakett

 # pkg_add squid-2.7.STABLE6
 squid-2.7.STABLE6: complete
 --- squid-2.7.STABLE6 -------------------
 NOTES ON OpenBSD POST-INSTALLATION OF SQUID 2.7
 
 The local (OpenBSD) differences are:
 configuration files are in              /etc/squid
 sample configuration files are in       /usr/local/share/examples/squid
 error message files are in              /usr/local/share/squid/errors
 sample error message files are in       /usr/local/share/examples/squid/errors
 icons are in                            /usr/local/share/squid/icons
 sample icons are in                     /usr/local/share/examples/squid/icons
 the cache is in                         /var/squid/cache
 logs are stored in                      /var/squid/logs
 the ugid squid runs as is               _squid:_squid
 
 Please remember to initialize the cache by running "squid -z" before
 trying to run Squid for the first time.
 
 You can also edit /etc/rc.local so that Squid is started automatically:
 
     if [ -x /usr/local/sbin/squid ]; then
         echo -n ' squid';       /usr/local/sbin/squid
     fi

Seejärel kasutada nt sellist seadistusfaili, kohendage vastavalt vajadusele, ennekõike acl nimekirju

 http_port 192.168.1.254:3128 transparent
 http_port 192.168.10.254:3128 transparent
 dns_nameservers localhost
 hierarchy_stoplist cgi-bin ?
 acl QUERY urlpath_regex cgi-bin \?
 no_cache deny QUERY
 
 acl all src 192.168.1.0/24 192.168.10.0/24
 acl manager proto cache_object
 acl localhost src 127.0.0.1/255.255.255.255
 acl SSL_ports port 443
 acl Safe_ports port 80
 acl purge method PURGE
 
 acl CONNECT method CONNECT
 http_access allow manager localhost
 http_access deny manager
 http_access allow purge localhost
 http_access deny purge
 http_access deny !Safe_ports
 http_access deny CONNECT !SSL_ports
 http_access allow localhost
 http_access allow all
 http_access deny all
 
 cache_access_log /var/squid/logs/access.log

TFTP

TFTP serveri kasutamiseks tuleb kasutada inetd superserveri seadistusfailis /etc/inetd.conf nt sellist rida

 tftp            dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -s /tftpboot

kusjuures andmeid hoitakse traditsiooniliselt kataloogis /tftpboot, aga tingimata ei pea.

TFTP kliendi kasutamiseks tuleb öelda

 $ tftp 192.168.10.210
 tftp> get failinimi
 Received 2000 bytes in 0.0 seconds
 tftp> quit

TFTP kasutamisel koos tulemüüriga peab arvestama, et TFTP kasutab udp protokolli, kusjuures va esimesel kliendi serveri poole pöördumisel porti 69 kasutatakse suvalisi porte. Nt ühel juhul toimus sellise andmevahetus

 # tcpdump -nttti ne3 udp
 tcpdump: listening on ne3, link-type EN10MB
 Jan 25 22:39:01.456920 192.168.10.101.56454 > 192.168.10.210.69: 16 RRQ "failinimi" (DF)
 Jan 25 22:39:01.476531 192.168.10.210.40977 > 192.168.10.101.56454: udp 516
 Jan 25 22:39:01.476675 192.168.10.101.56454 > 192.168.10.210.40977: udp 4 (DF)
 Jan 25 22:39:01.477007 192.168.10.210.40977 > 192.168.10.101.56454: udp 516
 Jan 25 22:39:01.477147 192.168.10.101.56454 > 192.168.10.210.40977: udp 4 (DF)
 Jan 25 22:39:01.477243 192.168.10.210.40977 > 192.168.10.101.56454: udp 516
 Jan 25 22:39:01.477352 192.168.10.101.56454 > 192.168.10.210.40977: udp 4 (DF)
 Jan 25 22:39:01.477434 192.168.10.210.40977 > 192.168.10.101.56454: udp 468
 Jan 25 22:39:01.477612 192.168.10.101.36085 > 192.168.10.210.40977: udp 4 (DF)
 Jan 25 22:39:06.481241 192.168.10.210.40977 > 192.168.10.101.56454: udp 468

Kui TFTP kliendi ja serveri vahel asub OpenBSD tulemüür, sobib kasutada tftp-proxy programmi.

RCS versioonihaldussüsteem

OpenBSD RCS (Revision Control System) tarkvara kuulub OpenBSD nn baastarkvara koosseisu ja võimaldab sarnaselt tuntud CVS või Subversion tarkvarale korraldada tekstide versioonihaldust.

Lokaalseks süsteemi kasutamiseks võiks moodustada sobiva nimega töökataloogi, nt

 $ mkdir rcs
 $ cd rcs

ning sinna moodustada failid, millega asutakse tööle, näiteks (vaikimisi pole küll /etc/pf.conf selliselt kasutajana kopeeritav)

 $ cp /etc/pf.conf .

RCS kasutamine algab spetsiaalse RCS kataloogi tekitamisega ja failide versioonihalduse alla lisamisega, 'end of file' sisestamine toimub valides klaviatuurilt Ctrl+D

 $ mkdir RCS
 $ ci pf.conf
 RCS/pf.conf,v  <--  pf.conf
 enter description, terminated with single '.' or end of file:
 NOTE: This is NOT the log message!
 >> paketifiltri seadistusfail
 >> initial revision: 1.1
 done

Tulemusena on kustutatud pf.conf fail kõnealusest kataloogist ning ta esineb RCS kataloogis. Et failiga töötada, tuleb esmalt teha versioonihaldusest selle faili väljavõte

 $ co -l pf.conf
 RCS/pf.conf,v  -->  pf.conf
 revision 1.1 (locked)
 done

Tulemus on selline

 $ find . -ls
 1225724    4 drwxr-xr-x    3 mart     mart          512 Apr 29 20:21 .
 1225732    4 drwxr-xr-x    2 mart     mart          512 Apr 29 20:21 ./RCS
 1225735   20 -r--r--r--    1 mart     mart         9447 Apr 29 20:21 ./RCS/pf.conf,v
 1225734   20 -rw-r--r--    1 mart     mart         9233 Apr 29 20:21 ./pf.conf

Versioonihalduse all oleva faili omaduste vaatamiseks sobib kasutada rlog programmi

 $ rlog pf.conf
 RCS file: RCS/pf.conf,v
 Working file: pf.conf
 head: 1.1
 branch:
 locks: strict
       mart: 1.1
 access list:
 symbolic names:
 keyword substitution: kv
 total revisions: 1;     selected revisions: 1
 description:
 paketifiltri seadistusfail
 ----------------------------
 revision 1.1    locked by: mart;
 date: 2009/04/29 17:20:45;  author: mart;  state: Exp;
 Initial revision
 =============================================================================

NFS

NFS serveri tööd juhib seadistusfail /etc/exports, mille sisu võiks olla nt selline

 # cat /etc/exports
 /var/nfs/root -maproot=root -alldirs 10.0.6.170 10.0.6.237

Käivitamiseks sobib öelda

 # /usr/sbin/portmap
 # echo -n >/var/db/mountdtab
 # /sbin/mountd
 # /sbin/nfsd -tun 4

Selleks, et NFS server käivituks arvuti alglaadimise käigus tuleb kasutada /etc/rc.conf.local failis direktiive

 portmap=YES
 nfs_server=YES

Python

OpenBSD 4.5 i386 platvormil sisaldab kolme Pyhtoni keele versiooni

 # pkg_add python
 Ambiguous: python could be python-2.4.6 python-2.5.4 python-2.6.1

Tundub, et 2.5 on optimaalne selles mõttes, et ta on suhteliselt uus ja samas on muid pythoni teeke, mis sellega sobivad

 # pkg_add python-2.5.4
 bzip2-1.0.5: complete                                                                                                                    
 sqlite3-3.6.10: complete                                                                                                                 
 python-2.5.4: complete                                                                                                                   
 --- python-2.5.4 -------------------
 If you want to use this package as your default system python, as root
 create symbolic links like so (overwriting any previous default):
 ln -sf /usr/local/bin/python2.5 /usr/local/bin/python
 ln -sf /usr/local/bin/python2.5-config /usr/local/bin/python-config
 ln -sf /usr/local/bin/pydoc2.5  /usr/local/bin/pydoc