RHEL 5.4 openssh OpenSSH 로 승급 가능7.4p 1 버 전 - shell 처리

7656 단어 shellopenssh
RHEL 5.4 openssh OpenSSH 로 승급 가능7.4p 1 버 전 - shell 처리
고객 30 대 RHEL 5.4 시스템 의 openssh 는 OpenSSH 로 업그레이드 해 야 합 니 다.7.4p 1 버 전
#cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
# uname -r
2.6.18-164.el5PAE
# uname -m
i686
원 격 연결 중단 을 방지 하기 위해 telnet 서 비 스 를 켜 야 합 니 다. 방화벽 은 tcp 23 포트 를 열 고 필요 한 파일 을 다운로드 해 야 하기 때문에 2 개의 스 크 립 트 를 썼 습 니 다.
스 크 립 트 1: 소프트웨어 다운로드, 방화벽 tcp 23 포트 오픈, telnet 서비스 시작
#!/bin/bash

#Load system paraments
. /etc/init.d/functions


function DownloadSoftware(){
	[ ! -d /root/tools ] && mkdir -p /root/tools
	if [ `grep "nameserver 8.8.8.8" /etc/resolv.conf | wc -l` -lt 1 ]
		then
			echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
	fi
	wget -O /root/tools/openssl-0.9.8f.tar.gz https://dl.packetstormsecurity.net/crypt/SSL/openssl/openssl-0.9.8f.tar.gz \
	--no-check-certificate > /dev/null 2>&1
	if [ $? -eq 0 ]
		then
			action "download openssl-0.9.8f.tar.gz" /bin/true
		else
			action "download openssl-0.9.8f.tar.gz" /bin/false
			exit
	fi
	wget -O /root/tools/openssh-7.4p1.tar.gz http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz \
	> /dev/null 2>&1
	if [ $? -eq 0 ]
		then
			action "download openssh-7.4p1.tar.gz" /bin/true
		else
			action "download openssh-7.4p1.tar.gz" /bin/false
			exit
	fi
}

function ModIptables(){
	if [ `iptables -L | grep -w "dpt:telnet" | wc -l` -lt 1 ]
		then
		sed -i '19 i-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT' /etc/sysconfig/iptables
		iptables-restore  /dev/null 2>&1 && \
 /etc/init.d/iptables restart
			if [ `iptables -L | grep -w "dpt:telnet" | wc -l` -eq 1 ]
				then
					action "Add Telnet port..."  /bin/true
			fi
	fi
}

function StartTelnet(){
	sed -i '/.*disable/s#yes#no#g' /etc/xinetd.d/krb5-telnet
	/etc/init.d/xinetd restart
	if [ `awk -F "[= ]+" '/.*disable/{print $2}' /etc/xinetd.d/krb5-telnet` = "no" ]
		then 
			action "Start Telnet" /bin/true
		else
			action "Start Telnet" /bin/false
			exit
	fi  
}

function main(){
	DownloadSoftware
	ModIptables
	StartTelnet
}

main

스 크 립 트 2: openssl 을 마 운 트 해제 하고 설치 하 며 openssh 를 마 운 트 해제 하고 설치 하 며 telnet 서 비 스 를 닫 습 니 다.
#!/bin/bash

#Load system paraments
. /etc/init.d/functions

function InstallOpenSsl(){
#Uninstall OpenSsl.
	for i in `rpm -qa openssl*`
		do
			rpm -e $i --nodeps  > /dev/null 2>&1
	done
#Install OpenSsl.
	cd /root/tools && tar xf openssl-0.9.8f.tar.gz
	sleep 5
	cd /root/tools/openssl-0.9.8f
	./config shared zlib  > /dev/null 2>&1 && make  > /dev/null 2>&1 && make install  > /dev/null 2>&1
	if [ $? -eq 0 ]
		then
			action "Install OpenSsl"  /bin/true
		else
			action "Install OpenSsl"  /bin/false
			exit
	fi
#Config openssl.
	mv /usr/include/openssl /usr/include/openssl.bak > /dev/null 2>&1
	ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
	ln -s /usr/local/ssl/include/openssl /usr/include/openssl
	ln -s /usr/local/ssl/lib/libssl.so.0.9.8 /lib/libssl.so.6
	ln -s /usr/local/ssl/lib/libcrypto.so.0.9.8 /lib/libcrypto.so.6
	echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
	ldconfig -v > /dev/null 2>&1
}


