Administrace Unixu

Z ωικι.matfyz.cz
Verze z 7. 10. 2008, 23:38, kterou vytvořil 195.113.20.80 (diskuse) (Behove urovne)

Přejít na: navigace, hledání
Administrace Unixu
Kód předmětu: NSWI106
Přednáší: Leo Galamboš

Odkazy

Přihlašování do administrace

Přednášky

  • jednou za 2 týdny

Cvičení LS 2007/2008

Budem sa snazit v priebehu semestra poskytovat info o cvikach + pripadne postupy, ktore nemusia byt vzdy spravne.

1. cviko

Instalacia OBSD

V tomto bode je asi najlepsie naraz nainstalovat jeden zo setov servrov t.j. kazdy server v danom sete.
Sety:

  • 23, 23x22, 22, 22x51, 51
  • 50, 50x20, 20, 20x21, 21
  • 56, 56x26, 26, 26x27, 27
  • 25, 25x24, 24, 24x55, 55

Pre rychlu instalaciu nedoporucujem konfigurovat siet hned pri instalacii ale za po instalacii v /etc/hostname.rozhranie (/etc/hostname.pcn0) Pokial neexistuje treba vytvorit subor s timto nazvom.

  • pre konfiguraciu ako DHCP klient
dhcp NONE NONE NONE
  • Alebo ako staticka IP
# x.x.x.x - IP stroja
# y.y.y.y - maska
# z.z.z.z - broadcast
inet x.x.x.x y.y.y.y z.z.z.z

Instalacia pomerne jednoducha naviac na strankach predmetu je podrobny navod. (1. prednaska)

Behove urovne

Pomerne vela sa hovorilo o behovych urovaniach.

  • prepnutie z multiuser modu do singleuser modu z multiuser
kill -TERM 1
  • priamo pri reboote
boot> boot -s

Nakoniec z toho vypadla uloha "root bez root-a".

  • v /etc/sysctl.conf odkomentovat
machdep.kbdreset=1 
  • v /etc/ttys vymazat vsetky secure
  • vytvorit nejakeho usera

Ulohou bolo dostat sa k pravam roota. Riesenie pomerne jednoduche

  • CTRL+ALT+DEL
  • mount -o rw /
  • zeditovat /etc/group a pridat do skupiny wheel naseho uzivatela

2. cviko

  • Hovorilo sa o starte BSD a o patricnych rc.* filesoch.
  • Pomerne cele cviko sa nieslo v duchu revizii ci/co, rci/rco, RCS, CVS.
  • Ulohou bolo napisat verziovaci skrypt vid cvika z minuleho roku.
  • Za zmienku stoji zmena prav pre konkretny subor ulozeny pod verzovanim. Prava sa nemenia priamo na konkretnom subore (xxx) ale v adresari RCS na joho "mirrore" (xxx,v).
  • dalsou ulohou bolo implementovat "linuxovske" init.d v /usr/local/etc/init.d
    • vytvorit skript pre start, stop, restart a status sshd demona
    • umiestnit do /usr/local/etc/init.d
    • vytvorit /usr/local/etc/init.d/rc.3 a umiestnit sem simlinky K00sshd a S00sshd na sshd skript
    • implementovat FOR pre spustanie (S*) a zastavovanie (K*) demonov v rc.local

3. cviko

Toto cviko sa nieslo v znameni DNS

  • rozchodit mastra pre nejaku zonu
  • rozchodit slave pre nejaku zonu
Master
  • Treba oeditovat /etc/rc.conf.local (Pokial neexistuje vytvor.) a pridat tam named_flags="" co sposoby nastartovanie named. Nasledne (ne)treba rebootovat.
echo 'named_flags=""' >> "/etc/rc.conf.local"
  • potreba nastavit named v /var/named/etc/named.conf. Ostatne veci su zakomentovane...
options {
  listen-on    { any; };
};
 
logging {
  category lame-servers { null; };
};

// TU Vynechane Standard zones v norm,alnom sa nachadzaju

// Master zones
// mpz = moja prva zona :)
zone "mpz" {
 type master;
 file "master/mpz";
 allow-transfer { IP_slaveu; };
 notify yes;
};
  • Je potreba vytvorit zone file mpz v /etc/named/master
@       IN SOA   ns.mpz. hostmaster.mpz. (
           1          ; serial
           3600       ; refresh (1 hour)
           1800       ; retry (30 minutes)
           604800     ; expire (1 week)
           3600       ; minimum (1 hour)
           )
        NS ns.mpz.
        NS ns2.mpz.
        A  127.0.0.1
        A  127.0.0.2
