iptables实战
iptables 匹配规则: [-i|o 网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出 [-p 协议类型]:可以指定规则应用的协议,包含tcp、udp和icmp等 [-s 源IP地址]:源主机的IP地址或子网地址 [--sport 源端口号]:数据包的IP的源端口号 [-d目标IP地址]:目标主机的IP地址或子网地址 [--dport目标端口号]:数据包的IP的目标端口号 m:extend matches,这个选项用于提供更多的匹配参数,如: -m state --state ESTABLISHED,RELATED -m tcp --dport 22 -m multiport --dports 80,8080 -m icmp --icmp-type 8 <-j 动作>:处理数据包的动作,包括ACCEPT、DROP、REJECT等 具体实例参考 iptables常用实例备查。 环境搭建 1 系统日志 %SystemRoot%\System32\Winevt\Logs\System.evtx 安全日志...
网关为0.0.0.0含义
网关为0.0.0.0 或者* 表示表示此条路由不需要通过网关转发,目标地址和自己属于同一个二层网络,通过ARP协议获取目标的MAC地址后通信,比如一些虚拟网卡,不需要路由。 在Linux上配置其他网段路由的时候一定要指明网关,而不是只指明这个网段的出接口,否则会默认本目标网段与接口是直连的。 route add default dev eth0 等效为:route add -net 0.0.0.0 netmask 0.0.0.0 dev eth0。下一跳是eth0设备,使用此路由的数据直接发往目标IP。 route add default gw * dev eth0 等效为:route add -net 0.0.0.0 netmask 0.0.0.0 gw * dev eth0。下一跳是gw IP地址,数据通过网关转发。 路由下一跳是接口还是IP设备的最大区别就是ARP表的区别:下一跳是IP设备的话,数据包毫无疑问交给了IP网关,但是如果下一跳只是接口的话是需要单独对目标ip做arp解析的,如果IP网关上没有开启接口的proxy arp...
docker常用
列出docker镜像 1docker images -a 列出docker网络 1docker network ls 列出所有容器基本信息 1docker ps -a 运行容器并进入容器内部 1234docker run -it -P --network localnet -v /var/www/html:/var/www/html fauria/lamp:v2 /bin/bash# -P 将容器内服务端口随机映射到主机端口# --network 将容器网络连接到指定网络,例如Host、bridge# -v 将主机的目录映射到容器内的某个目录 退出容器并保持容器后台运行 1键盘按键组合: Ctrl+p+q 查看指定容器端口映射 1docker port container_id 进入到正在运行的容器内部 1docker exec -it 0 /bin/bash 查看某个容器的详细配置 1docker inspect container_name 查看某个容器的PID 1docker inspect trusting_mayer -f...
iptables防火墙
1. 简介 iptables实际上只是位于用户空间的一个面向系统管理员的Linux防火墙的管理工具,而真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内核模块,iptables对应在内核中的模块应该是ip_tables,我们查看系统内核中ip_tables的信息的时候可以看到ip_tables.ko这个模块是在netfilter这个目录下的。 iptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,下面这张图很明了的说明了Netfilter和iptables之间的关系 2. iptables的四表五链 为了更加方便的组织和管理防火墙规则,iptables采用了表和链的分层结构 其中,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链 2.1 iptables 4表: 表名称 规则含义 包含的链 内核模块 filter...
一些常用的小代码片段
16进制字符串转10进制IP地址 1234ipaddhex="3340a81f"'.'.join([str(int(i,16)) for i in re.findall(r'.{2}',ipaddhex)])# '51.64.168.31'
Linux提权总结
...
IPv6地址生成过程
IPv6地址格式 开头的64比特用来代表网络,后面的64比特用作接口标识: 接口标识可以有多种方式产生: 静态手工设置 链路层地址 (MAC) 转化为64比特 EUI-64 由 DHCPv6 指定 由隐私扩展或加密协议生成 为了便于书写,IPv6 推荐末端加上网络前缀长度的压缩格式标记,据此上面的地址可以缩短表示为: 2001:db8:130f::7000:0:140b/64 IPv6地址分类 地址类型 英文名称 二进制 16进制 应用 链路本地地址(单播) Link-local address 1111 1110 10 fe80::/10 单链路通信 唯一本地地址(单播) Unique local address 1111 1101 fd00::/8 本地网络通信 全局单播地址 Global unicast address 001 2000::/3 互联网通信 组播地址 Multicast address 1111...
IPv6地址生成
发现很多人的信息还停留在 1998 年的 RFC 2464 定义的 EUI64,由于其潜在安全风险,2014 年的 RFC 7217 定义了生成用于 SLAAC 的接口 ID 的算法。目前就我所了解的主流操作系统,iOS 12 已经支持这个标准,Android 7 尚不支持、同时也不支持 DHCPv6,Windows 10 1803 虽然没有遵守 RFC 7217,但也没有使用 EUI64,并且还支持随机 MAC 地址。 每个节点都会自动生成一个本地链接地址,但是: 该地址可能不是以RFC 2464中指定的EUI-64格式生成的。IPv6地址也可以是加密生成的地址(RFC 3972),临时隐私地址(RFC 4941),或者在现代操作系统中,可以是稳定的隐私地址(RFC 7217)。 由于管理员的明确配置,看起来像具有EUI-64接口ID的地址实际上可能与指示的MAC地址不对应。 由于不能只是将地址“转换回”为MAC地址,因此必须发送邻居请求来确定MAC地址。 还有其他一些原因也使得必须进行邻居征集。其中一些是: 重复地址检测(RFC...
Docker网络模式
https://www.cnblogs.com/zuxing/articles/8780661.html Docker自身的4种网络工作方式,和一些自定义网络模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。 None:该模式关闭了容器的网络功能。 Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。 以上都是不用动手的,真正需要配置的是自定义网络。 默认网络 当你安装Docker时,它会自动创建三个网络。你可以使用以下docker network ls命令列出这些网络: 12345$ docker network lsNETWORK ID NAME ...
Linux Namespace与Docker原理
namespace 初识 Docker 是一个基于 namespace、cgroup、Union FS 等等技术的一个开源容器引擎,很多人都会觉得 Docker 是个新兴技术,其实不然,其主要隔离技术 Namespace 技术早在 Linux 内核版本为 2.6 时候就差不多完成了(像 Ubuntu 16.04 发行版本的内核基本上都是 4.4,CentOS 7 则普遍 3.10 )。 Linux Namespace 是 Linux 提供的一种内核级别环境隔离的方法。 要想实现隔离的效果,需要完成的东西又有哪些呢?其实如果你安装了 gcc 工具链(安装 golang 之后就会有了),那么使用 man namespaces 命令就可以了解到 namespace 技术的大概,也可查看在线手册。 这里简单地搬运了些知识点,首先是 Linux 提供的具体的隔离内容: Namespace 系统调用参数 内核版本 隔离内容 UTS (Unix Time-sharing System) CLONE_NEWUTS Linux 2.4.19 主机名与域名 IPC...