传奇服务端端口封闭与防火墙白名单教程:登录网关游戏网关数据库防扫描实战

来源: 作者: 点击:
先列服务端端口分工,再决定哪些对外、哪些只留本机。传奇常见架构里,LoginGate 负责登录验证,默认多用7000;SelGate/角色选择网关处理建号选号,部分版本用7100;RunGate/游戏网关做进图后实时数据,默认多用7200;LoginSrv 内部登录服务可能用5600一类,DBServer 角色数据服务可能用6000一类,M2 内部通信按控制器配置,MySQL 默认3306、SQL Server 默认1433/1434一类,微端UpdateServer按版本自定义,远程桌面默认3389。面向玩家只放LoginGate、SelGate、RunGate以及微端;LoginSrv、DBServer、M2内部端口、数据库端口、远程管理端口全部不对外映射。

Windows本机防火墙做最小开放。高级安全防火墙里建入站规则,规则类型选端口,协议TCP,特定本地端口按实际填,例如7000,7100,7200;若微端必须外网,再单独加微端端口。操作允许连接,配置文件按服务器网络环境勾域、专用、公用;规则名写“MirLogin”、“MirSel”、“MirRun”、“MirUpdate”,后期好排查。命令行用管理员CMD逐端口加:
netsh advfirewall firewall add rule name="MirLogin" dir=in action=allow protocol=TCP localport=7000
netsh advfirewall firewall add rule name="MirSel" dir=in action=allow protocol=TCP localport=7100
netsh advfirewall firewall add rule name="MirRun" dir=in action=allow protocol=TCP localport=7200
多RunGate用7200、7201、7202,就分别建规则或写范围7200-7202。netsh不支持逗号多端口一条建,按单端口或多个范围建更稳。

封锁不需要的入站端口用拒绝规则。数据库如果本机跑,建入站拒绝3306、1433、1434;远程桌面如果只给自己用,不开放默认3389入站,改完新端口后只建新端口允许规则,再建3389拒绝规则。示例拒绝MySQL外网:
netsh advfirewall firewall add rule name="BlockMySQL" dir=in action=block protocol=TCP localport=3306
拒绝MSSQL:
netsh advfirewall firewall add rule name="BlockMSSQL" dir=in action=block protocol=TCP localport=1433,1434
拒绝RDP默认:
netsh advfirewall firewall add rule name="BlockRDP3389" dir=in action=block protocol=TCP localport=3389
如果服务器只用本机回环连库,MySQL配bind-address=127.0.0.1,SQL Server通过配置管理器和防火墙限制仅本机/内网管理IP;这样即使外网扫到服务器IP也没有数据库端口可连。

路由器或云安全组只做端口映射白名单。家用/企业路由进虚拟服务器,仅映射玩家网关:外网7000转内网服务端IP7000,7100转7100,7200转7200,微端转微端;LoginSrv、DBServer、M2内部、MySQL、SQL Server不建映射。云服务器用安全组代替路由器,入站仅允许来源0.0.0.0/0的7000、7100、7200、微端端口TCP,其余入站拒绝;管理入口如远程桌面、SSH、宝塔、后台网站不匹配全互联网,单独建规则限定运维IP。绝对不开启DMZ把整台服务器暴露,DMZ会让防火墙端口策略失效。

网关配置层限制连接数和异常包。LoginGate配置里设最大连接、最大在线、登录频率阈值;部分版本支持单IP连接上限、每秒登录次数、超频临时封IP。RunGate配置设单IP最大连接、封包频率、异常坐标/超长字符串丢弃、假人连接拒绝;如果配置器有防CC、防加速、封包加密、频率限制,按玩家体量开,登录期单IP每秒1到2次登录请求较稳妥,游戏期按网关线程和在线人数调。BLUE/LEG看RunGate.ini或Config.ini的MaxUser、MaxConnectOfIP、MaxClientCount;GOM/GEE在M2游戏网关、外挂控制里开封包频率、异常包拦截、变速拦截。改默认端口能降低全自动扫描命中率,例如LoginGate由7000改五位数高位,RunGate由7200改7211、7221、7231分三组,登录器列表同步改;但改端口不等于绝对安全,必须配合网关限连和防火墙白名单。

