我的未实现项目。 200个MikroTik路由器网络



大家好 本文适用于那些在公园中拥有许多Mikrotik设备并且希望最大程度地统一以便不分别连接每个设备的用户。 在本文中,我将描述一个不幸的项目,该项目由于人为因素未能达到战斗条件。 简而言之:超过200台路由器,快速配置和人员培训,按区域统一,过滤网络和特定主机,轻松向所有设备添加规则,日志记录和访问控制的能力。

下面描述的内容并不能算是完整的案例,但是希望对您的网络规划和最小化错误有帮助。 也许有些观点和决定对您来说不合适-如果是这样,请在评论中写下。 在这种情况下,批评将是普通存钱罐中的一种经验。 因此,请读者看一下评论,也许作者犯了一个严重的错误-社区会有所帮助。

路由器的数量为200-300,分布在不同城市的Internet连接质量不同。 有必要将所有事情做得漂亮,并随时向本地管理员说明一切如何工作。

因此,任何项目从哪里开始。 当然,使用TK

  1. 根据客户要求为所有分支机构组织网络计划,进行网络分段(分支机构中从3到20个网络,具体取决于设备的数量)。
  2. 在每个分支中配置设备。 在不同的工作条件下检查提供商的实际带宽。
  3. 组织设备保护,白名单管理,在一定时间范围内通过自动将其列入黑名单来自动检测攻击,并尽量减少使用各种技术来拦截控制访问和拒绝服务。
  4. 根据客户要求,通过网络过滤来组织安全的VPN连接。 每个分支到中心至少3个VPN连接。
  5. 根据第1、2段。选择构建容错VPN的最佳方法。 如果承包商正确选择了动态路由技术,则可以选择。
  6. 根据客户使用的协议,端口,主机和其他特定服务来组织流量优先级。 (VOIP,提供重要服务的主机)
  7. 组织监视和记录路由器事件,以响应技术支持人员。

据我们了解,在许多情况下,传统知识是根据需求编制的。 在听完主要问题后,我自己制定了这些要求。 我承认其他人可能会执行这些要点。

将使用哪些工具来满足这些要求:

  1. ELK堆栈(一段时间后,人们了解到将使用fluentd代替logstash)。
  2. 太好了 为了简化管理和共享访问权限,我们将使用AWX。
  3. GITLAB。 无需解释。 没有配置的版本控制的地方。
  4. 威力 初始配置将有一个简单的脚本。
  5. Doku Wiki,用于编写文档和手册。 在这种情况下,请使用habr.com。
  6. 监视将通过zabbix完成。 将在此处绘制连接图以进行一般理解。

EFK设置时刻


在第一段中,我将仅描述构建索引所依据的意识形态。 有很多
关于从运行mikrotik的设备设置和接收日志的优秀文章。

我将在以下几点上做详细说明:

1.根据该方案,值得考虑从不同地方和不同端口接收日志。 为此,我们将使用日志聚合器。 此外,我们还希望为所有路由器制定通用时间表,以实现共享访问。 然后我们按如下方式构建索引:

这是流利的配置
类型Elasticsearch
logstash_format为true
index_name mikrotiklogs.north
logstash_prefix mikrotiklogs.north
flush_interval 10秒
主持人elasticsearch :9200
9200端口


因此,我们可以根据计划mikrotiklogs.west,mikrotiklogs.south,mikrotiklogs.east组合路由器和分段。 为什么使这个复杂化? 我们知道我们将拥有200台或更多的设备。 不要跟踪所有内容。 从Elasticsearch 6.8版开始,我们可以访问安全设置(无需购买许可证),因此我们可以在技术支持人员或本地系统管理员之间分配查看权限。
表格,图表-在这里您只需要同意-可以使用相同的表格,也可以各自使用适合自己的表格。

2.通过记录。 如果启用防火墙规则中的登录,那么我们将使用不带空格的名称。 可以看出,使用流利的简单配置,我们可以过滤数据并制作方便的面板。 在下面的图片中,我的家用路由器。

图片

3.根据占用的地方和日志。 平均而言,每小时每小时有1000条消息,日志每天占用2-3 mb,这并不算多。 Elasticsearch 7.5版。

ANSI.AWX


对我们来说幸运的是,我们有一个现成的用于路由器的模块
我指出了AWX,但以下命令仅是最纯形式的ansible-我认为对于使用ansible的用户来说,使用gui awx不会有任何问题。

老实说,我承认在看过其他使用ssh的指南之前,每个人在响应时间和其他问题上都有不同的问题。 我再说一遍,它并没有进入战斗,将这些信息作为一次实验,并没有超出20台路由器的范围。

