# ACCEPT inbound TCP connections for various
# services found in /etc/services
for service in ftp ssh smtp domain
http auth ldap https; do
iptables -t filter INPUT -m state
--state NEW,ESTABLISHED -i $EXT_IFACE
-p tcp -d $IP --dport $service -j ACCEPT
done
|
我们可以通过查看/proc/net/ip_conntrack文件来查看连接跟踪。
以下iptables规则允许在TCP端口20上有主动模式的FTP连接请求:
# ACCEPT active FTP data connections on firewall
iptables -t filter -A INPUT -m state --state RELATED
-i $EXT_IFACE -p tcp -d $IP --dport 1024:
--sport ftp-data -j ACCEPT
|
在网络内部的连接,FORWARD规则会通过NAT把连接进行伪装。使用NAT,大部分协议都可以正常工作,只有很少一部分需要一个重写IP地址的模块。对于主动模式的FTP连接,需要一个辅助程序来通过防火墙。你可以使用modprobe命令加载ip_masq_ftp(ipchains)或者ip_nat-ftp(iptables)模块,以实现对主动FTP连接的伪装。这样,处于主动的FTP连接的远程机器,为了传输数据,会要求连接本地机。这时,ip_masq_ftp模块会重新修改FTP连接中的数据包,使得内部机器看起来就像是直接连接在Internet上一样。对于被动模式的FTP连接,可以使用TCP端口21来传输数据,以避开这个问题。值得注意的是,因为FTP的密码在网络上是以文本的形式传输的,所以并不安全。要建一个安全的FTP站点,可以使用sftp,它在通信时使用的是安全的套接字。Sftp随着OpenSSH客户端工具起发行。
对于各种应用程序的伪装模块,可以在/lib/modules/'uname -r'/ipv4 (ipchains) 或者/lib/modules/'uname -r'/ kernel/net/ipv4/netfilter/ (iptables)目录中找到。
FORWARD使用以下的iptables规则来伪装通过防火墙的数据包:
# ACCEPT new outbound traffic (stateful firewall)
iptables -t filter -A FORWARD -m state —state NEW,ESTABLISHED
-i $INT_IFACE -s $INT_NET -j ACCEPT
# ACCEPT return traffic (stateful firewall)
iptables -t filter -A FORWARD -m state —state NEW,ESTABLISHED,RELATED
-i $EXT_IFACE -s ! $INT_NET -j ACCEPT
# Pass Internet traffic to internal network unmodified
iptables -t nat -A POSTROUTING -o $INT_IFACE -j ACCEPT
# Masquerading outbound connections from internal network
iptables -t nat -A POSTROUTING -o $EXT_IFACE -j MASQUERADE
|
OUTPU规则中还可以通过配置TOS(服务类型)标识来实现信息传输的先后次序。很多IPS都容易忽略TOS标识。事实上,由于CONFIG_IP_ROUTE_TOS内核选项判断信息流顺序时正是基于这一标识,所以这一标识非常有用。这就意味着,当一个交互式的应用程序(比如SSH)运行时,你可以让高带宽的应用程序(比如FTP)以最大的吞吐量运行,也不会使交互延迟。也就是说,可以让FTP不影响SSH连接的性能。
TOS标识在iptables防火墙mangle表中的PREROUTING和OUTPUT规则中设置。以下规则会让SSH数据包的延迟最小:
iptables -t mangle -A PREROUTING -j TOS
--set-tos Minimize-Delay -p tcp --dport ssh
iptables -t mangle -A OUTPUT -j TOS
--set-tos Minimize-Delay -p tcp --sport ssh
|
OUTPUT规则还可以限制系统对各种ICMP信息的响应。使用以下的配置,我们可以允许ICMP响应ping和traceroute,而不响应时间戳:
# ACCEPT various ICMP messages
for message in echo-reply destination-unreachable
source-quench redirect echo-request
time-exceeded parameter-problem; do
ipchains -A OUTPUT -p icmp -s 0/0 $message -j ACCEPT
done
|
共4页: 上一页 [1] [2] 3 [4] 下一页
|