AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 100312
Accepted
jamieb
jamieb
Asked: 2010-01-07 17:55:51 +0800 CST2010-01-07 17:55:51 +0800 CST 2010-01-07 17:55:51 +0800 CST

使用 iptables 阻止除一台主机之外的 SMTP?

  • 772

我有一个服务器,它既可以用作邮件服务器,也可以用作 Web 服务器。我想使用 iptables 来允许所有传入和传出连接,传入端口 25 除外。我只希望一个远程主机能够连接到端口 25(以便中继邮件)。

本质上,我想要一个完全开放的服务器,而不会将其变成垃圾邮件中继。有什么建议么?谢谢!

iptables
  • 2 2 个回答
  • 17604 Views

2 个回答

  • Voted
  1. Best Answer
    Evan Anderson
    2010-01-07T18:07:22+08:002010-01-07T18:07:22+08:00

    这听起来是一个相当简单的要求。话虽如此,我还是有点害怕告诉某人将他们的 SMTP 服务器配置为一个开放的中继。即使您限制了与机器的传入连接,您也确实应该使用某种身份验证来控制中继。甚至消费者 ISP 也不再允许从其网络内部进行未经身份验证的中继。

    假设您的 INPUT 链设置为“接受”策略,并且当前允许新传入的数据包从链的末端脱落,只需执行以下操作:

    iptables -A INPUT -p tcp --dport 25 -s ! x.x.x.x -j DROP
    

    为了完整起见,我最初的答案如下:

    iptables -A INPUT -p tcp --dport 25 -s x.x.x.x -j ACCEPT
    iptables -A INPUT -p tcp --dport 25 -j DROP
    

    第一种方法具有使用单一规则的经济性,并且非常容易在视觉上解析,因为它都是独立的。第二个更容易添加额外的地址。

    将源地址替换为“xxxx”。我怀疑你真的想要不止一次的来源,但你可以弄清楚。(您的 LAN 上可能有机器或您想与之交谈的其他客户端 - 但可能没有。)

    (希望您在 INPUT 链的顶部有规则,以允许已建立的连接缩短链的其余部分并只是接受。除了最初的握手符合上述规则之外,您真的不想要任何东西。)

    显然,将这​​些规则保存在您的发行版使用的任何 iptables 状态持久化装置中。

    编辑:谢谢,womble。

    • 12
  2. Justin
    2010-01-07T18:45:31+08:002010-01-07T18:45:31+08:00

    如果您需要允许更多地址,这样的事情更具未来性。

    iptables -A INPUT -p tcp --dport 25 -s x.x.x.x -j ACCEPT
    iptables -A INPUT -p tcp --dport 25 -j DROP
    

    从它转换到默认的拒绝策略也更容易,这总是一件好事。

    此外,大多数邮件服务器允许您定义允许中继的地址列表,这可以增加另一个级别的保护。你没有说你使用的是哪个邮件服务器,但他们都应该有这个功能。

    • 4

相关问题

  • OpenVPN 的 Linux IP 转发 - 正确的防火墙设置?

  • iptables 单个规则中的多个源 IP

  • 存储 iptables 规则的规范方法是什么

  • 使用 iptables 和 dhcpd 进行端口转发

  • 根据 Apache 日志数据自动修改 iptables 以阻止行为不良的客户端

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve