冯小贤 发布的文章

这段时间在捣鼓tars框架,去vultr开了个3.5刀的机器,为什么要用他们家的呢,因为之前冲的50刀没用完😂无奈呀

他家的机器对湖北电信非常不友好,创建必须要装bbr不然丢包够你受的,加大发包量,用的还挺爽的

这两天空闲了下,上线登陆发现有1w+的暴力登陆!!!

wtf!

network-attacks.png

第一次感受到这么泛滥的网络攻击,今天简单介绍一下修改sshd监听端口防范暴力破解

这里我开始就把selinux关掉了,你可以选择关闭selinux,因为会少很多麻烦事,当然也会产生隐形的问题,不过利大于弊

系统版本

  • 发行版: CentOS Linux release 7.5.1804 (Core)
  • 内核: kernel-ml-4.19.6-1.el7.elrepo.x86_64

起步

  1. 检查selinux的开启状态

    $ /usr/sbin/sestatus -v
    # 看到disabled说明是关闭的,直接看第三步
  2. 关闭selinux

    # 临时关闭(推荐)
    $ setenforce 0
    # 永久关闭
    $ vim /etc/selinux/config
    # 修改为SELINUX=disabled,注意这里需要重启生效
  3. 查询端口是否开放
    最近招商银行的保险推销电话太嚣张了,一个星期内每天两次,大家记住10105555,这里鞭尸他们做例子(真正的可用端口一般只有1024-65535,这里用作替代例子)

    $ firewall-cmd --permanent --query-port=10105555/tcp
    no
    # 是no我们就需要自行添加,yes可以直接忽略掉
  4. 添加端口

    $ firewall-cmd --permanent --add-port=10105555/tcp
    success
    # 一般情况肯定打印success,出错了检测firewall服务运行没,或者端口是否已添加
  5. 重载防火墙

    $ firewall-cmd --reload
    success
  6. 再次查询端口是否开放(回到第三步)
  7. 修改ssh端口

    #修改sshd端口, 这里使用`vim`,可以根据个人喜好使用其他的编辑器
    $ vim /etc/ssh/sshd_config
  8. 编辑sshd_config

    #最好先把**22端口**开着,避免另一个端口无法登录的尴尬😅
    Port 22
    Port 自定义端口
    
    #这里我们顺便吧免密码登录打开
    #RSAAuthentication yes #具体不作详细解释,使用的是ssh2版本协议请关掉
    #PubkeyAuthentication yes #默认开启
    AuthorizedKeysFile      .ssh/authorized_keys
  9. 重启一下sshd服务登录试试

    $ systemctl restart sshd
  10. 找一个支持ssh协议的客户端来连接刚刚设置的服务器,如果你有终端按照下面方法连接,输入密码完事

    $ ssh -p 自定义端口 用户名@服务器地址
    用户名@服务器地址's password:

题外话

开启ssh免密码登录

#最好不要输密码,用着会相当麻烦,2048位的大数分解应该没人能普普通通的算出来吧
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
输入要保存的密钥文件 (/Users/flxxyz/.ssh/id_rsa): 
输入密码 (empty for no passphrase):
再次输入相同的密码:

#出现下面界面密钥生成好了
The key's randomart image is:
+---[RSA 2048]----+
|+o+B#Bo.o        |
| =o#BEoo .       |
|  &oX+. +        |
| = *.*   =       |
|.   *   S .      |
|   +             |
|  .              |
|                 |
|                 |
+----[SHA256]-----+

类unix用户复制公钥内容,windows用户可以用git-bashC:\Users\你的用户名\.ssh\id_rsa.pub查找复制内容

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCv14bqlJrTAlKJ3H9C3GnzsJ46jCS9jvDjXu70LU4i6AsbHgrH/sS5xAPGxKXE9BSMIabB9XdpEAWjq/qpX6A7acU2LXFxGpjDo1hxNZObNawiVm0n2CoGgGuoD3N+2ZTra03i6b12YNbS6iMdZc3KX1qtRSXw1A5SygWmB7vnlx2n9umcdEutdcUkBP3BLJLpppM0jDU64vAxhnxxJTojwQKc7pAILLvw0IiIyLY37v4CBOq8GtPejy1yShZUd99c883xd80LewO69utA5oRB0419tfMn/A9kK2bt+b0H5QbI/aS0sXbfdhusOQUq0CuU8V5rbwJz38o8Nseet4TJ flxxyz@macos.home

连接到服务器

$ ssh -p 端口 用户名@服务器地址
用户名@服务器地址's password:

进来就在此处不要走动,我去买两个橘子,呸,新建一个文件authorized_keys

$ touch .ssh/authorized_keys

#把刚刚复制的公钥内容写入文件里,保存!
$ vim .ssh/authorized_keys

#这里确保文件的读取权限问题,设置成这样
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys

# 这里重启一下sshd服务(其实我们刚刚在正文重启过了)
$ systemctl restart sshd

来测试一下无密码连接到服务器

$ ssh -i ~/.ssh/id_rsa -p 端口 用户名@服务器地址

