使用 Public IP 地址和端口连接到数据库是否安全?
Is it secure to connect to database with Public IP Address and port?
有以下参数:
我在 asp .net 中使用 FirebirdSql.Data.FirebirdClient 库
现在,在测试级别,我使用以下行连接到远程数据库:
string workbase = "Server="public ip";Port="port";User=sysdba;Password=masterkey;Database=C:/path/db.FDB";
还有连接方法、请求、事务、提交等
string sqlcardpin = $"SELECT.....";
var connection = new FbConnection(workbase);
问:安全吗?流量是否加密?我在哪里可以读到它?我应该如何连接?
根据我的脑力劳动,我得到了以下结果:我需要在本地网络中提供一个服务,该服务与数据库建立安全连接,并且该服务具有连接到数据库并执行操作的凭据吧,可能我说的不对,还望指正
如果'public ip'是一个公开路由的IP地址,并且3050端口对全世界开放,那是不安全的。不要将您的数据库服务器暴露给世界,它会创建一个非常广泛的攻击面来获取您的数据。
例如,Firebird 2.5 及更早版本的身份验证系统非常薄弱(最多 8 个字符的密码),而 Firebird 3 引入了一种新的、更安全的身份验证机制,允许使用更长的密码,但出于各种原因,很多服务器仍配置为启用弱身份验证(也)。还要考虑可能允许人们规避身份验证的错误,或者可能允许人们远程破坏您的数据库服务器等的错误。
关于加密,Firebird 2.5 及更早版本没有对连接进行加密。这是在 Firebird 3 中引入的,仅用于使用新的 SRP(安全远程密码)身份验证机制进行身份验证的连接,并且仅当服务器的 WireCrypt
设置为 Required
或 Enabled
并且客户端实际请求身份验证。对于 C#,这需要 Firebird ADO.net 提供程序版本 7.0.0.0 或更高版本。但是,Firebird 3 中提供的有线协议加密是相对不安全的 RC4 加密; Firebird 4 将引入 ChaCha-20 作为替代有线协议加密。
因此,您的数据库应该与您的应用程序位于同一网络上,最好位于无法通过 Internet 路由的 IP 地址上(即在私有范围之一中),或者至少通过防火墙。如果出于某种原因您需要通过 Internet 连接到远程数据库,请不要将数据库直接暴露在 Internet 上,而是使用 VPN 解决方案,或者类似 SSH-based 隧道的方法。
和corradolab points out in 一样,不要使用masterkey
作为SYSDBA的密码。事实上,不要为您的应用程序使用 SYSDBA 进行连接,而是创建一个特定的用户并为其分配必要但最少的权限以使其完成工作。
您没有说明 Web 服务器和数据库服务器是在同一站点还是不同站点,但是,无论如何,
不要将数据库服务器暴露给 public Internet。
如果 Web 和数据库服务器位于不同的站点,请考虑使用防火墙(在数据库上)以仅允许来自 Web 服务器地址的连接或两个站点之间的 VPN。
如果它们在同一个站点,只将 Web 服务器暴露在 Internet 中(将其放在 DMZ 中),并将进出数据库服务器的流量保持在专用 LAN 上。
顺便说一下,使用 sysdba/masterkey 在 Internet 上使用 Firebird 就像背着写着“踢我”四处走动。如果疼,请不要感到惊讶。 :)
有以下参数: 我在 asp .net 中使用 FirebirdSql.Data.FirebirdClient 库 现在,在测试级别,我使用以下行连接到远程数据库:
string workbase = "Server="public ip";Port="port";User=sysdba;Password=masterkey;Database=C:/path/db.FDB";
还有连接方法、请求、事务、提交等
string sqlcardpin = $"SELECT.....";
var connection = new FbConnection(workbase);
问:安全吗?流量是否加密?我在哪里可以读到它?我应该如何连接?
根据我的脑力劳动,我得到了以下结果:我需要在本地网络中提供一个服务,该服务与数据库建立安全连接,并且该服务具有连接到数据库并执行操作的凭据吧,可能我说的不对,还望指正
如果'public ip'是一个公开路由的IP地址,并且3050端口对全世界开放,那是不安全的。不要将您的数据库服务器暴露给世界,它会创建一个非常广泛的攻击面来获取您的数据。
例如,Firebird 2.5 及更早版本的身份验证系统非常薄弱(最多 8 个字符的密码),而 Firebird 3 引入了一种新的、更安全的身份验证机制,允许使用更长的密码,但出于各种原因,很多服务器仍配置为启用弱身份验证(也)。还要考虑可能允许人们规避身份验证的错误,或者可能允许人们远程破坏您的数据库服务器等的错误。
关于加密,Firebird 2.5 及更早版本没有对连接进行加密。这是在 Firebird 3 中引入的,仅用于使用新的 SRP(安全远程密码)身份验证机制进行身份验证的连接,并且仅当服务器的 WireCrypt
设置为 Required
或 Enabled
并且客户端实际请求身份验证。对于 C#,这需要 Firebird ADO.net 提供程序版本 7.0.0.0 或更高版本。但是,Firebird 3 中提供的有线协议加密是相对不安全的 RC4 加密; Firebird 4 将引入 ChaCha-20 作为替代有线协议加密。
因此,您的数据库应该与您的应用程序位于同一网络上,最好位于无法通过 Internet 路由的 IP 地址上(即在私有范围之一中),或者至少通过防火墙。如果出于某种原因您需要通过 Internet 连接到远程数据库,请不要将数据库直接暴露在 Internet 上,而是使用 VPN 解决方案,或者类似 SSH-based 隧道的方法。
和corradolab points out in masterkey
作为SYSDBA的密码。事实上,不要为您的应用程序使用 SYSDBA 进行连接,而是创建一个特定的用户并为其分配必要但最少的权限以使其完成工作。
您没有说明 Web 服务器和数据库服务器是在同一站点还是不同站点,但是,无论如何,
不要将数据库服务器暴露给 public Internet。
如果 Web 和数据库服务器位于不同的站点,请考虑使用防火墙(在数据库上)以仅允许来自 Web 服务器地址的连接或两个站点之间的 VPN。
如果它们在同一个站点,只将 Web 服务器暴露在 Internet 中(将其放在 DMZ 中),并将进出数据库服务器的流量保持在专用 LAN 上。
顺便说一下,使用 sysdba/masterkey 在 Internet 上使用 Firebird 就像背着写着“踢我”四处走动。如果疼,请不要感到惊讶。 :)