服务器被暴力SSH爆破,如何防护与封禁IP

前言

公网服务器的22端口每天都会被机器人字典爆破,日志里满是 Failed password。口令弱就容易被撞库拿到root。本篇从"先排查→临时封禁→加固配置→自动防护"给出一套可落地的做法。

一、先确认是不是被爆破

# 统计失败次数最多的IP
lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head
# 或看secure日志里的失败记录
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -rn | head

出现大量同一IP的失败尝试,就是爆破。

二、手动封禁恶意IP(应急)

firewalld 临时/永久拉黑:

# 临时封禁
firewall-cmd --add-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'
# 永久封禁
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'
firewall-cmd --reload
# 查看已加规则
firewall-cmd --list-rich-rules
# 解除封禁
firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address=1.2.3.4 reject'

也可用 iptables -A INPUT -s 1.2.3.4 -j DROP。

三、加固sshd配置(根本)

编辑 /etc/ssh/sshd_config:

# 修改默认端口,别再用22
Port 2222
# 禁止root直接密码登录
PermitRootLogin no
# 禁用空密码
PermitEmptyPasswords no
# 建议改用密钥登录后关闭密码
PasswordAuthentication no
# 最大尝试次数
MaxAuthTries 3
# 10分钟无活动断开
ClientAliveInterval 600

改完 systemctl restart sshd,先保留当前会话再重启,防止把自己锁外面;新端口记得在防火墙放行。

四、自动防爆:fail2ban

自动统计失败次数并封IP,最省事:

yum install -y fail2ban fail2ban-firewalld

新建 /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 600
bantime = 86400

启动并自启:

systemctl enable --now fail2ban
# 查看封禁名单
fail2ban-client status sshd

五、常见坑

  1. 改端口只改sshd忘了防火墙放行:自己也连不上,务必先 firewall-cmd --permanent --add-port=2222/tcp;
  2. 关密码登录前没配好密钥:直接被锁门外;
  3. 只封一次IP:机器人换段继续扫,要用fail2ban自动封;
  4. 云安全组没限制:在安全组只放行你常用IP访问SSH端口,比本机防护更前置;
  5. 弱密码root:PermitRootLogin no + 密钥才是正解,改端口只是提高门槛。

总结

应急用firewalld拉黑,长期靠改端口、禁root密码、上密钥,再用fail2ban自动封高频失败IP,云安全组白名单兜底。层层叠加,爆破就很难成功。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-20 07:29 

Linux防火墙配置

Linux防火墙配置

引言

云服务器安全不能只靠系统防火墙,开通端口是上线必经步骤。CentOS 7以上默认使用firewalld,很多新手忘了放行端口,导致网站、SSH、数据库从外部连不上。

firewalld常用命令

#查看防火墙状态
firewall-cmd --state

#查看已放行端口
firewall-cmd --list-ports

#永久放行80、443端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

#重新加载生效
firewall-cmd --reload

#移除某个端口
firewall-cmd --permanent --remove-port=3306/tcp

区域概念

firewalld分public、internal等zone,默认public。--permanent写入永久规则,不加只对当前会话生效,重启失效。改完必须reload。

常用放行场景

  • Web服务:80、443;
  • SSH远程:22(建议改非默认端口再放行);
  • 不要对公网开放3306、6379、27017等数据库端口;
  • 只允许指定IP访问管理端口更安全:
    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=1.2.3.4 port port=22 protocol=tcp accept'

注意事项

  • 云服务器除了系统防火墙,还要在云厂商控制台安全组同步放行;
  • 改SSH端口前先确认新端口放行,避免把自己挡在门外;
  • 防火墙规则最小化,只开放必要端口。

总结

firewalld核心:查看列表、永久加端口、reload生效。记住系统防火墙和云安全组两层都要放行,数据库端口绝不暴露公网,管理端口限制来源IP。


emer 发布于  2026-10-18 07:22 

MySQL远程连接失败,权限和防火墙问题

前言

本地能连MySQL,远程连接就报错。常见原因:用户没授权、防火墙没开、MySQL只监听本地。