ns      A  x.x.x.x        // IP PCcka na ktorom bezi master 
ns2     A  y.y.y.y        // IP PCcka na ktorom bezi slave
www     A  z.z.z.z
  • je potrebne reloadovat rndc reload a rebootovat
  • po tomto by mal fungovat dotaz nslookup mpz. 127.0.0.1
Slave
  • podobne upravime a spustime i na druhom stroji s tym rozdielom, ze teraz budeme definovat v /var/named/etc/named.comf Slave zones. (master zakomentovany)
// Slave zones
zone "mpz" {
  type slave;
  file "slave/mpz";
  masters { x.x.x.x; }; // tu treba doplnit adresu PCcka, kde bezi master
};
  • znova treba reloadovat a restartovat
  • po restarte by sa mal v /var/named/slave/ file mpz (moze chvilu trvat)
  • pokial sa zadany file neobjavy treba hladat chybu v logoch.
    • (Pokial narazite na chybu time out-u jedna sa na 80% o problem konektivity. Napriklad ste zvolili 2 servre z inych setov (ping moze fungovat), firewall, blokovane porty atd.
cat /var/log/messages | grep named
Routovanie
  • Zapnut IP forwarding v /etc/systlc.conf odkomentovanim
net.inet.ip.forwarding=1
  • pridat staticku routu do /etc/hostname.[interface] (priklady [interface]: u nas "pcn0", "pcn1" atd)
route add -net Odlahla_siet/Maska Smeruj_na      // standardny pripad
route add -net 0.0.0.0/0 smeruj_na               // defaul pre koncovy bod


Priklad:

         192.168.1.0/24                 192.168.2.0/24                192.168.3.0/24
H1-----------------------------R1------------------------------R2-------------------------H2
  .1                        .2    .3                        .4    .5                   .6



//routa pre H1 v /etc/hostname.pcn0:
! /sbin/route -n add 0.0.0.0/0 192.168.1.2

//routa pre H2 v /etc/hostname.pcn0:
! /sbin/route -n add 0.0.0.0/0 192.168.3.5

//routa pre R1 v /etc/hostname.pcn1:
! /sbin/route -n add 192.168.3.0/24 192.168.2.4

//routa pre R2 v /etc/hostname.pcn0:
! /sbin/route -n add 192.168.1.0/24 192.168.2.3

4. cviko

5. cviko

6. cviko

(streda, u tej slecny... :-))


Siet: stroj{ZZZ} 51) ---- 51x22 ---- (22 stroj{ROUTER}, stroj{MAIL}


Nastavenie:

  1. vypnut NAT => ip forwarding
  2. MAIL - sekundarny DNS
  3. ROUTER - proxy DNS
  4. vytvorit novu zonu pre stroje z 51 a pridat ich dio zaznamov DNS serverov
  5. ZZZ - cache DNS

MAIL,ROUTER,ZZZ - sami sebe ako DNS (resolv.conf)


Potom:

vypneme primarny DNS

  • sekundarny ... v
  • proxy ... x
  • cache v ... x (udrzovanie cache ... 3 min)

7. cviko

  1. nainstalovat postfix
  2. zapnut logovanie ( /etc/rc.conf.local pridat >>> syslogd_flags="-a /var/spool/postfix/dev/log" <<<
    • restart syslogd (HUP)
  3. konfiguracia postfixu (/etc/postfix/main.cf) - nastavit (je tam napoveda ;-)):
    • myhostname
    • mydomain
    • myorigin
    • mydestination
  4. logovanie mailu
    • /etc/syslogd.conf
      • + mail.err /dev/console
      • + mail.debug /var/log/maillog
    • ... restart syslogd
  5. sendmail nahradime postfixom
    • mkdir /etc/aliases; newaliases
    • /etc/rc.conf.local += >>> sendmail_flags="-bd" <<<
    • z cronu root-a odstranime riadok (pod) "sendmail clientmqueue runner"
      • crontab -u root -e
    • /usr/local/sbin/postfix-enable
    • /usr/local/sbin/sendmail -bd
  6. postfix check; postfix start (mozno netreba)
  7. upravit DNS zaznamy
    • pridat zaznam >>> IN MX 10 stroj <<< (resp. "MX 10 stroj" ?)
    • restartovat named
  8. testy....
    • telnet localhost 25 :-)
    • mail root@<nazov_stroja>
    • mail root@<nazov_domeny> ....dorucenie podla MX zaznamu =)

