【问题标题】:How to make a port secure如何使端口安全
【发布时间】:2015-12-14 17:31:10
【问题描述】:

我们正在开发一个服务器应用程序,它将 24/7 全天候监听来自外部设备的所有连接 (TCPListener),并将这些消息存储在我们的数据库中。

对于这些连接,我们在服务器中打开一个端口(比如 13002)。我们想让这个端口安全,这意味着有人将无法扫描端口,也无法连接并发送数千个请求到这个特定端口,从而使我们的应用程序变慢甚至出现故障。

有什么想法吗?

【问题讨论】:

  • 在路由器/防火墙中配置来阻止这些请求,你不能停止请求,但你可以拒绝它。如果过度使用,将其从特定 IP 中阻止
  • 如果您知道将用于访问服务器的特定 IP 范围。 (就像你在使用 vpn 时一样)你可以在绑定套接字时指定一个位掩码。那将只允许特定 IP 范围的连接

标签: c# tcp-ip tcplistener


【解决方案1】:

使用firewall

在计算中,防火墙是一种网络安全系统,它根据预定的安全规则监视和控制传入和传出的网络流量。防火墙通常会在受信任的安全内部网络和假定为不安全或不受信任的另一个外部网络(例如 Internet)之间建立屏障。

【讨论】:

    【解决方案2】:

    如果给出的是您对“安全”的定义:

    有人将无法扫描端口,无法连接并发送数千个请求到此特定端口

    然后一个正确配置的防火墙就可以了。

    但这并不能防止恶意用户对您的软件造成损害。如果有人可以通过数据包检查找出您使用的协议,他们就可以向您的应用程序发出任意请求。

    这意味着,如果您的协议设计不当,用户可能会冒充其他用户,发送他们不应该发送的消息,从而执行他们不允许执行的操作。

    只是在两者之间放置防火墙不会使您的协议更安全。

    【讨论】:

    • 这是正确的,至少如果这些设备具有固定 IP,那么我们可以将防火墙配置为只接受来自这些 IP 地址(=设备)的连接。但是,如果这些设备没有固定的 IP 地址,我想过滤相关连接将非常困难(我们有机会定义这些设备发送的消息的模式,我们可以看看传入的模式是否消息符合我们的标准。但是,我们仍然需要接收这些消息并评估哪些使我们的服务器仍然繁忙)。
    • 还有我们应该使用哪个端口?我认为越高越好,这样其他应用程序使用它的变化就会更少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    相关资源
    最近更新 更多