内部服务绑定本机减少暴露。DBServer若只给本机M2用,配置通信地址用127.0.0.1或内网固定IP,不在公网网卡监听;LoginSrv只在M2/LoginGate内部通信,不对外开5600一类;M2内部端口只绑内网,不绑0.0.0.0。多机部署时,M2、DBServer、LoginSrv之间走内网网段,防火墙入站仅允许对端内网IP访问对应端口;公网玩家只接触LoginGate、SelGate、RunGate。微端UpdateServer若不用就直接关,需要用就把端口改非常规、加更新密码、防火墙仅放玩家网段或CDN回源网段,禁止目录遍历和PAK列表公开。

数据库账号和权限单独收口。MySQL改默认3306为非默认端口、root禁止远程、新建游戏专用账号并限制来源为本机或内网M2 IP;授权按库最小权限,只给select、insert、update、delete,不给drop、alter、create除非维护需要。示例只让本机连:
配置文件mysqld段写bind-address=127.0.0.1,重启MySQL;
建账号用CREATE USER 'mir2'@'127.0.0.1' IDENTIFIED BY '强密码';
授权用GRANT SELECT,INSERT,UPDATE,DELETE ON mir2db.* TO 'mir2'@'127.0.0.1';FLUSH PRIVILEGES;
SQL Server改默认端口、禁sa远程或改强密码、建仅本机/内网应用用的低权登录名。DBC体系没有TCP数据库端口,但要保证DBServer目录、HeroDB别名、Mir200\DB文件仅服务端账户读写,别把DB目录共享到公网。

远程管理和后台再叠一层IP白名单。Windows远程桌面改默认3389为新端口,注册表HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp和WinStations\RDP-Tcp的PortNumber改十进制新值,重启生效;防火墙仅允许运维IP入站新RDP端口,其他IP拒绝。Web后台、GM后台、列表后台不放在玩家同端口,后台目录改随机路径,登录限频、失败锁定、仅运维IP访问。若用phpMyAdmin、Navicat远程管理,禁止公网直接访问,改通过内网或SSH隧道/零信任进入。

单IP连接数限制放在三层。路由器或硬件防火墙对7000、7100、7200设单IP最大连接,例如登录期5到10、游戏期按多开策略20到50,超时60秒回收;Windows防火墙本身做单IP细粒度连接数不如网关和边界设备,主要靠网关MaxConnect和边界设备。LoginGate超频登录临时封禁,RunGate异常连接直接断;若发现同一IP大量SYN、大量半开连接,边界设备开SYN cookie、SYN flood防护,单IP新建连接速率设阈值。微端被刷就单独限制微端端口单IP并发和带宽上限。

被扫描和假人攻击时的临时封端口流程。先netstat -ano | findstr "7000 7100 7200"看哪些IP连接数异常,结合RunGate日志、LoginGate日志定位刷连接IP;Windows用netsh建拒绝规则封来源,例如:
netsh advfirewall firewall add rule name="BanIP_1.2.3.4" dir=in action=block remoteip=1.2.3.4 protocol=TCP
路由器/云安全组加IP黑名单;高防环境把被攻击网关端口切到高防节点,源站只接受高防回源IP。若攻击针对默认7000,可临时把LoginGate换新端口并更新登录器列表,但要先通知玩家,避免误判为不开门。大流量DDoS单靠本机防火墙不够,需要高防IP、高防服务器或运营商清洗,端口封闭只解决暴露面和扫描,不替代带宽防护。

排错按“能进登录但不能选角、能选角但进图掉线、外网全不通”分。外网全不通先netstat看网关是否listen,再看Windows防火墙、路由器映射、云安全组三层是否都放对应TCP端口;本地127.0.0.1能进、外网不能进,重点查路由器端口转发和内网IP是否变化、ISP是否封7000/80类常用口。能登录不能选角,查SelGate端口映射和SelGate.exe启动、M2角色网关配置;能选角进图马上掉,查RunGate端口、多RunGate的Servertable、M2内部端口、时间超时和防火墙是否只放了一部分RunGate。数据库相关卡角色、读档慢不要盲目对外开3306/6000,先查DBServer连接数、库权限、本机防火墙是否误拦本机回环。

长期维护规则。端口规划写文档:玩家网关、内部服务、数据库、远程管理分四张表;每次加地图、加微端、加活动网关都只新增必要端口,不新增就全开。服务端版本更新后重看LoginGate、RunGate、M2防封包参数,旧版本存在网关解析漏洞就用官方补丁;AdminList只留真实GM,过滤字符、敏感命令、危险脚本命令分开禁用。每天备Mir200、Envir、GuildBase、数据库;防火墙规则、路由器映射、云安全组配置也定期导出备份。这样即使被扫到IP,对外只有少数游戏网关端口,内部DB、M2、后台、远程全不暴露,攻击面会明显缩小。