Linux端口扫描是攻击前侦察行为,防御核心是降低暴露面、隐藏服务、限制探测:关闭冗余端口与服务,数据库绑定127.0.0.1;用防火墙限IP、限频、防SYN Flood;修改SSH端口、禁用Banner、隐藏管理界面;主动自扫并用fail2ban监控异常。

Linux端口扫描本身不直接攻击系统,但它是攻击前的侦察行为。防御的关键不是“堵住扫描”,而是让扫描结果失去价值——即减少暴露面、隐藏真实服务、限制异常探测行为。
只开必需端口,关掉一切冗余服务
开放端口越多,攻击面越大。很多漏洞源于无人维护的旧服务(如telnet、ftp、rpcbind)。
- 用 ss -tuln 或 netstat -tulnp 查看当前监听端口,逐个确认每个端口是否真的需要对外提供服务
- MySQL、PostgreSQL 等数据库默认绑定 0.0.0.0,应改为仅监听 127.0.0.1(回环地址),避免公网可连
- 停用不用的服务:systemctl stop rpcbind && systemctl disable rpcbind;类似处理 telnet、rsh、xinetd 等老旧服务
- 检查 /etc/services 文件中是否有自定义端口被误启用,或通过 systemd socket 激活的服务(如 ssh.socket)是否必要
用防火墙控制访问来源和频率
即使开了端口,也不等于谁都能连、想连几次就几次。
- 对 SSH 等管理端口,限制 IP 白名单:iptables -A INPUT -p tcp --dport 22 -s 192.168.10.0/24 -j ACCEPT,再加一条 DROP 默认拒绝
- 防暴力探测:限制单 IP 在 60 秒内新建连接不超过 5 次(针对 SSH)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --name SSH -j DROP
- 防 SYN Flood:限制每秒新建 TCP 连接数
iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
混淆与隐藏:降低扫描有效性
让扫描工具看到的信息失真或无意义,能大幅增加攻击者成本。
- 修改 SSH 默认端口(如改到 2222),虽非银弹,但可过滤掉大量自动化脚本扫描
- 禁用服务横幅(Banner):SSH 配置中设 DebianBanner no,Nginx/Apache 关闭 server_tokens
- 避免在公网暴露管理界面(如 phpMyAdmin、Webmin、Redis CLI),必须暴露时套上反向代理 + 基础认证 + IP 限制
- UDP 服务更难监控,但 nmap -sU 扫描可能暴露 dhcpc、snmp、ipp 等,确认是否真需开启;如非必要,用 iptables 直接 DROP UDP 入向流量
主动监控异常扫描行为
光靠被动防护不够,要能感知谁在扫你。
- 定期执行 nmap -sS -p1-1000 localhost 自扫,验证自己暴露了什么
- 从外网(如手机热点、云服务器)扫描自己公网 IP,对比内外视角差异
- 用 fail2ban 监控 auth.log,自动封禁反复连接 SSH 失败的 IP
- 记录并分析 netstat/ss 输出中的 ESTABLISHED 连接,发现长期空闲却未断开的可疑会话
以上就是Linux端口扫描怎么防御_基础安全防护说明【教程】的详细内容,更多请关注php中文网其它相关文章!