Cyber

IPv6

IPv6(Internet Protocol version 6)是互联网协议的最新版本,用于分组交换互联网络的网络层协议,旨在解决IPv4地址枯竭问题。IPv6二进位制下为128位长度,以16位为一组,每组以冒号“:”隔开,可以分为8组,每组以4位十六进制方式表示。例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344 是一个合法的IPv6地址。

Allocation of IPv4 address space: the United States uses more than a third of the available IPv4 addresses.

IPv6 报文包格式

定义:RFC 1883中定义的原始版本,RFC 2460中描述的现在提议的标准版本。

IPv6地址分类

  • 单播地址(unicast):单播地址标示一个网络接口,协议会把送往地址的数据包送往给其接口。单播地址包括可聚类的全球单播地址、链路本地地址等。
  • 多播地址(multicast):多播地址也称组播地址。多播地址也被指定到一群不同的接口,送到多播地址的数据包会被发送到所有的地址。
  • 任播地址(anycast):Anycast 是 IPv6 特有的数据发送方式,它像是IPv4的Unicast(单点传播)与Broadcast(多点广播)的综合。

Anycast像 IPv4 多点广播(Broadcast)一样,会有一组接收节点的地址栏表,但指定为Anycast的数据包,只会发送给距离最近或发送成本最低(根据路由表来判断)的其中一个接收地址,当该接收地址收到数据包并进行回应,且加入后续的传输。该接收列表的其他节点,会知道某个节点地址已经回应了,它们就不再加入后续的传输作业。以目前的应用为例,Anycast地址只能分配给路由器,不能分配给电脑使用,而且不能作为发送端的地址。

IPv6 & Cyber-Security

对我们网络的攻击来自各种各样的来源:社会工程(Social Engineering)、粗心、垃圾邮件、网络钓鱼、操作系统漏洞、应用程序漏洞、广告网络、跟踪和数据收集、服务提供商窥探等。作为一个新兴的网络协议,安全问题同样无法避免。

IPsec/TLS/SSL/SSH

IPsec(网际网络安全协议,Internet Protocol Security,RFC 4301RFC 4309 ),旨在在网络层为IP分组提供安全服务,包括访问控制、数据完整性、身份验证、防止重放和数据机密性。IPsec原本是为IPv6开发,但是在IPv4中已被大量部署。最初,IPsec是IPv6协议组中不可少的一部分,但现在是可选的。

在传输模式下,IPsec在IP报头和高层协议之间插入一个报头,IP报头与原始IP报头相同,只是IP协议字段被改为ESP或者AH,并重新计算IP报头的校验和。IPsec假定IP端点是可达的,源端头不会修改IP报头中的目标IP地址。IPsec 工作在网络层。其它加密协议如 TLS/SSL 和 SSH,工作在传输层之上,是针对具体应用的。

NAT = Security ?

NAT is not and never has been about security.

NAT(Network Address Translation) 是一种在IP数据包通过路由器或防火墙时重写来源IP地址或目的IP地址的技术.NAT 延长了 IPv4的寿命。它的本意是通过地址伪装,阻止外部网络主机的恶意活动,阻止网络蠕虫病毒来提高本地系统的可靠性,阻挡恶意浏览来提高本地系统的私密性。另外,它也为UDP的跨局域网的传输提供了方便。很多防火墙都NAT功能,它使防火墙变成有状态的,检查所有的流量、跟踪哪些数据包进入您的内部主机,并将多个私有内部地址重写到一个外部地址。它在外部网关上创建一个单点故障源,并为拒绝服务(DoS)攻击提供了一个简单的目标。NAT有它的优点,但安全不是其中之一。

Source routing