8. cviko

NFS+YP/NIS

...filtrovanie posty bude neskor :-)

NFS

  • /etc/exports
    • Server:
      1. Zapneme:
        • portmap
        • nfs_server (.../etc/rc.conf.local portmap=YES + nfs_server=YES)
      2. mkdir /test
      3. /etc/exports: /test -alldirs -ro -network=192.168.26 -mask=255.255.255.0
      4. nakoniec:
        • /usr/sbin/portmap
        • echo -n >/var/db/mounttab
        • /sbin/mountd
        • /sbin/nfsd -tun 4
    • Klient:
      1. mount -t nfs stroj:/test /mnt/dir
        • alebo: /etc/fstab stroj:/test /mnt nfs ro 0 0
  • rpcinfo -p stroj
  • restart serveru: kill -HUP .....


YP/NIS

  1. NFS server -> YP/NIS server (master)
  2. +ostatni klienti
  3. klienti si nacitaju mapy zo servera

AMD...

9. cviko

  • nejake ukoly :o)
    1. zakazat ssh login pre roota (nie je ale zla vec mat nejakeho usera v groupe 'wheel' ;o))
    2. rozchodit ssh pripojenie bez hesla (ssh-key...)
    3. ftp server (=zalozit usera 'ftp', nazdielat kopiu suboru /etc/passwd)
    4. zalohovanie /var/log/messages (cron: 1/hod - vyrobit .tz a poslat na iny stroj)
  • CARP - zalohovanie, no more info :-)

9. cviko

      1
<>----o----<>----o----<>
YP_s                  YP_c

do hubu (1) by měl přibýt "Backup", inicializujete ho jako slave, ypinit -s

   YP_bup
      |
<>----o----<>----o----<>
YP_s                  YP_c
||
||
|[] passwd
|  master.passwd
|   - obě mapy bez roota
|    
[] amd, viz amd.home
    - /home

to se používá na klientovi YP_c

- pro experty, tupý klient a disk tahat třeba tftp

   spxe, tftp, ...


Zapoctova uloha

  • az to bude hotove, poslat maila s cislom uctu a heslami na roota na stroje...

