打开/关闭搜索
搜索
打开/关闭菜单
54
710
72
2098
md5.pw
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
上传文件
打开/关闭外观设置菜单
通知
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
请求账号
查看“︁使用nftables预防被端口扫描”︁的源代码
来自md5.pw
分享此页面
更多语言
查看
阅读
查看源代码
查看历史
associated-pages
页面
讨论
更多操作
←
使用nftables预防被端口扫描
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
我想很多人有这样的困惑, 明明自己改了默认端口, 一看日志, 仍然还有陌生IP在对端口进行暴力破解, 即便是上了类似Fail2ban这种防护工具, 日志里陌生IP的记录也永远不会消停; 想上白名单, 但每次自己的IP变了之后, 还要再手动加进白名单里, 比较麻烦. 这时候, 我们就可以用 <code>nftables</code> 自动拉黑那些尝试扫描端口的陌生IP. ---- === 1. 准备 === 确保 nftables 已经安装<syntaxhighlight> nft --version </syntaxhighlight>若没有安装, 以Debian13为例<syntaxhighlight> apt update apt install nftables systemctl enable nftables </syntaxhighlight>拷贝原有的nftables配置, 到一个好找的目录里, 以 <code>/main/nftables</code> 为例, 再对原路径进行链接<syntaxhighlight>cp /etc/nftables.conf /main/nftables/ ln -f /main/nftables/nftables.conf /etc/nftables.conf</syntaxhighlight>并准备好编辑 <code>/main/nftables/nftables.conf</code> ---- === 2. 基础策略 === 如果你之前配置过nftables, 那就在原有基础上进行新增或合并 现在假设我不希望ssh端口被扫中, 默认的22端口肯定不得使用, 需要将ssh端口开放到一个'''没有任何协议所使用的的默认端口上''' (比如ssh开放到80端口) 一般的陌生IP暴力破解一个端口, 需要先进行网络嗅探, 陌生IP可以自行扫描获取端口协议, 也可以使用其他平台公示的端口, 端口扫描器肯定优先扫描一些协议的默认端口, 绝对不能使用这些 端口扫描器扫完常见协议的端口, 之后大部分只会按照端口顺序进行扫描, 但这样基本上是不可能扫中的, 只有随机顺序扫描才有可能扫中 === 3. 配置 === 这里以ssh开放在46端口为例 我们可以分成两种方式: * 设立陷阱端口, 只有尝试建立连接时才会封禁, 推荐设为一些协议的默认端口, 误封概率适中 <syntaxhighlight>table inet prevent_scanning { set tmp_blacklist_ipv4 { type ipv4_addr flags timeout # 封禁时间 timeout 30m } set tmp_blacklist_ipv6 { type ipv6_addr flags timeout timeout 20m } chain input { type filter hook input priority 0; policy drop; iif lo accept; ct state established,related accept; # 不希望被ping到可以注释掉 ip protocol icmp accept; ip6 nexthdr ipv6-icmp accept; ip saddr @tmp_blacklist_ipv4 drop; ip6 saddr @tmp_blacklist_ipv6 drop; # 放行后不会往后执行 tcp dport { 46 } ct state new accept; # 自行配置陷阱端口 tcp dport { 1-25, 3300-3500, 6379, 8080 } ct state new add @tmp_blacklist_ipv4 { ip saddr } drop; tcp dport { 1-25, 3300-3500, 6379, 8080 } ct state new add @tmp_blacklist_ipv6 { ip6 saddr } drop; udp dport { 50-70, 110-170, 514, 1194, 5353 } ct state new add @tmp_blacklist_ipv4 { ip saddr } drop; udp dport { 50-70, 110-170, 514, 1194, 5353 } ct state new add @tmp_blacklist_ipv6 { ip6 saddr } drop; } }</syntaxhighlight> * 任何端口没被放行后, 直接拉黑, 端口被扫中的概率最低, 但误封率较高 (比如不小心访问到80端口) <syntaxhighlight line="1" start="0">table inet prevent_scanning { set tmp_blacklist_ipv4 { type ipv4_addr flags timeout timeout 30m } set tmp_blacklist_ipv6 { type ipv6_addr flags timeout timeout 20m } chain input { type filter hook input priority 0; policy drop; iif lo accept; ct state established,related accept; # 不希望被ping到可以注释掉 ip protocol icmp accept; ip6 nexthdr ipv6-icmp accept; ip saddr @tmp_blacklist_ipv4 drop; ip6 saddr @tmp_blacklist_ipv6 drop; tcp dport { 46 } ct state new accept; ct state new add @tmp_blacklist_ipv4 { ip saddr } drop; ct state new add @tmp_blacklist_ipv6 { ip6 saddr } drop; } }</syntaxhighlight> === 4. 完成配置 === 根据自己的喜好进行调整后保存, 重启<syntaxhighlight> systemctl restart nftables.service </syntaxhighlight>查看封禁了哪些IP<syntaxhighlight> nft list set inet prevent_scanning tmp_blacklist_ipv4 nft list set inet prevent_scanning tmp_blacklist_ipv6 </syntaxhighlight>
返回
使用nftables预防被端口扫描
。
查看“︁使用nftables预防被端口扫描”︁的源代码
来自md5.pw