CentOS 5等保二级Linux主机问题整改,升级bash,openssl,openssh

设置系统密码长度、复杂度、生存周期

vim /etc/pam.d/system-auth

1
2
3
4
password requisite pam_cracklib.so minlen=12 ucredit=-1 lcredit=-1 ocredit=-1 retry=3 difok=5
#minlen(最小长度)12位,ucredit(最少大写字母)1位,lcredit(最少小写字母)1位,ocredit(最少其他字符)1位,retry(重试次数)3次,difok(最少不同字符)5个 dcreit(最少数字字符)0位
auth required pam_tally.so onerr=fail deny=6 unlock_time=300 even_deny_root root_unlock_time=300
#重试最大次数6次,错误后锁定300秒

vim /etc/login.defs

1
2
3
4
PASS_MAX_DAYS 90 #密码最长过期天数
PASS_MIN_DAYS 0 #密码最小过期天数
PASS_MIN_LEN 12 #密码最小长度
PASS_WARN_AGE 7 #密码过期警告天数

设置空闲会话时间

vim /etc/profile

1
export TMOUT=300

source /etc/profile

升级系统补丁

注:仓库配置文件为centos5的配置文件,如果购买了正版的RHEL操作系统,可以使用RHN服务进行更新
vim /etc/yum.repos.d/CentOS-Base.repo

1
2
3
4
5
6
7
8
9
10
11
12
[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/5.11/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/5.11/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

yum update

安装杀毒软件clamav

安装centos5的epel-release扩展包

rpm -ivh http://dl.fedoraproject.org/pub/archive/epel/5/x86_64//epel-release-5-4.noarch.rpm

安装杀毒软件clamav

yum install -y clamav

更新病毒库

freshclam

测试查杀病毒

clamscan -r /tmp

升级bash

查看bash版本

/bin/bash --version

1
2
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

检测漏洞

env -i X='() { (a)=>\' bash -c 'echo date'; cat echo

1
修复前输出:当前系统时间

安装基础依赖包

yum -y install gcc gcc-c++ glibc

下载bash最新版

wget http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz

编译安装bash

./configure
make && make install

备份旧版本bash,并设置软连接

mv /bin/bash /bin/bash.bak && ln -s /usr/local/bin/bash /bin/bash

查询升级后版本

/bin/bash --version

1
2
3
4
5
6
GNU bash, version 4.4.0(1)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

再次检测漏洞

env -i X='() { (a)=>\' bash -c 'echo date'; cat echo

1
修复后输出:date

升级openssl

查询openssl版本

/usr/bin/openssl version -a

1
2
3
4
5
6
7
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
built on: Tue May 31 06:58:30 CDT 2016
platform: linux-x86_64
options: bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,16,int) blowfish(ptr2)
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -I/usr/kerberos/include -DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DOPENSSL_USE_NEW_FUNCTIONS -fno-strict-aliasing -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
OPENSSLDIR: "/etc/pki/tls"
engines: dynamic

注:受perl版本限制,最新版的openssl1.1.1需要perl5.10+版本,本次升级为1.0.2版本

下载openssl

wget -c https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz
tar xf openssl-1.0.2p.tar.gz
cd openssl-1.0.2p

编译安装openssl

./config --prefix=/usr/local/openssl
make && make install

备份之前的openssl

mv /usr/bin/openssl /usr/bin/openssl.old && mv /usr/include/openssl /usr/include/openssl.old

添加软连接

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl && ln -s /usr/local/openssl/include/openssl /usr/include/openssl

再次查看openssl版本

/usr/bin/openssl version -a

1
2
3
4
5
6
OpenSSL 1.0.2p 14 Aug 2018
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DRC4_ASM -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/local/openssl/ssl"

将OpenSSL 的动态链接库地址写入动态链接装入器

echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
由于openssh配置时会使用旧版本的openssl库文件,需要先配置以下三个变量,让其指向新版本的opnessl库文件

1
2
3
4
export DEFAULT_LIBPATH=/usr/local/openssl/include/openssl/:/usr/local/openssl/lib/
export LIBPATH=${LIBPATH:=$DEFAULT_LIBPATH}
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:=$DEFAULT_LIBPATH}
export LIBRARY_PATH=${LIBRARY_PATH:=$DEFAULT_LIBPATH}

重新加载动态链接库

ldconfig -v

升级openssh

安装配置telnet server

yum -y install telnet-server
vim /etc/xinetd.d/telnet

1
2
3
4
5
6
7
8
9
10
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no #修改yes为no
}

/etc/init.d/xinetd restart

设置防火墙,允许访问23端口

也可以暂时关闭防火墙
iptables -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT
或者
service iptables stop

允许root远程telnet登录主机

vim /etc/securetty

1
2
3
4
5
6
7
8
9
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
pts/7
pts/8

以下操作使用telnet远程登录主机进行操作

1
2
3
telnet 192.168.7.70 23
login:root
passwd:xxxxxx

安装基础包

yum install zlib zlib-devel

备份配置文件

cp -r /etc/ssh /mnt
cp /etc/init.d/sshd /mnt
cp /etc/pam.d/sshd /mnt

下载、编译安装openssh

wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.9p1.tar.gz
tar xf openssh-7.9p1.tar.gz
cd openssh-7.9p1
./configure --prefix=/usr -sysconfdir=/etc/ssh -with-ssl-dir=/usr/local/openssl -with-zlib -with-pam -with-md5-passwords -with-kerberos5 --without-zlib-version-check
make && make install

启动sshd访问

/etc/init.d/sshd restart

查看ssh版本

ssh -V

升级后ssh用户无法远程登录

提示Failed password for root from x.x.x.x port 55776 ssh2

切记备份/etc/pam.d/sshd, 升级后如果不能远程登录,记得恢复之前备份的/etc/pam.d/sshd,如果忘记备份,可以从同系列主机(centos6就复制centos6的,centos7就复制centos7的)复制该文件,重启sshd服务即可!

Could not get shadow information for root

查看selinux 状态
sestatus
如果是enabled状态,临时解决方案setenforce 0
永久生效请修改/etc/selinux/config文件中的SELINUX=disabled,在合适的时候重启主机生效
sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config
reboot

https://blog.csdn.net/zougen/article/details/79570500
http://leung4080.github.io/linux/2013/08/07/OpenSSL-OpenSSH-升级配置/

独学无友,孤陋寡闻;学习记录,欢迎拍砖!