首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iptables作为网关和POP3 SMTP端口

iptables作为网关和POP3 SMTP端口
EN

Server Fault用户
提问于 2012-03-09 12:53:07
回答 2查看 3.9K关注 0票数 0

当试图在iptables中为outlook用户打开端口110和25时,我不能这样做,除非转发如下:

代码语言:javascript
复制
-I FORWARD -i eth0 -s 192.168.1.0/24 -j ACCEPT
-I FORWARD -i eth1 -d 192.168.1.0/24 -j ACCEPT

但是这样做可以让我局域网中的其他用户绕过我的squid代理。这些转发命令的正确语法是什么,以只写端口110和25?

编辑:

这是我当前直接配置的iptables文件。它现在起作用了,但我确信它远非完美。目前,没有显式代理服务器的用户无法连接到internet。outlook端口正在工作。

代码语言:javascript
复制
# Generated by iptables-save v1.3.5 on Fri Mar  9 13:59:24 2012
*nat
:PREROUTING ACCEPT [25448:1902369]
:POSTROUTING ACCEPT [29:1625]
:OUTPUT ACCEPT [786:56571]
-A POSTROUTING -o eth1 -j MASQUERADE 
COMMIT
# Completed on Fri Mar  9 13:59:24 2012
# Generated by iptables-save v1.3.5 on Fri Mar  9 13:59:24 2012
*filter
:INPUT DROP [0:0]
:FORWARD DROP [1:68]
:OUTPUT DROP [0:0]
:LOGDROP - [0:0]
-A INPUT -i lo -j ACCEPT 
-A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT 
-A INPUT -i eth0 -p tcp -m tcp --dport 3128 -m state --state NEW -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 110 -m state --state NEW -j ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT 
-A INPUT -j LOGDROP 
-A OUTPUT -o lo -j ACCEPT 
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
-A OUTPUT -o eth1 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 53 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth0 -p udp -m udp --dport 123 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 21 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT 
-A OUTPUT -o eth1 -p tcp -m tcp --dport 5190 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --dport 110 -m state --state NEW -j ACCEPT
-A OUTPUT -o eth1 -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT
-I FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-I FORWARD -i eth0 -s 192.168.1.0/24 -p tcp --dport 110 -j ACCEPT
-I FORWARD -i eth0 -s 192.168.1.0/24 -p tcp --dport 25 -j ACCEPT
-A LOGDROP -j LOG 
-A LOGDROP -j DROP 
COMMIT
# Completed on Fri Mar  9 13:59:24 2012
EN

回答 2

Server Fault用户

发布于 2012-03-09 15:26:12

好的,让我们从头再来一遍。

将前向链设置为接受(以防万一)

iptables -P FORWARD ACCEPT

清理你的前链

iptables -F FORWARD

允许您的用户检查smtp和pop。

代码语言:javascript
复制
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -p tcp --dport 110 -j ACCEPT

不要添加-d 192.168.1.0/24 -j ACCEPT,因为这是不安全的。

让他们回答这些问题

iptables -A FORWARD -m state --state RELATED, ESTABLISHED -j ACCEPT

将您的前向链策略设置为“下降”。

iptables -P FORWARD DROP

现在,第一部分应该起作用了。如果没有,则不启用ip_forward。

echo 1 > /proc/sys/net/ipv4/ip_forward

关于重启问题。Iptables命令不是持久的,所以您必须使用脚本,或者使用内置于iptables的Linux发行版管理脚本。

最简单和不太优雅的方法是在配置和工作正常时运行此命令。

iptables-save >/etc/myfirewall_config

以及连接和initscript,在引导时加载它。

iptables-restore </etc/myfirewall_config

好了。

如果在所有这些之后仍然存在问题,那么发布NAT表(iptables -t nat -vnL)

票数 2
EN

Server Fault用户

发布于 2012-03-09 13:03:13

‘-我转发了-i eth1 -d 192.168.1.0/24 -j ACCEPT’enables/opens从(可能)您的出入口到内部lan。

为了允许传出连接使用- 'iptables -I转发-s 192.168.11.0/24 -p tcp --dport 110 -j ACCEPT‘。

请注意,像这样启用传出连接是错误的,您会让病毒/蠕虫/木马通过这些端口连接到internet。通过指定强制用户使用内部smtp服务器与启用AUTH的传出连接的确切目的IP来限制它。

如果他们需要远程pop3,可以通过pop3下载邮件到网络内的服务器,并通知用户使用内部pop3“镜像”副本。

也有一些pop3代理或一些邮件客户端可以通过代理运行pop3 3/smtp。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/368023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档