zadanie: 4 stroje ( [51] dns, mail ) -- [51x22] server -- ( [22] ext

  • dns: primarny DNS pre domenu 51 (lubovolny nazov domeny) + YP/NIS klient
  • server: YP/NIS server
  • mail: mail server pre domenu 51 + YP/NIS klient
  • ext: dostupny z 51


Cvičení

Pozor: některé postupy uvedené dále jsou také jen pro OpenBSD, takže by měly být přesunuty na stránku OpenBSD.

1. cvičení

  • přihlášení na VMware a vytvoření strojů (rozhraní na adrese https://server.ms.mff.cuni.cz/vm/gsxmgr)

Je potreba nainštalovať si VPC (Virtual PC). Galamboš odporúča OpenBSD, ja som si zvolil Gentoo.

  • instalace OpenBSD (celkem bez problémů až na chybu broken mbr - při vytváření oblasti je nutné zapsat MBR kód (příkaz u v fdisku)

2. cvičení

  • zprovoznění routování a BINDu

Tipy a triky

  • VMware klient v linux labu potřebuje mít nastavenou proměnnou DISPLAY, proto spusťte klienta takto:
DISPLAY=localhost:0 vmware-server-console
  • SSH tunel do ms labu:
    • na virtuálním stroji pusťte:
ssh -R 3000:localhost:22 login@u1-1.ms.mff.cuni.cz cat -
    • na zadaném počítači (u1-1.…) se připojíte ke stroji na VMwaru pomocí:
ssh -p 3000 root@localhost
  • když se Vám konzola bude zdát málo barevná (ls, vim, ...), tak si nastavte stejný terminál i na u1-1.… (např. TERM=wsvt25)
  • Barevný ls (nutno nainstalovat colorls)
colorls -GCF
  • Nastaveni bash jako defaultni shell pro uzivatele root (bash je ale nutne nejdriv nainstalovat)
usermod -s `which bash` root
  • Pokud chcete, aby vim zobrazoval ve status baru aktuální mód (např.: --INSERT-- ) použijte příkaz:
set showcmd
  • Dotazování OBSD3.9 na typ terminálu lze zarazit zakomentováním následujících řádků v souboru /root/.profile:
if [ -x /usr/bin/tset ]; then
   eval `/usr/bin/tset -sQ \?$TERM`
fi

Skriptik na RCS

  • "/usr/local/bin/bash" pripadne zmente na `which bash`
  • ked si ho pomenujete edit, tak sa pouziva nasledovne
    • edit subor.txt (checkoutne RCS, varuje pred prepisanim, po edite commitne a lockne subor)
    • edit (po zavreti editoru si vypyta meno suboru a potom ho commitne)
#! /usr/local/bin/bash

# create missing RCS directory
if [ ! -d "RCS" ]; then
  mkdir "RCS"
fi 

if [ $# -gt 0 ]; then
  # if exists
  if [ -f "$1" ]; then
    # check out last version
    if ! co -l "$1"; then
      # take under version controll
      ci -l "-t${1}" "$1"
    fi
  fi
  # open in editor
  $EDITOR "$1"
  # check in (commit) after edit
  ci -u "$1"
else
  # open editor
  $EDITOR
  # read the filename
  read -p "Filename : " filename
  # if not empty commit
  if [ -n "$filename" ]; then
    ci -u "-t${filename}" "$filename"
  fi
fi

Postfix

  • Instalace
mount /dev/cd0a /mnt
cd /mnt/3.9/packages/i386
pkg_add postfix-2.2.8p1
  • You still need to edit myorigin/mydestination/mynetworks parameter settings in /etc/postfix/main.cf.
  • BTW: Check your /etc/aliases file and be sure to set up aliases that send mail for root and postmaster to a real person, then run /usr/local/sbin/newaliases.
cp /etc/mail/aliases /etc/aliases

alebo

cp /etc/postfix/aliases /etc/aliases
newaliases
  • Urobit
echo 'syslogd_flags="-a /var/spool/postfix/dev/log"' >> /etc/rc.conf.local

a restartovat syslogd.

  • Prepisat sendmail postfixom
/usr/local/sbin/postfix-enable
  • Vyhodit sendmailove vyprazdnovanie fronty
crontab -e

zakomentovat alebo zmazat riadky

# sendmail clientmqueue runner
*/30   *       *       *       *       /usr/sbin/sendmail -L sm-msp-queue -Ac -q

Zadani ukolu

  1. smazat (DISCARD) zpravy, ktere obsahuji .exe
  2. odmitat (REJECT) emaily od cronu
  3. odmitat sifrovane emaily
  4. odmitnout email, kdyz neobsahuje subject

Firewall

  • sit by mela vypadat nejak tak, jako dole na obrazku. Vedle jsou uvedene veci, ktere se maji ve firewallu na danych strojich maji povolit.
   *50            A(lfa)  - keep state
    |             B(eta)  - IN, keep state
    D             G(amma) - YP,DNS,NFS,portmap,SMTP
    |             D(elta) - NAT, RDR
G--*20   *21      D'(pro ty, co se nudi) - RDR + table + spamd
  /   \ /   \
 G     B     A
  • pravidla se nastavuji (pro OBSD) v souboru /etc/pf.conf

Alfa

  • pro Alfu by nastavovani probihalo takto:
  • do pf.conf:
set skip on lo
scrub in
# dovnitr nepustime nic
block in log 
# ven pustime vse, zachovame stav, aby nam mohli odpovidat
# u TCP se drzi stav, u UDP casove okno, u ICMP take neco
pass out log on pcn0 keep state
  • Flushneme nastaveni firewallu, povolime firewall
pfctl -F all -f /etc/pf.conf
pfctl -e
  • Pro zobrazeni statistik a podobnych veci:
pfctl -s rules
pfctl -s stat
pfctl -s nat ...
pfctl -s states  # tabulka stavu
  • Reload pravidel, ktery potom obnovi stavy
pfctl -F rules -f /etc/pf.conf 
  • Zobrazeni logu:
tcpdump -e -ttt -n -r /var/log/pflog | more
  • Pro nahozeni firewallu pri startu nastavime v /etc/rc.conf.local
pf=YES
pf_logd_flags=""

Beta:

pass out all
pass in on pcn0 from any to pcn1:network
pass in on pcn1 from pcn1:network to !(pcn1:network)
# vzdy lze pripsat za "to" "keep state", ztratime tim ale trochu vykonu

Gamma (tady si nejsem moc jisty, brat s rezervou):

block all
  • podivat se do pflog(u), co beha po siti a to, co se nam libi, povolit v pf.conf, potom flush
pfctl -F rules -F states -f /etc/pf.conf
  • netstat:
 netstat -an

 SMTP tcp from * to ctv:25
 DNS(M) tcp,udp 
        from *(:53) to ctverecek:53
        from S:53   to ctverecek:53
 DNS(S) udp
        from * to ctverecek:53
 Portmap (tcp/udp)?
        from * to ctverecek:111 
                block all
        from *:

Sledovani site

pri instalovani mrtg je potreba mit par X-kovych veci, staci rozbalit do / baliky xbase a xfont z CD.

Zkoušky

30.1.2007

Galambos na zacatku nakresil maly schematko:

1 
| 
* ----2 
| 
3 
| 
* 
| 
4 

Takze * jsou huby, cislicka kompy, uloha byla nasledujici:

  • na 1 zprovoznit master DNS nejake domeny
  • na 2 oddelegovat nejakou subdomenu
  • na 3 zprovoznit sekundar k oddelegovane subdomene
  • na 4 yp/nfs server s exportem map uzivatelu, bez uzivatele root
  • 1,2,3 meli byt klienti yp, pripadne si neco mountit pres to nfs
  • "oplechovat" komp 4 co nejlip to jde

Bylo na to neco malo pres dve hodiny. Hodi se mit ty kompy uz nejak pripravene a +/- rozchozene ( routovani , dns, ... ) a nestavet to na "zelene louce". Na druhou stranu pokud mate pripravenou sit k zapoctu tak je dobre to odevzdat pred zkouskou ( a ziskat zapocet ) abyste ji potom v prubehu zkousky mohli "narychlo" a bez obav predelat.

5. 6. 2007

Takže zadanie bolo asi takéto:

UnixAdminExam.png


Napísať skript, ktorý na servri (S) založí uživateľa, tento uživateľ sa bude môcť na klientovi CN prihlásiť a poslať mail inému uživateľovi, vytvorenom pomocou toho istého scriptu.


Obnáša to rozchodiť na stroji S SMTP server, mať DNS pre doménu na ktorú sa budú posielať maily, rozbehať NFS a samozrejme napísať ten skript.


Ještě důležitá drobnost: Postfix se měl nakonfigurovat tak, aby ukládal doručované e-maily lokálním uživatelům ve formátu Maildir (tedy 1 e-mail = 1 soubor). A na klientovi se měl rozběhat e-mailový klient, který umí s Maildir pracovat (např. pine, na Gentoo to umí automaticky, na BSD je snad potřeba nějaký patch; v každém případě je také třeba drobně konfiguraci pine upravit).

Tudíž klient nepracoval s maily přes POP3 či něco podobného, ale přímo jako se soubory v domovském adresáři uživatele (který byl samozřejmě nasdílen přes NFS).


Cíl: Zkouška byla úspěšná, pokud Leo viděl, že jeden uživatel pošle druhému přes e-mailového klienta zprávu (nikoliv přes telnet) a ten druhý tomu prvnímu zase odpoví.

24. 1. 2008

Schéma:

 1: DNS master pro zónu xxx  2: DNS master pro zónu xx.xxx, SMTP server - příjemce
                           \/ 
                           HUB
                          /
    3: YP master, mail HUB
              |
             HUB
              |
   4: YP klient, SMTP klient

Na stroji 1 se měl zprovoznit master pro zónu xxx (nebo libovolnou naši zónu), na stroj 2 se měl kus této zóny oddelegovat (např. jako xx.xxx).

Na stroji 2 se měl definovat MX záznam v této oddelegované zóně (třeba y.xx.xxx) s IP adresou stroje 2; stroj 2 měl tedy sloužit jako příjemce pošty.

Na stroji 3 se měl zprovoznit mail HUB, který by veškerou poštu od stroje 4 přijímal a doručoval SMTP serveru. Zároveň se měl na stroji 3 zprovoznit YP server exportující seznam hesel.

Stroj 4 se pak měl nakonfigurovat jako YP klient (tak, aby se na stroji 4 mohl nalogovat uživatel, jehož heslo bylo definované na stroji 3). Stroj 4 měl zároveň sloužit jako mailový klient (mělo jít poslat mail na stroj 2 přes HUB).


Jako třešničku na dortu jsme měli napsat skript (umístit jej na stroj 3), který založí nového uživatele se vším všudy (tj. založí uživatele, nechá toho, kdo skript pustí, zadat heslo, exportuje mapu hesel).