报错长什么样

ERROR 2003 (HY000): Can't connect to MySQL server on 'xxx.xxx.xxx.xxx'

或者:

ERROR 1130 (HY000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server

原因一:用户没授权远程登录

排查

SELECT user, host FROM mysql.user;

看root用户的host是 localhost 还是 %。

如果是 localhost,就只能本地登录。

解决

授权远程登录:

-- 方法1:授权root所有IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码';

-- 方法2:只允许某个IP
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' IDENTIFIED BY '你的密码';

-- 刷新
FLUSH PRIVILEGES;

原因二:防火墙没开3306端口

排查

在本地服务器上测试:

netstat -tlnp | grep 3306

看MySQL监听的是 127.0.0.1:3306 还是 0.0.0.0:3306。

如果是 127.0.0.1:3306,说明只监听本地。

解决防火墙

CentOS7 firewalld

# 开3306端口
firewall-cmd --permanent --add-port=3306/tcp

# 重载
firewall-cmd --reload

Ubuntu ufw

ufw allow 3306/tcp

原因三:MySQL只监听本地

排查

netstat -tlnp | grep 3306

如果显示 127.0.0.1:3306,就是只监听本地。

解决

改my.cnf:

[mysqld]
bind-address = 0.0.0.0

注释掉 skip-networking(如果有的话)。

重启MySQL:

systemctl restart mysqld

原因四:云服务器安全组

阿里云、腾讯云等云服务器,除了系统防火墙,还有安全组。

解决

在云服务器控制台,找到安全组,放行3306端口。

原因五:MySQL版本问题

MySQL 8.0默认用 caching_sha2_password,老客户端不支持。

解决

创建用户时指定老的加密方式:

CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
FLUSH PRIVILEGES;

排查步骤

第一步:本地能连吗

先在服务器上本地连一下:

mysql -u root -p

本地能连,说明MySQL本身没问题。

第二步:看MySQL监听地址

netstat -tlnp | grep 3306

第三步:防火墙开了吗

firewall-cmd --list-ports

看3306在不在。

第四步:远程telnet测试

在本地电脑上测试:

telnet 服务器IP 3306

如果连不上,就是网络/防火墙问题。

常见坑

坑1:改了授权忘了刷新

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';

改完就退出,结果还是连不上。

解决: 执行 FLUSH PRIVILEGES;

坑2:bind-address没改

授权了,防火墙也开了,还是连不上。

原因: MySQL只监听本地。

解决: 改 bind-address = 0.0.0.0

坑3:安全组没开

系统防火墙开了,云服务器安全组没开。

解决: 去云控制台放行3306端口。

坑4:密码不对

报错不是"连接不上",而是"Access denied"。

原因: 密码错了。

解决: 确认密码,注意大小写。

总结

远程连接失败排查顺序:

  1. 先授权远程用户
  2. 再开防火墙3306
  3. 然后改bind-address
  4. 最后查云安全组

记住: 90%的情况都是没授权或者防火墙没开。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-8 07:45 

Linux 防火墙配置详解

Linux 防火墙配置详解

服务器安全第一步就是防火墙,学会配置很重要。

1. firewalld(CentOS 7+)

查看状态:

systemctl status firewalld

开启/关闭:

# 开启
systemctl start firewalld

# 关闭
systemctl stop firewalld

# 开机自启
systemctl enable firewalld

2. 开放端口

开放单个端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

开放多个端口:

firewall-cmd --zone=public --add-port=80-90/tcp --permanent

重新加载生效:

firewall-cmd --reload

3. 查看端口

# 查看所有开放端口
firewall-cmd --list-ports

# 查看某个端口是否开放
firewall-cmd --query-port=80/tcp

4. 关闭端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --reload

5. iptables(旧版)

查看规则:

iptables -L -n

开放端口:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

保存规则:

service iptables save

6. 常用端口

# 常用端口
22      SSH
80      HTTP
443     HTTPS
3306    MySQL
6379    Redis
8080    Tomcat

7. 常见问题

1)端口开了还是访问不了:

  • 检查云服务商安全组
  • 检查服务器内部防火墙

