精品软件与实用教程
如何配置Ubuntu服务器,新手安全入门配置教程
网络安全非常重要,特别是新手安装好操作系统后,不做任何安全设置,等于给黑客敞开了大门。
Ubuntu仅仅依赖于操作系统的默认设置并不足以保证服务器的安全。本文将介绍如何在Ubuntu 22.04上进行安全配置,以提高服务器的安全性。
更新系统
系统安装好后的第一步就是要更新系统,使系统中的软件都是最新的。
sudo apt update && sudo apt upgrade -y
安装最新的安全补丁
sudo apt autoremove -y
定期更新和补丁管理,定期更新Ubuntu系统和所有安装的软件包,确保及时获取安全补丁。
这几条信息通常出现在系统更新或安全检查的报告中,表示系统的状态良好,具体含义如下:
- No containers need to be restarted:当前没有需要重启的容器,说明所有容器正在运行最新的代码或配置。
- No user sessions are running outdated binaries:没有用户会话运行过期的二进制文件,确保了用户正在使用最新的程序,避免安全漏洞。
- No VM guests are running outdated hypervisor (qemu) binaries on this host:没有虚拟机客户机使用过期的QEMU(虚拟机管理程序)二进制文件,确保了虚拟化环境的安全性。
总体来说,这表明系统中的容器、用户会话和虚拟机都已更新,无需重启或进一步操作,是一种“状态正常”的提示。
安装中文语言包
可以通过图形界面或命令行安装中文语言包。
通过命令行:
更新包列表并安装语言包:
sudo apt update
sudo apt install language-pack-zh-hans
安装完成后,设置系统的语言环境:
sudo update-locale LANG=zh_CN.UTF-8
重启或注销系统以应用新的语言设置。
调整时区
可以通过命令行或图形界面更改时区。
设置时区,例如,将时区设置为中国标准时间(Asia/Shanghai):
sudo timedatectl set-timezone Asia/Shanghai
设置Swap文件(可选)
如果系统内存较小,创建Swap文件可以提升系统性能:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
安装基本工具包
安装一些常用的工具包和开发工具。
sudo apt install -y build-essential curl wget git vim unzip htop
安装网络工具,一些网络调试和管理工具。
sudo apt install -y net-tools dnsutils traceroute telnet
安装 Python 及其工具,Python 是常用的脚本语言,很多应用依赖于它。
sudo apt install -y python3 python3-pip python3-venv
安装 Node.js 和 npm,Node.js 是服务器端的 JavaScript 运行环境,npm 是其包管理器。
sudo apt install -y nodejs npm
安装 Snap 并安装更多应用,Snap 是 Ubuntu 的软件包管理器,可以用来安装许多应用:
sudo apt install -y snapd
安装开发相关工具,Java安装 OpenJDK(如 OpenJDK 11 或 17):
sudo apt install -y openjdk-17-jdk
C/C++ 开发,除 build-essential 外,安装一些常见的库和工具:
sudo apt install -y cmake gdb
安装图像处理工具,安装一些常见的图像处理和转换工具。
sudo apt install -y imagemagick ffmpeg
安装文本处理工具,安装一些常用的文本处理工具。
sudo apt install -y jq silversearcher-ag tree
可以使用以下命令清理不再需要的安装包和依赖:
sudo apt autoremove -y
sudo apt autoclean
根据不同需求,选择安装。完成这些后,系统将具备常见的开发和运维环境所需的工具。
SSH安全配置
为了增强Linux服务器SSH访问的安全性,可以通过配置/etc/ssh/sshd_config文件来限制登录尝试的次数、间隔时间,以及控制允许或拒绝的用户。下面是具体的操作步骤:
设置登录尝试次数和失败间隔时间
编辑/etc/ssh/sshd_config文件:
sudo vi /etc/ssh/sshd_config
配置 MaxAuthTries
MaxAuthTries:该参数用于设置最大认证尝试次数,超出后将断开连接。
默认值通常为6,可以将其设置为3或更少,以增加安全性。
MaxAuthTries 3
使用DenyUsers和AllowUsers指令限制用户访问
配置 DenyUsers 指令
DenyUsers:用于指定禁止通过SSH登录的用户列表。
格式:DenyUsers 用户名1 用户名2
例如,禁止用户testuser和guest通过SSH登录:
DenyUsers testuser guest
配置 AllowUsers 指令
AllowUsers:用于指定允许通过SSH登录的用户列表(只允许这些用户登录)。
格式:AllowUsers 用户名1 用户名2
例如,允许仅adminuser通过SSH登录:
AllowUsers adminuser
注意:AllowUsers与DenyUsers不可混用。若使用AllowUsers,则只有在列表中的用户才允许登录,其他用户即便未在DenyUsers中也无法登录。
完成后保存并关闭文件,然后重启SSH服务:
sudo systemctl restart sshd
使用Fail2Ban等工具
安装Fail2Ban
通过监控登录日志自动封禁多次尝试失败的IP地址,进一步提高安全性。使用Fail2Ban自动封禁IP。
Fail2Ban是一个非常有效的工具,可以监控SSH的失败登录尝试并自动封禁多次失败的IP地址。安装并配置Fail2Ban可提供类似的延迟效果:
sudo apt install fail2ban
配置Fail2Ban
编辑/etc/fail2ban/jail.local文件
注意:jail.local如果不存在,可以复制jail.conf内容来创建 jail.local:
sudo vi /etc/fail2ban/jail.local
在文件末尾添加以下内容来设置SSH监控:
[sshd] enabled = true port = ssh maxretry = 3 bantime = 6000 findtime = 60
maxretry:设置在findtime (秒) 内允许的最大失败次数。
bantime:设置封禁时间(秒),可以根据需求增加。
启动Fail2Ban
保存配置文件后,重启Fail2Ban服务:
sudo systemctl restart fail2ban
配置完/etc/ssh/sshd_config后,通过设置MaxAuthTries、DenyUsers、AllowUsers参数和安装Fail2Ban,可以有效限制SSH登录的尝试次数和允许的用户,从而减少暴力破解的风险。
不使用root用户进行ssh登录
为了提高安全性,建议避免直接使用root用户登录服务器,而是通过创建一个具有sudo权限的普通用户来执行管理员任务。以下是设置和配置过程:
创建新用户
使用以下命令创建一个新用户,并为其赋予sudo权限:
sudo adduser 新用户名
sudo usermod -aG sudo 新用户名
运行命令后,确保新用户名已被添加到sudo组:
groups 新用户名
如果命令返回的组列表中包含sudo,说明添加成功。
重新登录:用户的组信息在会话开始时加载,因此需要退出并重新登录才能应用更改。
在某些系统中,sudo组可能并未启用,或/etc/sudoers文件配置不正确。
使用以下命令检查sudoers文件配置:
sudo visudo
确保文件中包含以下行:
%sudo ALL=(ALL:ALL) ALL
在文件末尾添加以下一行:
新用户名 ALL=(ALL) ALL
这样可以确保新用户名具有sudo权限。
禁止root用户的SSH登录
通过禁用root用户的SSH访问,可以进一步增强服务器的安全性。编辑SSH配置文件/etc/ssh/sshd_config:
sudo vi /etc/ssh/sshd_config
找到以下行:
#PermitRootLogin prohibit-password
修改为:
PermitRootLogin no
保存并关闭文件,然后重启SSH服务以使更改生效:
sudo systemctl restart sshd
修改root密码
在root登录后使用passwd命令将root的密码修改的复杂一些。
使用密钥进行ssh登录
使用SSH密钥对进行登录是一种安全且便捷的方式,能有效防止暴力破解攻击。以下是如何生成密钥对、上传公钥以及配置SSH服务器以禁用密码登录的详细步骤:
生成SSH密钥对
在你的本地计算机上,打开终端并执行以下命令:
ssh-keygen -t rsa -b 4096
这会生成一对RSA密钥(公钥和私钥)。
系统会提示你输入文件名和密码:
文件名:你可以按回车使用默认的文件名(通常是~/.ssh/id_rsa)。
密码:可以选择设置一个密码以增强安全性,或者留空。
生成后,密钥对将保存在以下路径:
私钥:~/.ssh/id_rsa
公钥:~/.ssh/id_rsa.pub
手动登录到服务器,打开(或创建)~/.ssh/authorized_keys文件,将公钥~/.ssh/id_rsa.pub粘贴进去:
vi ~/.ssh/authorized_keys
权限设置
确保 ~/.ssh 目录和 authorized_keys 文件的权限设置正确:
.ssh 目录应设置为 700:
chmod 700 /root/.ssh
authorized_keys 文件应设置为 600:
chmod 600 /root/.ssh/authorized_keys
配置SSH服务器
打开SSH配置文件:
sudo nano /etc/ssh/sshd_config
确保以下配置项设置为:
PubkeyAuthentication yes
PasswordAuthentication no
使配置更改生效,重启SSH服务:
sudo systemctl restart sshd
查看内存使用情况
内存使用情况也是服务器安全的一个重要指标。我们可以使用free、top或htop等命令来查看当前服务器的内存使用情况,确保没有恶意进程占用过多的内存资源。
安装防火墙
病毒防火墙
在Ubuntu上,可以使用一些流行的病毒防护软件来保护系统。
ClamAV 是一个开源的病毒扫描工具,广泛用于Linux系统。
安装ClamAV:
sudo apt install clamav clamtk
更新病毒数据库:
sudo freshclam
进行全系统扫描:
sudo clamscan -r /
自动扫描(可以设置Cron作业定期扫描),可以编辑Cron任务以定期运行ClamAV扫描。
系统防火墙
UFW(Uncomplicated Firewall)是Ubuntu上常用的防火墙工具,它简单易用,适合新手和经验丰富的用户。
安装UFW:
sudo apt install ufw
启用UFW:
sudo ufw enable
允许SSH访问(确保在启用防火墙之前可以远程访问):
sudo ufw allow ssh
允许其他端口访问(如HTTP和HTTPS):
sudo ufw allow 80/tcp # 允许HTTP
sudo ufw allow 443/tcp # 允许HTTPS
查看UFW状态:
sudo ufw status verbose
禁用UFW:
sudo ufw disable
总结
在现代网络环境中,确保Ubuntu服务器的安全至关重要。首先,定期更新系统和软件包以获取最新的安全补丁是防止潜在漏洞的基本措施。同时,建议使用SSH密钥登录并禁用密码认证,以提高远程访问的安全性。配置UFW防火墙可以有效限制对不必要服务的访问。此外,定期安装和更新病毒防护软件(如ClamAV)及监控系统日志有助于及时发现和应对安全威胁。通过这些综合措施,Ubuntu用户可以有效保护系统免受攻击,确保数据安全与稳定。