Ubuntu Server初始化操作,安全性和加固
我们以Ubuntu Server 24.04为例,介绍Ubuntu Server的初始化操作,包括安装、配置和安全加固。
Ubuntu Server 24.04是一个基于Debian的服务器操作系统,适用于需要稳定运行的服务器环境。Ubuntu的产品体系主要包括:
- Ubuntu Desktop:提供桌面环境的Ubuntu版本,适用于个人用户和桌面应用。
- Ubuntu Server:服务器版本,适用于需要在服务器上运行应用的企业用户。
- Ubuntu Core:适用于物联网和边缘计算设备,提供轻量级的操作系统。
如果你没有机会使用Server版本,也可以使用Ubuntu Desktop版本,它提供了与Server版本相似的功能和工具。
Ubuntu Server安装过程
Ubuntu Server 24.04的安装步骤:
- 下载Ubuntu Server 24.04镜像文件
- 创建可引导的USB安装介质
- 从USB启动服务器
- 选择语言和键盘布局
- 配置网络连接(安装过程中可选择自动获取IP)
- 配置存储设备
- 设置用户账户和密码
- 选择安装OpenSSH Server(关键步骤,确保远程访问)
- 完成安装并重启
Ubuntu Server初始化过程
Ubuntu Server 24.04安装完成后,需要进行一些初始化操作,以确保服务器的安全性和功能正常运行。以下是一些常见的初始化步骤:
1. 验证SSH服务是否运行
安装完成后,你可以通过以下方式验证SSH服务是否正在运行:
1 | |
2. 安装网络工具检查端口状态
Ubuntu
Server默认不安装netstat命令,需要手动安装net-tools包:
1 | |
3. 配置静态IP地址
为服务器配置静态IP地址,确保网络连接稳定:
1 | |
文件内容通常类似于:
1 | |
修改为静态IP配置:
1 | |
应用配置更改:
1 | |
4. 其他常用初始化步骤
完成基本配置后,还可以进行以下初始化操作:
1 | |
通过以上步骤,我们已经完成了Ubuntu Server 24.04的安装和基本初始化配置,包括验证SSH服务、安装网络工具、配置静态IP地址等。
安全加固Ubuntu Server
认识防火墙ufw
Ubuntu默认使用的是iptables作为防火墙,但是iptables配置较为复杂,容易出错。为了简化防火墙配置,Ubuntu提供了ufw(Uncomplicated
Firewall)工具,它提供了简单易用的命令行界面来管理防火墙规则。
查看已开放端口列表
要查看UFW当前已开放的端口和服务:
1 | |
输出示例: 1
2
3
4
5
6
7
8
9
10
11
12Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
32000:32999/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
32000:32999/tcp (v6) ALLOW Anywhere (v6)
添加端口规则
1. 开放单个端口
1 | |
2. 开放端口范围
1 | |
3. 从特定IP地址开放端口
1 | |
删除端口规则
删除规则有两种方式:通过端口号或通过规则编号。
1. 通过端口号删除
1 | |
2. 通过规则编号删除
先查看带编号的规则列表: 1
sudo ufw status numbered
输出示例: 1
2
3
4
5
6
7
8Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 32000:32999/tcp ALLOW IN Anywhere
然后根据编号删除规则: 1
2# 删除编号为4的规则
sudo ufw delete 4
端口转发配置
要配置端口转发,需要先启用IP转发并创建相应规则:
1. 启用IP转发
编辑 /etc/sysctl.conf 文件: 1
sudo nano /etc/sysctl.conf
取消以下行的注释(删除前面的 #): 1
net.ipv4.ip_forward=1
保存文件后应用更改: 1
sudo sysctl -p
2. 配置端口转发规则
1 | |
丢弃特定端口请求
要丢弃来自端口25的所有请求(通常用于SMTP服务): 1
2
3
4
5# 丢弃所有TCP端口25的流量
sudo ufw deny 25/tcp
# 或者,如果想完全阻止,使用reject(会向客户端发送拒绝消息)
sudo ufw reject 25/tcp
保存和恢复规则
1 | |
查看规则文件
UFW规则存储在以下位置: 1
2
3
4
5# 主要规则文件
cat /etc/ufw/user.rules
# IPv6规则
cat /etc/ufw/user6.rules
重置UFW(谨慎使用)
这将删除所有规则并重置UFW: 1
sudo ufw reset
认识OpenSSH Server
OpenSSH Server是一个开源的SSH服务器实现,用于提供安全的远程登录和文件传输功能。它是Linux和Unix系统中最常用的SSH服务器之一。
在Ubuntu上,OpenSSH Server通常已经默认安装。可以通过以下命令检查是否已安装:
1 | |
与防火墙相关的命令:
1 | |
配置相关的指令:
1 | |
修改SSH的默认端口
默认情况下,SSH服务使用的是22端口,这往往是黑客攻击的目标和对象,是暴力破解的主要入口。为了提高安全性,我们可以将SSH服务的默认端口修改为其他端口,如2233。
修改SSH的默认端口为2233,需要进行以下步骤:
- 编辑SSH配置文件:
1
sudo nano /etc/ssh/sshd_config
- 找到并修改
Port参数,将其值改为2233:
1
Port 2233
- 保存文件并退出编辑器。
跟普通的端口不同,还需要以下操作:
1 | |
这个时候不要急于重启服务器,因为刚才设置的防火墙中你还没有打开新的SSH端口:
1 | |
这项配置好之后重启服务器即可,这样就可以通过2233端口来访问SSH服务了。
添加新用户
假设您要创建用户 developer:
1 | |
启用root用户
在Ubuntu Server中启用root用户,可按以下步骤进行: 1.
使用sudo命令切换到root用户:sudo su。 2.
更改root用户的密码:passwd root,按照提示输入新密码并确认。
3.
编辑/etc/ssh/sshd_config文件,找到PermitRootLogin prohibit - password这一行,将其修改为PermitRootLogin yes。
4.
重启ssh服务:sudo service ssh restart或sudo systemctl restart ssh。
完成以上步骤后,就可以使用root用户登录Ubuntu Server了。不过,root用户拥有最高权限,使用时需格外谨慎,以免因误操作导致系统出现问题。
Ubuntu Server的应用功能
安装Docker和compose(阿里云)
如果是本地安装Docker,一般都是在安装操作系统的过程中选择安装的。
在云服务器上,我们以阿里云为例,可以参考文档: https://help.aliyun.com/zh/ecs/use-cases/install-and-use-docker
主要的操作命令如下:
1 | |
以上过程安装了Docker和Docker compose,你可以使用以下命令来验证:
1 | |
在阿里云服务器上可以使用阿里云的Docker镜像加速服务,
需要设置的文件:/etc/docker/daemon.json 内容为: 1
2
3
4
5{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"],
"debug": true,
"experimental": false
}1
2
3{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"],
}
如果加速镜像没有生效,在pull镜像的时候,还是会走默认的Docker 官方(registry-1.docker.io), 需要在控制台开启相关服务: https://cr.console.aliyun.com/
更新镜像源文件后,重启服务使镜像源生效:
1 | |
在Docker基础上组网和部署服务的过程我们在后续文章中介绍。
安装AMP:Apache、MySQL和PHP
如果你希望通过Docker解决PHP和MySQL的问题,那么你可以考虑使用Docker Compose来管理它们。我们这里讨论的是在Ubuntu Server上直接安装AMP(Apache、MySQL和PHP)的方法。
- 安装Apache:
1 | |
对应的配置文件在: /etc/apache2/apache2.conf。
配置多个网站和扩展配置的文件在目录:
/etc/apache2/sites-available。
网站目录文件在: /var/www/html。
- 安装MySQL:
1 | |
对应的配置文件在: /etc/mysql/mysql.conf.d/mysqld.cnf。
在配置文件中,你可以设置MySQL的数据文件目录、日志文件目录、端口号等,不然不做特殊设置,他们的默认值分别是:
(1)数据文件目录: /var/lib/mysql。 (2)日志文件目录:
/var/log/mysql。 (3)端口号: 3306。
- 安装PHP:
1 | |
对应的配置文件在: /etc/php/8.2/apache2/php.ini。
- 管理Apache和MySQL:
1 | |
- 安装Nginx:
1 | |
对应的配置文件在: /etc/nginx/nginx.conf。