2)远程连接不上:

  • 检查 22 端口是否开放
  • 检查 sshd 是否启动

总结

Linux 防火墙要点:

  • firewalld 管理端口
  • --permanent 永久生效
  • --reload 重新加载
  • 记得开放安全组
  • 常用端口按需开放

做运维,防火墙是基本功。


emer 发布于  2026-10-8 07:22 

Linux 防火墙配置详解

Linux 防火墙配置详解

服务器安全第一关就是防火墙,配置错了就远程连不上了,这篇讲常用配置。

1. firewalld(CentOS7 默认)

查看状态:

# 查看防火墙状态
firewall-cmd --state

# 查看开放的端口
firewall-cmd --list-ports

# 查看开放的服务
firewall-cmd --list-services

开放端口:

# 开放 80 端口
firewall-cmd --permanent --add-port=80/tcp

# 开放 443 端口
firewall-cmd --permanent --add-port=443/tcp

# 开放多个端口范围
firewall-cmd --permanent --add-port=8000-9000/tcp

# 重载生效
firewall-cmd --reload

关闭端口:

# 关闭 80 端口
firewall-cmd --permanent --remove-port=80/tcp

# 重载
firewall-cmd --reload

开放服务:

# 开放 nginx 服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

# 重载
firewall-cmd --reload

2. iptables(老系统常用)

查看规则:

iptables -L -n

开放端口:

# 开放 22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 开放 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 保存规则
service iptables save

3. 常用安全配置

只允许指定 IP 访问 SSH:

# 只允许 192.168.1.100 访问 22 端口
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='22' accept"

# 拒绝其他所有 IP
firewall-cmd --permanent --remove-service=ssh

firewall-cmd --reload

4. 常用端口说明

端口 服务
22 SSH 远程连接
80 HTTP 网站
443 HTTPS 网站
3306 MySQL 数据库
6379 Redis 缓存
8080 应用服务

5. 常见问题

1)SSH 连不上了:

  • 检查防火墙是不是把 22 端口关了
  • 用控制台登录服务器重新开放

2)网站打不开:

  • 检查 80/443 端口开了没
  • 重载防火墙生效

3)数据库连不上:

  • 3306 端口别对公网开放
  • 只允许本地或指定 IP 访问

总结

防火墙配置记住三点:

  • 先开 22 端口,不然自己都连不上
  • 网站开 80 和 443
  • 数据库别对外网开放

安全第一,别图省事直接关防火墙。


emer 发布于  2026-10-7 07:16 

CentOS7 关闭防火墙,永久关闭firewalld

前言

刚装好的 CentOS7 默认开了防火墙,很多端口都访问不了。有时候为了省事想直接关掉防火墙,本文讲一下怎么操作,以及临时关和永久关的区别。

查看防火墙状态

先看看防火墙现在是开还是关:

systemctl status firewalld

输出里有 active (running) 就是开着,inactive (dead) 就是关了。

或者用:

firewall-cmd --state

输出 running 就是开着,not running 就是关了。

临时关闭防火墙

只关掉当前运行状态,重启后又会自动开起来:

systemctl stop firewalld

永久关闭防火墙

永久关闭,重启后也不会再开:

systemctl stop firewalld
systemctl disable firewalld

两条命令一起执行,先停掉当前的,再禁止开机自启。

重新开启防火墙

如果以后又想开起来:

systemctl start firewalld
systemctl enable firewalld

验证是否关闭成功

执行完之后再看一下状态:

systemctl status firewalld

应该显示 inactive (dead)。

常见坑

坑1:只 stop 了但没 disable

执行了 systemctl stop firewalld,但重启后防火墙又自己开起来了。

原因: 只停了当前运行,没关开机自启。

解决: 还要执行 systemctl disable firewalld。

坑2:关了防火墙但还是访问不了

防火墙关了,但外部还是访问不了网站。

原因: 除了系统防火墙,云服务商还有一层安全组。

解决: 去云服务商控制台(阿里云、腾讯云、华为云等)的安全组里,把对应的端口也开放了。

