专项小结
1、虚拟机带宽控制
Q:如何实现虚拟机带宽控制?
A:通过libvirt的virsh工具可以实现虚拟机上传和下载流量控制,virsh工具使用方法如下:
virsh domiftune <domain> <interface> inbound x outbound y --live
domain 虚拟机id
interface 虚拟机网卡MAC地址
inbound 后接x是虚拟机下载流量限制值,单位是KB
outbound 后接y是虚拟机上传流量限制值,单位是KB
Q:能否取消虚拟机带宽控制?
A:libvirt提供的virsh domiftune没有取消流量控制
如上,设置一个足够大的inbound和outbound可以达到取消流量控制的效果,可设为15000。
2、安全审计
Q:日志审计系统如何获取远程服务器的组件日志?
A:远程服务器的组件日志存在.log文件中,可以通过rsyslog获取并传到日志审计服务器。修改远程服务器配置/etc/rsyslog.conf,添加下面的内容来手机nc组件日志:
$Modload imfile #File 1 $InputFileName /var/log/eucalyptus/nc.log $InputFileTag tag1: $InputFileStateFile /tmp/eucalyptus-nc-state $InputFileFacility local4 $InputFileServerity info $InputRunFileMonitor |
并在该配置文件最后添加local4.* @@remote-nost:514 remote-host是日志审计服务器地址)
Q:日志审计系统能否收集同一远程服务器的不同组件日志?
A:可以通过rsyslog收集同一主机的不同组件日志。修改远程服务器配置/etc/rsyslog.conf,添加如下内容来手机nc和audit组件日志:
$Modload imfile #File 1 $InputFileName /var/log/eucalyptus/nc.log $InputFileTag tag1: $InputFileStateFile /tmp/eucalyptus-nc-state $InputFileFacility local4 $InputFileServerity info $InputRunFileMonitor #File 2 $InputFileName /var/log/audit/audit.log $InputFileTag tag1: $InputFileStateFile /tmp/audit-state $InputFileFacility local4 $InputFileServerity info $InputRunFileMonitor |
并在该配置文件最后添加local4.* @@remote-nost:514 remote-host是日志审计服务器地址)
3、抗拒绝服务攻击
Q:如何设置通过简单的iptables规则实现抗拒绝服务攻击?
A:在iptables的mangle表中,对PREROUTING链设置以下规则可以实现抗拒绝服务攻击:
iptables -A PREROUTING -t mangle -p icmp --icmp-type echo-request -m limit --limit 6/min --limit-burst 30 -j ACCEPT iptables -A PREROUTING -t mangle -p icmp --icmp-type echo-request -j DROP iptables -A PREROUTING -t mangle -p tcp --syn -m limit --limit 1/min --limit-burst 30 -j ACCEPT #iptables -A PREROUTING -t mangle -p tcp --tcp-flags SYN,ACK,FIN,RST -m limit -limit 1/min --limit-burst 30 -j ACCEPT iptables -A PREROUTING -t mangle -p tcp --syn -j DROP iptables -A PREROUTING -t mangle -p udp -m limit --limit 10/min --limit-burst 30 -j ACCEPT iptables -A PREROUTING -t mangle -p udp -j DROP |
Q:使用tcpdump抓取拒绝服务攻击包时能否通过协议来抓取?
A:可以,tcpdump抓包工具支持抓取指定协议的数据包,举例抓取来自192.168.7.107的udp包,其抓包命令如下:
#tcpdump -i br0 src 192.168.7.107 and udp -A -s0
Q: 什么是mangle表?
A:mangle表是iptables三表五链的其中一个表。Mangle表的作用是改变包的属性,同时,网络数据包进入本地时,必将首先经过mangle表的PREROUTING链。
4、防恶意软件加载
Q:windows防恶意软件加载如何实现?
A:windows提供软件白名单功能,白名单启用后仅允许运行和安装白名单里的软件。通过修改注册表可以很方便的启用白名单。启用白名单的注册表注入文件如下:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer] "NoDriveTypeAutoRun"=dword:00000091 "RestrictRun"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\RestrictRun] "1"="nfscmd.exe" "2"="iexplore.exe" "3"="regedit.exe" "4"="QQ.exe" "5"="wps.exe" "6"="wpp.exe" "7"="Foxmail.exe" "8"="mmc.exe" "9"="notepad.exe" "10"="chrome.exe" "11"="mspaint.exe" "12"="AcroRd32.exe" "13"="et.exe" |
Q:linux如何实现防恶意软件加载?
A:linux强制访问控制策略与windows软件白名单效果相似,可以作为防恶意软件加载方法。以Linuxmint为例,通过内核重编译加入强防控制grsecurity。
使用gradm2命令来生成强防规则:
#开启强防学习模式,根据用户操作自动生成学习日志
#gradm2 -F -L learn.log
#从日志文件生成强防规则
#gradm2 -F -L learn.log -O policy
5、ipv6支持
Q:ipv6是否支持dhcp固定MAC分配?
A:可以使用linux下的dhcpd -6来启动一个ipv6的dhcp服务,可以为指定的MAC地址分配固定ipv6地址。linux虚拟机可以通过dhcp客户端获取ipv6地址,windows虚拟机不支持这种方式的dhcp服务。
Q:ipv6转换为数字后占128bit,如何进行地址池计算?
A:在ipv6字符串地址转换为数值进行计算时,可以转换为前64bit和后64bit,通过后64bit来计算地址池。
Q:开启ipv6支持,虚拟机获取不到ipv6地址?
A:虚拟机的ipv6地址通过dhcp分配。首先在CC上检查DHCP服务是否开启:
#ps -aux | grep dhcp
可以看到dhcpd -6 进程,如果看不到该进程,检查CC端是否配置ipv6地址。
CC端ipv6地址与平台配置文件/etc/eucalyptus/eucalyptus.conf中的DNSv6配置相同:
VNET_DNSV6=””
6、vlan支持
Q:vlan模式下,如何实现虚拟机网络隔离?
A:通过vlan-tag实现虚拟机网络隔离。Vlan模式下,云平台将一个安全组视为一个虚拟vlan。虚拟机启动时为eth0创建一个vlan标签eth0.*和一个网桥eucabr*,虚拟机的虚拟网卡vnet*和eth0.*挂载同一个网桥上,实现同一vlan之间的通信,并阻断不同vlan之间的通信。
Q:vlan支持需要什么样的条件?
A:vlan支持需要CC和NC之间的交换机都支持vlan-tag。可以通过vlan-claan来验证,下面是vlan-clean方法:
在CC上:
#vconfig add eth0 10
#ifconfig eth0.10 192.168.1.2 up
在NC上:
#vconfig add eth0 10
#ifconfig eth0.10 192.168.1.3 up
#ping 192.168.1.2
以上方法中,最后的ping能通则说明服务器交换机支持vlan。
vlan模式下,kvm的虚拟机将不再使用br0作为虚拟机桥接网桥,而是使用eucabr*作为桥接网桥,所以在配置vlan前需要清除宿主上的br0网桥
#ifconfig br0 down
#brctl delbr br0
Q:vlan支持云平台配置文件如何配置?
A:云平台的MANAGED模式是对应支持vlan的,主要配置项如下:
VNET_MODE=”MANAGED” VNET_PRIVINTERFACE=”eth0” VNET_PUBINTERFACE=”eth0” VNET_PUBLICIPS= VNET_SUBNET= VNET_NETMASK= VNET_ADDRSPERNET= VNET_DNS= |
Q:vlan模式下,为什么在不同vlan下的虚拟机相互能ping通?
A:先来看一个例子,在下图中,pc3,pc4,pc5分别连接到vlan3,vlan4,vlan5上. Linux box的eth0连到交换机的trunk口上。在linux box上,配置eth0.3,eth0.4,eth0.5三个vlan interface,并配置相应的ip地址。在pc3,pc4,pc5上分别设置缺省网关为eth0.3,eth0.4,eth0.5上的地址。这样,pc3,pc4,pc5就可以通过linux box的转发来实现相互间的通信。
在vlan模式下,CC服务器上会创建与虚拟机相同的vlan-tagging,并配置对应vlan的缺省网关地址,此时,CC服务器可以看做是如上图的linux box。
如果想要禁止vlan之间的相互通信,把设置在eth0.*上的缺省网关地址删除即可。注意删除的缺省网关一定要重新加到eth0网卡上。使用ip add\del 可以完成以上操作。
Q:vlan模式下,虚拟机能不能更改所在vlan?
A:不能,云平台中,每一个vlan对应一个安全组,每个安全组都有不同的子网和网关,不同安全组的ip地址不重复。在不重新分配地址的情况下,虚拟机无法更改所在的vlan。
7、安全告警
Q:使用hMailServer搭建的报警邮箱无法发送报警邮件?
A:原因是在平台中设置了管理员邮箱为外网邮箱,而在内网环境下,邮件无法发送系统信息到外网邮件,继而一直尝试重新发送,占据大量发件队列,造成告警邮件无法发出。解决办法是,进入hMailServfer管理界面,清空邮件服务器的发送邮件队列clear queue。
Q:使用hMailServer搭建的报警邮箱无法接收报警邮件?
A:设置邮箱容量达到设置的最大值时,无法接收到任何邮件。进入进入hMailServfer管理界面,清空邮箱空间或增加邮箱空间即可收到报警邮件。
8、测试环境
Q:怎么配置服务器ipv6地址,使其开机自动配置?
A:修改/etc/sysconfig/network-scripts/ifcfg_br0
NM_CONTROLLED=yes ONBOOT=yes TYPE=Bridge BOOTPROTO=none PREFIX=24 DEFROUTE="yes" IPV4_FAILURE_FATAL="yes" #IPV6INIT=no USERCTL=no
DEVICE=br0 IPADDR=192.168.7.106 GATEWAY=192.168.7.254 DNS1=124.16.136.254 NETMASK=255.255.255.0
IPV6ADDR=2001:db8:0:1::5/64 IPV6INIT=yes IPV6_AUTOCONF=no IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=yes |
Q:云平台组件SC启动失败?
A:云平台组件SC启动失败一般是组件启动时获取到非预期的ip地址,解决办法是清除SC所在宿主机上除eth0上配置的SC组件ip地址之外的所有网卡上的ip地址。
如在eth1上有ip地址 192.168.0.1,则执行:
#ip addr del 192.168.0.1 dev eth1,或关闭eth1网卡:ifdown eth1
Q:云平台组件CLoud启动失败?
A:云平台组件cloud启动前,关闭dnsmasq服务,因为他与cloud会占用同一个端口53。将dnsmasq从开机启动服务中删去:
#/etc /init.d/dnsmasq stop
#chkconifg dnsmasq off
Q:云平台资源总数为0?
A:如果云平台组件配置正确,但资源总数为0是因为NC服务器时间与CLC服务器时间相差较多。执行时间同步命令可以解决这个问题。
#ntpdate -u ip-cloud
#hwclock --systohc
Q:为什么windows虚拟机能够分配到IP地址而linux虚拟机分配不到?
A:云平台未配置ipv6时,centos虚拟机配置网卡时,如果将ipv6和ipv4均配置为dhcp自动获取,他们会使用同一个dhcp客户端。dhcp客户端首先探寻ipv6的dhcp服务,如果未在第一时间探寻到DHCP -6服务,dhcp客户端将关闭而不是继续探寻ipv6的dhcp服务,这会导致虚拟机无法获取ip地址。解决方法是修改镜像网卡配置,取消ipv6的dhcp自动获取配置。
云平台在已经配置ipv6的情况下,如果ipv6的dhcp服务启动失败,也会导致linux虚拟机无法获取ip地址。此时,需检查CC服务器的ipv6地址时候与云平台配置VNET_DNSV6相同。