如何为VMware配置和保护Linux?

日期: 2008-09-02 作者:Andrew Kutz翻译:唐琼瑶 来源:TechTarget中国 英文

在上一部分中,我们学习了如何安装Linux,我们安装了所有必须的Ubuntu Linux组件。现在我们能继续配置和保护Ubuntu安装。在这部分中,我们将讨论到这些步骤。   配置   由于Ubuntu Server Install CD可能通常不在服务器的CD-ROM里,我们需要告知Ubuntu为随后的更新另觅地方。

(这个CD不包含来自Ubuntu的最新包装)为了从更新序列里删除CD媒介,我们将在文件来源里注释掉它的入口。输入:   sudo vi /etc/apt/sources.list   找到任何以“deb cdrom”开始的入口行,通过在行前加前缀a “#”……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在上一部分中,我们学习了如何安装Linux,我们安装了所有必须的Ubuntu Linux组件。现在我们能继续配置和保护Ubuntu安装。在这部分中,我们将讨论到这些步骤。

  配置

  由于Ubuntu Server Install CD可能通常不在服务器的CD-ROM里,我们需要告知Ubuntu为随后的更新另觅地方。(这个CD不包含来自Ubuntu的最新包装)为了从更新序列里删除CD媒介,我们将在文件来源里注释掉它的入口。输入:

  sudo vi /etc/apt/sources.list

  找到任何以“deb cdrom”开始的入口行,通过在行前加前缀a "#"(磅)字符注释掉行。这时候,你必须决定是否将为来自主要Ubuntu错误或一个本地的服务器回收更新。如果你需要进一步编辑文件指向一个本地的知识库,那么这样做。

  保存文件并退出编辑。

  网络配置
  
  现在我们来看看需要配置的网络设置。

  /etc/network/interfaces

  如果你的服务器里有附加的NIC,现在是时候配置它们了。我们需要编辑文件/etc/network/interfaces。

  sudo vi /etc/network/interfaces

  在我们修改文件之前,应该像下面这样:

NIC

  这个节以“auto eth2”开始并以“dns-nameservers”结束,应整体复制。你的可能不读eth2;如果是这样,大多数可能是eth0 或eth1。不管这个,一旦这个节被下面(或上面)现有的覆盖,我们需要对副本作一些更改。

  这个副本仍然读“eth2”。在副本里任何读“eth2”的地方,你应该更改成在服务器安装期间你记下的那些NIC ID号里的一个。例如,在下面的屏幕,我把副本“eth2”改成“eth0”。

NIC ID

  如果你注意到,我也在原先的节上更改了注释,从“原先的网络界面”到“管理网络界面”。我也更改了副本上“虚拟机网络界面”的注释。

  你应该为服务器的每个NIC重复复制原始节的过程。服务器拥有的NIC的数量(或至少是驱动有的)与你安装时记录的NIC ID的数量相同。所有附加的NIC专用于虚拟机,因此当你复制时,你也应该更改它们的注释为“虚拟机网络界面”。只有原始的NIC将专用于管理服务器和VMware;其余的NIC将专用于虚拟机本身。

  一旦配置了所有的NIC,保存并退出文件。为了核实我们所作的更改是正确的,输入下面内容在服务器上重新启动网络:

  sudo /etc/init.d/networking restart
 
  由于你没有任何连接的网络线缆,这个命令需要很长时间。如果你没有收到任何错误信息,那么配置是正确的。如果收到错误信息,你应该返回并检查文件,看看是否输入了错误的信息。如果你发现不了错误,你可能通常应该在lostcreations dot com网站给我发邮件了。

  /etc/hosts

  我们需要修改/etc/hosts文件以便服务器有一个完全合格的域名。输入:

  sudo /etc/hosts

  你的主机文件将和下面的屏幕类似:

主机文件

  你的主机文件和我的主机文件的差别在于我已经在服务器添加了一个FQDN(完全合格域名)。看我文件的第二行,在主机名“vms02”之前,我添加了服务器的FQDN“vms02.lostcreations.com”。在文件里添加你的FQDN,保存并退出文件。

  在控制台输入下面的命令能确认你的服务器拥有了FQDN:

  hostname –f

  这将返回到你服务器的FQDN。

  Syslog

  如果你访问一个专用的系统日志服务器,继续并指示服务器发送所有调试水平的日志登录。可以通过编辑文件file0 /etc/syslog.conf做到:

  sudo vi /etc/syslog.conf

  添加这行到文件里的任何地方:

  *.debug @FQDN_OR_IP_OF_SYSLOG_SERVER

  保存并退出文件。假若你需要使用服务器诊断一个问题并不能登录的话,所有在系统日志的调试记录能帮助你。

  禁用服务

  Ubuntu Server装载了大量VMware服务器不需要的服务。如果服务器不需要使用一个服务,那么这个服务就不需要在启动时启用。我禁用的两个服务是alsa-utils和pcmciautils。你可能会发现其他你希望禁用的服务。你能通过/etc/init.d目录清单看见一系列服务。

  alsa-utils

  文件/etc/init.d/alsa-utils很容易禁用。为了禁用alsa-utils,重新命名每一个在/etc/rcS.d/里的文件“S50alsa-utils”代号连接“K50alsa-utils”。这将在启动时从启用禁止alsa-utils。现在为了停止这个服务,输入:

  sudo /etc/init.d/alsa-utils stop

  pcmciautils

  为了禁止pcmciautils,在/etc/rcS.d/里重新命名”S13pcmciautils“代号连接为“S87pcmciautils”。这将在启动时从启用里禁止pcmciautils服务。现在为了停止这个服务,输入:

  sudo /etc/init.d/pcmciautils stop

  保护

  尽管Ubuntu Linux是一个安全的操作系统,我们能做一些事情减少额外的攻击。

  Host.deny与hosts.allow

  hosts.deny和hosts.allow文件允许我们配置与服务器上的任何开放端口会话的远程主机。例如,ssh守护进程支持TCP封装,因此,它将尊重由hosts.deny和hosts.allow文件定义的ACLs。另一方面,Apache Web服务器(默认下)不支持TCP封装,因此,hosts.deny和hosts.allow文件客户端能访问的Apache进程开放的端口没有影响。

  我练习了访问控制,这意味着我明确地拒绝所有的访问并同意访问。为了明白地拒绝访问,编辑/etc/hosts.deny文件:

  sudo vi /etc/hosts.deny

  添加这行到文件的末端:

  ALL:ALL

  保存并退出文件。这时候,如果你的服务器与网络相连,没有远程客户端能够访问任何由支持TCP封装过程开放的端口。这是因为你已经明确地拒绝了所有客户端。

  现在,你需要允许一些客户端。编辑etc/hosts.allow文件:

  sudo vi /etc/hosts.allow

  通过在文件的末端添加下面的代码允许某些客户端的所有远程连接:

  ALL:CLIENT_HOSTNAME_1, CLIENT_HOSTNAME_2, CLIENT_IP_ADDRESS_1,
  *.CLIENT.DOMAIN.COM

  保存并退出文件。通过主机名和IP地址,你能看见添加到文件里的目录。为了学习更多关于主机访问控制列表文件,在shell里输入下面的行:

  man hosts_access

  显示的man页面将描述hosts.deny和hosts.allow文件的格式(提示,它们是相同的格式)。

  这时候,所有远程客户端被拒绝访问由支持TCP封装(tcp wrappers)进程所扩展的服务器端口,除了那些你明确允许的客户端。并且由于目前仅开放的端口是支持sshd进程的22,并且由于sshd支持TCP封装,如果你的服务器在网络上,那么只有在hosts.allow文件里明确允许的客户端能够通过ssh与服务器连接。

  SSHD

  除了主机访问文件,另一种锁定ssh daemon的方法是限制客户端使用公共密匙认证。

  请确定你想要这么做。如果你确实要这么做,那么你将不能使用密码通过ssh远程登录服务器。你需要有一个公共密匙。如果你不确定这一步,请阅读sial.org上的关于ssh和公共密匙的文档。

  为了限制ssh daemon,编辑etc/ssh/sshd_config:

  sudo vi /etc/ssh/sshd_config

  找到这一行:

  # PasswordAuthentication yes

  并更改为不接受密码认证:

  PasswordAuthentication no

  我们也需要告诉ssh daemon只应该监听管理界面NIC。找到这行:

  # ListenAddress 0.0.0.0

  用下面的代替:

  ListenAddress MGMT_NIC_IP

  MGMT_NIC_IP是管理网络界面的IP。更改这个设置意味着ssh daemon将不会监听专用于虚拟机的NIC。

  保存并退出文件。输入下面的行重新启动ssh daemon:

  sudo /etc/init.d/ssh restart

  现在,ssh daemon将只接受公共密匙认证并只监听来自管理界面NIC上的连接。

  IPtables

  为了预防到服务器上的未授权访问,我们将建立防火墙。我们将在/etc/rc.local里设置这些规则以便在启动时间里启用,编辑etc/rc.local:

  sudo vi /etc/rc.local

  在文件里复制和粘贴下面的防火墙规则,使用服务器管理网络界面的IP地址代替MGMT_NIC_IP。

  - --- 开始复制 ---

