Zawartość rozdziału:
Poniższa lista pokazuje kolejność, w jakiej należy zainstalować zgromadzone wcześniej narzędzia oraz zawiera ważniejsze informacje dotyczące ich instalacji. Wszystkie pakiety powinny być kompilowane z użyciem konta zwykłego użytkownika, jedynie na czas ich instalacji należy przejść na konto root.
UWAGA!
Instrukcje kompilacji odnoszą się do najnowszych dostępnych wersji programów (platforma x86) w chwili aktualizacji tego podręcznika. Ponieważ jest bardzo prawdopodobne, że w chwili czytania dostępne są już nowsze wersje, ich instalacja może ulec zmianie, w związku z czym należy się zaznajomić z dołączoną do nich dokumentacją.
tar xvf GNUzip.1.2.4.i86pc.Solaris.7.pkg.tar /bin/su pkgadd -d . GNUzip
gzip -dc GNUgcc.2.95.2.i86pc.Solaris.7.pkg.tgz | tar xvf - /bin/su pkgadd -d . GNUgcc
Po zainstalowaniu kompilatora należy usunąć skrypt /usr/ucb/cc, a w jego miejsce utworzyć łącze symboliczne do pliku /usr/local/bin/gcc:
rm /usr/ucb/cc ln -s /usr/local/bin/gcc /usr/ucb/cc
gzip -dc bison-1.25.tar.gz | tar xvf - cd bison-1.25 ./configure make /bin/su make install
gzip -dc flex-2.5.4a.tar.gz | tar xvf - cd flex-2.5.4 ./configure make /bin/su make install
gzip -dc zlib.tar.gz | tar xvf - cd zlib-1.1.3 ./configure make /bin/su make install
Podstawowy język skryptowy wspomagający administrację. Wymagany przez większość z instalowanych tutaj narzędzi.
gzip -dc perl5.005.tar.gz | tar xvf - cd perl5.005 rm -f config.sh Policy.sh sh Configure make make test /bin/su make install
gzip -dc make-3.79.1.tar.gz | tar xvf - cd make-3.79.1 ./configure make make check /bin/su make install cd /usr/local/bin ln make gmake
gzip -dc libpcap-0.5.2.tar.gz | tar xvf - cd libpcap-0.5 ./configure make /bin/su make install make install-incl make install-man
gzip -dc aide-0.7.tar.gz | tar xvf - cd aide-0.7 ./configure make /bin/su make install
Po zakończeniu instalacji należy wykonać bazę skrótów programów. Absolutne minimum to wszystkie programy typu SUID i SGID, ale zalecamy wykonanie bazy danych wszystkich plików z partycji: / (root), /usr, /usr/local (lub /opt).
Mniej dokładną bazę danych można utworzyć w stosunku do partycji /var, ale głównie chodzi nam tutaj o strukturę i prawa dostępu do katalogów, niż o skróty wszystkich plików.
Tak przygotowaną bazę danych należy umieścić na nośniku, który umożliwia pracę w trybie tylko-do-odczytu. Mogą to być dyski twarde z możliwością fizycznego ustawienia (np. za pomocą zworek) tego trybu pracy, ewentualnie zapisanie na dyskietce (nie polecamy, głównie ze względu ich awaryjność). Optymalnym rozwiązaniem byłby jej zapis na nośniku CD-R(W), oraz zrobienie - na wszelki wypadek - wydruku papierowego całej bazy.
Można również umieścić ją na serwerze NFS (również w trybie tylko do odczytu), ale należy wówczas upewnić się, że pracuje on z wykorzystaniem Secure RPC (z włączoną autentyzacja typu DES), oraz zasób ten nie jest dostępny całemu światu, ale tylko określonym komputerom. Z NFS jednak wiążą się inne problemy, a wszystkich zainteresowanych bliżej tym tematem odsyłamy do znakomitej książki Garfinkela i Spafforda "Bezpieczeństwo w Unixie i Internecie"
Program ten pozwala kontrolować dostęp do demonów uruchamianych za pośrednictwem inetd.
gzip -dc tcp_wrappers_7.6.tar.gz | tar xvf - cd tcp_wrappers_7.6 chmod u+w *
Aby zainstalować TCP wrapper należy odkomenentować następujące linie w pliku Makefile:
(linia 47) REAL_DAEMON_DIR=/usr/sbin (linia 369) TLI=-DTLI (linia 409) LIBS=-lsocket -lnsl (linia 494) STYLE=-DPROCESS_OPTIONSz kolei linię zawierającą FACILITY należy zamienić na:
(linia 517) FACILITY=LOG_LOCAL0Następnie należy skompilować program i przejść na konto roota:
make sunos5 /bin/suKolejną czynnością jest zamiana właściciela wszystkich plików:
chown root:sys *i zainstalowanie plików wykonywalnych w katalogu /usr/local/sbin:
mkdir /usr/local/sbin chmod 755 /usr/local/sbin chgrp sys /usr/local/sbin mv tcpdchk tcpdmatch try-from safe_finger tcpd /usr/local/sbin/Jeżeli planujemy korzystanie z możliwości integracji TCP wrappera z innymi programami (np.: rpcbind, ssh itp.), należy zainstalować bibliotekę libwrap.a oraz plik nagłówkowy tcpd.h:
mv libwrap.a /usr/local/lib/ mv tcpd.h /usr/local/include/Podręczniki należy zainstalować w katalogach:
mkdir /usr/local/man mkdir /usr/local/man/man3 mkdir /usr/local/man/man5 mkdir /usr/local/man/man8 chgrp sys /usr/local/man /usr/local/man/man3 /usr/local/man/man5 \Kolejną czynnością jest stworzenie plików konfiguracyjnych:
/usr/local/man/man8 chmod 755 /usr/local/man /usr/local/man/man3 /usr/local/man/man5 \
/usr/local/man/man8 mv *.3 /usr/local/man/man3/ mv *.5 /usr/local/man/man5/ mv *.8 /usr/local/man/man8/
touch /etc/hosts.allow touch /etc/hosts.deny chgrp sys /etc/hosts.allow /etc/hosts.deny chmod 644 /etc/hosts.allow /etc/hosts.denyoraz pliku zbierającego logi:
touch /var/adm/tcpwrap chgrp sys /var/adm/tcpwrap chmod 600 /var/adm/tcpwrapPlik /etc/hosts.allow powinien mieć następującą zawartość początkową:
ALL: 127.0.0.1Natomiast plik /etc/hosts.deny:
ALL: ALLDo pliku /etc/syslog.conf należy wstawić linijkę:
local0.debug /var/adm/tcpwrapNależy zwrócić uwagę na to, aby pomiędzy wyrazami "debug" a "/var/adm..." znajdowały się tabulatory, a nie spacje, których nie można stosować jako separatory w pliku /etc/syslog.conf.
Oprócz powyższych należy wyedytować plik /etc/inetd.conf i stosując się do wskazówek zawartych w dokumentacji programu zastosować wrapper do wszystkich usług, a następnie przeresetować demony:
pkill -1 syslogd pkill -1 inetd
Przedstawiona powyżej przykładowa konfiguracja plików /etc/hosts.allow oraz /etc/hosts.deny zezwala na połączenia pochodzące tylko od aplikacji lokalnych, przy czym pozostałe połączenia będą odrzucane i logowane do pliku /var/adm/tcpwrap.
Rpcbind korzysta z biblioteki libwrap.a programu TCP wrapper, dlatego też należy ją wcześniej zainstalować (patrz: punkt 7.10).
W celu instalacji programu rpcbind należy wykonać następujące polecenia:
gzip -dc rpcbind_2.1.tar.gz | tar xvf - cd rpcbind_2.1 chmod u+w *Następnie należy wyedytować plik Makefile i linię zawierającą opcję -DFACILITY zamienić na:
-DFACILITY=LOG_LOCAL0 \
Ostatnią czynnością przed kompilacją jest ustawienie zmiennej WRAP_DIR. W przypadku powłoki Bourne'a należy wydać polecenie:
WRAP_DIR=/usr/local/lib; export WRAP_DIRnatomiast jeśli pracujemy w powłoce csh:
setenv WRAP_DIR /usr/local/libpo czym można wydać komendy:
make /bin/su chown root:sys rpcbind chmod 755 rpcbind mv rpcbind /usr/local/sbin/ pkill -TERM rpcbind /usr/local/sbin/rpbind -wKolejną czynnością jest edycja pliku /etc/init.d/rpc i zamiana wszystkich wywołań /usr/sbin/rpcbind na /usr/local/sbin/rpcbind. Zmienione linie powinny mieć następującą postać:
(linia 23) [-x /usr/local/sbin/rpcbind ] || exit 0 (linia 28) /usr/local/sbin/rpcbind > /dev/msglog 2>&1
Bazując na konfiguracji z punktu 7.10 usługi RPC będą udostępniane tylko lokalnemu hostowi, natomiast połączenia pochodzące z sieci będą odrzucane i logowane do pliku /var/adm/tcpwrap.
gcc -o noshell noshell.c /bin/su chown root:sys noshell chmod 755 noshell mv noshell /sbin/
gzip -dc fix-modes.tar.gz | tar xvf - make /bin/su install -f /usr/local/bin -m 700 -u root -g sys fix-modes install -f /usr/local/bin -m 700 -u root -g sys pmodes install -f /usr/local/bin -m 700 -u root -g sys secure-modes
gzip -dc random-0.6.tar.gz | tar xvf - cd random-0.6 make /bin/su chown -R root:sys * pkgadd -d . ANDIrand sync reboot
gzip -dc openssl-0.9.6b.tar.gz | tar xvf - cd openssl-0.9.6b sh config make make test /bin/su make install
gzip -dc ssh-3.0.1.tar.gz | tar xvf - cd ssh-3.0.1 ./configure --with-libwrap=/usr/local/lib make /bin/su make install cd ./startup/solaris chown root:sys sshd2 mv sshd2 /etc/init.d/ ln /etc/init.d/sshd2 /etc/rc2.d/S95ssh2 ln /etc/init.d/sshd2 /etc/rc0.d/K08ssh2 ln /etc/init.d/sshd2 /etc/rc1.d/K08ssh2 ln /etc/init.d/sshd2 /etc/rcS.d/K08ssh2Następnie należy wyedytować plik /etc/ssh2/sshd2_config i zmienić następujące linijki na:
(linia 15) SyslogFacility LOCAL1 (linia 136) PermitRootLogin noKolejną czynnością jest dodanie do pliku /etc/syslog.conf linii:
local1.debug /var/adm/sshoraz utworzenie pliku:
touch /var/adm/ssh chgrp sys /var/adm/ssh chmod 600 /var/adm/sshNa koniec należy przeresetować demon syslogd:
pkill -1 syslogdW tym momencie można już uruchomić demon ssh2:
/etc/init.d/sshd2 start
Aby udostępnić wszystkim hostom dostęp za pomocą SSH, do pliku /etc/hosts.allow należy dopisać linię:
sshd2: ALL
gzip -dc stunnel-3.21c.tar.gz | tar xvf - cd stunnel-3.21c ./configure --with-pem-dir=/usr/local/ssl/certs make /bin/su make install cp stunnel.pem /usr/local/ssl/certs/
gzip -dc lsof.tar.gz | tar xvf - tar xvf lsof_4.60.tar cd lsof_4.60 ./Configure solaris make /bin/su install -f /usr/local/man/man8 -m 644 -u root -g sys lsof.8 install -f /usr/local/bin -m 2755 -u root -g sys lsof
gzip -dc top-3.5beta9.tar.gz | tar xvf - cd top-3.5beta9 ./Configure make /bin/su make install
gzip -dc npasswd-2.05.tar.gz | tar xvf - gzip -dc npasswd-words.tar.gz | tar xvf - mv npasswd-2.00/dict/* npasswd-2.05/dict/ cd npasswd-2.05 ./Configure (zamiast /usr ustawić /usr/local) make /bin/su make install (wymaga polecenia gunzip!)ln /usr/local/lib/passwd/npasswd /usr/local/bin/npasswd
gzip -dc snort-1.7.tar.gz | tar xvf - cd snort-1.7 ./configure make /bin/su make installJeżeli chodzi o zbiór reguł, to należy je skopiować do katalogu /etc:
chown root:sys snortfull.conf chmod 644 snortfull.conf cp snortfull.conf /etc/Kolejną czynnością jest modyfikacja powyższego pliku, a konkretnie zmiennych:
var HOME_NET adres_naszej_podsieci/maska var EXTERNAL_NET anyNastępnie należy utworzyć katalog, w którym będą przechowywane logi, np.:
mkdir /var/adm/snort chgrp sys /var/adm/snort chmod 700 /var/adm/snortoraz utworzyć plik startowy /etc/init.d/snort z następującą zawartością:
#!/bin/sh case "$1" in 'start') /usr/local/bin/snort -Afast -e -c /etc/snortfull.conf -D -l /var/adm/snort -b echo "Snort started." ;; 'stop') pkill snort echo "Snort stopped." ;; *) echo "Usage: $0 { start | stop }" exit 1 ;; esac exit 0Prawa dostępu do powyższego pliku należy ustawić następująco:
chown root:sys /etc/init.d/snort chmod 744 /etc/init.d/snortNastępnie należy wykonać sztywne łącza:
ln /etc/init.d/snort /etc/rc2.d/S98snort ln /etc/init.d/snort /etc/rcS.d/K15snort ln /etc/init.d/snort /etc/rc1.d/K15snort ln /etc/init.d/snort /etc/rc0.d/K15snortNależy również utworzyć katalog /var/run, w którym snort umieszcza swój PID:
mkdir /var/run chgrp sys /var/run chmod 1777 /var/runNastępnie można już uruchomić snorta:
/etc/init.d/snort start
gzip -dc ip-fil3.4.14.tar.gz | tar xvf - cd ip_fil3.4.14 make solaris CC=gcc /bin/su cd SunOS5 make package CC=gccPo wykonaniu powyższych poleceń pakiet zostanie zainstalowany w katalogu /opt/ipf.
/etc/opt/ipf/ipf.conf /etc/opt/ipf/ipnat.confReguły są odczytywane przez moduł firewalla przy każdorazowym wejściu do trybu 2, lub przy użyciu poleceń:
/sbin/ipf -Fa -f /etc/opt/ipf/ipf.conf /sbin/ipnat -CF -f /etc/opt/ipf/ipnat.confDomyślnie IPFilter loguje zdarzenia za pomocą syslogd korzystając z LOCAL1. Ponieważ koliduje to z SSH, dlatego też następującą linię należy dopisać do pliku /etc/syslog.conf:
local2.debug /var/adm/ipfilteroraz utworzyć plik /var/adm/ipfilter, do którego będą kierowane logi:
touch /var/adm/ipfilter chmod 600 /var/adm/ipfilter chgrp sys /var/adm/ipfilterNależy również pamiętać o restarcie demona syslogd:
pkill -1 syslogdi oczywiście o używaniu parametru LOCAL2 w regułach firewalla.
Ponieważ konfiguracja firewalla zależy bezpośrednio od zadań stawianych przed serwerem oraz od polityki bezpieczeństwa, nie jest możliwe utworzenie uniwersalnych reguł, które można by odnieść do każdego systemu. W przypadku każdego serwera (lub grupy serwerów) reguły takie należy utworzyć osobno.
Bardzo dobry i zwięzły opis IP-Filtera oraz zasad tworzenia reguł znajduje się w podręczniku napisanym przez Conoboya i Fichtnera "IP Filter Based Firewalls HOWTO", który można ściągnąć ze strony www.ipfilter.org.
Przykładowe pliki reguł umieszczamy poniżej. W naszym przypadku była to stacja robocza 192.168.11.34 znajdująca się w sieci prywatnej 192.168.11.0 z dostępem do internetu (za NAT). Stacja udostępnia tylko usługę SSH (port 22) oraz jest klientem sieci internet (żadne usługi wychodzące nie są blokowane). Głównym celem stawianym przed firewallem jest ochrona hosta przed atakami z sieci wewnętrznej.
Plik /etc/opt/ipf/ipf.conf:
# IP-FILTER rules file # ======================================================================== # Input packets # ======================================================================== block in quick on nei0 from 172.16.0.0/12 to any block in quick on nei0 from 127.0.0.0/8 to any block in quick on nei0 from 10.0.0.0/8 to any block in quick on nei0 from 0.0.0.0/32 to any block in log level local2.alert quick on nei0 from 192.168.11.34/32 to any # SSH Server pass in quick on nei0 proto tcp from any to any port = 22 flags S keep state keep frags # TELNET Server # pass in quick on nei0 proto tcp from any to any port = 23 flags S keep state keep frags # FTP Server (Active) # pass in quick on nei0 proto tcp from any to any port = 21 flags S keep state keep frags # FTP Server (Passive) (FTP Server (Active) should be uncommented, too) # pass in quick on nei0 proto tcp from any to any port > 1023 flags S keep state keep frags block return-rst in log level local2.alert quick on nei0 proto tcp from any to 192.168.11.34/32 block return-icmp-as-dest(port-unr) in log level local2.alert quick on nei0 proto udp from any to 192.168.11.34/32 block in quick on nei0 all # ======================================================================== # Output packets # ======================================================================== pass out quick on nei0 proto tcp from any to any flags S keep state keep frags pass out quick on nei0 proto udp from any to any keep state keep frags pass out quick on nei0 proto icmp from any to any keep state keep frags
Plik /etc/opt/ipf/ipnat.conf:
# IP-FILTER NAT rules file # Client of FTP Server (Active) map nei0 0/0 -> 0/32 proxy port 21 ftp/tcp
Instalację postfixa należy rozpocząć od kompilacji programu:
gzip -dc postfix-19991231-pl10.tar.gz | tar xvf - cd postfix-19991231-pl10 make /bin/suKolejną czynnością jest dokonanie backupu sendmaila:
mv /usr/lib/sendmail /usr/lib/sendmail.OFF unlink /usr/bin/newaliases unlink /usr/bin/mailq chmod 755 /usr/lib/sendmail.OFFNastępnie należy utworzyć grupę oraz użytkownika postfix:
groupadd postfix useradd -g postfix -d /home/nowhere -s /sbin/noshell -c "Postfix" postfixW pliku /etc/aliases należy dodać alias:
postfix: rootNastępnie należy dodać grupę maildrop:
groupadd maildroporaz uruchomić skrypt:
sh INSTALL.shW trakcie wykonywania skryptu należy potwierdzić opcje domyślne z wyjątkiem:
sendmail_path /usr/lib/sendmail setgid maildropPo zakończeniu działania skryptu należy przejść do katalogu /etc/postfix oraz wyedytować plik main.cf zmieniając następujące parametry:
myhostname=nazwa_serwera.pelna.domena.serwera mydomain=pelna.domena.serwera mydestination=$myhostname,localhost$.mydomain alias_maps=dbm:/etc/aliases mail_spool_directory=/var/mail smtpd_banner=$myhostname ESMTP (Sendmail, Qmail, whatever you want...)Następnie można już uruchomić postfixa:
postfix start
![]() |
![]() |
![]() |