坑3:Ubuntu 用的不是 firewalld

在 Ubuntu 上执行 firewalld 命令报错。

原因: Ubuntu 默认用 ufw 防火墙,不是 firewalld。

解决: Ubuntu 关防火墙用:

ufw stop
ufw disable

坑4:关闭防火墙不安全

直接关了防火墙,服务器暴露在公网上很危险。

建议: 生产环境不要直接关防火墙,而是只开放需要的端口。比如只开 80、443、22 端口,其他都关。

总结

操作 命令
查看防火墙状态 systemctl status firewalld
临时关闭 systemctl stop firewalld
永久关闭 systemctl stop firewalld && systemctl disable firewalld
开启防火墙 systemctl start firewalld
开机自启 systemctl enable firewalld

注意: 生产环境建议不要直接关防火墙,用开放指定端口的方式更安全。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 08:00 

CentOS7 防火墙开放端口范围,一次性开放多个端口

前言

有时候需要一次性开放很多端口,或者开放一段端口范围,一个个加太麻烦。CentOS7 的 firewalld 支持开放端口范围,也支持一次性开放多个端口,本文讲一下怎么操作。

查看当前开放的端口

先看看现在防火墙开了哪些端口:

firewall-cmd --list-ports

输出类似:

80/tcp 443/tcp 8080/tcp

开放单个端口

永久开放

firewall-cmd --permanent --add-port=80/tcp

然后重载生效:

firewall-cmd --reload

开放 UDP 端口

把 tcp 改成 udp 就行:

firewall-cmd --permanent --add-port=53/udp
firewall-cmd --reload

一次性开放多个端口

方法一:一条命令加多个

firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp --add-port=8080/tcp
firewall-cmd --reload

多个 --add-port 用空格分开就行。

方法二:开放端口范围

如果要开放一段连续的端口,比如 8000 到 9000:

firewall-cmd --permanent --add-port=8000-9000/tcp
firewall-cmd --reload

这样 8000 到 9000 之间所有 TCP 端口都开放了。

方法三:同时开放 TCP 和 UDP

firewall-cmd --permanent --add-port=53/tcp --add-port=53/udp
firewall-cmd --reload

移除端口

移除单个端口

firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload

移除端口范围

firewall-cmd --permanent --remove-port=8000-9000/tcp
firewall-cmd --reload

常见场景

场景1:开放 20 到 80 之间的所有端口

firewall-cmd --permanent --add-port=20-80/tcp
firewall-cmd --reload

场景2:同时开放 HTTP 和 HTTPS 服务

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

场景3:只允许某个 IP 访问某个端口

这个更安全,只允许 192.168.1.100 访问 3306 端口:

firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port='3306' accept"
firewall-cmd --reload

常见坑

坑1:加了端口没生效

执行了 add-port 但还是访问不了。

原因: 没加 --permanent,或者没 reload。

解决: 一定要加 --permanent 参数,然后执行 firewall-cmd --reload。

坑2:端口范围写反了

写成了 9000-8000,报错。

原因: 范围必须从小到大写。

正确写法: 8000-9000/tcp
错误写法: 9000-8000/tcp

坑3:防火墙没启动

执行 firewall-cmd 报错。

原因: firewalld 服务没启动。

解决:

systemctl start firewalld
systemctl enable firewalld

坑4:开了端口但还是访问不了

防火墙开了端口,但是外部还是访问不了。

原因: 除了防火墙,还有可能是云服务商的安全组没开。

解决: 去云服务商控制台(阿里云、腾讯云等)的安全组里,把对应的端口也开放了。

总结

操作 命令
开放单个端口 firewall-cmd --permanent --add-port=80/tcp
开放多个端口 firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp
开放端口范围 firewall-cmd --permanent --add-port=8000-9000/tcp
移除端口 firewall-cmd --permanent --remove-port=8080/tcp
查看已开放端口 firewall-cmd --list-ports
重载生效 firewall-cmd --reload

记住:加完端口一定要 --reload 才生效。

