zoukankan      html  css  js  c++  java
  • 云服务器-Ubuntu更新系统版本-更新Linux内核-服务器安全配置优化-防反弹shell

    购入了一台阿里云的ESC服务器,以前都用CentOS感觉Yum不怎么方便,这次选的Ubuntu16.04.7

    搭好服务之后做安全检查,发现Ubuntu16.04版本漏洞众多;虽然也没有涉及到16.04.7版本(这么说来阿里云给的镜像还是可以的)但升级一下更安全一些;于是就有了今天这篇文章,做个总结。

    我原来的内核版本

    首先,更新内核版本(4.4x内核有些许漏洞,见图)

    一、Linux更新内核版本

    1、下载内核deb安装文件

    对于Ubuntu,需要去http://kernel.ubuntu.com/~kernel-ppa/mainline/选择合适的内核安装包

    注意:X86硬件架构64位操作系统应选择AMD64

     浏览器下载4个内核deb安装文件,并上传到服务器,或在服务器执行:

    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-headers-5.9.10-050910-generic_5.9.10-050910.202011221708_amd64.deb
    
    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-headers-5.9.10-050910_5.9.10-050910.202011221708_all.deb
    
    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-image-unsigned-5.9.10-050910-generic_5.9.10-050910.202011221708_amd64.deb
    
    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.9.10/amd64/linux-modules-5.9.10-050910-generic_5.9.10-050910.202011221708_amd64.deb

    2、安装deb包

    切换至root或使用sudo

    sudo dpkg -i *.deb

    3、更新grub,重启验证

    update-grub
    reboot
    uname -sr #查看内核版本

     二、更新Ubuntu系统版本

    更新系统版本之前记得换软件源,如果软件源过慢或不稳定那将是一个大麻烦

    换源及apt-get常用命令参考:https://www.jianshu.com/p/a79ee7f59036

    1、更新安装源(Source)

    sudo apt-get  update #更新安装源(Source)

    2、对软件升级

    apt-get dist-upgrade #更新已安装的软件包(识别并处理依赖关系的改变)

    3、更新系统版本

    sudo update-manager -c -d

    注:如果提示“update-manager”未安装,可以使用“sudo apt-get install update-manager”安装

    如果安装后仍然无法执行,提示“update-manager”服务没有运行,可以使用“systemctl status update-manager”查看该服务情况,我的显示“找不到该服务的文件,该服务处于死的状态”;如果像我一样,尝试卸载该服务“sudo apt-get --purge autoremove update-manager”然后下一步

    4、另一种方法

    sudo do-release-upgrade -d
    #中间只要是停下来需要选择,一路选择Y即可
    
    #更新之后查看系统版本
    lsb_release -a

    ps:(如以上方法无效)Ubuntu登录用户时提供的一条命令,很稳定,按照向导更新很不错(推荐)。

    三、安全配置-禁用root远程登录-禁用sudo

    (或者直接使用密钥对登录,三篇文章让你秒懂“LinuxSSH密钥登录”)

    [菜鸟教程]设置 SSH 通过密钥登录

    [CSDN-LingMessy]Linux下生成ssh密钥对

    [博客园-520_1351]关于linux免密登录的配置及ssh客户端基于私钥文件的登录

    1、为防止暴力穷举root登录密码,修改配置文件禁用root远程登录

    #修改root密码(一是为了增加root密码强度,二是有些Ubuntu默认root没有密码,一直使用普通用户sudo在运行;创建root密码使root可登录对下面的操作至关重要)
    passwd root

    #创建普通用户(用于禁用root远程登录后自己登录使用)
    useradd 用户名

    #修改该用户的密码,创建时默认没有密码(没有密码将无法登录)
    passwd 用户名

    #在/home下创建该用户的家目录(有些Ubuntu在创建用户后,用户并没有家目录)
    mkdir /home/用户名

    #赋予该用户对刚创建的家目录的权限
    chown -R 用户名:用户名 /home/用户名

    #修改该用户的默认bash(有些Ubuntu创建用户后bash也不是默认bash)
    usermod -s /bin/bash 用户名

    #禁用root远程登录
    vim /etc/ssh/sshd_config #将PermitRootLogin的值改为prohibit-password

    保存重启服务器才能生效

    2、禁用sudo,防止黑客控制普通用户后控制服务器

    vim /etc/sudoers

    #注释掉:
    %admin ALL=(ALL) ALL
    %sudo   ALL=(ALL:ALL) ALL

    %wheel  ALL=(ALL)   ALL

    包括:“用户名 ALL=(ALL:ALL) ALL”等语句

     三、防反弹shell

    服务器一旦被上传恶意文件并执行,就有可能被黑客获得控制权限,无论这个权限大小,为防止进一步提权或破坏服务器有必要阻止他

    但防止上传恶意文件难度是巨大的,例如web网站允许上传用户头像(万一某个人上传了一个PHP呢?)尽管程序员会在网站源码里做防护,但PHP也有很多漏洞;况且百密必有一疏,例如php5.6版本就存在任意文件上传漏洞。一般网站源码可兼容的PHP版本是有限度的,无节制更新PHP版本也不太可能。以及web服务经常发生的xss攻击,服务器运行的各种docker和应用程序及手机app服务端;防护覆盖面广,难度大。

    上传文件无非获得服务器控制权,反弹shell就是常用的一种;另一种目的是损坏服务器,利用漏洞删除服务器数据、破坏服务正常运行 (可以通过更新内核版本防护)。

    GitHub上有一个项目来实现这个功能

     GitHub项目地址:https://github.com/zhanghaoyil/seesaw

    具体使用还在研究中,本文章持续更新!

  • 相关阅读:
    zjoj1706: [usaco2007 Nov]relays 奶牛接力跑
    bzoj1784: [Usaco2010 Jan]island
    [PKUSC2018]真实排名
    [PKUSC2018]主斗地
    回来了
    P4887 第十四分块(前体)
    P3604 美好的每一天
    Codeforces Round #660(CF1388)
    BOI2020 DAY2
    BZOJ 5281--[Usaco2018 Open]Talent Show(分数规划&单调队列&DP)
  • 原文地址:https://www.cnblogs.com/Deng-Xian-Sheng/p/14030356.html
Copyright © 2011-2022 走看看