04.02 Konfiguracja kontenera st1
Po instalacji kontenera i wstępnym skonfigurowaniu środowiska, sieci itp. czas przyjrzeć się temu co domyślnie działa i wyłączyć zbędne usługi. Wcześniej jednak ustawię sobie wygodniejsze środowisko do pracy zmieniając shella i katalog domowy roota. Użyję do tego GNU seda (gsed), którego już wcześniej polecałem zainstalować wraz z innymi narzędziami GNU ułatwiającymi pracę. Pamiętacie mam nadzieję, że /usr/local jest dziedziczone ze strefy globalnej w trybie tylko do odczytu.
root@feniks:~# cp /etc/zshrc /zones/st1/root/etc root@feniks:~# zlogin st1 [Connected to zone 'st1' pts/4] Sun Microsystems Inc. SunOS 5.10 Generic January 2005 # mkdir /root # /usr/local/bin/gsed -i "/^root:/ s/:\/:\/sbin\/sh/:\/root:\/bin\/zsh/" /etc/passwd # echo "PATH=/usr/local/apache/bin:/usr/local/bin:$PATH" >> /etc/zshrc # echo "export PATH" >> /etc/zshrc # mv /.sunw /root # exit
Przy kolejnym logowaniu zostanie już uruchomiona powłoka /bin/zsh i wczytany plik /etc/zshrc, który sobie skopiowałem wcześniej ze strefy globalnej i ustawiłem w nim ścieżki (na końcu). Oczywiście zsh jest przykładowy, ja akurat używam tego, możecie użyć basha, czy co tam kto lubi.
root@feniks:~# zlogin st1
[Connected to zone 'st1' pts/4]
Last login: Thu Aug 12 13:40:01 on pts/4
root@st1:~# mv /.histfile /root
root@st1:~# netstat -an
UDP: IPv4
Local Address Remote Address State
-------------------- -------------------- ----------
*.111 Idle
*.* Unbound
*.46901 Idle
*.* Unbound
*.* Unbound
*.46902 Idle
*.4045 Idle
*.6481 Idle
*.46922 Idle
*.46923 Idle
*.46925 Idle
*.514 Idle
UDP: IPv6
Local Address Remote Address State If
--------------------------------- --------------------------------- ---------- -----
*.6481 Idle
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -----------
*.111 *.* 0 0 49152 0 LISTEN
*.* *.* 0 0 49152 0 IDLE
*.43667 *.* 0 0 49152 0 LISTEN
*.43668 *.* 0 0 49152 0 LISTEN
*.4045 *.* 0 0 49152 0 LISTEN
*.5987 *.* 0 0 49152 0 LISTEN
*.514 *.* 0 0 49152 0 LISTEN
*.6481 *.* 0 0 49152 0 LISTEN
*.513 *.* 0 0 49152 0 LISTEN
*.43669 *.* 0 0 49152 0 LISTEN
*.79 *.* 0 0 49152 0 LISTEN
*.22 *.* 0 0 49152 0 LISTEN
*.23 *.* 0 0 49152 0 LISTEN
*.43712 *.* 0 0 49152 0 BOUND
127.0.0.1.6788 *.* 0 0 49152 0 LISTEN
127.0.0.1.6789 *.* 0 0 49152 0 LISTEN
127.0.0.1.43706 *.* 0 0 49152 0 LISTEN
TCP: IPv6
Local Address Remote Address Swind Send-Q Rwind Recv-Q State If
--------------------------------- --------------------------------- ----- ------ ----- ------ ----------- -----
*.514 *.* 0 0 49152 0 LISTEN
*.513 *.* 0 0 49152 0 LISTEN
*.79 *.* 0 0 49152 0 LISTEN
*.22 *.* 0 0 49152 0 LISTEN
*.23 *.* 0 0 49152 0 LISTEN
Active UNIX domain sockets
Address Type Vnode Conn Local Addr Remote Addr
60039b36758 stream-ord 30077930300 00000000 /var/run/.inetd.uds
Sporo tych otwartych portów, nie wygląda to za dobrze, po co komu na przykład telnet? Oczywiście jeśli wstępna konfiguracja dokonywana była przez plik sysidcfg, to można było od razu tam określić profil jako limited_net i tym samym ograniczyć uruchamiane usługi. Jeśli jednak konfigurowaliśmy “z palca”, to będzie to wyglądać mniej-więcej tak jak powyżej. Można by wyłączać to pojedynczo używając poleceń svcadm, bo trzeba pamiętać, że usługi te uruchamiane są przez kolejną nowinkę z Solarisa 10 czyli Service Management Facility (w skrócie SMF).
root@st1:~# svcs STATE STIME FMRI legacy_run 15:41:36 lrc:/etc/rc2_d/S20sysetup legacy_run 15:41:36 lrc:/etc/rc2_d/S72autoinstall legacy_run 15:41:36 lrc:/etc/rc2_d/S73cachefs_daemon legacy_run 15:41:36 lrc:/etc/rc2_d/S89PRESERVE legacy_run 15:41:36 lrc:/etc/rc2_d/S98deallocate legacy_run 15:41:36 lrc:/etc/rc3_d/S16boot_server disabled 15:41:35 svc:/system/filesystem/volfs:default online 15:41:31 svc:/system/svc/restarter:default online 15:41:31 svc:/system/filesystem/root:default online 15:41:31 svc:/network/loopback:default online 15:41:32 svc:/network/pfil:default online 15:41:32 svc:/system/boot-archive:default online 15:41:32 svc:/system/installupdates:default online 15:41:32 svc:/network/physical:default online 15:41:32 svc:/system/filesystem/usr:default online 15:41:33 svc:/system/identity:node online 15:41:33 svc:/system/keymap:default online 15:41:33 svc:/system/device/local:default online 15:41:33 svc:/milestone/devices:default online 15:41:33 svc:/system/filesystem/minimal:default online 15:41:33 svc:/system/cluster/cl_boot_check:default online 15:41:33 svc:/system/name-service-cache:default online 15:41:33 svc:/system/rmtmpfiles:default online 15:41:33 svc:/system/cryptosvc:default online 15:41:33 svc:/system/identity:domain online 15:41:33 svc:/network/ipsec/ipsecalgs:default online 15:41:33 svc:/system/pkgserv:default online 15:41:33 svc:/network/ipsec/policy:default online 15:41:33 svc:/system/manifest-import:default online 15:41:33 svc:/system/coreadm:default online 15:41:33 svc:/system/patchchk:default online 15:41:33 svc:/milestone/network:default online 15:41:33 svc:/milestone/single-user:default online 15:41:33 svc:/network/initial:default online 15:41:33 svc:/network/routing-setup:default online 15:41:33 svc:/system/filesystem/local:default online 15:41:33 svc:/network/service:default online 15:41:33 svc:/network/shares/group:default online 15:41:34 svc:/network/dns/client:default online 15:41:34 svc:/system/sysidtool:net online 15:41:34 svc:/system/boot-archive-update:default online 15:41:34 svc:/milestone/name-services:default online 15:41:34 svc:/network/rpc/bind:default online 15:41:34 svc:/system/cron:default online 15:41:34 svc:/network/nfs/mapid:default online 15:41:34 svc:/network/nfs/cbd:default online 15:41:34 svc:/system/sysidtool:system online 15:41:34 svc:/network/nfs/status:default online 15:41:34 svc:/milestone/sysconfig:default online 15:41:34 svc:/network/nfs/nlockmgr:default online 15:41:34 svc:/application/stosreg:default online 15:41:34 svc:/system/sac:default online 15:41:34 svc:/network/inetd:default online 15:41:34 svc:/application/management/wbem:default online 15:41:34 svc:/system/utmp:default online 15:41:35 svc:/network/rpc/gss:default online 15:41:35 svc:/network/security/ktkt_warn:default online 15:41:35 svc:/network/shell:default online 15:41:35 svc:/network/stlisten:default online 15:41:35 svc:/network/stdiscover:default online 15:41:35 svc:/network/nfs/client:default online 15:41:35 svc:/network/login:rlogin online 15:41:35 svc:/network/rpc/rusers:default online 15:41:35 svc:/network/rpc/rstat:default online 15:41:35 svc:/system/filesystem/autofs:default online 15:41:35 svc:/network/rpc/smserver:default online 15:41:35 svc:/network/nfs/rquota:default online 15:41:35 svc:/network/finger:default online 15:41:35 svc:/network/ssh:default online 15:41:35 svc:/system/system-log:default online 15:41:35 svc:/network/telnet:default online 15:41:35 svc:/network/rpc-100235_1/rpc_ticotsord:default online 15:41:36 svc:/milestone/multi-user:default online 15:41:36 svc:/milestone/multi-user-server:default online 15:41:47 svc:/system/webconsole:console online 15:50:44 svc:/system/console-login:default
Dużo tego i niby skąd wiedzieć co należy wyłączyć? Wszystkie procesy RPC? Finger, Telnet? Co jeszcze? Proponuję zrobić to inaczej, na początek zastosujmy profil limited_net i sprawdźmy co się stanie:
root@st1:~# svccfg apply /var/svc/profile/generic_limited_net.xml
root@st1:~# netstat -an
UDP: IPv4
Local Address Remote Address State
-------------------- -------------------- ----------
*.111 Idle
*.* Unbound
*.46901 Idle
*.514 Idle
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -----------
*.111 *.* 0 0 49152 0 LISTEN
*.* *.* 0 0 49152 0 IDLE
*.5987 *.* 0 0 49152 0 LISTEN
*.22 *.* 0 0 49152 0 LISTEN
*.43712 *.* 0 0 49152 0 BOUND
127.0.0.1.6788 *.* 0 0 49152 0 LISTEN
127.0.0.1.6789 *.* 0 0 49152 0 LISTEN
127.0.0.1.43706 *.* 0 0 49152 0 LISTEN
TCP: IPv6
Local Address Remote Address Swind Send-Q Rwind Recv-Q State If
--------------------------------- --------------------------------- ----- ------ ----- ------ ----------- -----
*.22 *.* 0 0 49152 0 LISTEN
Active UNIX domain sockets
Address Type Vnode Conn Local Addr Remote Addr
60039b36758 stream-ord 30077930300 00000000 /var/run/.inetd.uds
Już lepiej, ale to jeszcze nie wszystko. Wyrzućmy jeszcze rpc/* jeśli nie są potrzebne, autofs i volfs
root@st1:~# svcs|grep rpc
online 14:39:51 svc:/network/rpc/bind:default
online 14:39:52 svc:/network/rpc/gss:default
online 14:39:52 svc:/network/rpc/smserver:default
online 14:39:52 svc:/network/rpc-100235_1/rpc_ticotsord:default
root@st1:~# svcs|gawk '/rpc/ { print $3 }'|xargs svcadm disable
root@st1:~# svcs|grep rpc
root@st1:~# svcs -xv
svc:/network/rpc/bind:default (RPC bindings)
State: disabled since Thu Aug 12 14:46:32 2010
Reason: Disabled by an administrator.
See: http://sun.com/msg/SMF-8000-05
See: man -M /usr/share/man -s 1M rpcbind
See: /var/svc/log/network-rpc-bind:default.log
Impact: 1 dependent service is not running:
svc:/system/filesystem/autofs:default
root@st1:~# svcadm disable autofs
root@st1:~# svcadm disable volfs
root@st1:~# svcs -xv
Z doświadczenia podpowiem, że teraz warto wykonać reboot kontenera i sprawdzić stan usług po ponownym zalogowaniu
root@st1:~# reboot
[Connection to zone 'st1' pts/4 closed]
root@feniks:~# zlogin st1
[Connected to zone 'st1' pts/4]
Last login: Thu Aug 12 14:47:55 on pts/4
root@st1:~# svcs -xv
svc:/network/security/ktkt_warn:default (Kerberos V5 warning messages daemon)
State: maintenance since Thu Aug 12 14:47:56 2010
Reason: Restarter svc:/network/inetd:default gave no explanation.
See: http://sun.com/msg/SMF-8000-9C
See: man -M /usr/share/man -s 1M ktkt_warnd
Impact: This service is not running.
root@st1:~# netstat -an
UDP: IPv4
Local Address Remote Address State
-------------------- -------------------- ----------
*.514 Idle
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -----------
*.5987 *.* 0 0 49152 0 LISTEN
*.22 *.* 0 0 49152 0 LISTEN
*.40180 *.* 0 0 49152 0 BOUND
127.0.0.1.6788 *.* 0 0 49152 0 LISTEN
127.0.0.1.6789 *.* 0 0 49152 0 LISTEN
127.0.0.1.40174 *.* 0 0 49152 0 LISTEN
TCP: IPv6
Local Address Remote Address Swind Send-Q Rwind Recv-Q State If
--------------------------------- --------------------------------- ----- ------ ----- ------ ----------- -----
*.22 *.* 0 0 49152 0 LISTEN
Active UNIX domain sockets
Address Type Vnode Conn Local Addr Remote Addr
30040ed8bd0 stream-ord 300397d2380 00000000 /var/run/.inetd.uds
Jeśli nie będziemy używać konsoli webowej do zarządzania, to możemy wyłączyć również i te usługi, no i tego demona od Kerberosa
root@st1:~# svcadm disable wbem webconsole
root@st1:~# svcadm disable ktkt_warn
root@st1:~# svcs -xv
root@st1:~# netstat -an
UDP: IPv4
Local Address Remote Address State
-------------------- -------------------- ----------
*.514 Idle
TCP: IPv4
Local Address Remote Address Swind Send-Q Rwind Recv-Q State
-------------------- -------------------- ----- ------ ----- ------ -----------
*.22 *.* 0 0 49152 0 LISTEN
TCP: IPv6
Local Address Remote Address Swind Send-Q Rwind Recv-Q State If
--------------------------------- --------------------------------- ----- ------ ----- ------ ----------- -----
*.22 *.* 0 0 49152 0 LISTEN
Active UNIX domain sockets
Address Type Vnode Conn Local Addr Remote Addr
3000a4dcd38 stream-ord 30022517c00 00000000 /var/run/.inetd.uds
No to został tylko syslog na 514/UDP oraz SSH na porcie 22/TCP. Oczywiście jeśli będziemy logować się do kontenera tylko przez zlogin, to SSH można też wyłączyć.
