Centos IPTables 外部防火墙配置

Centos IPTables 外部防火墙配置

当前设置

Centos 是一个 Web、邮件(Postfix、Dovecot)、FTP 服务器和网关,具有公共 IP 和私有 IP(用于 LAN 网关)。

我们计划实施外部防火墙并将服务器引入局域网

请指导配置 IPTables...无法接收邮件,并且发出的邮件停留在 Postfix 队列中,并在延迟后发送...

服务器本地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

答案1

您可以将这些规则简化为此。

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 邮件就无法运行。

答案2

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

INPUT 和 OUTPUT 链用于进出防火墙的流量。您的规则应在 FORWARD 链上。您还需要 NAT 规则。SNAT 用于让内部服务器访问互联网,DNAT 用于将外部流量重定向到内部服务器。

首先检查您是否启用了转发。

放:

net.ipv4.ip_forward = 1

在 /etc/sysctl.conf 中

假如说:

  • 防火墙 IP 为 192.168.1.5,网络接口为:eth0 WAN、eth1 LAN

  • http/邮件服务器 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

要将其他端口重定向到服务器,请复制最后两行(DNAT 和转发)并将端口更改为 110、443 等。

至少不要忘记添加输入或输出规则

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 访问防火墙

相关内容