对应 Linux 面试题 50 道 第 26–33 题。
初始化安全加固
新机器上线建议 checklist:
| 步骤 | 说明 |
|---|---|
| 1 | 创建普通用户,禁止 root 远程 SSH 登录,修改 SSH 端口 |
| 2 | 使用密钥登录,禁用密码登录 |
| 3 | 开启防火墙(firewalld/iptables),按业务设规则;SELinux 按需求配置 |
| 4 | 安装 fail2ban 防 SSH 暴力破解 |
| 5 | 限制仅公司出口 IP 或 VPN 可访问 |
| 6 | 限制 history 条数(如 10 条) |
| 7 | 仅必要服务器开放外网访问 |
| 8 | Web 层:nginx_waf 防注入;应用以 www 用户运行,目录属主改为 www |
# 示例:禁止 root SSH 登录sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_configsystemctl restart sshdCC 攻击与 DDOS 攻击
- CC 攻击(Challenge Collapsar):模拟大量用户频繁访问页面,消耗 CPU/内存/连接数
- DDOS 攻击(Distributed Denial of Service):多台机器联合发起大量请求,占满带宽或服务资源
防御手段:
- 硬件/云防火墙流量清洗,攻击流量引入黑洞
- 向 ISP/云厂商购买 DDoS 防护服务
- 应用层:限流、验证码、CDN 分散流量
CC/DDOS 通常无法仅靠单机软件完全防御,需要基础设施层配合。
SQL 注入
原理:程序员拼接 SQL 时未校验用户输入,攻击者提交恶意 SQL 获取未授权数据。
特点:从正常 Web 端口访问,表面与普通请求无异;若管理员不查日志,可能长期未被发现。
防护:
- 预编译 + 参数绑定(MyBatis
#{}、JDBC PreparedStatement) - 输入校验与过滤
- 最小权限数据库账户
- WAF(如 nginx_waf)做额外过滤
- 定期审计日志
→ Java 侧详见 MySQL 面试题 中 SQL 注入相关题目。
版本选择与主机规划
版本选择(2020 年代常见实践):
- 互联网公司服务器:CentOS 7/8 或迁移至 Rocky Linux / AlmaLinux
- 桌面开发:Ubuntu
- 高安全场景:Debian
主机规划步骤:
- 明确用途(Web、DB、缓存、消息队列),决定 CPU/内存/磁盘/带宽
- 确定分区方案(
/boot、/、/var、swap等) - 优化内核参数、创建业务用户、配置监控与备份
网站访问慢:排查与解决
可能原因
| 原因 | 排查方式 |
|---|---|
| 出口带宽不足 | 云监控看带宽使用率;跨运营商测试 |
| 服务器负载高 | uptime、top 看 CPU/内存;sar -n DEV 看网卡 |
| 数据库瓶颈 | 慢查询日志;SHOW PROCESSLIST |
| 代码未优化 | 浏览器 Network 面板;APM 工具 |
排查流程
用户反馈慢 ↓自己访问测试 → 快:用户端问题(网络/浏览器) → 慢:继续排查 ↓浏览器 DevTools → 定位慢资源(图片/API/JS) ↓服务器监控 → CPU/内存/磁盘/带宽 ↓应用日志 + MySQL 慢查询 ↓针对性优化常见解决方案
- 加大出口带宽
- SQL 优化 + 索引
- 加 Redis 缓存
- MySQL 主从读写分离
- 上 CDN
- 架构拆分:Web / API / DB / 缓存 专机部署
# 快速排查命令组合uptime # 系统负载top -bn1 | head -20 # CPU/内存 TOP 进程free -h # 内存df -h # 磁盘ss -s # 连接统计tail -100 /var/log/nginx/access.log # Web 访问日志性能调优方向
- 关闭不必要的 daemons:
systemctl disable xxx - 服务器关闭 GUI:
systemctl set-default multi-user.target - 内核参数:
/etc/sysctl.conf(如net.core.somaxconn、vm.swappiness) - 处理器:CPU 亲和性、进程优先级
- 内存:调整 Swap 策略,避免过度换页
- 文件系统:选择合适的 FS(ext4/xfs),调整挂载参数
- 网络:TCP 参数调优(连接数、缓冲区大小)
调优原则:先定位瓶颈再优化,避免盲目改参数。用监控数据(Prometheus、云监控)验证效果。