iptables基础详解与实例

主机防火墙:网络层防火墙可视为一种 IP 数据包过滤器,运作在底层的TCP/IP协议堆栈上

网络防火墙:工作于网络边缘的硬件设备;对于到达网络的数据包根据某种规则进行过滤处理。

二、iptables的四表和五链

四表

raw设置为raw时不再iptables做数据包连接跟踪处理

mangle用于对数据包的一些传输特性进行修改(TOS、TTL…)

nat用于对地址转发功能(端口映射、地址隐射等)

filter对数据包的过滤功能(最常用的;默认项)

五链

PREROUTING数据包进入路由之前

INPUT数据通过路由表后的目标位本机

FORWARD数据通过路由表后的目标不为本机

OUTPUT由本机出去的数据包向外发送

POSTROUTING从网卡接口出去之前

对应关系

链表

FORWARDfilter、mangle

INPUTfilter、mangle

OUTPUTfilter、mangle、nat

PREROUTINGmangle、nat

POSTROUTINGmangle、nat

表链

filterINPUT、FORWARD、OUTPUT

natPREROUTING、OUTPUT、POSTROUTING

manglePREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING

rawPREROUTING、OUTPUT

三、基本的用法

1、格式

[Linux85]#man iptablesIPTABLES(8)iptables 1.4.7IPTABLES(8)NAMEiptables — administration tool for IPv4 packet filtering and NATSYNOPSISiptables [-t table] {-A|-D} chain rule-specification#指定的链附加或删除规则iptables [-t table] -I chain [rulenum] rule-specification#指定的链插入一条规则,默认为第一条iptables [-t table] -R chain rulenum rule-specification#覆盖指定的链中的规则;规则需要重新写iptables [-t table] -D chain rulenum#删除指定链的规则以行号格式iptables [-t table] -S [chain [rulenum]]#只显示指定链的规则添加命令iptables [-t table] {-F|-L|-Z} [chain [rulenum]] [options…]#-F:清空链中的规则#-L:列出表中的所有规则#-Z:清空规则计数器iptables [-t table] -N chain#创建一条自定义空的规则链iptables [-t table] -X [chain]#删除一条自定义空的规则链iptables [-t table] -P chain target#为链指定默认策略;指定默认规则iptables [-t table] -E old-chain-name new-chain-name#修改自定义链名称

2、匹配条件

通用匹配

-s匹配源地址;ip或网络地址;! 可以取反。

-d匹配目标地址;ip或网络地址;! 可以取反。

-p匹配协议{tcp|udp|icmp}

-i数据报文流入的接口;通常{INPUT|FORWARD|PREROUTING}

-o数据报文流出的接口;通常{OUTPUT|FORWARD|POSTROUTING}

扩展匹配

隐含扩展:使用-p{tcp|udp|icmp}指定某特定协议后;自动能够对协议进行的扩展

–dport m[-n]:匹配的目标端口;可以是连续的多个端口

–sport m[-n]:匹配的目标端口;可以是连续的多个端口

–tcp-flags:根据tcp的标志位来匹配

–icmp-type:icmp的状态

显式扩展:必须要明确指定的扩展模块

-m:扩展模块名称 –专用选项1 –专用选项2…(/lib64/xtables/*)

[Linux85]#ls /lib64/xtables/libip6t_HL.solibipt_SET.solibxt_SECMARK.solibxt_osf.solibip6t_LOG.solibipt_SNAT.solibxt_TCPMSS.solibxt_owner.solibip6t_REJECT.solibipt_TTL.solibxt_TCPOPTSTRIP.so libxt_physdev.solibip6t_ah.solibipt_ULOG.solibxt_TOS.solibxt_pkttype.solibip6t_dst.solibipt_addrtype.so libxt_TPROXY.solibxt_policy.solibip6t_eui64.solibipt_ah.solibxt_TRACE.solibxt_quota.solibip6t_frag.solibipt_ecn.solibxt_cluster.solibxt_rateest.solibip6t_hbh.solibipt_icmp.solibxt_comment.solibxt_recent.solibip6t_hl.solibipt_realm.solibxt_connbytes.so libxt_sctp.solibip6t_icmp6.solibipt_set.solibxt_connlimit.so libxt_socket.solibip6t_ipv6header.so libipt_ttl.solibxt_connmark.solibxt_standard.solibip6t_mh.solibipt_unclean.solibxt_conntrack.so libxt_state.solibip6t_rt.solibxt_AUDIT.solibxt_dccp.solibxt_statistic.solibipt_CLUSTERIP.so libxt_CHECKSUM.solibxt_dscp.solibxt_string.solibipt_DNAT.solibxt_CLASSIFY.solibxt_esp.solibxt_tcp.solibipt_ECN.solibxt_CONNMARK.solibxt_hashlimit.so libxt_tcpmss.solibipt_LOG.solibxt_CONNSECMARK.so libxt_helper.solibxt_time.solibipt_MASQUERADE.so libxt_DSCP.solibxt_iprange.solibxt_tos.solibipt_MIRROR.solibxt_MARK.solibxt_length.solibxt_u32.solibipt_NETMAP.solibxt_NFLOG.solibxt_limit.solibxt_udp.solibipt_REDIRECT.solibxt_NFQUEUE.solibxt_mac.solibipt_REJECT.solibxt_NOTRACK.solibxt_mark.solibipt_SAME.solibxt_RATEEST.solibxt_multiport.so[Linux85]#iptables -A INPUT -d 172.16.251.85 -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT#使用state后;连接追踪模块会自动加载[Linux85]#lsmodModuleSize Used bynf_conntrack_ipv49506 2nf_defrag_ipv41483 1 nf_conntrack_ipv4xt_state1492 2nf_conntrack79758 2 nf_conntrack_ipv4,xt_state[Linux85]#iptables -L -n -vChain INPUT (policy ACCEPT 1 packets, 40 bytes) pkts bytes targetprot opt inoutsourcedestination50 3768 ACCEPTtcp — eth0 *0.0.0.0/0172.16.251.85tcp dpt:22 state NEW,ESTABLISHEDChain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes targetprot opt inoutsourcedestinationChain OUTPUT (policy ACCEPT 35 packets, 3252 bytes) pkts bytes targetprot opt inoutsourcedestination[Linux85]#cat /proc/sys/net/nf_conntrack_max15692 #定义了连接追踪的最大值;可以按需调整[Linux85]#[Linux85]#iptables -L -n -vChain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes targetprot opt inoutsourcedestination357 25520 ACCEPTtcp — eth0 *0.0.0.0/0172.16.251.85tcp dpt:22 state NEW,ESTABLISHEDChain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes targetprot opt inoutsourcedestinationChain OUTPUT (policy DROP 0 packets, 0 bytes) pkts bytes targetprot opt inoutsourcedestination63 6928 ACCEPTtcp — **172.16.251.850.0.0.0/0tcp spt:22 state ESTABLISHED

四、实例演示

一直想去旅行,去很美很美的地方,但往往真正踏足想去的地方,

iptables基础详解与实例

相关文章:

你感兴趣的文章:

标签云: