美文网首页
腾讯云基础知识防护(公私钥/防火墙)及部署

腾讯云基础知识防护(公私钥/防火墙)及部署

作者: 马梦里 | 来源:发表于2017-12-10 16:22 被阅读0次

    请求和响应流程:

    1. 客户端发送请求给服务器,会经过防火墙过滤(比如80端口),如果可以通过,则把请求发送给监听80端口的程序。
    2. 监听80端口的程序是gunicorn,有两部分(目前),一个主进程,一个从进程,主进程会把请求转发给从进程,
      通过wsgi协议和flask沟通,flask再调用路由,路由调用相应的函数,再把响应返回给flaskflask再返回给gunicorn,再通过gunicorn返回给客户端。(应用服务器flaskweb服务器gunicorn,通过wsgi沟通)

    ssh协议

    服务器和浏览器的双向验证
    前两步验证用非对称密钥,以后用对称密钥进行会话(更快更方便)

    发起请求,你验证服务器
    -> 针对特定服务器发出 ssh 请求
    <- 服务器发回它的指纹。指纹就是服务器公钥的 hash 值
    -> 客户端验证指纹。
    
    用 rsa 验证,服务器验证你
    <- 服务器给你发一段信息。(nonce)
    -> 你用你的私钥(~/.ssh/id_rsa)加密这段信息
    <- 服务器用你的公钥(它自己会在这里查找,默认这个位置)(~/.ssh/authorized_keys)解密,如果能解密就说明验证成功
    
    基于 rsa 的对称密钥交换
    <- 成功后,服务器用你的公钥加密一个对称密钥。
    -> 用私钥解密得到对称密钥,之后的通信统统用这个对称密钥加密
    

    https

    单向验证,浏览器验证服务器,二服务器不需要验证浏览器
        世界上有几个根证书商,被植入在浏览器或操作系统里面,这些根证书商又分别信任一些子证书商,这些子证书商又信任一些小企业(一般三级)。(比如说某个根证书商信任腾讯,腾讯又信任了我们,所以我们网站的证书可以被chrom浏览器识别信任)。
        比如说,你在浏览器输入某个网址,那么这个网站的服务器会把证书给你的浏览器,那么现在浏览器会检验该证书是否合法(被跟证书信任),如果合法,浏览器会生成一个对称密钥(session_key),用服务器证书里面的公钥加密,发给服务器,服务器用对应的私钥解密,解密之后拿到你发给服务器的对称密钥,那么以后就可以正常发送信息了。以后发信息就是用沟通好的session_key进行加密的内容了。

    发起请求,你验证服务器
    -> 你在浏览器发起请求,访问 https://baidu.com
    <- 服务器返回给你它的证书
    -> 浏览器验证证书是否有效
    
    基于 rsa 的对称密钥交换
    -> 如果证书有效,浏览器会生成一个对称密钥。
    -> 用服务器证书的公钥加密后,发给服务器。
    <- 服务器用证书对应的私钥解密,拿到对称密钥。
    <- 之后的通信统统用这个对称密钥加密
    

    一、服务器密码位置:密码:M09j02;在下面安全组开放端口。

    图片.png

    二、开启免密码登录

    1.双击cmder--exe文件(不必安装),输入命令:

    ssh ubuntu@115.159.204.225以及登录密码M090j982登录到购买的服务器。
    ubuntu@115.159.204.225
    ubuntu:用户名

    图片.png
    图片.png
    分别对应:用户名 主机名 用户下的家目录 普通用户标识符(#root用户)
    2.命令行输入(可以省略):

    ssh-keygen
    问问题的时候,不用管,一直回车就行。会在文件夹下生成私钥和公钥的键值对。生成的位置是:

    图片.png
    可以通过如下命令查看:
    sudo ls -al ~/.ssh(但是没有)
    3.切换到本地windows(ctrl + d)

    输入:
    ssh-keygen.exe

    图片.png
    可知在mml/.ssl目录下生成了两个文件,这就是(id_rsa.pub)公钥和私钥(id-rsa)的键值对。
    4.安装filezilla,并连接到服务器

    filezilla设置文件的打开方式:

    1.PNG 2.PNG

    注意:用户名是ubuntu

    图片.png
    这样,就可以查看本地文件和远站点文件,并进行传输了;
    图片.png
    但是点击远程站点的.ssh文件夹,显示:
    图片.png 表明没有权限,就需要修改该文件夹的权限:
    图片.png
    更改文件夹权限命令是:
    sudo chown -R ubuntu:ubuntu .ssh
    (第一个ubuntu表示要修改到的组,第二个ubuntu表示要修改到的用户,.ssh表示要修改的文件)
    那么现在就可以打开了:
    图片.png
    5.将左边文件里面的内容,粘贴到右边文件内,提示框默认点击就行。
    图片.png
    获取公钥的时候,.pub文件打不开,那么就在cmdercmder服务器目录)中打开文件(先定位到文件目录):
    more id_rsa.pub
    6.重启ssh,就能免密码登陆了

    service ssh restart

    禁用密码登录

    1.下载并安装atom编辑软件
    将atom以下文件目录放到filezilla设置里面,这样就可以利用atom进行编辑了。

    图片.png
    图片.png
    找到这个文件:/etc/ssh/sshd_config,右键编辑:
    PasswordAuthentication yes 改为 PasswordAuthentication no
    去掉开头的 #注释符号
    修改完后保存提交,在cmder下查看:
    图片.png
    最后重启:service ssh restart

    实现root用户在cmderfilezilla上的登录

    切换到root用户命令:sudo su
    ubuntu用户切换至root用户
    sudo passwd root
    填密码
    会提示修改成功,但是用root用户和这个密码既登不上cmder也登不上filezilla

    正确答案:

    ubuntu用户目录下,将authorized_keys文件拷贝到root目录下,运行命令:
    cp ~/.ssh/authorized_keys /root/.ssh/authorized_keys

    图片.png
    然后在filezilla站点管理中输入:
    图片.png 注意:选择密钥文件的时候,将文件类型选择所有,这样就可以连接登陆了。如果不选择密钥文件,其他方式登录还是需要密码,还是登录不了。

    开启防火墙

    root
    1.安装防火墙
    apt-get install ufw
    2.输入以下配置
    别人进入你的服务器,只能是22/80/443,而从你服务器出去的端口则是无所谓的。

    apt-get install ufw                        // 安装防火墙
    ufw allow 22                                // 允许特定端口开放
    ufw allow 80
    ufw allow 443
    ufw default deny incoming         // 阻止进入(除了上述端口)
    ufw default allow outgoing         // 全部允许出
    ufw status verbose                    // 显示ufw详细信息
    ufw enable                                // 开启防火墙
    

    出现:

    图片.png
    直接按enter
    图片.png 即可!
    查看防火墙配置:
    ufw status

    Shell设置

    界面更好看一点罢了(第2个没装上)
    1. 装zsh:sudo apt-get install zsh
    2. 装 oh-my-zsh
    - sh -c "$(curl -fsSL https://raw.githubusercontent.com/roobyrussell/oh-my-zsh/master/tools/install.sh)"
    

    部署

    【13-3(0:10min)】

    将python脚本文件上传,并在服务器上运行

    一定要修改host为0.0.0.0,这样服务器就能允许任何ip的电脑访问了。
    filezilla中,直接将文件拖到服务器指定目录下就可以了;如果脚本文件有修改,那么,在本地修改后,直接拖过去覆盖掉就好了。
    验证是否更改成功:进入更改的文件目录:
    tail server.py就能看到更改的内容。
    cmder中运行脚本:
    进入脚本目录,直接运行就好了
    python3 server.py

    图片.png
    这样运行,退出界面,就中断了,所以,需要让它在后台永久运行:
    nohup python3 server.py &
    执行成功将会出现:
    图片.png nohup.out表示该程序的输出在这个文件里面,可以通过以下命令查看:
    cat nohup.out
    再执行以下命令即可看到后台执行情况:
    • bg :查看后台运行的程序
    • fg :将后台运行的程序拉倒前台
      查看运行状态:
      命令:ps axf | grep python3
      图片.png
    • killall python3:表示结束掉所有关于python3的进程;
      图片.png
    • ctrl + c 挂起该程序,放到后台执行
    • ctrl + z 关闭该程序

    相关文章

      网友评论

          本文标题:腾讯云基础知识防护(公私钥/防火墙)及部署

          本文链接:https://www.haomeiwen.com/subject/hekvixtx.html