文档章节

Cyber-Security:IPv6 & Security

RiboseYim
 RiboseYim
发布于 2017/08/10 14:24
字数 2775
阅读 124
收藏 1
点赞 0
评论 0

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中防火墙软件

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

Example Rules

#!/bin/bash

# ip6tables single-host firewall script

# Define your command variables
ipt6="/sbin/ip6tables"

# Flush all rules and delete all chains
# for a clean startup
$ipt6 -F
$ipt6 -X

# Zero out all counters
$ipt6 -Z

# Default policies: deny all incoming
# Unrestricted outgoing

$ipt6 -P INPUT DROP
$ipt6 -P FORWARD DROP
$ipt6 -P OUTPUT ACCEPT

# Must allow loopback interface
$ipt6 -A INPUT -i lo -j ACCEPT

# Reject connection attempts not initiated from the host
$ipt6 -A INPUT -p tcp --syn -j DROP

# Allow return connections initiated from the host
$ipt6 -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Accept all ICMP v6 packets
$ipt6 -A INPUT -p ipv6-icmp -j ACCEPT

# Optional rules to allow other LAN hosts access
# to services. Delete $ipt6 -A INPUT -p tcp --syn -j DROP

# Allow DHCPv6 from LAN only
$ipt6 -A INPUT -m state --state NEW -m udp -p udp \
-s fe80::/10 --dport 546 -j ACCEPT

# Allow connections from SSH clients
$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

# Allow HTTP and HTTPS traffic
$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
$ipt6 -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

# Allow access to SMTP, POP3, and IMAP
$ipt -A INPUT -m state --state NEW -p tcp -m multiport \
--dport 25,110,143 -j ACCEPT

SSH and SCP

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

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

$ sudo netstat -pant|grep sshd
tcp   0  0 0.0.0.0:22  0.0.0.0:*  LISTEN   1228/sshd       
tcp6  0  0 :::22       :::*       LISTEN   1228/sshd
## 通过 sshd_config 中的 AddressFamily 选项禁用任何一种协议。禁用 IPv6:
## 默认选项为 any ,只允许IPv6 inet6
AddressFamily inet

## 在客户端方面,通过 IPv6 网络登陆和 IPv4一样登陆、运行命令行以及退出。
$ ssh carla@2001:db8::2
$ ssh carla@2001:db8::2 backup

## 您可以使用链路本地地址访问本地局域网上的主机。
## 这有一个无正式文档说明的怪癖,会让你抓狂,但现在你知道它是什么:你必须把你的网络接口名称与远程地址用符号 “%” 连接。
$ ssh carla@fe80::ea9a:8fff:fe67:190d%eth0

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

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

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

$ scp filename \[fe80::ea9a:8fff:fe67:190d%eth0\]:
carla@fe80::ea9a:8fff:fe67:190d\'s password:
filename

$ scp filename \[2001:db8::2\]:
carla@2001:db8::2\'s password:
filename

## 示例:登录到远程主机上的不同用户帐户,指定将文件复制到的远程目录,并更改文件名:
scp filename userfoo@\[fe80::ea9a:8fff:fe67:190d%eth0\]:/home/userfoo/files/filename_2

Rsync

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

## 全球单播地址不需要指定网络接口:
$ rsync -av /home/carla/files/ 'carla@[2001:db8::2]':/home/carla/stuff
carla@f2001:db8::2\'s password:
sending incremental file list
sent 100 bytes  received 12 bytes  13.18 bytes/sec
total size is 6,704  speedup is 59.86
## 使用链路本地地址时必须包含网络接口。
$ 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 微信公众号

© 著作权归作者所有

共有 人打赏支持
RiboseYim
粉丝 68
博文 70
码字总数 159285
作品 0
广州
程序员
《Linux Perf Master》Edition 0.3 发布

《Linux Perf Master》Edition 0.3 发布 https://www.gitbook.com/book/riboseyim/linux-perf-master/details 快速下载网盘:https://pan.baidu.com/s/1bppqKdL 提供 pdf、epub、mobi 三种格......

RiboseYim ⋅ 2017/12/28 ⋅ 0

我的 2017 年度盘点

一、Core Topics Learning based on full English. Operating System Kernel & Dynamic tracking & Go Programming Language. Lincoln Foundation & Absolutism Research. 二、年度成果 2.1 ......

RiboseYim ⋅ 2017/12/30 ⋅ 0

2018 Docker 用户报告 - Sysdig Edition

This article is part of an Virtualization Technology tutorial series. Make sure to check out my other articles as well: 2018 年度 Docker 用户报告 - Sysdig Edition Cyber-Securit......

RiboseYim ⋅ 06/13 ⋅ 0

Free Download Top 100 Hacking Books