#
# INPUT
#

# allow all incoming traffic from the management interface NIC
# as long as it is a part of an established connection
iptables -I INPUT 1 -j ACCEPT -d MGMT_NIC_IP -m state --state
RELATED,ESTABLISHED

# allow all ssh traffic to the management interface NIC
iptables -I INPUT 2 -j ACCEPT -p TCP -d MGMT_NIC_IP --destination-port 22

# allow all VMware MUI HTTP traffic to the management interface NIC
iptables -I INPUT 3 -j ACCEPT -p TCP -d MGMT_NIC_IP --destination-port 8222

# allow all VMware MUI HTTPS traffic to the management interface NIC
iptables -I INPUT 4 -j ACCEPT -p TCP -d MGMT_NIC_IP --destination-port 8333

# allow all VMware Authorization Daemon traffic to the management
interface NIC
iptables -I INPUT 5 -j ACCEPT -p TCP -d MGMT_NIC_IP --destination-port 902

# reject all other traffic to the management interface NIC
iptables -I INPUT 6 -j REJECT -d MGMT_NIC_IP --reject-with
icmp-port-unreachable


#
# OUTPUT
#

# allow all outgoing traffic from the management interface NIC
# if it is a part of an established connection
iptables -I OUTPUT 1 -j ACCEPT -s MGMT_NIC_IP -m state --state
RELATED,ESTABLISHED

# allow all DNS queries from the management interface NIC
iptables -I OUTPUT 2 -j ACCEPT -s MGMT_NIC_IP -p UDP --destination-port 53

# reject all other traffic from localhost
iptables -I OUTPUT 3 -j REJECT -s 127.0.0.1 --reject-with
icmp-port-unreachable

# reject all other traffic from the management interface NIC
iptables -I OUTPUT 4 -j REJECT -s MGMT_NIC_IP --reject-with
icmp-port-unreachable

- --- 结束复制 ---

  一旦你在/etc/rc.local里复制和粘贴了防火墙,装载它们请输入:

  sudo /etc/init.d/rc.local start

  核实防火墙已装载,输入:

  sudo iptables –L

  你能看见防火墙目录在shell里。请记住防火墙目录是一个相当限制的设置,不过仅关于管理界面NIC。这个防火墙规则设置一点都不影响服务器里其他的NIC及专用于虚拟机的NIC。

  如果通过ssh,你有一个到服务器的远程控制session并且不能发送一些服务器的信息或发到另一台服务器,记住,你想这样做的话就必须编辑防火墙规则。例如,这个规则没有考虑到你想要更新的服务器。

  开始网络

  现在该安全地配置网络了。一旦上面这些完成,如果正确输了所有的网络信息,服务器就能在网络上通话了。

  在这一系列的下一部分中,我们将讨论如何保护VMware Server及监视与备份服务器。

作者

Andrew Kutz
Andrew Kutz

Andrew是微软MCAD和MCSD认证专家。Andrew具有从事技术行业十多年的经验。在过去的六年中,他一直专注于最新的技术。同时任职位于美国奥斯汀的德克萨斯州立大学。两年前,Andrew自己成立一家咨询公司和开发中心,叫做lostcreations。他同时也是奥斯汀VMware用户群(VMUG)的创始成员。他目前开发的项目是Sudo for Windows(http://sourceforge.net/projects/sudowin)。 Andrew在2004年开始专注客户虚拟化工作;2005年开始推进德克萨斯州立大学中心技术部门信息技术服务(ITS)的服务器虚拟化。2006年,Andrew设计并实施了ITS的第一个企业虚拟服务器基础设施环境。

相关推荐