function InstallOpenSsh(){
#Uninstall OpenSsh.
	/etc/init.d/sshd stop
 	mv  /etc/ssh/sshd_config /etc/ssh/sshd_config.`date +%F`
	for ossh in `rpm -qa | grep openssh*`
		do
			rpm -e $ossh > /dev/null 2>&1
	done
#Install OpenSsh.
	cd /root/tools && tar xf openssh-7.4p1.tar.gz 
	sleep 5
	cd /root/tools/openssh-7.4p1
	./configure --prefix=/usr/local/ssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local/ssl/  > /dev/null 2>&1 && make  > /dev/null 2>&1 && make install  > /dev/null 2>&1
	if [ $? -eq 0 ]
		then
			action "Install OpenSsh"  /bin/true
		else
			action "Install OpenSsh"  /bin/false
			exit
	fi
#Config OpenSsh.
	echo 'export PATH=/usr/local/ssh/bin:/usr/local/ssh/sbin:$PATH' >> /etc/profile
	source /etc/profile
	echo '/usr/local/ssh/sbin/sshd' >> /etc/rc.d/rc.local
#Modify OpenSsh sshd_config.
	sed -i 's/#UseDNS no/UseDNS no/g' /etc/ssh/sshd_config
	sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/g' /etc/ssh/sshd_config
	CheckSsh=(`cat /etc/ssh/sshd_config | grep -E "PermitRootLogin|UseDNS" | grep -v ^# | awk '{print $2}'`)
        if [ ${#CheckSsh[*]} -eq 1 ]
                then
                        if [ ${CheckSsh[0]} = no ]
                                then
                                        action "Modify sshd_config" /bin/true
                                else
                                        action "Modify sshd_config" /bin/false
                                        exit
                        fi
        else
                        if [ ${CheckSsh[0]} = no -a ${CheckSsh[1]} = no ]
                                then
                                        action "Modify sshd_config" /bin/true
                                else
                                        action "Modify sshd_config" /bin/false
                                        exit
                        fi
        fi
#Start OpenSsh and check it.

	/usr/local/ssh/sbin/sshd > /dev/null 2>&1
	if [ `lsof -i :22 | grep -o sshd | wc -l` -gt 1 ]
		then
			action "Start OpenSSH" /bin/true
		else 
			action "Start OpenSSH" /bin/false
			exit
	fi
}

function StopTelnet(){
	sed -i '/.*disable/s#no#yes#g' /etc/xinetd.d/krb5-telnet
	/etc/init.d/xinetd restart
	if [ `awk -F "[= ]+" '/.*disable/{print $2}' /etc/xinetd.d/krb5-telnet` = "yes" ]
		then 
			action "Stop Telnet" /bin/true
		else
			action "Stop Telnet" /bin/false
			exit
	fi  
}

function main(){
	InstallOpenSsl
	InstallOpenSsh
	StopTelnet
}

main

스 크 립 트 및 테스트 스 크 립 트 를 작성 할 때 발생 하 는 문제점 을 정리 합 니 다.
1.  openssl 설치 후 configure openssh 시
       ./configure --prefix=/usr/local/ssh --sysconfdir=/etc/ssh
    오류 발생:
       checking OpenSSL library version... configure: error: OpenSSL >= 0.9.8f required
    먼저 스스로 해결 을 시도 해 보 았 지만 처리 할 방법 이 없 었 다. 그 다음 에 인터넷 에서 관련 문 제 를 검색 하면 한 네티즌 의 글 에 따라 힌트 를 받 아 지정 해 야 한다.
      --with - ssl - dir 매개 변수
2.  테스트 환경 업그레이드 완료 후 wget 을 사용 하여 소프트웨어 를 다운로드 하려 고 하 는데 오류 가 발생 했 습 니 다.   
    wget
    wget: error while loading shared libraries: libssl.so.6: cannot open shared object         file: No such file or directory
    
#ldd /usr/bin/wget
        linux-gate.so.1 =>  (0x00b69000)
        libssl.so.6 => not found
        libcrypto.so.6 => not found
        libdl.so.2 => /lib/libdl.so.2 (0x008a4000)
        librt.so.1 => /lib/librt.so.1 (0x008d8000)
        libc.so.6 => /lib/libc.so.6 (0x00733000)
        /lib/ld-linux.so.2 (0x00715000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x008aa000)

   libssl.so.6 => not found
   libcrypto.so.6 => not found
   openssl 을 삭제 할 때 관련 파일 이 함께 삭제 되 기 때문에 이 문 제 는 ln 이 새로운 파일 에 소프트 연결 만 하면 됩 니 다.
ln -s /usr/local/ssl/lib/libssl.so.0.9.8 /lib/libssl.so.6
ln -s /usr/local/ssl/lib/libcrypto.so.0.9.8 /lib/libcrypto.so.6

서둘러 스 크 립 트 를 다 썼 습 니 다. 일부 집행 권한 은 판단 을 하지 않 았 습 니 다. 지적 할 수 없 으 니 열심히 네티즌 들 에 게 수정 해 주 십시오!

좋은 웹페이지 즐겨찾기