Kali Linux – Assuring Security by Penetration Testing Network Analysis Using Wireshark Cookbook Computer Security Handbook, 6th Edition iPad and iPhone Kung Fu: Tips, Tricks, ......

markGao ⋅ 2014/06/10 ⋅ 1

SDN 技术指南(四):Open vSwitch

摘要 Open vSwitch 安装 Open vSwitch 命令行 Open vSwitch 运行原理 Open vSwitch 性能监控 前言 由之前发布的文章知道 Open vSwitch(Open Source Virtual Switch) 是一款基于软件实现的开源...

RiboseYim ⋅ 2017/10/16 ⋅ 0

2018 Security Predictions (Part 1)

Given how fast technology is changing, we thought it would be interesting to ask IT executives to share their thoughts on the biggest surprises in 2017 and their predictions for......

Tom Smith ⋅ 2017/12/11 ⋅ 0

2018 Security Predictions (Part 3)

Given how fast technology is changing, we thought it would be interesting to ask IT executives to share their thoughts on the biggest surprises in 2017 and their predictions for......

Tom Smith ⋅ 2017/12/14 ⋅ 0

Security Is No Excuse for Bad Performance

These days, no matter what task you're trying to accomplish within your online properties, chances are there's at least one cloud solution that provides it. However, with so muc......

Craig Lowell ⋅ 2017/12/09 ⋅ 0

Lighttpd 1.4.41 发布,高性能 Web 服务器

Lighttpd 1.4.41 发布了Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,...

oschina ⋅ 2016/08/01 ⋅ 2

2018 Security Predictions (Part 6)

Given how fast technology is changing, we thought it would be interesting to ask IT executives to share their thoughts on the biggest surprises in 2017 and their predictions for......

Tom Smith ⋅ 2017/12/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 27分钟前 ⋅ 0

React Native & Weex 区别

JS引擎 Weex使用V8, React native使用JSCore JS开发框架 ( Js Framework ) Weex基于vue.js(2W+ star)。小巧轻量的前端开发框架,组件化,数据绑定,2.0引入virtual dom。 ReactNative使用...

东东笔记 ⋅ 35分钟前 ⋅ 1

UIkit 分页组件动态加载简单实现

1. 问题描述 使用过UIkit分页组件的都清楚,UIkit的分页不能动态刷新数据,也就是不能在点击下一页的时候,动态从后台加载数据,并且刷新页数以及该页数上的数据,下面是一个简单实现,没有做...

影狼 ⋅ 36分钟前 ⋅ 0

Mobx入门之三:Provider && inject

上一节中<App/>组件传递状态temperatures给children -- <TemperatureInput />,如果组建是一个tree, 那么属性的传递则会非常繁琐。redux使用Provider给子组件提供store, connect将子组件和s...

pengqinmm ⋅ 38分钟前 ⋅ 0

魔兽世界 7.0版本 S23/S24/S25全职业普通+精锐套

  死亡骑士   (联盟)   (部落)   (精锐)   恶魔猎手   (联盟)   (部落)   (精锐)   德鲁伊   (联盟)   (部落)   (精锐)   猎人   (联盟) ...

wangchen1999 ⋅ 45分钟前 ⋅ 0

maven顶级pom和子pom的版本号批量修改

当一个版本发布,新起一个版本时,我们只需要手动修改一下项目中pom.xml的版本号就可以了。但是如果这个maven项目有很多的子模块项目,那么一个个手动的去改就显得费时费力又繁琐了。还好,m...

ArlenXu ⋅ 54分钟前 ⋅ 0

天气预报接口选择

分为两类收费和免费的 收费的 收费的就不用说了,各种云市场上都有 免费的 免费的最权威的就2个 中国天气网 中国万年历提供的天气API 百度 万年历提供的API有json和xml格式,xml提供的信息更...

SimonAt ⋅ 55分钟前 ⋅ 0

Elasticsearch究竟要设置多少分片数?

0、引言 在构建Elasticsearch集群的初期如果集群分片设置不合理,可能在项目的中后期就会出现性能问题。Elasticsearch是一个非常通用的平台,支持各种各样的用例,并且为数据组织和复制策略提...

tqyin ⋅ 56分钟前 ⋅ 0

php 如何获取指定session_id中的数据

代码如下: $sess_name = session_name(); $sess_id = $_POST[$sessname]; session_id($sess_id);//根据当前session_id=5f0bv0dke3p5tqdcuujtl3kkv7,获取指定session,如果session_id 存在,則......

qimh ⋅ 59分钟前 ⋅ 0

C++使用try,catch在VS2015中捕获异常

下面的代码: #include "stdafx.h"#include <iostream>int main(){try{char* pch;pch = (char*)00001234; //给予一个非法地址 *pch = 6; //对非法地址赋值,会造...

极客行 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部