知用网
白蓝主题五 · 清爽阅读
首页  > 网络安全

网络服务配置安全性提升的实用方法

别让默认设置成为漏洞入口

很多人在搭建网站或部署内部系统时,习惯性地使用软件的默认配置。比如安装完 Apache 或 Nginx,没改端口、没关列目录、连默认欢迎页都留着。这就像买了把新锁,钥匙却插在门外——攻击者扫到这类服务,基本不用费力就能找到突破口。

一个常见的例子是数据库服务暴露在公网。有人装完 Redis,没设密码,也没绑定本地地址,直接监听 0.0.0.0:6379。结果没几天,数据就被清空,留下一行“Pay Bitcoin to XXX”。这种事每年都在大量发生,根源就是配置太“裸”。

最小权限原则要落到实处

给服务账户赋予过高权限,是另一个高频问题。比如用 root 跑 Web 服务,一旦被攻破,整个服务器就归别人了。正确的做法是创建专用用户,比如 www-data,并限制其只能访问必要的目录。

以 Nginx 为例,配置文件里加上这一行:

user www-data;

再配合文件权限设置:

chown -R www-data:www-data /var/www/html
find /var/www/html -type d -exec chmod 750 {} \;
find /var/www/html -type f -exec chmod 640 {} \;

这样即使 Webshell 被上传,也很难读取其他用户的文件。

关闭不必要的功能和服务

很多服务自带一些辅助功能,比如 PHP 的 expose_php = On,会让服务器在响应头里暴露 PHP 版本。攻击者一看版本老旧,马上就能匹配已知漏洞。

在 php.ini 中关闭它:

expose_php = Off

同样,Apache 的 ServerTokens 和 ServerSignature 也别留着:

ServerTokens Prod
ServerSignature Off

这样返回的 HTTP 头里只会显示“Apache”,不会带版本号,增加信息搜集难度。

加密通信不是选修课

现在连登录后台都该走 HTTPS,更别说涉及用户数据的服务。Let's Encrypt 提供免费证书,配合 Certbot 几分钟就能配好。Nginx 配置示例:

server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
}

顺便把 HTTP 自动跳转 HTTPS,避免明文传输。

日志和监控不能流于形式

开了日志但不看,等于没开。定期检查 access.log 和 error.log,能发现异常请求模式。比如突然出现大量 /wp-admin 页面的 404 请求,可能是有人在暴力猜管理员路径。

可以加一条简单的监控脚本:

tail -f /var/log/nginx/access.log | grep -E '(wp-login|xmlrpc|phpmyadmin)'

一旦发现可疑行为,结合防火墙临时封 IP,能有效延缓攻击节奏。

自动化工具帮你查漏补缺

手动检查容易遗漏,可以用 OpenSCAP、Lynis 这类工具做一次全面扫描。比如 Lynis 执行:

lynis audit system

它会提示“建议禁用 ICMP 重定向”、“SSH 应禁用 root 登录”等具体改进项。每一条都不难改,积少成多,安全水位就上去了。