Ubuntu 16.04 Server 2024年安装与安全加固全指南

📅 2026/8/5 4:14:26
Ubuntu 16.04 Server 2024年安装与安全加固全指南
1. 项目缘起为什么今天还要折腾Ubuntu 16.04 Server如果你在2024年看到这篇关于Ubuntu 16.04 Server的安装教程心里可能会嘀咕这都什么年代了还在讲一个早已停止官方支持的老系统确实从技术发展的角度看Ubuntu 16.04 LTS代号Xenial Xerus在2021年4月就结束了标准支持2024年更是连扩展安全维护ESM都进入了尾声。但现实情况往往比技术趋势更复杂这也是我决定写下这篇详尽教程的原因。在我过去几年的运维和开发支持经历中遇到过不少场景客户或项目因为历史遗留原因其核心生产环境、特定的工业控制软件或者某个关键的业务应用就“焊死”在Ubuntu 16.04上。升级系统牵一发而动全身成本高昂且风险巨大。这时候你需要做的不是劝他们升级而是确保这个老系统能够被干净、稳定、安全地部署和维护。此外对于一些学习、测试或复现特定历史漏洞的环境Ubuntu 16.04也是一个绕不开的经典版本。它承上启下很多在14.04上成熟的技术栈在这里得到延续而18.04之后的系统在部分底层配置上又有变化。因此这篇教程的目标非常明确为那些有明确需求必须在今天部署Ubuntu 16.04 Server的用户提供一份从零开始、避坑指南式的完整安装手册。我会假设你是在一台物理服务器或VMware/VirtualBox这类虚拟机上进行安装。整个过程我会穿插大量“为什么这么做”的解释以及我在无数次重装中积累下来的细节技巧和常见错误排查方法。毕竟安装一个老系统你遇到的坑可能比装一个新系统还要多。2. 战前准备获取镜像与创建安装介质安装任何操作系统第一步永远是准备好正确的“安装包”。对于Ubuntu 16.04 Server这一步就需要格外小心因为官方主站已经不再推荐这个版本直接搜索很容易下载到被篡改或不完整的镜像。2.1 寻找可信的官方镜像源绝对不要从任何第三方不明网站下载。最安全可靠的途径是访问Ubuntu的官方历史发布归档站点。访问官方归档仓库打开浏览器访问https://releases.ubuntu.com/16.04/。这是Ubuntu官方的发布目录所有16.04版本的ISO镜像都在这里。选择Server版本在文件列表中你会看到多个ISO文件。对于我们来说需要的是ubuntu-16.04.7-server-amd64.iso。注意这个文件名16.04.7这是16.04 LTS的最后一个子版本包含了截至2021年4月的所有更新补丁是最完善的起点。server服务器版本没有图形桌面纯命令行环境资源占用极低。amd64适用于现代64位x86架构的CPU包括Intel和AMD。如果你的设备是非常古老的32位系统则需要寻找i386版本但这种情况如今已极为罕见。下载与校验点击链接下载ISO文件。文件大小约为800MB。强烈建议下载后校验其SHA256哈希值。在下载页面通常能找到如SHA256SUMS的文件里面列出了正确镜像的哈希值。在Linux或Mac下可以使用sha256sum ubuntu-16.04.7-server-amd64.iso命令进行计算比对在Windows下可以使用certutil -hashfile ubuntu-16.04.7-server-amd64.iso SHA256。这一步能确保你下载的镜像是完整且未被修改的是安全部署的第一道防线。注意网络上有些教程提供的国内镜像站链接可能已经移除了16.04的镜像。如果releases.ubuntu.com速度慢可以尝试访问https://old-releases.ubuntu.com/releases/16.04.7/这是官方的旧发布归档站。2.2 制作启动U盘推荐方案在物理服务器上安装U盘是最通用的方式。你需要一个容量至少为2GB的U盘制作过程会清空其中所有数据。推荐工具 - Rufus (Windows)对于Windows用户Rufus是首选。它开源、免费、强大对老系统兼容性好。下载并运行Rufus。“设备”选择你的U盘。“引导类型选择”点击“选择”找到你下载的ubuntu-16.04.7-server-amd64.iso文件。“分区类型”和“目标系统类型”通常保持默认MBR/BIOS 或 GPT/UEFIRufus会根据你的ISO和当前系统环境给出推荐。对于老服务器如果遇到启动问题可以尝试手动选择“MBR”和“BIOS (或UEFI-CSM)”。其他选项默认即可点击“开始”。Rufus会提示采用哪种写入模式选择“以ISO镜像模式写入推荐”。备用工具 - dd命令 (Linux/macOS)这是最经典和底层的工具。首先用lsblk或diskutil list命令确认你的U盘设备标识例如/dev/sdb或/dev/disk2务必确认无误否则会误删其他磁盘数据。然后使用命令sudo dd if./ubuntu-16.04.7-server-amd64.iso of/dev/sdb bs4M statusprogress sync。if是输入文件of是输出设备bs是块大小statusprogress显示进度sync确保数据完全写入。2.3 虚拟机环境准备如果在VMware Workstation、VirtualBox或KVM上安装则无需制作U盘。创建新虚拟机配置至少1核CPU、2GB内存1GB勉强可运行但2GB更顺畅、20GB硬盘空间采用动态分配以节省初始空间。关键设置网络选择“桥接模式”或“NAT模式”。桥接模式虚拟机会获得一个与宿主机同网段的独立IP更像一台真实机器NAT模式通过宿主机上网方便但外部网络无法直接访问虚拟机。初次安装NAT更简单。镜像挂载在虚拟机的光驱设置中直接指向你下载的ISO文件。固件类型如果虚拟机支持注意选择“BIOS”还是“UEFI”。Ubuntu 16.04对两者都支持但若物理机是传统BIOS虚拟机也选BIOS能避免兼容性问题。3. 核心安装流程详解从启动到首次登录将制作好的U盘插入服务器并设置从U盘启动或者在虚拟机中启动。你将进入一个蓝灰色的文本界面这就是Ubuntu Server的安装程序。3.1 初始引导与语言选择启动后首先看到的是语言选择菜单。虽然你可以选择中文但我强烈建议选择“English”。原因在于Server版后续几乎所有操作都在命令行下进行而命令行环境对中文的支持尤其是终端字体、locale设置在安装阶段配置不当容易引发乱码增加不必要的复杂度。选择英文能确保所有系统消息、日志和提示都是最标准、最易于搜索排查的格式。用方向键选择“English”按回车。接下来是安装程序主菜单。对于大多数情况直接选择“Install Ubuntu Server”并回车。其他选项如“安装安全更新”和“安装第三方软件”可以留到系统安装后再处理保持安装过程纯净。3.2 地区、时区与键盘布局选择地区选择“United States”或其他英语国家即可这主要影响默认的软件源地址和初始locale。之后可以单独配置时区。配置键盘这是第一个小坑点。安装程序会检测你的键盘通常直接选择“No”然后从列表中选择“English (US)”并在下一个画面选择“English (US)”对应的默认布局。不要选择“Chinese”相关的键盘布局除非你的键盘物理键位就是中文的。错误的选择会导致后续输入字符错乱比如按“/”键却打出“-”。3.3 网络配置与主机名网络自动配置安装程序会自动通过DHCP获取IP地址。如果网络中有DHCP服务器家庭路由器或企业网络通常都有你会看到它自动配置好了IP、网关和DNS。确保这里显示“network autoconfiguration succeeded”。如果失败你需要手动配置这涉及到IP、子网掩码、网关和DNS的手动输入请提前向网络管理员索要这些信息。设置主机名给你的服务器起个名字比如ubuntu-16-server。遵循简单、易记、不含特殊字符的原则。域名部分如.local可以先留空或填写一个虚拟域名。3.4 用户与密码设置安全基石这是至关重要的一步直接关系到服务器的初始安全。设置全名可以填写你的名字或管理员名称如System Admin。这只是一个显示名。设置用户名这是你登录系统时使用的账号名例如admin或deploy。避免使用root、ubuntu新版云镜像的默认用户等常见名称。设置密码为上述用户名设置一个强密码。在Server版中密码强度要求较高太简单的密码会被拒绝。建议包含大小写字母、数字和符号。加密主目录通常会问你是否加密用户的主目录/home/username。对于服务器一般选择“No”。加密虽然能增加数据安全性但会引入性能开销并且在数据恢复、系统迁移时非常麻烦。服务器的安全应更多依靠防火墙、强密码、密钥登录和文件系统权限来保障。3.5 磁盘分区经典而关键的步骤Ubuntu 16.04 Server安装程序提供了几种分区方案。对于新手和大多数应用场景我推荐使用“Guided - use entire disk”并选择“Set up LVM”。为什么选择LVMLVM逻辑卷管理是一种强大的磁盘管理抽象层。它允许你在安装后动态调整分区大小在线扩容创建快照以及更灵活地管理存储空间。对于服务器即使初期觉得用不上启用LVM也是一个对未来非常有利的低成本选择。分区方案确认选择LVM后安装程序会展示它为你创建的分区方案。通常包括/boot引导分区约500MB存放内核和引导文件。LVM Volume Group剩余所有空间被创建为一个LVM卷组VG。在VG内部会创建一个逻辑卷LV挂载到根目录/占用绝大部分空间。另一个逻辑卷用于交换空间swap大小通常等于或略大于你的物理内存RAM。例如2GB内存的服务器swap可以设为2GB或4GB。写入磁盘仔细确认分区方案后选择“Yes”将更改写入磁盘。此操作会清空目标磁盘上的所有数据。安装程序会开始格式化分区并安装基础系统。实操心得如果你对分区有特殊需求例如需要单独的/var或/home分区可以选择“Manual”手动分区。但对于首次安装或通用用途上述LVM方案是最稳妥、最推荐的选择。手动分区时务必确保有一个/boot分区非LVM和一个/分区以及swap空间。3.6 系统配置代理、镜像源与软件选择HTTP代理如果你的网络环境需要通过代理服务器访问外网在这里填写例如http://proxy.yourcompany.com:8080。否则直接留空回车继续。配置包管理器apt镜像源这是影响安装速度和后续更新体验的关键步骤。安装程序会尝试选择一个最快的镜像。由于16.04已停止主流支持很多官方镜像站可能同步不全或速度慢。我建议在这里直接选择“Enter information manually”。主镜像地址输入http://archive.ubuntu.com/ubuntu这是Ubuntu的全球主归档站对于老版本它的完整性通常最好。虽然速度可能不是最快但能保证包依赖关系完全正确。安装完成后可以再更换为国内的镜像源如阿里云、清华大学的old-releases源以加速日常更新。自动更新选择“No automatic updates”。对于服务器自动更新存在不可控风险。我们应该建立自己的更新策略先在测试环境验证再在生产环境手动执行。软件选择这是一个多选列表。对于最小化安装的服务器我建议只勾选“OpenSSH server”。为什么必须装OpenSSH server安装它之后你才能通过网络使用SSH客户端远程登录和管理这台服务器无需再连接显示器和键盘。这是服务器管理的生命线。其他如“DNS server”、“LAMP server”等都可以在系统安装完毕后用apt-get install命令按需安装这样更清晰、更可控。3.7 安装GRUB引导与完成安装GRUB安装程序会问你是否将GRUB引导程序安装到主引导记录MBR。必须选择“Yes”。这是系统能够启动的关键。选择安装设备通常选择你安装系统的那个硬盘如/dev/sda。完成安装安装程序进行最后配置然后提示安装完成。选择“Continue”系统将重启。在重启过程中虚拟机需要手动弹出或断开ISO镜像的连接否则又会从安装盘启动。物理服务器则需在重启时拔掉U盘或进入BIOS调整启动顺序。4. 首次启动与基础安全加固系统重启后你将看到文本模式的登录提示符。4.1 首次登录与网络检查登录输入安装时设置的用户名和密码。注意密码输入时不会有任何显示星号都没有这是Linux终端的正常安全行为输入完毕直接回车。检查网络登录后第一件事检查网络是否通畅。输入ip addr show或ifconfig如果已安装net-tools包查看IP地址。输入ping -c 4 8.8.8.8测试外网连通性。如果通说明网络基本正常。输入hostname -I可以快速列出所有IPv4地址。4.2 立即执行系统更新虽然我们跳过了安装时的自动更新但安装后的第一次手动更新至关重要它能打上系统发布后到最终版本16.04.7之间的所有安全补丁和错误修复。更新软件源列表sudo apt update。这条命令不会更新任何软件只是从配置的镜像源目前还是主归档站拉取最新的软件包列表信息。升级已安装的包sudo apt upgrade。这条命令会安装所有可用的更新。过程中会提示确认按回车或输入‘Y’继续。处理内核更新可选但推荐如果upgrade包含了Linux内核的更新系统会安装新内核但老内核仍会保留。为了应用新内核需要重启sudo reboot。踩坑实录在极少数情况下从非常老的镜像安装后直接upgrade大量包可能会遇到依赖冲突。如果发生可以尝试先执行sudo apt update sudo apt dist-upgrade。dist-upgrade比upgrade更“智能”会处理因依赖关系变化而需要安装或删除的包。对于16.04这种稳定版本通常是安全的。4.3 更换APT软件源为国内镜像为了获得飞快的下载速度将软件源更换为国内镜像站是必做操作。由于16.04已进入old-releases我们需要使用对应的归档源。备份原源列表sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup编辑源列表使用文本编辑器如nanosudo nano /etc/apt/sources.list注释或替换所有内容将文件里所有以deb http://或deb-src http://开头的行行首加上#注释掉。或者直接清空文件。添加国内镜像源在文件中添加以下内容以阿里云旧发布源为例速度非常稳定deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse注意每行末尾的xenial是Ubuntu 16.04的代号。main,restricted,universe,multiverse是不同的软件仓库类别全部启用以获得最全的软件支持。保存并退出在nano中按CtrlX然后按Y确认再按回车保存。更新缓存再次运行sudo apt update这次应该能从阿里云镜像快速拉取列表了。4.4 配置SSH密钥登录并禁用密码登录关键安全步骤仅使用密码登录SSH是极不安全的容易遭受暴力破解。配置密钥对登录并禁用密码登录是生产服务器的标准操作。在本地机器生成密钥对如果你用的是Windows可以使用Git Bash或WSLssh-keygen -t rsa -b 4096 -C your_emailexample.com一路回车使用默认路径~/.ssh/id_rsa和空密码或设置一个强密码保护私钥。完成后会在~/.ssh/目录下生成id_rsa私钥和id_rsa.pub公钥。将公钥上传到Ubuntu服务器ssh-copy-id your_usernameyour_server_ip如果ssh-copy-id命令不可用可以手动操作将本地id_rsa.pub文件的内容追加到服务器上对应用户的~/.ssh/authorized_keys文件末尾。测试密钥登录ssh your_usernameyour_server_ip。如果配置正确你应该无需输入密码即可登录。禁用SSH密码登录在确认密钥登录成功后登录服务器编辑SSH配置文件sudo nano /etc/ssh/sshd_config找到以下行并进行修改#PasswordAuthentication yes改为PasswordAuthentication no确保公钥认证是开启的PubkeyAuthentication yes保存退出并重启SSH服务sudo systemctl restart ssh或sudo service ssh restart16.04两者皆可。警告在执行第4步前务必在另一个终端窗口测试密钥登录是否成功。一旦禁用密码登录而密钥又未配置好你将永久失去SSH访问权限4.5 配置防火墙UFWUbuntu 16.04默认没有启用防火墙。使用UFWUncomplicated Firewall可以轻松管理。安装并启用sudo apt install ufw设置默认策略sudo ufw default deny incoming默认拒绝所有入站连接sudo ufw default allow outgoing默认允许所有出站连接放行SSH端口sudo ufw allow ssh或sudo ufw allow 22/tcp启用UFWsudo ufw enable。系统会提示此操作可能会断开现有SSH连接如果你正在通过非22端口连接。因为我们刚刚放行了22端口所以通常安全。查看状态sudo ufw status verbose5. 安装后的必备优化与工具集一个干净的服务器系统安装完成后还需要一些工具来方便日常管理。5.1 安装常用基础工具运行以下命令安装一套“瑞士军刀”工具集sudo apt install -y \ vim \ # 强大的文本编辑器比默认的vi好用 htop \ # 交互式进程查看器比top更直观 net-tools \ # 包含ifconfig, netstat等传统网络工具 curl \ # 命令行HTTP客户端用途广泛 wget \ # 命令行下载工具 git \ # 版本控制工具 tmux \ # 终端复用器允许在单个窗口管理多个会话 tree \ # 以树状图列出目录内容 unzip \ # 解压ZIP文件 software-properties-common # 用于管理PPA仓库5.2 配置时区如果安装时选择的时区不对可以重新配置sudo dpkg-reconfigure tzdata跟随图形化文本界面选择你的地理区域和城市即可。5.3 优化命令行体验可选但推荐为当前用户配置别名编辑~/.bashrc文件在末尾添加一些实用别名。nano ~/.bashrc添加如下内容alias llls -alF alias lals -A alias lls -CF alias aptupsudo apt update sudo apt upgrade alias ..cd .. alias ...cd ../..保存后运行source ~/.bashrc使配置立即生效。启用SSH长连接在本地电脑的~/.ssh/config文件没有则创建中为你的服务器添加配置可以避免连接超时和加速重复连接。Host myserver HostName your_server_ip User your_username ServerAliveInterval 60 ServerAliveCountMax 5 ControlMaster auto ControlPath ~/.ssh/%r%h:%p ControlPersist 4h之后就可以用ssh myserver快速连接了。6. 故障排查安装过程中可能遇到的“坑”即使按照教程操作由于硬件差异或网络环境你也可能遇到问题。这里汇总几个常见问题及解决思路。6.1 安装过程中“无法挂载光盘”或“找不到安装介质”现象在安装初期提示无法继续找不到安装文件。原因多见于虚拟机环境或U盘制作不完整。解决对于虚拟机检查ISO镜像是否已正确挂载到虚拟光驱并确保虚拟机启动顺序是光驱优先。对于U盘安装重新用Rufus或dd命令制作启动盘尝试使用不同的USB端口特别是USB 2.0端口兼容性更好。在服务器BIOS中尝试关闭“安全启动”Secure Boot功能Ubuntu 16.04对某些UEFI安全启动支持可能不完美。6.2 安装后无法启动卡在GRUB或黑屏现象重启后看不到系统登录提示停留在GRUB命令行grub或黑屏。原因通常是引导程序GRUB安装位置错误或配置损坏。解决如果是虚拟机确认在安装最后一步重启前已从虚拟光驱中弹出ISO镜像。使用安装U盘再次启动选择“试用Ubuntu”或“Rescue a broken system”模式。进入试用环境后打开终端挂载原系统的根分区假设在/dev/sda1到/mntsudo mount /dev/sda1 /mnt。重新安装GRUB到磁盘sudo grub-install --boot-directory/mnt/boot /dev/sda注意是/dev/sda磁盘不是分区sda1。更新GRUB配置sudo chroot /mnt update-grub。重启。6.3 网络连接失败无法apt update现象系统安装后执行sudo apt update失败提示无法连接或解析镜像站。原因DNS配置问题或防火墙非UFW可能是iptables遗留规则或网络设备防火墙阻断了连接。解决检查DNScat /etc/resolv.conf看里面是否有nameserver配置如8.8.8.8或114.114.114.114。如果没有编辑/etc/resolv.conf手动添加一行nameserver 8.8.8.8。但注意这个文件可能被网络管理服务覆盖。更持久的方法是编辑/etc/systemd/resolved.conf或/etc/network/interfaces16.04使用Netplan之前多用此文件。测试网络连通性ping 8.8.8.8通但ping baidu.com不通就是DNS问题。ping 8.8.8.8也不通则是网络路由或防火墙问题。检查防火墙规则sudo iptables -L -n查看是否有过于严格的规则。如果是虚拟机NAT模式检查宿主机的防火墙是否放行了虚拟机的出站流量。6.4 SSH连接超时或被拒绝现象在本地使用ssh命令连接服务器IP长时间无响应或直接拒绝。原因服务器SSH服务未启动sudo service ssh status查看。防火墙UFW或iptables未放行22端口。服务器IP地址变更或网络路由问题。客户端与服务器之间存在网络设备如路由器、云服务商安全组阻断了22端口。解决在服务器本地终端确保SSH服务运行sudo service ssh start并sudo ufw allow ssh。如果是云服务器如AWS, Azure, 阿里云必须登录云控制台在“安全组”或“防火墙规则”中添加入站规则允许TCP 22端口来自你的IP地址。使用ip addr show再次确认服务器的IP地址是否正确。安装一个“过时”的系统本身就是一个充满细节和注意事项的过程。这篇教程的目的就是把这些细节摊开把每个选择背后的理由讲清楚让你不仅能成功装上Ubuntu 16.04 Server更能理解每一步在做什么遇到问题时知道从哪里着手排查。记住对于这类长期维护的系统稳定性和可预测性往往比追逐新特性更重要。打好这个基础无论是部署老应用还是搭建一个稳定的学习环境它都能成为你可靠的起点。