【教程】一些服务器常见漏洞的修复方法,亲测超详细

这篇具有很好参考价值的文章主要介绍了【教程】一些服务器常见漏洞的修复方法,亲测超详细。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

漏洞名称解释

Apache漏洞——卸载Apache2(可能不适用于大家)

CVE-2020-15778——禁用SCP

CVE-2020-15778、CVE-2016-2183、CVE-2021-41617、CVE-2014-0160、CVE-2020-12062、CVE-2021-28041、CVE-2016-6515——升级openssl和openssh

安装编译环境所需的工具

然后编译升级openssl

之后编译升级openssh

CVE-2018-19052和CVE-2019-11072——升级lighttpd

CVE-2021-23017——卸载nginx(可能不适用于大家)

卸载apache(可能不适用于大家)

CVE-2021-21703、CVE-2021-21708、CVE-2022-31626、CVE-2022-31625——升级PHP

检测到目标服务支持SSL弱加密算法

目标主机showmount -e信息泄露(CVE-1999-0554)

检测到远端X服务正在运行中(CVE-1999-0526)


转载请注明出处:小锋学长生活大爆炸[https://blog.csdn.net/sxf1061700625]

漏洞名称解释

lighttpd mod_alias_physical_handler’函数路径遍历漏洞(CVE-2018-19052)
lighttpd 输入验证错误漏洞(CVE-2019-11072)
OpenSSH 操作系统命令注入漏洞(CVE-2020-15778)
OpenSSH 安全漏洞(CVE-2021-41617)
Nginx DNS解析程序漏洞(CVE-2021-23017)
PHP 缓冲区错误漏洞(CVE-2021-21703)
PHP 资源管理错误漏洞(CVE-2021-21708)
PHP 安全漏洞(CVE-2022-31626)
PHP 安全漏洞(CVE-2022-31625)

Apache漏洞——卸载Apache2(可能不适用于大家)

sudo apt-get --purge remove apache2
sudo apt-get --purge remove apache2.2-common
sudo apt-get autoremove
sudo find  /etc -name "*apache*" -exec  rm -rf {} \;
sudo rm -rf /var/www

CVE-2020-15778——禁用SCP

sudo mv /usr/bin/scp /usr/bin/no_use_scp

CVE-2020-15778、CVE-2016-2183、CVE-2021-41617、CVE-2014-0160、CVE-2020-12062、CVE-2021-28041、CVE-2016-6515、CVE-2023-28531等——升级openssl和openssh

温馨提示:在执行操作之前,建议使用root用户,或者登录一个root用户窗口备用,以免环境出问题导致只能重装系统!!!

安装编译环境所需的工具

        对于centos(注意glibc不要升级,不然可能会出问题):

sudo yum update
sudo yum install wget tar make gcc perl pcre-devel zlib-devel

        对于ubuntu:

sudo apt update
sudo apt install wget tar make gcc perl libc-dev libzip-dev libssl-dev autoconf gcc libxml2  libpam0g-dev -y

然后编译升级openssl

cd ~
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz --no-check-certificate
tar xzvf openssl-1.1.1t.tar.gz
rm openssl-1.1.1t.tar.gz -rf
cd openssl-1.1.1t

# ---------------------------------------------------------------------------------- #
# 以下两种情况,选择一种执行即可。比较推荐“情况1”!

# 情况1:
# 要加上shared参数,否则在升级ssh时会出现头文件和库文件不匹配的信息。
./config shared zlib --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
make clean
make -j
# 建议以下这一步没问题再往后执行(即显示All tests successful. 如果出错,往下面看)
sudo make test
sudo make install

sudo mv /usr/bin/openssl /usr/bin/openssl.bak
sudo ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl  
sudo mv /usr/lib64/libssl.so.1.1    /usr/lib64/libssl.so.1.1.bak
sudo mv /usr/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1.bak
# 以下也有可能是/usr/local/openssl/lib,通过 ls /usr/local/openssl/ 看存在哪个
sudo ln -sf /usr/local/openssl/lib64/libssl.so.1.1      /usr/lib64/libssl.so.1.1
sudo ln -sf /usr/local/openssl/lib64/libcrypto.so.1.1   /usr/lib64/libcrypto.so.1.1

sudo mv /usr/include/openssl /usr/include/openssl.bak
sudo ln -sf /usr/local/openssl/include/openssl /usr/include/openssl  


cat /etc/ld.so.conf
sudo vim /etc/ld.so.conf
# 追加:/usr/local/openssl/lib64
# 跟上面一样,有可能是 /usr/local/openssl/lib,通过 ls /usr/local/openssl/ 看存在哪个

# ---------------------------------------------------------------------------------- #

# 情况2:
# 对于不加任何参数,则默认的安装位置为:/usr/local/bin/openssl。
./config
make -j64
# 建议以下这一步没问题再往后执行(即显示All tests successful.)
sudo make test
sudo make install 
sudo mv /usr/bin/openssl /usr/bin/openssl.old
sudo ln -s /usr/local/bin/openssl /usr/bin/openssl

cat /etc/ld.so.conf
sudo vim /etc/ld.so.conf
# 追加:/usr/local/lib
# 也有可能是/usr/local/lib64,看存在哪个

# ---------------------------------------------------------------------------------- #


which openssl
sudo ldconfig -v  
openssl version
ldd /usr/local/openssl/bin/openssl

问题一:如果在make test时候报错不通过,建议先升级一下perl:

cd ~
# 主要不要用最新的“不稳定开发版”
wget http://www.cpan.org/authors/id/S/SH/SHAY/perl-5.30.1.tar.gz --no-check-certificate
tar xzvf perl-5.30.1.tar.gz  
cd perl-5.30.1
./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uinstalluserbinperl -Dcc=gcc
make -j
sudo make test
sudo make install
sudo mv /usr/bin/perl /usr/bin/perl.bak
sudo ln -s /usr/local/perl/bin/perl /usr/bin/perl
perl -v

        然后重新执行上面openssl的make test。

问题二:如果一直显示使用的是anaconda的openssl,要么删除该openssl(不推荐):

rm /home/sxf/anaconda3/bin/openssl # 视情况

        还有一种情况是,Conda可能在你的shell中默认是激活的,在Ubuntu上安装anaconda的情况往往如此。在你的shell提示符的开头可能有(base)

        因此简单地运行conda deactivate可以解决这个问题。

【教程】一些服务器常见漏洞的修复方法,亲测超详细

问题三:如果报错:

openssl: symbol lookup error: openssl: undefined symbol: EVP_mdc2, version OPENSSL_1_1_0

        就把最后openssl的路径改为写到/etc/ld.so.conf.d/libc.conf中:

sudo vim /etc/ld.so.conf.d/libc.conf
# 写入:/usr/local/openssl/lib64

问题四:如果报错:

openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

        如果ls等基础命令都不能用了,赶紧先用root用户执行下:

/sbin/ldconfig

        然后检查一下是/usr/local/openssl/lib64还是/usr/local/openssl/lib,然后看情况重新执行:

sudo ln -sf /usr/local/openssl/lib64/libssl.so.1.1      /usr/lib64/libssl.so.1.1
sudo ln -sf /usr/local/openssl/lib64/libcrypto.so.1.1   /usr/lib64/libcrypto.so.1.1
# 或者
sudo ln -sf /usr/local/openssl/lib/libssl.so.1.1      /usr/lib64/libssl.so.1.1
sudo ln -sf /usr/local/openssl/lib/libcrypto.so.1.1   /usr/lib64/libcrypto.so.1.1

问题五:如果报错:

error while loading shared libraries: __vdso_time

        检查一下libc版本,并回退到之前可用的版本,比如之前是2.14,那么:

export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
LD_PRELOAD=/lib64/libc-2.14.so ln -fs /lib64/libc-2.14.so /lib64/libc.so.6

之后编译升级openssh

(最新版openssh9.3p可能会存在sshd兼容问题,建议先别装这么新的)

由于升级太频繁了,给个脚本吧,可能不是很完善,看情况使用:update_openssh.sh

cd ~
wget https://www.zlib.net/zlib-1.2.13.tar.gz --no-check-certificate
tar zxvf zlib-1.2.13.tar.gz
rm zlib-1.2.13.tar.gz -rf
cd zlib-1.2.13/
./configure --prefix=/usr/local/zlib --shared
make clean
make -j
sudo make install

cd ~
wget https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p2.tar.gz --no-check-certificate
tar zxvf openssh-9.3p2.tar.gz
rm openssh-9.3p2.tar.gz -rf
cd openssh-9.3p2
# 注意,如果上面更改了openssl的默认安装位置,那么--with-ssl-dir可能跟我不一样
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --without-openssl-header-check --with-pam
make clean
make -j
sudo mv /etc/ssh /etc/ssh.old
sudo make install

# 启动一下OpenSSH
# /usr/local/openssh/sbin/sshd
# 如果遇到报错,就先将以下内容写入:sudo vim /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

sudo make install

# 如果显示了“ssh_config already exists, install will not overwrite”,那可以不用执行下面这2行
sudo cp -f /etc/ssh.old/sshd_config /etc/ssh/
sudo sed -i 's/Type=notify/Type=simple/' /etc/systemd/system/sshd.service || sed -i 's/Type=notify/Type=simple/' /lib/systemd/system/ssh.service


sudo mv /usr/sbin/sshd        /usr/sbin/sshd.bk
sudo mv /usr/bin/ssh          /usr/bin/ssh.bk
sudo mv /usr/bin/scp          /usr/bin/scp.bk
sudo mv /usr/bin/sftp         /usr/bin/sftp.bk
sudo mv /usr/bin/ssh-keygen   /usr/bin/ssh-keygen.bk
sudo mv /usr/bin/ssh-agent    /usr/bin/ssh-agent.bk
sudo mv /usr/bin/ssh-add      /usr/bin/ssh-add.bk
sudo mv /usr/bin/ssh-keyscan  /usr/bin/ssh-keyscan.bk
sudo ln -sf /usr/local/openssh/sbin/sshd        /usr/sbin/sshd
sudo ln -sf /usr/local/openssh/bin/ssh          /usr/bin/ssh
sudo ln -sf /usr/local/openssh/bin/scp          /usr/bin/scp
sudo ln -sf /usr/local/openssh/bin/sftp         /usr/bin/sftp
sudo ln -sf /usr/local/openssh/bin/ssh-keygen   /usr/bin/ssh-keygen
sudo ln -sf /usr/local/openssh/bin/ssh-agent    /usr/bin/ssh-agent    
sudo ln -sf /usr/local/openssh/bin/ssh-add      /usr/bin/ssh-add      
sudo ln -sf /usr/local/openssh/bin/ssh-keyscan  /usr/bin/ssh-keyscan  
# sudo mv /usr/local/openssh/bin/* /usr/bin/
sudo mv /usr/local/openssh/bin/scp /usr/local/openssh/bin/no_use_scp

sudo ldconfig
sudo /usr/sbin/sshd
sudo systemctl daemon-reload
sudo systemctl enable ssh
sudo systemctl restart sshd

ssh -V
sshd -v
netstat -tnlp | grep :22

问题一:如果遇到报错:

checking for openssl... /usr/bin/openssl
configure: error: *** working libcrypto not found, check config.log

        检查下--with-ssl-dir=/usr/local/openssl这个路径对不对。

问题二:如果遇到报错:

checking OpenSSL library version... 1010111f (OpenSSL 1.1.1q  5 Jul 2022)
checking whether OpenSSL's headers match the library... no
configure: error: Your OpenSSL headers do not match your
        library. Check config.log for details.
        If you are sure your installation is consistent, you can disable the check
        by running "./configure --without-openssl-header-check".
        Also see contrib/findssl.sh for help identifying header/library mismatches.

        那是你的环境里openssl安装有问题,导致openssl与他的库版本不一致。

        补一下openssl中的以下操作,注意是openssl/lib64还是openssl/lib:(推荐)

sudo ln -sf /usr/local/openssl/lib64/libssl.so.1.1      /usr/lib64/libssl.so.1.1
sudo ln -sf /usr/local/openssl/lib64/libcrypto.so.1.1   /usr/lib64/libcrypto.so.1.1

        如果不行,可以尝试sudo apt remove openssl先卸载openssl,然后按照再上面步骤重新安装openssl。(不推荐)

        如果不行,或者直接添加--without-openssl-header-check来跳过检查。(次推荐)

CVE-2018-19052和CVE-2019-11072——升级lighttpd

官方已修复该漏洞

sudo apt install -y gcc libpcre2-dev libpcre3 libpcre3-dev zlib1g-dev checkinstall libssl-dev
cd ~
wget https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.66.tar.gz
tar zxvf lighttpd-1.4.66.tar.gz
rm lighttpd-1.4.66.tar.gz
cd lighttpd-1.4.66
./configure --with-openssl --sbindir=/usr/sbin
make -j12
sudo make install
sudo service lighttpd restart

CVE-2021-23017——卸载nginx(可能不适用于大家)

将残留卸载干净

dpkg --get-selections|grep nginx
sudo apt-get --purge remove nginx -y
sudo apt-get --purge remove nginx-common -y
sudo apt-get --purge remove nginx-core -y

卸载apache(可能不适用于大家)

# 删除 Apache2 的包及相关文件:
sudo apt-get --purge remove apache2* -y
sudo apt-get --purge remove apache2.* -y  
sudo apt-get --purge remove apache2-dev -y
sudo apt autoremove -y

# 删除 Apache2 的配置文件:(慎重!)
sudo find /etc -name "*apache2*"|xargs sudo rm -rf

# 删除 Apache2 的相关目录:(慎重再慎重!)
sudo rm -rf /var/www/*  
sudo rm -rf /etc/apache2*  
sudo rm -rf /etc/httpd*

# 删除 Apache2 的相关注册表键:(慎重!)
sudo rm -f -- /etc/httpd/conf.d/*

CVE-2021-21703、CVE-2021-21708、CVE-2022-31626、CVE-2022-31625——升级PHP

官方8.1.7版本已修复该漏洞。原本装的PHP7,现在升级到8,升级后漏洞虽然得到修复,但对于服务器现有web环境的影响,还需要进一步检测。

sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

sudo apt install php8.1
sudo apt install php8.1-fpm

检测到目标服务支持SSL弱加密算法

对于老的openssl,可先升级。

然后配置:

vim /etc/ssh/sshd_config

最后面添加:

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

重启服务:

sudo service sshd restart

目标主机showmount -e信息泄露(CVE-1999-0554)

方式一、禁用showmount命令

sudo vim /etc/exports

将“-v”选项从exportfs命令中删除,这将禁用showmount命令:

/share/dir *(nohide)

保存配置文件并退出。

重新启动NFS服务器以使更改生效。

方式二、隐藏目录

编辑位于/etc/exports的NFS服务器配置文件,并在所有导出的文件系统中添加“nohide”选项。

sudo vim /etc/exports

添加nohide:

/export/backup *(rw,nohide)

重启NFS:

sudo service nfs restart

方式三、直接限制IP或用户

NSFOCUS建议您采取以下措施以降低威胁:
* 限制可以获取NFS输出列表的IP和用户。
* 除非绝对必要,请关闭NFS服务、MOUNTD。
 
# 在NFS服务器上:
vim /etc/hosts.allow
mountd:192.168.1.10
rpcbind:192.168.1.10:allow
 
vim /etc/hosts.deny
mountd:ALL
rpcbind:ALL:deny
 
或者
vim /etc/exports
/data    192.168.1.10(rw,sync)
/data    192.168.1.12(rw,sync)
 
exportfs -rv

检测到远端X服务正在运行中(CVE-1999-0526)

sudo vim /etc/ssh/sshd_config

X11Forwarding设置为no,并保存文件。文章来源地址https://www.toymoban.com/news/detail-475134.html

sudo service sshd restart

到了这里,关于【教程】一些服务器常见漏洞的修复方法,亲测超详细的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WindwosServer系统一些设置【网卡驱动修复】【安装UWP应用】【服务器管理取消开机自启动】

    这里以2022为例: 此教程只针对I219-V/LM网卡! 小知识: 当电脑没网时,将手机和电脑用USB数据线连接 打开设置; 搜索“USB网络共享”; 打开,在右边弹出提示,点‘是’; 即可连接网络 下载文件:I219-V/LM安装程序 (I219-V和LM通用,不用担心兼容问题) 下载之后不要运行

    2024年02月10日
    浏览(55)
  • 服务器——SSL/TLS协议信息泄露漏洞(CVE-2016-2183)修复办法

    前言 :近期某台Windows Server服务器的远程连接端口(3389)被扫出了 SSL/TLS协议信息泄露漏洞(CVE-2016-2183) ,尝试了网上很多复制来复制去的 \\\"解决方法\\\" ,直接导致堡垒机连不上服务器,每次连不上服务器又得去找服务器提供方,真的非常麻烦,在此不得不吐槽一下某些不负责任的复制粘

    2024年02月03日
    浏览(57)
  • Linux Redhat 服务器 OpenSSH 漏洞修复 or 升级 OpenSSH 8.8

    ##@TOC 近期甲方系统漏洞扫描,发现服务器存在一些漏洞如下:OpenSSH安全漏洞(CVE-2021-41617),OpenSSH命令注入漏洞(CVE-2020-15778),OpenSSH安全漏洞(CVE-2017-15906),OpenSSH安全漏洞(CVE-2019-6111),OpenSSH欺骗安全漏洞(CVE-2019-6110),OpenSSH欺骗安全漏洞(CVE-2019-6109),OpenSSH访问限制绕过漏洞(CVE

    2024年02月04日
    浏览(55)
  • Centos7服务器同步网络发现漏洞与修复手册(每周更新3次)

    期望通过每一次分享,让技术的门槛变低,落地更容易。 —— around 作者公司有8台云服务器,本地有2台物理服务器,并且都联网了。云服务器的安全防护到期了,公司也不太想续费了,遂自己从代码上添加了一系列软件防护,但漏洞是一直再出,谁也无法保障是永远安全,

    2024年02月04日
    浏览(49)
  • Node.js 的 5 个常见服务器漏洞

    Node.js 是一个强大且广泛使用的 JavaScript 运行时环境,用于构建服务器端应用程序。然而,与任何其他软件一样, Node.js 也有自己的一些漏洞,如果处理不当,可能会导致安全问题。请注意,这些漏洞并不是 Node.js 所独有的,它们可以在每种后端编程语言中找到。 在本文中,

    2024年04月14日
    浏览(32)
  • 服务器安全性漏洞和常见攻击方式解析

    服务器安全性是当今互联网信息安全的重要组成部分。在网络安全领域中,常见的威胁之-就是服务器安全性漏洞。本文将深入探讨服务器安全性漏洞的本质,并分析常见的攻击方式并提供一些建议以加强服务器的安全性。 一、服务器安全性漏洞的本质 服务器安全性漏洞指的

    2024年01月17日
    浏览(48)
  • ChirpStack 部署教程及一些遇到的坑(LoRaWAN 服务器)

    目录 1.前言 2.Chirpstack介绍 3.Chirpstack部署 5. 访问 Chirpstack 的 Swagger 接口 6.部署ChirpStack的一些坑         6.1服务器端口没开         6.2 本地平台获取设备上报信息         6.3 swagger文档的授权         领导安排了个工作,需要用ChirpStack,将水表的数据放到服务器上,再从

    2024年02月02日
    浏览(55)
  • 麒麟/Linux/centOS服务器等保测评漏洞整改方法

    要求项 a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换; 结果记录 1、登录用户需要输入用户名和口令进行身份鉴别; 2、所有用户的用户名和UID均唯一; 3、查看etc/login.defs有如下配置:PASS_MAX_DAYS 99999 PASS_MIN_DAYS 0 PA

    2024年02月21日
    浏览(53)
  • 5w以内 4090双卡DDR5服务器安装教程与常见问题

    随着这两年芯片制程的快速提升,原有的老服务器在各方面性能都逐渐落后了。AMD zen4架构CPU制程提升到了5nm,内存升级到了DDR5并且提升了ECC纠错能力,显卡的话4nm的4090单从算力上也已经超越了A100,所以帮实验室装了一台5w以内极具性价比的zen4 7950x,DDR5内存,pcie4.0 nvme固态

    2024年02月15日
    浏览(53)
  • 一些常见的端口服务及其可能存在的漏洞

    端口号 端口服务 可能存在的漏洞 20 FTP服务的数据传输端口 21 FTP服务的连接端口 可能存在弱口令暴力破解 22 SSH服务端口 可能存在弱口令暴力破解 23 Telnet端口 可能存在弱口令暴力破解 25 SMTP简单邮件传输协议端口 43 whois服务端口 53 DNS服务端口 67/68 DHCP服务端口 69 TFTP端口 可

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包