前文我们了解了DHCP安全相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16637627.html;今天我们来聊一聊IP安全相关话题;
技术背景
随着网络规模越来越大,通过伪造源IP地址实施的网络攻击(IP地址欺骗攻击)也逐渐增多;所谓源IP地址欺骗攻击是指攻击者伪造合法用户的ip地址获取网络访问权限,非法访问网络;甚至造成合法用户无法正常访问网络,或者信息泄露;

提示:如上图所示,非法主机修改自己的ip地址为合法主机的ip地址和网关通信;如果我们没有在相关接口或vlan里开启源ip地址检查,那么对应非法用户就可以正常上网;简单讲就是非法主机利用合法主机的ip地址信息,冒充合法主机进行上网;
IPSG概述
IPSG是IP Source Guard的缩写,翻译成中文就是IP源保护,或者IP源防攻击;它是基于二层接口的源ip地址过滤技术;主要作用是防止恶意主机伪造合法主机的IP地址来仿冒合法主机;确保非授权主机不能通过自己指定的IP地址的方式来访问网络或攻击网络;
IPSG工作原理
IPSG的工作原理很简单,就是利用绑定表(该表主要字段有源IP地址、源MAC地址、所属VLAN、接口)去匹配检查二层接口上收到的IP报文,只有匹配绑定表的报文才允许通过,否则对应报文会被丢弃;

提示:绑定表生成后,IPSG基于绑定表系那个指定的接口或VLAN下发ACL,由ACL来匹配检查所有IP报文;


提示:此时如果非法主机再次冒充使用合法主机ip地址,对应报文被交换机收到以后,检查对应的绑定表信息,发现对应报文ip地址等信息和绑定表中的信息不匹配,就直接丢弃了,所以此时非法主机的报文就不能被转发,从而阻止了非法主机的冒充和攻击;
绑定表分类

提示:绑定表分静态和动态两种类型;静态绑定表就是管理员手动添加的而形成的条目,主要适用于主机较少的,对应主机使用静态IP地址的场景中;动态绑定表有3种情况,第一种是利用DHCP snooping生成的绑定表,这种动态绑定表主要用于主机较多,对应主机是从DHCP服务器获取的ip地址的场景;第二种动态绑定表示是利用802.1x用户认证过程中,设备根据认证用户信息生成的绑定表;这种方式主要应用主机较多,主机使用了静态ip地址,并在网络中部署了1x认证;第三种动态绑定表是IPV6的ND Snooping,(IPV6它没有广播,它可以使用NS来自动获取ip地址,当然也可以使用ipv6的dhcp来获取地址)该表是通过侦听用户用于重复地址检测到NS报文建立;主要应用场景是针对IPV6主机,且主机较多的场景;
IPSG接口角色

提示:IPSG的接口角色、作用和DHCP Snooping接口角色、作用一样,分信任接口和非信任接口;配置信任接口,对应接口收到的ip报文就不会再检查;和DHCP Snooping一样只对非信任接口进行检查,仅支持在二层物理即可或者VLAN上应用;
IPSG应用场景
1、在接入用户侧的接口上使用IPSG

提示:在某个接口上使用IPSG,作用范围只是单个接口;
2、在接入用户侧的VLAN上使用IPSG

提示:在对应vlan上配置IPSG,作用范围是对应VLAN下所有接口;
3、在某个网段的上联接口上使用IPSG

提示:在上联的接口上使用IPSG,作用访问是通过对上联口的所有IP流量;通常这种场景使用信任接口来避免检查;一般IPSG或DHCP Snooping越靠近用户接入层配置,就越精准;效果就越理想;
IPSG配置

如上拓扑配置IPSG
dhcp-server的配置
sys
sys dhcp-server
dhcp en
int vlan 1
ip add 192.168.100.254 24
dhcp sel int
View Code
在sw1上配置dhcp snooping 生成绑定表
sys
sys sw1
dhcp en
dhcp sn en
vlan 1
dhcp sn en
int g0/0/3
dhcp sn tr
View Code
pc1和pc2拿ip地址,看看对应sw1是否正常生成绑定表?

提示:可以看到pc1和pc2设置为dhcp以后,对应交换机上的用户绑定表就生成了;
验证:将pc1关机,看看对应交换机上的绑定表条目是否会随之被删除?

提示:可以看到pc1关机,对应绑定表中的条目并没有被删除,这是因为主机关机没有发送release消息,所以对应条目也不会被交换机删除;
将pc2的ip地址修改成静态192.168.100.200,看看对应用户绑定表中对应条目是否会被删除?

提示:可以看到pc2将ip地址修改为静态192.168.100.200以后,对应交换机上的用户绑定表中的条目就被删除了;我们通过抓包可以看到,pc2修改为静态ip地址以后,对应发送了一条dhcp release的包,对应交换机收到release的包,就会将对应地址给释放掉,当然释放ip地址,随之用户绑定表中的条目也会被随之删除;
现在pc2pingdhcp-server看看是否会通?

提示:这里能通是模拟器bug,正常情况下,我们在交换机上开启了dhcp snooping以后,对应交换机用户绑定表中没有对应pc条目信息,对应pc发包会被交换机丢弃的;像这种接入交换机开启了dhcp snooping,对应终端不支持dhcp的情况下,我们要想让终端能够正常和服务器通信,我们就必须在交换机上添加对应的绑定条目;
静态添加pc2的信息到绑定表

提示:我们手动添加用户绑定条目,可以只关联ip地址,或者mac地址;也可以同时关联ip地址和mac地址以及接口和vlan;这种静态添加绑定表条目,一般用于终端不希望动态获取ip地址信息的场景;比如打印机,服务器等需要固定ip地址;
在接口g0/0/2下配置 IPSG

提示:如果在接口模式下开启ipsg,需要将对应接口的DHCP snooping开启;如果在vlan模式下开启ipsg,我们就需要进入对应vlan下,开启dhcp snooping ;这样配置以后,对应主机ip地址信息如果被其他非法用户冒充,交换机通过检查用户绑定表,对应接口下的用户信息,就可以将非法用户的报文直接丢弃;从而实现保护合法主机的目的;
开启IPSG告警以及告警阀值的配置

提示:默认阀值为100,表示被丢弃的报文个数超过100,就发送告警信息(前提是开启了告警,默认关闭);上述命令表示开启ipsg告警,同时如果丢弃报文超过10个就告警(针对该接口);如果在vlan模式下配置告警阀值,对应生效是整个vlan,如果在vlan和接口模式下都配置了告警阀值,对应生效优先级是接口模式优先vlan;
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A