iptables

记一次针对静态页面的DDOS基本防护

我只是一个虾纸丫 提交于 2020-10-06 01:54:10
可以说是我试图进入安全口的天才第一步了,能走多远鬼知道呢 背景 去年年前接到的一个外包项目,是一个base在日本的中国人留学机构做的静态页面。出于锻炼自己的目的,选择为他们按次结薪做长期服务维护。20年618当天给我越洋电话打过来说大量潜在客户试图访问机构官网报错无法访问服务器,让我去帮他们看看怎么回事。 回到电脑前登陆阿里云,发现带宽和CPU被占满了,如下图所示: 第一反应就是:坏了,拒绝服务攻击,搞不好还是分布式的……然后登陆后台尝试看日志,发现还真是拒绝服务攻击: 还行,不是分布式的,不过也够吃满了服务器的1核1G1MBps小水管了……对方还挺无聊,发post没把body整的整齐划一,内容缤纷多彩 处理过程 第一阶段:请求洪泛 iptable bans: 由于发现对方没有使用分布式的攻击手段,我考虑停止对攻击流量的来源IP地址进行HTTP响应,经过查询学习,我选择使用iptables命令完成这一操作: iptables -I INPUT -s <ip addr.> -j DROP 通过此命令,当传入网关的ip地址为定义的ip时,网关会直接丢弃请求,不做任何处理。然而很快我就发现自己太年轻了。对方显然不是抱着笔记本在攻击我,他们不仅更换了ip, 还欢乐骂我的话…… 我当时很幼稚的不死心,又用iptables ban了对面五个IP,然后对方换了IP继续打我,我真的毫无办法……

kind:Kubernetes in Docker,单机运行 Kubernetes 群集的最佳方案?

岁酱吖の 提交于 2020-10-03 09:44:30
作者:gc(at)sysin.org,主页: www.sysin.org 请访问原文发布链接:< https://sysin.org/article/kind/>,查看最新版 。 是否没有足够的机器运行 Kubernetes 测试环境,个人电脑配置不高的话,运行多个节点的虚拟化有点力不从心,国内公有云主机一般不支持嵌套虚拟化,一套 3M+3N 的群集环境成本太高。VMware Fusion 12.0 发布,将 Kind 带入了我们的视野,这是 Google 官方的一个工具,可能是在单机运行 Kubernetes 群集的最佳方案。笔者在一台 1C 2G 的公有云虚机上运行 Kind,也不会因为计算资源有限而无法完成。 1. 简介 kind 是 Kubernetes in Docker 的简写,是一个使用 Docker 容器作为 Nodes,在本地创建和运行 Kubernetes 群集的工具。适用于在本机创建 Kubernetes 群集环境进行开发和测试。 官网:< https://kind.sigs.k8s.io/> ; kind 由以下组件构成: Go packages implementing cluster creation , image build , etc. A command line interface ( kind ) built on these

大规模微服务利器:eBPF 与 Kubernetes

天涯浪子 提交于 2020-10-03 07:21:46
Daniel 是 eBPF 两位 maintainer 之一,目前在 eBPF commits 榜单上排名第一,也是 Cilium 的核心开发者之一。 本文内容的时间跨度有 8 年,覆盖了 eBPF 发展的整个历史,非常值得一读。时间限制, Daniel 很多地方只是点到,没有展开。译文中加了一些延展阅读,有需要的同学可以参考。 eBPF 正在吞噬世界 Kubernetes 已经是云操作系统 Kubernetes 正在吞噬世界(eating the world)。越来越多的企业开始迁移到容器平台上 ,而 Kubernetes 已经是公认的云操作系统(Cloud OS)。从技术层面来说: Linux 内核是一切的坚实基础,例如,内核提供了 cgroup、namespace 等特性。 Kubernetes CNI 插件串联起了关键路径(critical path)上的组件。例如,从网络的 视角看,包括: 广义的 Pod 连通性:一个容器创建之后,CNI 插件会给它创建网络设备,移动到容 器的网络命名空间。 IPAM:CNI 向 IPAM 发送请求,为容器分配 IP 地址,然后配置路由。 Kubernetes 的 Service 处理和负载均衡功能。 网络策略的生效(network policy enforcement)。 监控和排障。 两个清晰的容器技术趋势

docker垃圾回收机制

旧巷老猫 提交于 2020-10-03 00:23:11
作者: 张首富 时间: 2019-04-10 w x: y18163201 说明 对于Docker来说,存在镜像/容器/存储卷和网络(iptables规则)这些对象.因此docker也会产生出这些对应的对象,这些对象会占据磁盘空间,当这些对象不会再被使用的时候,为了节省磁盘空间,就需要对这些对象进行清理,即docker的垃圾清理.我们这边针对docker 1.13 以后的版本进行清理 docker的垃圾清理 清理停止的容器 当我们使用 docker stop $ContainerName 命令停止容器的时候,系统并不知道会删除这个容器,除非在运行此容器的时候设置了 -rm 参数,停止后的容器仍然会占据cipan的存储空间,通过 docker container prune 能够删除这些被停止后的容器 # docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y 执行此命令时,默认会提示是否继续。如果在执行命令是设置了-f或–force字段,则会直接删除已所有已停止的容器。默认情况下,此命令执行时会删除所有的已停止的容器,也可以通过设置–filter字段,来过滤所要删除的容器。例如

Kubernetes容器网络模型

非 Y 不嫁゛ 提交于 2020-10-02 03:33:18
1.背景 计算、存储和网络是云时代的三大基础服务,作为新一代基础架构的 Kubernetes 也不例外。而这三者之中,网络又是一个最难掌握和最容易出问题的服务;本文通过对Kubernetes网络流量模型进行简单梳理,希望对初学者能够提供一定思路。先看一下kubernetes 总体模型: 容器网络中涉及的几个地址: Node Ip:物理机地址。 POD Ip:Kubernetes的最小部署单元是Pod,一个pod 可能包含一个或多个容器,简单来讲容器没有自己单独的地址,他们共享POD 的地址和端口区间。 ClusterIp:Service的Ip地址,外部网络无法ping通改地址,因为它是虚拟IP地址,没有网络设备为这个地址负责,内部实现是使用Iptables规则重新定向到其本地端口,再均衡到后端Pod;只有Kubernetes集群内部访问使用。 Public Ip :Service对象在Cluster IP range池中分配到的IP只能在内部访问,适合作为一个应用程序内部的层次。如果这个Service作为前端服务,准备为集群外的客户提供业务,我们就需要给这个服务提供公共IP。 2.容器网络流量模型 容器网络至少需要解决如下几种场景的通信: ①POD内容器间通信 ②同主机POD间 通信 ③跨主机POD间 通信 ④集群内Service Cluster Ip和外部访问

MySQL 主从复制场景单表数据出错导致复制终止如何快速修复

牧云@^-^@ 提交于 2020-10-01 18:00:57
场景描述: 如果从库上表 t 数据与主库不一致,导致复制错误,整个库的数据量很大,重做从库很慢,如何单独恢复这张表的数据? 通常认为是不能修复单表数据的,因为涉及到各表状态不一致的问题。 下面就列举备份单表恢复到从库会面临的问题以及解决办法 一、本次演示环境描述: Dell物理服务器r620 两台 网络环境都是内网 master:192.168.1.220 slave:192.168.1.217 OS系统环境:centos7.8 X86_64位最小化安装,关闭iptables,关闭selinux 测试软件版本:mysql5.7.27二进制包 提前配置好基于Gtid的MySQL主从复制 创建模拟测试数据,模拟故障场景 修复MySQL主从复制 pt-table-checksum 校验修复后的MySQL主从复制数据是否一致 二、配置主从复制 MySQL的安装过程此处不再描述,自行百度 配置主从复制 给一个master机器配置一个新的slave的话,记得在mysqldump备份数据时加参数--set-gtid-purged=ON 知识补充: 1.常规备份是要加--set-gtid-purged=OFF解决备份时的警告 [root@localhost ~]# mysqldump -uroot -p'dXdjVF#(y3lt' --set-gtid-purged=OFF --single

Linux 中安装redis 外网可访问

穿精又带淫゛_ 提交于 2020-10-01 03:44:01
导读 在 Linux 中安装了redis 服务。在 Windows 中安装了 xampp 环境,以供 PHP 运行。 PHP 代码如下: connect('192.168.1.4', 6379); $redis->set('tag', 'hello'); echo 'name:', $redis->get('tag'); ?> 执行以上代码时,报错如下: Fatal error: Uncaught exception ‘RedisException’ with message ‘Redis server went away’ in xxxx RedisException: Redis server went away in xxxxxx 解错误分析及解决办法 错误的原因很简单,就是没有连接上 redis 服务,由于 redis 采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。 修改 redis 的配置文件,将所有 bind 信息全部屏蔽。 # bind 192.168.1.100 10.0.0.1 # bind 192.168.1.8 # bind 127.0.0.1 修改完成后,需要重新启动 redis 服务。 修改 Linux 的防火墙(iptables),开启你的 redis 服务端口,默认是 6379。 -A INPUT -m state

Linux下安装Nginx

大憨熊 提交于 2020-09-30 14:37:29
原文链接: https://www.jianshu.com/p/9f2c162ac77c Nginx简介 Nginx是什么? Nginx是一款轻量级Web服务器,也是一款反向代理服务器 官网: http://nginx.org/ 中文文档: http://www.nginx.cn/doc/ Nginx能干什么? Nginx能干的事情很多,这里简要罗列一-些: 可直接支持Rails和PHP的程序 可作为HTTP反向代理服务器 作为负载均衡服务器 作为邮件代理服务器 帮助实现前端动静分离 Nginx特点 Nginx安装 Nginx下载 官网下载: http://nginx.org/en/download.html 或者直接在linux执行命令: wget http://nginx.org/download/nginx-1.12.2.tar.gz 这里下载的版本是1.12.2 安装步骤 # 安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel # 解压缩 tar -zxvf linux-nginx-1.12.2.tar.gz cd nginx-1.12.2/ # 执行配置 ./configure # 编译安装(默认安装在/usr/local/nginx) make make install