Study hard and make progress every day!

2019-06-24
SACK Panic

在2019-06-17,Netfilx爆出了FreeBSD and Linux系统中的内核上存在严重远程DoS漏洞,攻击者可以构造特定的SACK请求到目标服务器,引起服务器内核奔溃。
漏洞编号为:

几家公司的通告如下:

阅读此文

2019-06-11
GoAccess-一个处理web日志的工具

GoAccess介绍

GoAccess是一个开源的基于终端的快速日志分析器。
Github地址:https://github.com/allinurl/goaccess
官网地址: https://goaccess.io/
说明文档: https://goaccess.io/man

通过自己配置,可以支持日志格式,默认已经集成的log格式

  • Amazon CloudFront (Download Distribution).
  • Amazon Simple Storage Service (S3)
  • AWS Elastic Load Balancing
  • Combined Log Format (XLF/ELF) Apache | Nginx
  • Common Log Format (CLF) Apache
  • Google Cloud Storage.
  • Apache virtual hosts
  • Squid Native Format.
  • W3C format (IIS)

安装

MacOS下

使用brew来安装

1
brew install goaccess

阅读此文

2019-06-04
CentOS 7下制作本地yum源

CentOS 7 制作本地repository的方法, 适用于没有外网访问权限的CentOS 7的升级。
大概步骤:

  1. 找一台系统版本相同,但是有外网访问权限的CentOS 7的机器
  2. 在这台机器上下载yum包,并制作本地repository
  3. 拷贝repository到内网机器
  4. 配置内网机器,从制作好的本地repository升级yum包
阅读此文

2019-06-04
在AWS Lightsail上给hexo blog配置HTTPS

申请免费SSL证书

免费证书渠道:

  • 如果是万网的域名,可以使用阿里云的免费SSL证书
  • 如果不是万网的域名,可以考虑Let’s Encrypt
    我的域名是万网注册的,因此直接使用阿里云提供的免费SSL证书

配置SSL证书

  1. lightsail证书配置
    万网证书下载后,选择其中适用于nginx的版本,将对应的.key和.pem文件传到lightsail instance中。

    1
    2
    3
    4
    5
    6
    7
    # 建立cert目录
    sudo mkdir -p /etc/nginx/cert
    # 上传证书, 可以scp也可以直接vim拷贝写入 (此处命名为www.jibing57.com.pem和www.jibing57.com.key)
    sudo vim /etc/nginx/cert/www.jibing57.com.key
    sudo vim /etc/nginx/cert/www.jibing57.com.pem
  2. 修改配置nginx
    修改nginx配置, 支持SSL,并配置http请求redirect到https。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    $ cat hexo.conf
    server {
    listen 80;
    server_name www.jibing57.com;
    return 301 https://$server_name$request_uri;
    }
    server {
    listen 443 ssl;
    server_name www.jibing57.com;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    keepalive_timeout 70;
    ssl_certificate cert/www.jibing57.com.pem;
    ssl_certificate_key cert/www.jibing57.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!MD5;
    # gzip
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_http_version 1.1;
    gzip_min_length 256;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
    root /opt/app/web/hexo;
    }
  3. 重启nginx

    1
    2
    3
    4
    5
    # 检查配置是否正确
    sudo service nginx configtest
    # 重启nginx
    sudo service nginx restart
  4. 试验
    访问https://www.jibing57.com成功。

阅读此文

2019-05-29
将hexo部署到AWS的Lightsail

介绍

Github Pages的访问最近有些慢,感觉不太稳。最近正好买了台Lightsail,就考虑将blog丢到Lightsail上去, 试试Lightsail的访问速度。
整理了一下相关操作步骤,该步骤应该也同样适用于EC2。区别就是Lightsail默认配置了22和80端口是开放的。部署到EC2的话,需要自己设置Security Group开放22和80端口。

步骤前提

步骤中特定的信息,部署时可能需要根据自己实际情况进行修改

  • Lightsail Instance相关:
    • AMI是原生的
    • Public IP是54.203.178.195
    • 博客目录/opt/app/web/hexo
    • 存放git库的账号名字为git, 博客git库代码存放目录:/opt/app/git/hexo.git
  • 本地信息
    • 本地系统是Macos 10.14.4
    • 以identity key而不是密码形式登录远端服务器
      • 此处在~/tmp/tmp/下新生成key,也可以按照实际要求修改为使用平时用的key
阅读此文

2019-05-21
Elastic Beanstalk Ruby Passenger平台下设置HTTP重定向到HTTPS

Elastic Beanstalk配置HTTPS后,接下来就需要配置HTTP请求redirect到HTTPS。
以前都是直接在application层面做redirect的。这次调查了一下在passenger层面来进行redirect的做法,记录在此。

Ruby平台基本信息:

  • EB平台: Passenger with Ruby 2.3 running on 64bit Amazon Linux/2.9.3
    • Ruby 2.3
    • Passenger模式
  • 前端使用ALB进行负载均衡,和后端EC2之间端口对应关系:
    • ALB:443 -> EC2:80 (在ALB侧进行HTTPS terminate)
    • ALB:80 -> EC2:80

修改方法

使用.ebextension直接修改passenger的配置文件/opt/elasticbeanstalk/support/conf/nginx_config.erb.
修改要点:

  1. 动态请求http_x_forwarded_proto 不是https的,redirect为https
  2. 静态文件请求的http_x_forwarded_proto不是https的,redirect为https
  3. 来自ELB health check的请求还是直接返回请求,而不用redirect为https
阅读此文

2019-05-16
如何在Elastic Load Balancer中添加SSL证书

上传方式

AWS侧上传HTTPS证书有两种方式

  • 使用 AWS Certificate Manager (ACM)生成,优点是免费,和aws其他服务集成性好,缺点是只能在AWS中使用
  • 上传第三方证书到AWS Identity and Access Management (IAM) 中,优点是证书生成灵活,缺点是操作麻烦。

中国区的AWS还没有ACM服务,因此只能使用IAM的方式来上传证书。

证书相关的一系列命令

  1. 证书上传命令
    如果没有certificate-chain,可以不传。

    1
    2
    3
    4
    $ aws iam upload-server-certificate --server-certificate-name ExampleCertificate
    --certificate-body file://Certificate.pem
    --certificate-chain file://CertificateChain.pem
    --private-key file://PrivateKey.pem
  2. 列出证书命令

    1
    $ aws iam list-server-certificates
  3. 获取证书信息命令

    1
    $ aws iam get-server-certificate --server-certificate-name ExampleCertificate
  4. 删除证书命令

    1
    $ aws iam delete-server-certificate --server-certificate-name ExampleCertificate
阅读此文

2019-05-10
在Mac下修改Office的界面显示语言

概述

在Macos中,微软的Office套件的UI,是根据系统默认语言来设置的。系统是中文,Office就是中文UI,系统是英文,Office就是英文UI。微软并没有在Office的偏好设置中,设置一个可以切换语言的设置。
这让我这种想保持系统英文,Office中文的人感到很难受。
官网上搜了一圈,都没有找到可用的办法。功夫不负有心人,最终在office社区里面的这篇帖子提供了解决办法How to manually change the language used in Office for Mac 2016 without changing OS language?, 还是我最喜欢的命令行方式。虽然是15,16年的帖子,但是对应的方法,在最新版的Office(版本16.24-19041401)中仍然可用。

修改方法

以work为例,记录相关命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
# 修改word的语言
$ defaults write com.microsoft.Word AppleLanguages '("zh-cn")'
# 读取word的设置, 可以看到多了一个AppleLanguages的选项。
$ defaults read com.microsoft.Word
{
...
AppleLanguages = (
"zh-cn"
);
...
}

阅读此文

2019-05-01
Macos下制作CentOS 7 USB启动盘

记录下在MacOS中制作Linux USB启动盘的操作步骤。

操作步骤

查看磁盘挂载分区

使用命令diskutil list查看所在U盘的分区,找到U盘的挂载点,此处挂载点为/dev/disk2

1
2
3
4
5
6
7
8
9
$ diskutil list
...
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.0 GB disk2
1: DOS_FAT_32 UNTITLED 31.0 GB disk2s1
$

卸载U盘挂载

使用diskutil unmountDisk命令,卸载U盘的挂载。

1
2
3
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful
$

如果不卸载挂载点就写入启动盘,则会提示dd: /dev/disk2: Resource busy

阅读此文

2019-05-01
AWS Autoscaling的Scheduled Scaling(计划扩展)

介绍

除了用Alarm触发的Scaling Policy,AWS Autoscaling(ASG) 还提供了一个Scheduled Scaling(计划扩展)的功能。该功能主要用作一些流量可预测的情形。比如国外的Black Friday和国内6.18或双11这种活动时,就可以使用Scheduled Scaling来提前规划好机器数量。
详细说明和设置参见 AWS官方文档Scheduled Scaling for Amazon EC2 Auto Scaling

例子

举基于如下场景的一个例子

  1. 正常流量下,2台服务器就可以支撑。
  2. 周一到周五的早上8点~10点间是流量高峰期,此时需要4台服务器才能支撑对应的流量。
  3. 10点过后恢复正常流量。

如上场景分解为2个Schedule Action

  1. 周一到周五每天早上8点,扩展服务器数量为4.
  2. 周一到周五每天早上10点,缩减服务器数量为2.
阅读此文