ubantuserver安装后防火墙及其安全配置
ubantuserver安装及防火墙安全配置及相关
安装-
- 默认到网络选择DHCP自动(Windows电脑组网测试)>选择安装磁盘>除efi外手动设置/根目录系统分区Lvm,swap交换空间大小,/mnt/data挂载磁盘>创建账户密码与服务器名称>勾选安装ssh服务>...>--END SSH HOST KEY KEYS-->账户登录
分区参考
MOUNT POINT 推荐大小 文件系统 说明
/boot/efi 512 MB fat32 EFI 系统分区
/boot 1-2 GB ext4 内核和启动文件
/ 20-50 GB ext4 系统文件
/var 10-20 GB ext4 日志和可变数据
/home 剩余空间 ext4 用户数据
swap 2-8 GB swap 交换空间(根据内存大小调整)
- sudo -i 切换root
如需单独设置root密码↓
- sudo passwd root(设置root密码)
- su(切换root)
- su 用户名(切换用户)
- sudo apt update(更新软件包索引)
- sudo apt upgrade(更新软件包及升级软件源)
- ip -a (显示IP地址)
- 服务器连接windows DHCP自动分配的ip在Windows查看方法(cmd:arp -a)192.168.137.x
- windows ssh 远程登录 cmd:ssh 用户名@ip地址
- sudo poweroff 关机
- sudo reboot 重启
防火墙设置
1.启用ssh
sudo ufw allow ssh
# 默认 22
# sudo ufw allow 22/tcp
2.启用防火墙
sudo ufw enable
y确认
3.查看防火墙状态
sudo ufw status
增强SSH安全性 1
1.禁用root用户登录
#编辑ssh配置文件
sudo nano /etc/ssh/sshd_config
#将下行配置改为no
PermitRootLogin no
#写入保存退出
2.更改SSH默认端口
#继续编辑ssh配置文件
sudo nano /etc/ssh/sshd_config
#将端口配置改为其他大于1024的值 如2222,先保留旧端口 新端口生效后删除
port 22
port 2222
#写入保存退出
#更改新端口后先跟新防火墙规则
sudo ufw allow 2222/tcp
#重启服务 生效修改
sudo systemctl restart sshd
保持旧端口的ssh连接端口开启,确认新端口ssh成功连接后再关闭
成功连接后sudo ufw delete allow 22删除防火墙旧规则及ssh配置文件旧端口port 22
3.保持系统和软件包的最新状态
sudo apt update
sudo apt upgrade -y
安全性 2 Fail2ban安装与配置
- Fail2ban 是一款入侵防御软件框架,它通过扫描日志文件(如 SSH、Web 服务器日志等)并识别出重复的、失败的登录尝试,来自动封禁那些恶意 IP 地址。这能有效地抵御暴力破解(Brute-force)攻击。
1.安装
sudo apt update
sudo apt install fail2ban -y
2.配置
Fail2ban 的默认配置文件是 /etc/fail2ban/jail.conf,不直接修改它软件更新时可能会覆盖更改>创建一个本地配置文件 /etc/fail2ban/jail.local 来覆盖默认设置
#创建本地配置文件
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
#编辑jail.local文件
sudo nano /etc/fail2ban/jail.local
[DEFAULT]部分修改核心参数
| 参数 | 参考值 | 描述 |
|---|---|---|
bantime | 1h | IP 地址被禁止的时长 |
findtime | 10m | Fail2ban 在此时间窗口内检查是否有恶意登录尝试 |
maxretry | 5 | 在findtime期间内允许的最大失败尝试次数 超过此次数即会被封禁 |
ignoreip | 127.0.0.1/8 | 忽略的ip地址列表 使用DHCP且ip不固定此项可以暂时保留默认 |
启用SSH保护
在[sshd]部分确保其设置为enabled = true,# 如果修改了SSH端口 (例如改成了2222),必须在这里指定新端口port = 2222
最后写入保存退出
3.启动并检查服务
重启Fail2ban服务以应用新配置
sudo systemctl restart fail2ban
检查 Fail2ban 的运行状态和 SSH 保护的状态
sudo systemctl status fail2ban
# 应该显示 Active: active (running)
# 检查 sshd 保护(jail)的状态
sudo fail2ban-client status sshd
#会显示当前被封禁的 IP 列表 (Ban list)
- ssh服务状态查看
sudo systemctl status ssh - 防火墙服务状态
sudo ufw status verbose - 启动ssh服务
sudo systemctl start ssh - 设置ssh服务开机自启
sudo systemctl enable ssh
安全性 3 SSH密钥对登录
1.在客户端电脑上生成ssh密钥对
Windows的Git Bash/PowerShell/WSL端口输入
ssh-keygen -t rsa -b 4096
系统会提示您输入以下信息:
- Enter file in which to save the key: (/Users/youruser/.ssh/id_rsa): 直接按 回车 使用默认路径
- Enter passphrase (empty for no passphrase): 输入一个强密码 这个密码会加密私钥 即使私钥被盗,没有这个密码,攻击者也无法使用它。
- Enter same passphrase again: 重复输入密码
完成后默认目录下(通常是 ~/.ssh/)会生成两个文件:
- 私钥: id_rsa
- 公钥: id_rsa.pub (这是可以分享并上传到服务器的)
2.将公钥复制到ubantuserver服务器
继续在端口输入
ssh-copy-id 您的用户名@服务器分配到的ip地址
如果修改了端口2222则输入
ssh-copy-id -p 2222 您的用户名@服务器分配到的ip地址
yes确认
...
安全性 4 禁用密码登录
1.编辑ssh配置文件
sudo nano /etc/ssh/sshd_config- 禁用密码登录只允许密钥登录
PasswordAuthentication no - 禁用root用户直接通过密码登录
PermitRootLogin no - 写入保存退出
2.重启ssh服务使配置生效
sudo systemctl restart ssh
3.相关问题-如22端口仍然可登录
- 检查是否有配置文件被覆盖
在某些Ubuntu安装中ssh配置可能会在
/etc/ssh/sshd_config.d/目录下被其他文件覆盖输入ls /etc/ssh/sshd_config.d/ - 如果此目录下有其他配置文件(例如 50-cloud-init.conf),请检查这些文件的内容 如果有文件明确设置了
PasswordAuthentication yes该文件的优先级可能会高于主配置文件 - 解决方法是编辑覆盖文件,或将
PasswordAuthentication no写入所有相关文件 编辑修改冲突配置sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf然后重启ssh服务sudo systemctl restart ssh
时区设置与维护
1.时区
系统时钟、时区和 NTP(网络时间协议)同步管理命令查看
timedatectl
将时区设置在国内上海
sudo timedatectl set-timezone Asia/Shanghai
再次运行timedatectl查看是否生效
2.配置自动安全更新
为了确保系统能自动安装最新的安全补丁以防御已知漏洞需要安装和配置unattended-upgrades
安装自动更新包
sudo apt install unattended-upgrades -y
启用并配置自动更新使用以下命令开启自动更新的配置界面
sudo dpkg-reconfigure unattended-upgrades
系统会询问"Automatically download and install stable updates?"选择 Yes
这个服务通常会自动启动确保它处于开启状态
sudo systemctl enable unattended-upgrades.service
sudo systemctl start unattended-upgrades.service
Fail2ban日志
日志文件在/var/log/fail2ban.log
1.实时查看
sudo tail -f /var/log/fail2ban.log
显示类似这样的记录:
- 封禁记录 (Ban):
... fail2ban.actions: WARNING [sshd] Ban 1.2.3.4 - 解封记录 (Unban):
... fail2ban.actions: WARNING [sshd] Unban 1.2.3.4
2.查看已封禁的 IP 列表
sudo fail2ban-client status sshd
输出示例:
Status for jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 50
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 2
|- Total banned: 10
`- Ban list: 1.2.3.4, 5.6.7.8