我们需要使用证书或会计。 由您决定,我需要证书。 关于权利的一些微妙之处。 我具有写权限-至少无法完成“重置配置”。

生成,复制证书和导入应该没有问题:

队伍短名单
在您的电脑上
ssh-keygen -t RSA,回答问题,保存密钥。
复制到mikrotik:
用户ssh-keys导入public-key-file = id_mtx.pub user = ansible
首先,您需要创建一个帐户并为其分配权限。
通过证书检查连接
ssh -p 49475 -i /键/ mtx ansible@192.168.0.120

我们写vi / etc / ansible /主机
MT01 ansible_network_os =路由器oss ansible_ssh_port = 49475 ansible_ssh_user = ansible
MT02 ansible_network_os =路由器oss ansible_ssh_port = 49475 ansible_ssh_user = ansible
MT03 ansible_network_os =路由器oss ansible_ssh_port = 49475 ansible_ssh_user = ansible
MT04 ansible_network_os =路由器oss ansible_ssh_port = 49475 ansible_ssh_user = ansible

好吧,一个剧本的例子:
-名称:add_work_sites
主持人:testmt
序列号:1
连接:network_cli
remote_user:mikrotik.west
collect_facts:是
任务:
-名称:添加Work_sites
routeros_command:
命令:
-/ ip防火墙地址列表添加地址= gov.ru列表= work_sites注释= Ticket665436_Ochen_nado
-/ ip防火墙地址列表添加地址= habr.com列表= work_sites注释= for_habr

从上面的配置可以看到,编译您的剧本非常容易。 掌握cli mikrotik就足够了。 设想一种情况,在所有路由器上,您都需要删除包含某些数据的地址列表,然后:

查找和删除
/ ip firewal地址列表删除[查找列表=“ gov.ru”]

我故意没有在此处插入防火墙的整个清单。 每个项目都将是单独的。 但是可以肯定的是,仅使用地址列表。

通过GITLAB,一切都清楚了。 我不会在这一刻详述。 对于单独的任务,模板,处理程序,一切都很漂亮。

动力壳


将有3个文件。 为什么使用powershell? 任何人都可以选择生成配置的工具。 在这种情况下,每个人的PC上都有窗口,所以为什么在Powershell更方便的情况下在bash上执行此操作。 给谁比较方便。

