零门槛快速配置网站基础安全防护 小白站长也能轻松上手落地
时间:2026年06月07日 08:49:56
来源:易频IT社区
一、修改服务器默认SSH端口
核心目标
阻止脚本批量扫描22端口的暴力破解攻击,这是最容易被忽略的入门级防护
实操步骤
1. 打开SSH配置文件
```bash
sudo vi /etc/ssh/sshd_config
```
2. 找到并修改默认端口
按下`i`键进入编辑模式,找到`Port 22`这一行,删除前面的``,将`22`改成10000-65535之间且未被占用的端口,比如`20241`
3. 验证端口占用情况
修改前最好先确认,避免后续连不上:
```bash
sudo netstat -tuln | grep 20241
```
如果没有任何输出,说明端口可用
4. 保存并退出配置文件
按下`Esc`键,输入`:wq`回车
5. 重启SSH服务
```bash
sudo systemctl restart sshd
```
6. 验证新端口生效
不要立即关闭当前终端窗口!另外开一个终端测试连接:
```bash
ssh 你的服务器用户名@你的服务器IP -p 20241
```
如果能正常登录,说明成功
二、禁用SSH密码登录,启用密钥登录
核心目标
彻底杜绝SSH暴力破解,比改端口更可靠
实操步骤
1. 在本地电脑生成SSH密钥对
- Windows用户(需先安装Git Bash或Windows Terminal的OpenSSH客户端,Windows 10 1809+自带):打开Git Bash或PowerShell,输入
```bash
ssh-keygen -t ed25519 -C "你的邮箱或备注"
```
连续按3次回车(不设置密钥密码可直接回车,如需更安全可设)
- Mac/Linux用户:直接打开终端输入上述命令
2. 查看并复制公钥内容
- Windows:公钥默认在`C:\Users\你的本地用户名\.ssh\id_ed25519.pub`,用记事本打开全选复制
- Mac/Linux:公钥默认在`~/.ssh/id_ed25519.pub`,用`cat`命令查看复制
```bash
cat ~/.ssh/id_ed25519.pub
```
3. 在服务器上配置公钥
- 回到原来的服务器终端,创建`.ssh`目录和`authorized_keys`文件
```bash
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
- 将刚才复制的公钥内容追加到`authorized_keys`文件末尾,这里推荐用`vi`避免编码问题
```bash
sudo vi ~/.ssh/authorized_keys
```
按下`i`键进入编辑模式,粘贴内容,按`Esc`+`:wq`回车
4. 测试密钥登录
开第三个终端窗口,直接输入(不需要-p以外的密码提示)
```bash
ssh 你的服务器用户名@你的服务器IP -p 20241
```
如果能直接登录,继续下一步
5. 禁用SSH密码登录
回到已登录的服务器终端,再次打开SSH配置文件
```bash
sudo vi /etc/ssh/sshd_config
```
按下`i`键,找到以下三行并修改:
```
PasswordAuthentication yes → 改成 PasswordAuthentication no
PubkeyAuthentication yes → 改成 PubkeyAuthentication yes(删除前面的)
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 → 确认有这一行且无注释(如果是AuthorizedKeysFile .ssh/authorized_keys也没问题)
```
按下`Esc`+`:wq`回车,重启SSH服务
```bash
sudo systemctl restart sshd
```
6. 再次验证密码登录被禁用
关闭所有终端,开一个新的,尝试用原来的方式加密码登录,应该会提示`Permission denied (publickey)`
三、配置Linux防火墙(ufw)
核心目标
只开放网站运行必须的端口,屏蔽其他所有不必要的端口访问
实操步骤
1. 检查并安装ufw
- Ubuntu/Debian系统默认已安装,检查版本:
```bash
sudo ufw version
```
如果提示未安装,输入:
```bash
sudo apt update && sudo apt install ufw -y
```
- CentOS/RHEL系统需替换为firewalld?不过ufw更简单小白友好,先安装epel-release,再安装ufw:
```bash
sudo yum install epel-release -y
sudo yum install ufw -y
```
2. 设置默认规则
```bash
sudo ufw default deny incoming 默认拒绝所有入站请求
sudo ufw default allow outgoing 默认允许所有出站请求
```
3. 开放必须的端口
- 刚才修改的SSH端口:20241(换成你自己的)
- HTTP端口:80
- HTTPS端口:443
```bash
sudo ufw allow 20241/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
```
如果你的服务器有其他必须的服务(比如FTP21,不过不推荐用FTP,用SFTP),可以按需添加
4. 启用ufw
```bash
sudo ufw enable
```
输入`y`回车
5. 查看当前规则
确认所有必须端口已开放:
```bash
sudo ufw status
```
四、配置Nginx/Apache隐藏版本号
核心目标
避免黑客通过版本号查找已知漏洞攻击
子模块1:Nginx配置
1. 打开Nginx主配置文件
```bash
sudo vi /etc/nginx/nginx.conf
```
2. 修改配置
按下`i`键,找到`http`块,在块内添加或修改:
```
server_tokens off;
```
3. 测试配置语法
```bash
sudo nginx -t
```
如果显示`syntax is ok`和`test is successful`,继续
4. 重载Nginx服务
```bash
sudo nginx -s reload
```
5. 验证隐藏是否成功
在本地浏览器按F12打开开发者工具→Network→访问你的网站→点击任意请求→查看Response Headers里的Server字段,应该只显示`nginx`,没有版本号
子模块2:Apache配置
1. 打开Apache主配置文件
- Ubuntu/Debian:`sudo vi /etc/apache2/apache2.conf`
- CentOS/RHEL:`sudo vi /etc/httpd/conf/httpd.conf`
2. 修改配置
按下`i`键,找到`ServerTokens`和`ServerSignature`两行(如果没有就添加),修改为:
```
ServerTokens Prod
ServerSignature Off
```
3. 测试配置语法
- Ubuntu/Debian:`sudo apache2ctl configtest`
- CentOS/RHEL:`sudo httpd -t`
如果显示`Syntax OK`,继续
4. 重载Apache服务
- Ubuntu/Debian:`sudo systemctl reload apache2`
- CentOS/RHEL:`sudo systemctl reload httpd`
5. 验证隐藏是否成功
同Nginx的验证方式
五、配置HTTPS免费证书(Let's Encrypt)
核心目标
加密网站传输数据,防止数据被窃取或篡改,同时提升浏览器信任度
实操步骤(以Nginx+Ubuntu为例,其他环境可稍作调整)
1. 安装Certbot和Nginx插件
```bash
sudo apt update && sudo apt install certbot python3-certbot-nginx -y
```
2. 申请并自动配置证书
```bash
sudo certbot --nginx -d 你的域名.com -d www.你的域名.com
```
按提示操作:
- 输入邮箱(用于接收证书过期提醒)
- 同意服务条款(输入`A`回车)
- 是否同意分享邮箱(可选,输入`N`回车)
- 是否强制重定向HTTP到HTTPS(输入`2`回车,推荐)
3. 验证自动续期
Let's Encrypt证书有效期90天,Certbot会自动配置续期任务,测试一下:
```bash
sudo certbot renew --dry-run
```
如果显示`Congratulations, all renewals succeeded.`,说明续期配置成功