Centos IPTablesconfiguration为外部防火墙

当前设置

CentOS是一个Web,邮件(Postfix,Dovecot),FTP服务器和网关公共IP和私人IP(LAN网关)。

我们正计划实施外部防火墙,并将服务器连接到局域网

请指导configurationIPTables …无法接收邮件和外发邮件停留在后缀队列中,并延迟发送后…

服务器的本地IP地址是192.168.1.220

iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # incoming HTTP iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT #outgoing HTTP iptables -A OUTPUT -o eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT # FTP iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.1.220 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.1.220 --sport 21 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.1.220 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.1.220 --sport 1024:65535 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT #SMTP iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.1.220 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.1.220 --sport 25 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.1.220 --sport 1024:65535 -d 0/0 --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp -s 0/0 --sport 25 -d 192.168.1.220 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT #POP3 iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 192.168.1.220 --dport 110 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp -s 192.168.1.220 --sport 110 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT 

你可以简化这些规则。

 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth0 -m multiport -p tcp --dport 80,443,21,25,110 -m state --state NEW -j ACCEPT iptables -A OUTPUT -o eth0 -m multiport -p tcp --dport 80,443,21,25,110 -m state --state NEW -j ACCEPT iptables -A OUTPUT -o eth0 -p udp --dport 53 -m state --state NEW -j ACCEPT 

你也需要加载ftp跟踪模块。

 modprobe ip_nat_ftp 

我添加了一个规则来允许DNS查找,因为邮件不能没有DNS。

如果我理解正确,你有一个防火墙和另一个内部服务器。 在这种情况下:

INPUT和OUTPUT链用于进出防火墙。 你的规则应该在FORWARD链上。 你也需要NAT的规则。 SNAT允许内部服务器访问Internet和DNAT,将外部stream量redirect到内部服务器。

首先检查是否启用转发。

组:

 net.ipv4.ip_forward = 1 

在/etc/sysctl.conf中

假如说:

  • 防火墙IP为192.168.1.5,networking接口为:eth0 WAN,eth1 LAN

  • http / mail服务器的ip是192.168.1.1

尝试:

 ###load ftp nat modules /usr/sbin/modprobe ip_nat_ftp /usr/sbin/modprobe ip_conntrack_ftp ### set chains policies iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT ### for server to access internet ### SNAT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ### and allow full server access iptables -A FORWARD -i eth1 -s 192.168.1.1 -j ACCEPT ### for incoming http connections ### DNAT iptables -t bat -A PREROUTING -i eth0 -p tcp --dport 80 -j NAT --to-destination 192.168.1.1:80 ### and allow forward iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 192.168.1.1 -j ACCEPT 

将其他端口redirect到服务器复制最后2行(DNAT和转发)并将端口更改为110,443等

不要忘记添加input或输出规则,至less

 IPTABLES -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -i lo -p all -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

能够通过ssh访问防火墙