脚本本身(简单明了):
[cmdletBinding()]
参数(
[参数(必填= $ true)]
[string] $ EXTERNALIPADDRESS,
[参数(必填= $ true)]
[string] $ EXTERNALIPROUTE,
[参数(必填= $ true)]
[string] $ BWorknets,
[参数(必填= $ true)]
[string] $ CWorknets,
[参数(必填= $ true)]
[string] $ BVoipNets,
[参数(必填= $ true)]
[string] $ CVoipNets,
[参数(必填= $ true)]
[string] $ CClientss,
[参数(必填= $ true)]
[string] $ BVPNWORKs,
[参数(必填= $ true)]
[string] $ CVPNWORKs,
[参数(必填= $ true)]
[string] $ BVPNCLIENTSs,
[参数(必填= $ true)]
[string] $ cVPNCLIENTSs,
[参数(必填= $ true)]
[string] $ NAMEROUTER,
[参数(必填= $ true)]
[string] $ ServerCertificates,
[参数(必填= $ true)]
[string] $ infile,
[参数(必填= $ true)]
[string] $ outfile


获取内容$ infile | Foreach对象{$ _。替换(“ EXTERNIP”,$ EXTERNALIPADDRESS)} |
Foreach对象{$ _。替换(“ EXTROUTE”,$ EXTERNALIPROUTE)} |
Foreach对象{$ _。替换(“ BWorknet”,$ BWorknets)} |
Foreach对象{$ _。替换(“ CWorknet”,$ CWorknets)} |
Foreach对象{$ _。替换(“ BVoipNet”,$ BVoipNets)} |
Foreach对象{$ _。替换(“ CVoipNet”,$ CVoipNets)} |
Foreach对象{$ _。替换(“ CClients”,$ CClientss)} |
Foreach对象{$ _。替换(“ BVPNWORK”,$ BVPNWORKs)} |
Foreach对象{$ _。替换(“ CVPNWORK”,$ CVPNWORKs)} |
Foreach对象{$ _。Replace(“ BVPNCLIENTS”,$ BVPNCLIENTSs)} |
Foreach对象{$ _。替换(“ CVPNCLIENTS”,$ cVPNCLIENTSs)} |
Foreach对象{$ _。Replace(“ MYNAMERROUTER”,$ NAMEROUTER)} |
Foreach对象{$ _。替换(“ ServerCertificate”,$ ServerCertificates)} | 设置内容$ outfile


请原谅我,我不能列出所有规则,因为 它不会很漂亮。 您可以在最佳实践的指导下自己制定规则。

例如,这是我受其引导的链接列表:
wiki.mikrotik.com/wiki/手册 :Securing_Your_Router
wiki.mikrotik.com/wiki/手册 :IP /防火墙/过滤器
wiki.mikrotik.com/wiki/Manual:OSPF示例
wiki.mikrotik.com/wiki/Drop_port_scanners
wiki.mikrotik.com/wiki/Manual:Winbox
wiki.mikrotik.com/wiki/手册Upgradeing_RouterOS
wiki.mikrotik.com/wiki/Manual:IP / 快速通道 -在这里您需要知道,启用快速通道时,对流量进行优先级排序和整形的规则将不起作用-对弱设备有用。

变量符号:
以以下网络为例:
192.168.0.0/24工作网络
172.22.4.0/24 VOIP网络
10.0.0.0/24网络(无局域网访问)
大型分支机构的192.168.255.0/24 VPN网络
172.19.255.0/24小型VPN网络

网络地址由4个十进制数字组成,分别为ABCD,替换按照相同的原理工作,如果启动时要求输入B,则需要为网络192.168.0.0/24输入一个数字0,对于C = 0。
$ EXTERNALIPADDRESS-提供者的专用地址。
$ EXTERNALIPROUTE-到网络的默认路由是0.0.0.0/0
$ BWorknets-工作网络,在我们的示例中将为168
$ CWorknets-工作网络,在我们的示例中为0
$ BVoipNets-这里的示例中的VOIP网络22
$ CVoipNets-这里的示例中的VOIP网络4
$ CClientss-客户网络-仅Internet访问,此处为0
$ BVPNWORKs-大型分支机构的VPN网络,在我们的示例20中
$ CVPNWORKs-大型分支机构的VPN网络,在我们的示例中为255
$ BVPNCLIENTS-小型分支机构的VPN网络,然后是19
$ CVPNCLIENTS-小型分支机构的VPN网络,表示255
$ NAMEROUTER-路由器的名称
$ ServerCertificate-您预先导入的证书名称
$ infile-指定从中读取配置文件的路径,例如D:\ config.txt(英文路径最好不要带引号和空格)
$ outfile-指示保存路径,例如D:\ MT-test.txt

出于明显的原因,我有意更改了示例中的地址。

我略过了检测攻击和异常行为的要点-这值得一提。 但值得指出的是,在此类别中,您可以将监控数据的值与Zabbix结合使用+通过elasticsearch计算出卷曲数据。

在什么时候您需要关注:

  1. 网络计划。 最好使其立即可读。 足够了。 不幸的是,我经常看到网络是按照以下原则编译的:“出现了一个新分支,这里是/ 24”。 没有人知道应该在给定位置放置多少台设备以及是否会进一步增长。 例如,开了一家小商店,最初很明显该设备将不超过10,为什么分配/ 24? 相反,在大型分支机构中-他们分配/ 24,并且有500台设备-您可以只添加一个网络,但您想立即考虑所有问题。
  2. 过滤规则。 如果项目假定网络和最大细分之间将存在分离。 最佳做法会随着时间而变化。 以前,他们共享一个PC网络和一个打印机网络,现在不共享这些网络是很正常的。 值得使用常识,不要在不需要它们的地方创建很多子网,也不要将所有设备都连接到一个网络中。
  3. 所有路由器上的“黄金”设置。 即 如果您已决定一个计划。 值得立即预见所有内容并尝试确保所有设置都相同-只有不同的地址列表和ip地址。 如果出现问题,调试时间将更少。
  4. 组织问题同技术问题一样重要。 通常,懒惰的员工会“手动”遵循这些建议,而不使用现成的配置和脚本,这最终会导致从头开始的问题。

通过动态路由。 使用带分区的OSPF。 但这是一个试验台,在战斗条件下,进行此类设置更有趣。

我希望没有人不发布路由器的配置而感到沮丧。 我认为将有足够的链接,然后一切都取决于需求。 当然,测试还需要更多测试。

我希望每个人都能在新的一年中实施他们的项目。 是的,授予访问权限将伴随您!!!

Source: https://habr.com/ru/post/zh-CN482384/


All Articles