Source routing 允许发送方控制转发,而不是将其留给任何一个包通过的路由器,通常是OSPF(Open Shortest Path First,开放最短路径优先)。Source routing 有时用于负载平衡,和管理VPN(Virtual Private Network,虚拟专用网络),所以,Source routing 并不是 IPv6 带来的特性,但是提出了许多安全问题。你可以用它来探测网络,获取信息,绕过安全设备。路由报头0型(RH0)是使源路由的IPv6扩展报头,它一直受到抨击,因为它使一中非常聪明的DoS攻击被放大,在两个路由器之间的反弹包直到它们超载及带宽耗尽。

大就是强 ?

有些人认为IPv6地址空间如此之大,为网络扫描提供了一种防御。这是一种错误的观念。我们确实有潜在的庞大地址资源可供应用,但是我们倾向于在可预见的范围组织我们的网络。硬件在变得廉价的和强大,云计算资源的快速发展在惠及企业的同时,也降低了攻击方的门槛和成本(黑客、黑产)。计算机网络的复杂性决定了挫败恶意网络扫描的困难很大,包括在IPv6网络中进行监测辨别哪些属于本地访问、哪些不是,IPv6 控制访问的问题在于,它的管理能力要求超过了其它任何协议。传统的防御工具和方法论都有待更新。

IPv6 & Linux Security

iptables & ip6tables

ip6tables命令和iptables一样,都是Linux中防火墙软件

1# Block All IPv6 2$vi /etc/sysctl.conf: 3net.ipv6.conf.all.disable_ipv6 = 1 4net.ipv6.conf.default.disable_ipv6 = 1 5# load your changes: 6$ sudo sysctl -p 7net.ipv6.conf.all.disable_ipv6 = 1 8net.ipv6.conf.default.disable_ipv6 = 1 9# Test 10$ ping6 -c3 -I eth0 fe80::f07:3c7a:6d69:8d11 11PING fe80::f07:3c7a:6d69:8d11(fe80::f07:3c7a:6d69:8d11) 12from fe80::2eef:d5cc:acac:67c wlan0 56 data bytes 13--- fe80::2eef:d5cc:acac:67c ping statistics --- 143 packets transmitted, 0 received, 100% packet loss, time 2999s 15# Listing 16$ sudo ip6tables -L 17# Flushing 18$ sudo ip6tables -F

Example Rules

1#!/bin/bash 2 3# ip6tables single-host firewall script 4 5# Define your command variables 6ipt6="/sbin/ip6tables" 7 8# Flush all rules and delete all chains 9# for a clean startup 10$ipt6 -F 11$ipt6 -X 12 13# Zero out all counters 14$ipt6 -Z 15 16# Default policies: deny all incoming 17# Unrestricted outgoing 18 19$ipt6 -P INPUT DROP 20$ipt6 -P FORWARD DROP 21$ipt6 -P OUTPUT ACCEPT 22 23# Must allow loopback interface 24$ipt6 -A INPUT -i lo -j ACCEPT 25 26# Reject connection attempts not initiated from the host 27$ipt6 -A INPUT -p tcp --syn -j DROP 28 29# Allow return connections initiated from the host 30$ipt6 -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 31 32# Accept all ICMP v6 packets 33$ipt6 -A INPUT -p ipv6-icmp -j ACCEPT 34 35# Optional rules to allow other LAN hosts access 36# to services. Delete $ipt6 -A INPUT -p tcp --syn -j DROP 37 38# Allow DHCPv6 from LAN only 39$ipt6 -A INPUT -m state --state NEW -m udp -p udp \ 40-s fe80::/10 --dport 546 -j ACCEPT 41 42# Allow connections from SSH clients 43$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 44 45# Allow HTTP and HTTPS traffic 46$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 47$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT 48 49# Allow access to SMTP, POP3, and IMAP 50$ipt -A INPUT -m state --state NEW -p tcp -m multiport \ 51--dport 25,110,143 -j ACCEPT

SSH and SCP

我们熟悉的文件拷贝工具:SSH, SCP, 和 Rsync 都支持 IPv6,坏消息是他们的语法怪异。

