前面我们讲解了NFS服务器的安装和配置问题。这里我们主要讨论一下NFS安全问题以及资源使用的问题。那么首先让我们关注一下NFS的安全问题。那么在一些防火墙的配置中,我们可以进行一下操作。
NFS安全问题:
1 Iptables 防火墙
如果我们的NFS服务器在防火墙后边,则需要在防火强策略中加入如下策略:
- -A INPUT -p tcp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
- -A INPUT -p udp -m state --state NEW -m multiport --dport 111,2049,4001,32764:32767 -j ACCEPT
2 使用 /etc/hosts.allow和/etc/hosts.deny 控制客户端的访问
/etc/hosts.allow和/etc/hosts.deny这两个文件是tcpd服务器的配置文件,tcpd服务器可以控制外部IP对本机服务的访问。这两个配置文件的格式如下:
#服务进程名:主机列表:当规则匹配时可选的命令操作
- server_name:hosts-list[:command]
/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。如果两个文件的配置有冲突,以 /etc/hosts.deny为准。下面是一个/etc/hosts.allow的示例:
- ALL:127.0.0.1 #允许本机访问本机所有服务进程
- smbd:192.168.0.0/255.255.255.0 #允许192.168.0.网段的IP访问smbd服务
ALL关键字匹配所有情况,EXCEPT匹配除了某些项之外的情况,PARANOID匹配你想控制的IP地址和它的域名不匹配时(域名伪装)的情况。
比如,在服务器的 /etc/hosts.deny 文件作如下设置:
- # cat /etc/hosts.deny
- portmap:192.168.102.15
然后在客户机192.168.102.15上加载共享目录
- # mount 192.168.102.47:/home/share /mnt
- mount to NFS server '192.168.102.47' failed.
我们发现现在已经无法加载共享目录的。
资源使用
除了使用mount的命令手动挂栽共享资源,还可以使用其他方法实现共享资源的自动挂栽:
1 启动时自动挂栽
修改客户机的 /etc/fstab文件,加入类似如下行:
- 192.168.102.47:/home/share /mnt nfs rsize=8192,wsize=8192,timeo=14,intr
重启客户机,即可实现系统启动时自动挂栽共享资源
2 使用 autofs 实现资源挂栽
autofs 使用 automount 守护进程来管理你的挂载点,它只在文件系统被访问时才动态地挂载它们。 autofs 查询主配置文件 /etc/auto.master 来决定要定义哪些挂载点。然后,它使用适用于各个挂载点的参数来启动 automount 进程。主配置中的每一行都定义一个挂载点,然后用单独的配置文件定义在该挂载点下要挂载的文件系统
。
NFS服务器安装autofs
- # aptitude install autofs
修改/etc/auto.master文件, 加入如下内容:
- /mnt /etc/auto.nfs
创建 /etc/auto.nfs 文件内容如下:
- nfs -rw,soft,intr,rsize=8192,wsize=8192 192.168.102.47:/home/share
这样,每当您进入 /mnt/nfs 目录时,系统都会尝试将服务器的共享资源挂栽到该目录上。应当注意nfs目录是由 automount 动态地创建的,它不应该在客户机器上实际存在。
- tonybox2:/# cd /mnt
- tonybox2:/mnt# ls
- tonybox2:/mnt# cd nfs
- tonybox2:/mnt/nfs# ls
- 123
- tonybox2:/mnt/nfs# ls -l
- total 4
- -rw-r--r-- 1 nobody nogroup 6 2006-08-22 07:50 123
- tonybox2:/mnt/nfs#
如果修改了/etc/auto.master主配置文件,则需要运行
- #/etc/init.d/autofs reload
对NFS服务器进行重新加载。