遇到问题加QQ23979811 协助处理


emer 发布于  2026-10-6 07:53 

CentOS7 firewalld开放80、443端口永久生效命令

CentOS 7 默认使用 firewalld 作为防火墙管理工具。很多新手搭建网站后发现外网访问不了,90% 都是因为 80、443 端口没开放。下面是完整的操作步骤,照抄就能用。

1. 先确认防火墙状态

systemctl status firewalld

如果显示 active (running) 说明防火墙正在运行,需要继续下面的操作。如果是 inactive 那就是防火墙没开,问题不在这里。

2. 开放 80 端口(HTTP)

firewall-cmd --zone=public --add-port=80/tcp --permanent

参数说明:

  • --zone=public:作用域为公共区域
  • --add-port=80/tcp:开放 80 端口,TCP 协议
  • --permanent:永久生效,不加这个重启服务器就失效了

3. 开放 443 端口(HTTPS)

firewall-cmd --zone=public --add-port=443/tcp --permanent

4. 一次性开放多个端口

如果需要同时开放多个端口,可以一条命令搞定:

firewall-cmd --zone=public --add-port=80/tcp --add-port=443/tcp --permanent

5. 重载防火墙使配置生效

⚠️ 重点:开放端口后必须重载,否则不生效!

firewall-cmd --reload

6. 查看已开放的端口

确认一下端口有没有真正开放成功:

firewall-cmd --list-ports

正常会输出类似:

80/tcp 443/tcp

7. 常用其他端口开放命令

SSH 端口(默认22,建议改成别的):

firewall-cmd --zone=public --add-port=22/tcp --permanent

MySQL 端口(如果需要远程连接数据库):

firewall-cmd --zone=public --add-port=3306/tcp --permanent

Redis 端口:

firewall-cmd --zone=public --add-port=6379/tcp --permanent

8. 移除/关闭已开放的端口

如果某个端口不需要了,想关掉:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload

常见坑

  1. 加了 --permanent 还是不生效?
    忘记 firewall-cmd --reload 了。永久配置写入后必须重载才会加载到运行时。

  2. 端口开放了还是访问不了?
    检查云服务商的安全组(阿里云/腾讯云/华为云都有这个东西),防火墙和安全组是两层,都要开。

  3. firewalld 命令找不到?
    CentOS 7 最小化安装可能没装,执行 yum install firewalld -y 安装。

  4. 临时开放端口(重启就失效)
    去掉 --permanent 参数就是临时开放,重启或 reload 后自动关闭。


遇到服务器、Nginx、MySQL 报错,可以加微信远程协助排查问题。


emer 发布于  2026-10-4 19:22 

Linux 防火墙配置技巧

Linux 防火墙配置技巧

服务器安全第一步就是配好防火墙,只开需要的端口,其他全关。

1. firewalld(CentOS 7+ 默认)

# 查看状态
firewall-cmd --state

# 查看已开放端口
firewall-cmd --list-ports

# 开放端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp

# 开放多个端口
firewall-cmd --permanent --add-port=8000-9000/tcp

# 开放指定 IP 访问
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port protocol='tcp' port=3306 accept"

# 重载配置(必须重载才生效)
firewall-cmd --reload

# 删除端口
firewall-cmd --permanent --remove-port=8080/tcp

2. ufw(Ubuntu 默认)

# 查看状态
ufw status

# 开启防火墙
ufw enable

# 允许 SSH
ufw allow 22

# 允许 80 和 443
ufw allow 80
ufw allow 443

# 允许指定 IP
ufw allow from 192.168.1.100 to any port 3306

# 拒绝某个 IP
ufw deny from 1.2.3.4

# 删除规则
ufw delete allow 8080

3. iptables(经典)

# 查看规则
iptables -L -n

# 允许 22 端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许 80 端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 默认拒绝其他
iptables -P INPUT DROP

# 保存规则(CentOS)
service iptables save

