0%

Preface

在上个月月底的时候,阿里云通知我服务器在美国被异地登陆了,今天有时间整理了一些关于服务器安全的设置。

Locate the Matter

  • 当时我正好在用服务器,感觉异常的卡,用htop监控程序查看发现cpu正在被两个一样的进程100%占用,Command是/usr/sbin/ApacheX,去目录下找了下,没有该脚本,网上搜了也没该进程的信息。现在看来应该是黑客伪造的

  • 查看日志,vi /var/log/auth.log,发现下面几行
    -----2017-10-31---11.24.57-1

  • 很奇怪,我平时都是用ssh连接服务器的,正常应该是这样的
    -----2017-11-08---11.12.08

  • 居然被人用密码登录了,一查IP,果然是美国的。当初测试切换用户时嫌麻烦修改了密码,直接用的root,被人试出来了。

Solve

  • 执行passwd修改密码,不加参数默认当前用户,加参数指定用户

  • 修改ssh配置文件sshd_config,友情提示修改配置时开启多个窗口,以免登不上去还能用别的窗口修改回来

    1
    vi /etc/ssh/sshd_config

    SSHD配置文件详解

  • 修改ssh端口,为防止黑客暴力破解22端口

    1
    Port xxx

Tips

  1. 现在你需要使用ssh {user}@{IP} -p {port}来登录你的服务器。如果觉得麻烦,可以!ssh执行上一次的ssh命令,或者history | grep ssh粘贴命令。
  2. 传输文件时使用scp -P {port}来指定端口。scp(secure copy)通过ssh端口就行加密传输。
  3. ssh_config是针对客户端的配置文件,sshd_config是针对服务器端的配置文件,服务器后台运行的也是sshd守护进程(Daemon)。
  • 启用ssh密钥认证,指定密钥存放路径

    1
    2
    3
    RSAAuthentication    yes
    PubkeyAuthentication yes
    AuthorizedKeysFile /root/.ssh/authorized_keys /home/s1mple/.ssh/authorized_keys
  • 禁用密码登录,只允许ssh登录

    1
    2
    3
    PasswordAuthentication no
    UseLogin no
    PermitRootLogin yes
  • 另外,阿里云的服务器在你终端一段时间没有指令输入会断开,可以这样避免

    1
    ClientAliveInterval  30

    每30s发送一个心跳包

  • 修改完成后service sshd restart使配置生效

About SSH

阅读全文 »

前言

本文介绍在搭建了服务器并且配置了域名后,如何通过 Certbot 将原先的 http:// 域名配置为 https:// 域名。文章的最后介绍了 HTTPS 基于的 SSL 协议,以及和 SSL 加密通信过程类似的 SSH 协议。

环境准备

  • Ubuntu 16.04
  • Nginx

安装配置 Certbot

添加软件源:

1
2
3
sudo apt-get update
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:certbot/certbot

可以看到 /etc/apt/sources.list.d 目录下多了个 certbot-ubuntu-certbot-xenial.list 文件,内容如下:

1
2
deb http://ppa.launchpad.net/certbot/certbot/ubuntu xenial main
# deb-src http://ppa.launchpad.net/certbot/certbot/ubuntu xenial main

安装Certbot:

阅读全文 »

前言

JPress是基于JAVA的博客平台,作为一个Web程序,我将用它演示如何构建自己的Docker镜像,以及如何使用Docker部署Java Web应用。

准备工作

  • 服务器 ubuntu 16.04
  • 下载好的jpress.war包,下载地址,下载下来先在IDE里跑了测试一下,以免服务器上出问题
  • 构建好的java-web开发环境Docker镜像,如何构建
  • Nginx
  • Mysql

构建JPress镜像

在部署JPress之前我们需要先构建JPress镜像,以便生成容器实例。首先修改Tomcat的配置文件,以适用于JPress。

server.xml

创建java-web-env容器实例,进入bash:

1
docker run -it s1mple1995/java-web-env bash

修改Tomcat配置文件:

阅读全文 »

Preface

Tomcat是现在主流的应用服务器。可以直接将基于Spring框架的Java Web应用部署到Tomcat上。本文将介绍如何安装JDK和Tomcat

Prerequisite

  • 服务器:Ubuntu 16.04
  • 良好的网络环境

Install JDK

官网安装jdk,相对较麻烦,但是官网毕竟权威

  • oracle官网复制jdk下载链接,执行wget命令即可

  • 解压.tar.gz压缩包,并改名

    1
    2
    3
    mv jdk-8u151-linux-x64.tar.gz /usr/local/lib/
    tar -xzvf jdk-8u151-linux-x64.tar.gz
    mv jdk-8u151-linux-x64 jdk8
  • vim ~/.bashrc配置环境变量,为什么要设置Java环境变量

    1
    2
    3
    4
    export JAVA_HOME=/usr/local/lib/jdk8
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=${JAVA_HOME}/bin:$PATH

bashrcprofile都用于保存用户的环境信息,**/etc/profile** 中设定的变量(全局)的可以作用于任何用户。**~/.bashrc** 该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取。需要注意的是我在docker容器中的 /etc/profile 配置java环境变量时,重启容器发现配置没生效,应该是操作系统在重启时加载 /etc/profile 文件,但是docker容器就没有这种操作了。

  • source ~/.bashrc使文件生效

Tips

阅读全文 »

Preface

Docker实现了宿主系统和Docker容器(container)的隔离,使用Docker可以将构建开发所需环境的镜像(images),再根据镜像生成容器实例。实现不依赖宿主机环境的高效部署、测试。

油条有一篇很好的文章介绍了Docker的工作原理。链接

Get Started

安装Docker,官网文档

1.官方镜像仓库:https://hub.docker.com/
2.官网下载速度较慢,推荐DaoCloud仓库,和官网同步更新的 https://hub.daocloud.io/

下载ubuntu基础镜像,冒号后是标签

1
docker pull daocloud.io/library/ubuntu:16.04

执行docker images查看已下载的镜像

创建容器实例,返回容器ID。-d后台运行

阅读全文 »