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ć.