没有出现输入密码的提示就是成功了,如果按上面所说的还是无法免密码登录,那就是一些隐藏的“坑”了

疑问

如果之前做过微信jssdk,初看文档会发现没有什么,流程无非就是后端签名,返还给前端

但是仔细想了想,没有配置物品的价值信息呀,在公众号h5页面也只是返还了签名

回头看看请求参数发现了端倪

微信订单id

一开始看示例值我理解的随便一串数字,其中的prepay_id统一下单接口返回结果中的参数

重新开始书写逻辑

在这里我们使用的是h5支付,返回结果为 https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx151809054027204613d0ca330422xxxxxx&package=287231xxxx

只能采用截取url的方式了,获取到的prepay_idwx151809054027204613d0ca330422xxxxxx

prepay_id发回后端进行签名,返回

{
  "code": 1,
  "msg": "获取微信浏览器支付签名成功",
  "data": {
    "appId": "wx54c4e3c9a7xxxxxx",
    "timeStamp": "1537007685",
    "nonceStr": "5b9ce0458db30",
    "package": "prepay_id=wx151809054027204613d0ca330422xxxxxx",
    "signType": "MD5",
    "paySign": "A819D6551E9E3FE62BE612FA96000000"
  }
}

现在前端就可以愉快的使用WeixinJSBridgeJSSDK


相关链接:

微信内H5调起支付
微信统一下单

出现invalid signature错误的情况真的很迷

  1. 文档最开始说不需要转义,后来我看到错误相关,说需要encodeURIComponent(location.href.split('#')[0])
  2. wx.config()中的nonceStr与后端进行签名时的noncestr不一样
  3. 动态获取url这个地方描述的很迷,没明确说明是需要使用后端提供签名的接口还是,前端发起请求时的url

总之就是,要使用ajax签名,前端需要encodeURIComponent(location.href.split('#')[0])将当前url作为参数,传入后端签名接口,后端如果是php,需要urldecode($_GET['url']),再来获取jsapi_ticket进行签名,返回参数

为什么

为什么要开发积分商城呢?

因为我们之前使用的是兑吧的服务,还不错

但是得知今年(2018)下半年关闭免费版的服务,需要付费购买专业版或旗舰版使用

当然兑吧的工作人员也联系过我们,可以给予优惠价格,商业互吹肯定要说“好的,我们会讨论考虑一下”

如果我们用了兑吧,那你也不会看到这个文章了23333

- 阅读剩余部分 -

我的小鱼你睡着了,还认识早晨吗?
昨夜你曾经说,
愿夜幕永不开,
你的香腮边轻轻滑落的,
是你的泪,还是我的泪?
吻别的那个季节,
不是已经哭过了吗?
我的指尖还记忆着,
你慌乱的心跳,温柔的体香里,
那一缕长发飘飘。

我的小鱼你睡醒了吗,还记得夜晚吗?
早晨你曾说过,
愿黎明曙光永不落下,
你的长发边轻轻滑过的,
是他的手,还是我的手?
不是沉睡了吗,
我以为你一尘不变。

我的小鱼你离开了吗,一个人离开
从下着雪的湖面下离开,
你曾说过离别,
为了更好的再见,
我无法忍受离别的画面,
而选择!
而选择,
我的小鱼你会回来吗?
还认识我吗?
你曾经说过,
变化的是时间,不变的是你我,
你身边陪你走过的,
是你自己的心?还是他人的心。
不是已经走远了吗?
我还在看着夕阳,
看着自己被拉长的身影,
我的小鱼你不回来了。

我认不出你了,
我曾说过的也记不清了,
变化的是时间,更是你我。
我在守着黎明,
等待黎明的曙光。
我的小鱼,
我是不是也该走了,
我认识早晨
还记得你曾说,
愿夜幕永不开启,
你的香腮边轻轻滑落的,
是我的泪,
在那个季节已经哭过了。
我的指尖还记得,
你慌乱的心跳,温柔的体香,
那一缕长发飘飘。

我的小鱼,
你走的路在哪,
我已经出发了。

--《魁拔Ⅲ战神崛起》

远天的战歌,欢迎回来,亲爱的魁拔!

官方活动: https://mourl.cc/uDGKyH

一般设置代理只需按以下来设置是没有问题的,但是今天我们要操作的websockt

server {
    location / {
        proxy_pass http://127.0.0.1:10086;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_http_version 1.1;
        proxy_read_timeout 300s;
    }
}

nginx -t一下

会出现如下错误:
nginx: [emerg] unknown "connection_upgrade" variable

就是这里出现了个坑

其中涉及到了一个nginx的设计问题 End-to-end and Hop-by-hop Headers
我在这里还是不过多赘述了,以免误人子弟

map在nginx中是为一个或多个变量设置映射表

下面是需要添加的几项配置:

http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
    }

    server {
        location / {
            #…
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
}

貌似联璧金融要倒了,去年上的k3车,还有1000多没出来。

希望不是618卖7亿多,带着小姨子跑路了。。。

2018.06.26 150块还在提现中,不抱太大希望了...
2018.07.20 APP还能打开...