1. Kiểm tra phiên bản hiện tại của OpenSSL và OpenSSH
Trước tiên, cần xác định phiên bản đang sử dụng:
openssl version -a
ssh -V
2. Cài đặt và kích hoạt dịch vụ Telnet (dự phòng khi nâng cấp bị gián đoạn)
Cài đặt gói Telnet và xinetd:
yum -y install telnet-server xinetd
Kích hoạt tự động khởi động:
systemctl enable xinetd.service
systemctl enable telnet.socket
Khởi động các dịch vụ:
systemctl start telnet.socket
systemctl start xinetd
Kiểm tra trạng thái hoạt động:
systemctl status telnet.socket
systemctl status xinetd
Cho phép người dùng root đăng nhập qua Telnet:
mv /etc/securetty /etc/securetty.bak
3. Cấu hình tường lửa (có thể bỏ qua nếu tắt tường lửa)
Cách 1: Mở cổng 23 cho tất cả (rủi ro cao):
firewall-cmd --add-port=23/tcp --permanent
firewall-cmd --reload
Cách 2: Chỉ mở cho IP cụ thể:
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.66.9.1 port protocol=tcp port=23 accept'
firewall-cmd --reload
4. Cho phép root đăng nhập từ xa
Chỉnh sửa file /etc/securetty (nếu còn tồn tại), thêm dòng sau:
pts/4
5. Khởi động lại các dịch vụ Telnet
systemctl restart telnet.socket
systemctl restart xinetd.service
6. Kiểm tra kết nối Telnet
Trên máy Windows, mở CMD và gõ:
telnet <địa chỉ IP máy chủ>
7. Nâng cấp OpenSSL lên phiên bản 3.0.7
Tải và giải nén mã nguồn:
wget http://www.openssl.org/source/old/3.0/openssl-3.0.7.tar.gz --no-check-certificate
tar -zxvf openssl-3.0.7.tar.gz
cd openssl-3.0.7
Cài đặt các thư viện phụ thuộc:
yum install -y gcc gcc-c++ glibc make automake autoconf pam pam-devel zlib zlib-devel
Cấu hình trước khi biên dịch:
./config shared --prefix=/usr/local/openssl
Biên dịch và cài đặt:
make && make install
Sao lưu phiên bản cũ (tùy chọn):
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
Tạo liên kết tượng trưng cho phiên bản mới:
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
Cập nhật đường dẫn thư viện:
echo '/usr/local/openssl/lib64' > /etc/ld.so.conf.d/openssl-x86_64.conf
ldconfig -v
8. Nâng cấp OpenSSH lên phiên bản 9.3
Tải và giải nén:
wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.3p1.tar.gz
tar -zxvf openssh-9.3p1.tar.gz
Thay đổi chủ sở hữu thư mục:
chown -R root.root ./openssh-9.3p1
Dừng dịch vụ SSH hiện tại:
systemctl stop sshd
Xóa cấu hình cũ:
rm -rf /etc/ssh/*
Gỡ bỏ các gói OpenSSH cũ:
rpm -e `rpm -qa | grep openssh` --nodeps
Cấu hình biên dịch:
cd openssh-9.3p1
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-zlib --with-ssl-dir=/usr/local/openssl/include/openssl --with-md5-passwords --with-pam
Biên dịch và cài đặt:
make && make install
Xóa script khởi động cũ:
ls /usr/lib/systemd/system/ssh*
rm -f /usr/lib/systemd/system/ssh*
Tạo liên kết tượng trưng:
ln -s /usr/local/openssh/sbin/sshd /usr/sbin/
ln -s /usr/local/openssh/bin/* /usr/bin/
Tải lại cấu hình systemd:
systemctl daemon-reload
Khởi động và kích hoạt khởi động cùng hệ thống:
systemctl start sshd && systemctl enable sshd
Cho phép root đăng nhập từ xa qua SSH:
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
Khởi động lại dịch vụ SSH:
systemctl restart sshd
Xác nhận phiên bản mới:
ssh -V
Tắt dịch vụ Telnet sau khi kiểm tra SSH hoạt động:
systemctl stop telnet.socket
systemctl disable telnet.socket
Xóa quy tắc tường lửa cho cổng 23:
firewall-cmd --remove-port=23/tcp --permanent
firewall-cmd --reload
9. Các lỗi thường gặp khi biên dịch OpenSSH và cách khắc phục
Lỗi 1: configure: error: *** zlib.h missing - please install first or check config.log ***
Giải pháp: Cài đặt gói zlib-devel:
yum install -y zlib-devel
Lỗi 2: configure: error: *** OpenSSL headers missing - please install first or check config.log *** hoặc configure: error: *** working libcrypto not found, check config.log
Giải pháp: Cài đặt gói openssl-devel:
yum -y install openssl-devel
Lỗi 3: checking whether OpenSSL's headers match the library... no
Giải pháp: Thêm tham số --without-openssl-header-check khi cấu hình:
./configure --prefix=/usr --sysconfdir=/etc/ssh --without-openssl-header-check
Sau đó chạy lại cấu hình và biên dịch:
./configure --prefix=/usr --sysconfdir=/etc/ssh
make && make install