4. 安全建议

  • 只开必要端口:SSH、HTTP、HTTPS,其他全关
  • SSH 改端口:不要用默认 22,改成其他端口
  • 限制 SSH 登录 IP:只允许你的 IP 登录 SSH
  • 数据库不对外暴露:MySQL、Redis 只允许本地访问
  • 定期查看日志:/var/log/secure 看有没有暴力破解

5. 常用端口速查

  • 22:SSH
  • 80:HTTP
  • 443:HTTPS
  • 3306:MySQL
  • 6379:Redis
  • 8080:应用端口

总结

Linux 防火墙核心:

  • CentOS 用 firewalld
  • Ubuntu 用 ufw
  • 只开必要端口
  • 数据库不对外暴露
  • SSH 限制 IP 访问

配好防火墙,服务器安全提升一大截。


emer 发布于  2026-10-4 10:52 

Linux 服务器安全加固:10个必须做的基础配置

前言

刚装完的 Linux 服务器就像没锁门的房子,任何人都能进来。本文整理了 10 个最基础但最重要的安全加固配置,帮你把门锁上。

1. 修改 SSH 端口,禁止 root 登录

默认 22 端口是黑客扫描的首选目标,改个端口能挡掉 90% 的自动扫描。

# 编辑 sshd 配置
vi /etc/ssh/sshd_config

# 修改端口
Port 22222

# 禁止 root 登录
PermitRootLogin no

# 重启 sshd
systemctl restart sshd

注意:改完端口后,记得在防火墙和安全组里放行新端口,否则你自己也进不去了。

2. 使用 SSH 密钥登录,禁用密码登录

密码再复杂也扛不住暴力破解,密钥登录才是正道。

# 本地生成密钥对(在你自己的电脑上执行)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 把公钥传到服务器
ssh-copy-id -p 22222 user@your_server_ip

# 服务器上禁用密码登录
vi /etc/ssh/sshd_config
PasswordAuthentication no

3. 配置防火墙,只开必要端口

# 只开 SSH、HTTP、HTTPS
ufw default deny incoming
ufw default allow outgoing
ufw allow 22222/tcp   # SSH
ufw allow 80/tcp      # HTTP
ufw allow 443/tcp     # HTTPS
ufw enable

4. 自动安全更新

# Ubuntu/Debian
apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades

# CentOS/RHEL
dnf install dnf-automatic
systemctl enable --now dnf-automatic.timer

5. 创建普通用户,配置 sudo

永远不要用 root 跑日常操作,创建一个普通用户,需要时用 sudo 提权。

# 创建用户
adduser deploy

# 加入 sudo 组
usermod -aG sudo deploy

6. 禁用不必要的服务

# 查看正在运行的服务
systemctl list-unit-files --type=service --state=enabled

# 禁用不需要的服务
systemctl disable --now avahi-daemon
systemctl disable --now cups

7. 配置 fail2ban 防暴力破解

apt install fail2ban

# 配置 sshd 防护
vi /etc/fail2ban/jail.local

[sshd]
enabled = true
port = 22222
maxretry = 3
bantime = 3600

systemctl restart fail2ban

8. 设置密码策略

# 编辑 pwquality 配置
vi /etc/security/pwquality.conf

minlen = 12          # 最小长度
dcredit = -1         # 至少1个数字
ucredit = -1         # 至少1个大写字母
lcredit = -1         # 至少1个小写字母
ocredit = -1         # 至少1个特殊字符

9. 监控日志,定期检查

# 查看登录失败记录
grep "Failed password" /var/log/auth.log

# 查看当前登录用户
w

# 查看最近登录记录
last -n 20

10. 定期备份,备份再备份

安全加固做得再好,也不如有一份能快速恢复的备份。

# 简单的文件备份脚本
tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/

把备份文件同步到异地存储,别只放在同一台服务器上。

总结

这 10 条配置不需要高深的技术,但每一条都能实实在在地降低服务器被攻破的风险。建议新服务器装好后,第一件事就是把这 10 条全部过一遍。

安全不是一次性的工作,而是一个持续的过程。定期更新系统、监控日志、检查异常,才能真正把服务器守好。


emer 发布于  2026-10-4 09:53 
'); })();