测试属性更改是否生效。首先,启用服务。然后以普通用户的身份发送一个文件。最后验证记录文件是否被更新。
A # svcadm enable svc:/network/ftp:default
A # svcs ftp
STATE STIME FMRI
online 07:07:07 svc:/network/ftp:default
以普通用户的身份,将一个文件放入FTP存储库中。
B $ ftp A
Connected to A.
220 A FTP server ready.
Name (A:testftp):
331 Password required for testftp.
Password:
230 User testftp logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput design.tar
mput design.tar? y
200 PORT command successful.
150 Opening BINARY mode data connection for design.tar.
226 Transfer complete.
^D
ftp> 221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 361 bytes in 0 transfers.
221-Thank you for using the FTP service on A.
221 Goodbye.
B $
以超级用户身份,检查xferlog文件中的记录。该记录表明用户将design.tar文件从B机发送到A机的操作不成功。
A # cat /var/log/xferlog
Sat Jan 20 07:18:10 2009 1 B.mydomain.com 0 /home/test/design.tar b _ i r test ftp 0 * c
3.3.4 配置Apache2 Web服务
Apache2 Web服务程序是Solaris操作系统的一部分。Web服务器通常是互击者的目标。我们可使用RBAC来减少服务器的漏洞。其他Solaris功能,如区域,在创建网络服务的时候也能发挥作用。
可执行以下步骤来配置使用RBAC的服务:
1. 列出服务属性。
2. 创建一个权限文件或一个角色,或者是用于服务的授权许可。
3. 为服务添加权限或删除权限。
4. 验证服务属性是否更改成功。
5. 启用服务。
6. 验证属性更改是否生效。
SUNWapch2r和SUNWapch2u数据包提供了Apache2 Web服务器程序。Apache2服务的默认状态时禁用。
# svcs apache2
disabled 11:11:10 svc:/network/http:apache2
默认状态下,服务是通过root帐户启动。但是Apache2服务的http.conf文件创建了一个无交互后台程序webservd来运行该服务。当你用默认文件配置服务时,该服务会在root帐户下启动,切换到webservd帐户,通过所有权限运行。
执行下列操作可减少Apache2服务器的权限,并用webservd启动该服务。
·删除服务不需要的基本权限,proc_session, proc_info和file_link_any。
·添加服务使用特权端口时所需要的网络优先权, net_privaddr。
·不要更改限定设置。
·将用户和组设置为webservd。那么在SMF清单中设置完用户和组后,服务以webservd启动而不是以root帐户启动。
# svccfg -s apache2
... apache2> setprop start/user = astring: webservd
... apache2> setprop start/group = astring: webservd
... apache2> setprop start/privileges = astring:
basic,!proc_session,!proc_info,!file_link_any,net_privaddr
... apache2> end
# svcadm -v refresh apache2
Action refresh set for svc:/network/http:apache2.
欲验证该配置是否已经被成功设置,可检验服务的启动属性。
# svcprop -v -p start apache2
start/exec astring /lib/svc/method/http-apache2\ start
start/user astring webservd
start/group astring webservd
start/privileges astring
basic,!proc_session,!proc_info,!file_link_any,net_privaddr
start/limit_privileges astring :default
start/use_profile boolean false
注意,如果你创建的权限文件包含在服务的特权中,那么你可以输入权限文件的名称,并将其作为use_profile属性的值,这样可免去设置特权的麻烦。
现在,我们可以启用服务。验证服务是否在webservd帐户下开启,且是否具备受限特权。
# svcadm -v enable -s apache2
svc:/network/http:apache2 enabled.
# svcs apache2
STATE STIME FMRI
online 12:02:21 svc:/network/http:apache2
# ps -aef | grep apache | grep -v grep
webservd 5568 5559 0 12:02:22 ? 0:00 /usr/apache2/bin/httpd -k start
...
# ppriv -S 5559
5559: /usr/apache2/bin/httpd -k start
flags =
E: net_privaddr,proc_exec,proc_fork
I: net_privaddr,proc_exec,proc_fork
P: net_privaddr,proc_exec,proc_fork
L: limit