所有 Linux 管理员都知道使用 SSH 和 SCP。 它们在 IPv6 网络中有一些怪异,特别是关于远程地址,一旦你弄明白这个问题就能像过去一样熟练使用 SSH 和 SCP 。默认情况下,sshd 守护进程同时监听 IPv4 和 IPv6 协议,你可以通过 netstat 查看:

1$ sudo netstat -pant|grep sshd 2tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1228/sshd 3tcp6 0 0 :::22 :::* LISTEN 1228/sshd 4## 通过 sshd_config 中的 AddressFamily 选项禁用任何一种协议。禁用 IPv6: 5## 默认选项为 any ,只允许IPv6 inet6 6AddressFamily inet 7 8## 在客户端方面,通过 IPv6 网络登陆和 IPv4一样登陆、运行命令行以及退出。 9$ ssh carla@2001:db8::2 10$ ssh carla@2001:db8::2 backup 11 12## 您可以使用链路本地地址访问本地局域网上的主机。 13## 这有一个无正式文档说明的怪癖,会让你抓狂,但现在你知道它是什么:你必须把你的网络接口名称与远程地址用符号 “%” 连接。 14$ ssh carla@fe80::ea9a:8fff:fe67:190d%eth0

你也可以简化远程root登录。聪明的管理员禁用root登录ssh,所以你必须登录为一个普通用户,然后换为root用户登录。这不是那么费力,但我们可以用一个命令来完成这一切,系统将在倒数120分钟后停止!这个shutdown将持续打开直到完成运行,所以中途你能改变注意并且用寻常的方式取消shutdown,通过 Ctrl+c。

1$ ssh -t carla@2001:db8::2 "sudo su - root -c 'shutdown -h 120'" 2carla@2001:db8::2\'s password: 3[sudo] password for carla: 4Broadcast message from carla@remote-server 5 (/dev/pts/2) at 9:54 ... 6## 技巧:强制使用 IPv4 或者 IPv6 7$ ssh -6 2001:db8::2

SCP是怪异的。你必须在链路本地地址的后面使用符号“%”来指定网络接口,并且将地址用方括号括起来,并避开括号;如果使用全球单播地址则不需要指定网络接口,但是依然需要方括号。

1$ scp filename \[fe80::ea9a:8fff:fe67:190d%eth0\]: 2carla@fe80::ea9a:8fff:fe67:190d\'s password: 3filename 4 5$ scp filename \[2001:db8::2\]: 6carla@2001:db8::2\'s password: 7filename 8 9## 示例:登录到远程主机上的不同用户帐户,指定将文件复制到的远程目录,并更改文件名: 10scp filename userfoo@\[fe80::ea9a:8fff:fe67:190d%eth0\]:/home/userfoo/files/filename_2

Rsync

rsync 要求使用各种标点符号封闭远程的 IPv6 地址。与以往一样,请记住源目录中的尾随斜杠,例如 /home/carla/files/ ,表示只复制目录的内容。省略尾随斜杠将复制目录及其内容。尾随斜线并不重要,关键是你的目标目录。

1## 全球单播地址不需要指定网络接口: 2$ rsync -av /home/carla/files/ 'carla@[2001:db8::2]':/home/carla/stuff 3carla@f2001:db8::2\'s password: 4sending incremental file list 5sent 100 bytes received 12 bytes 13.18 bytes/sec 6total size is 6,704 speedup is 59.86 7## 使用链路本地地址时必须包含网络接口。 8$ rsync -av /home/carla/files/ 'carla@[fe80::ea9a:8fff:fe67:190d%eth0]':/home/carla/stuff

推荐电子书:《Linux Perf Master》

以Linux性能为核心,覆盖评估诊断、监控、优化工具、方法论和参考案例,欢迎订阅、下载、批评指正。 本书发表在GitBook平台: https://www.gitbook.com/book/riboseyim/linux-perf-master/details

扩展阅读: 网络安全专题合辑《Cyber-Security Manual》

更多精彩内容扫码关注公众号:RiboseYim's Blog:https://riboseyim.github.io 微信公众号

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )