0
点赞
收藏
分享

微信扫一扫

iptables防火墙总结

iptables是Linux下自带的开源的一款免费的基于包过滤的防火墙工具,可以对

流入、流出、流经服务器的数据包进行精细的控制

iptables的工作流程

iptables是采用数据包过滤机制工作的,所以他会对请求的数据包的包头进行

分析,并根据我们预先设定的规则进行匹配来决定是否可以进入主机

  1. 防火墙是一层层过滤的。实际是按照配置规则的顺序从上到下,从前到后进行过滤的。
  2. 如果匹配上了规则,即明确表明是阻止还是通过,此时数据包就不能向下匹配新规则了。
  3. 如果所有规则中没有明确表明是阻止还是通过这个数据包,也就是没有匹配上规则,向下进行匹配,直到匹配默认规则得到明确的阻止还是通过。
  4. 防火墙的默认规则是对应链的所有的规则执行完才会执行的(最后执行的规则)

iptables的五表

filter***

过滤功能,确定是否放行该数据包,属于真正的主机防火墙(默认)

nat***

网络地址转换功能,修改数据包中的源、目标IP地址或端口

mangle

对数据包进行重新封装功能,为数据包设置标记

raw

确定是否对数据包进行跟踪

security

是否定义强制访问控制规则(后加上的)

iptables的五链

INPUT

处理入站数据包

OUTPUT

处理出站数据包

FORWARD

处理转发数据包(流经本机)

PREROUTING

在进行路由选择前处理数据包,适用于外网访问内网,修改到达防火墙的数据包的目的IP

POSTROUTING

在进行路由选择后处理数据包,适用于内网访问外网,修改要离开防火墙的数据包的源IP

iptables中表链之间的关系

这里只对常用的表进行记录

优先级:nat>filter

filter

nat

INPUT

PREROUTING

OUTPUT

POSTROUTING

FORWARD

OUTPUT

数据包流经iptables的流程

iptables防火墙总结_iptables总结

  1. 所有的数据包在进入iptables之前,都会匹配NAT表的PREROUTING链
  2. 如果数据包的目标就是本机,在进入本机之前,还会匹配FILTER表的INPUT链,离开本机后还会匹配NAT表的OUTPUT链与FILTER表的OUTPUT链
  3. 如果数据包是流经本机的,会匹配FILETER表的FORWARD链
  4. 所有的数据包在离开iptables的时候,都会匹配NAT表的POSTROUTING链

iptables语法结构

iptables [-t ]  [] [] [-j ]

注意:

不指定表名时,默认表示filter表

不指定链名时,默认表示该表内所有链

除非设置链的默认策略,否则需要指定匹配条件

管理选项

链管理

-F
-P(ACCEPT|DROP)

-N
-X0
-E
-Z

规则管理

-A
-I

-R
-D

规则显示

-L
-v
-n
--line-numbers

-vv
-x
-S

匹配条件

基本匹配条件

匹配协议,源目IP,出入接口

-p tcp udp icmp all 
-s
-d
-i
-o
!

扩展匹配条件

隐式匹配

匹配源目端口

-p tcp 
--sport
--dport
--tcp-flags mask comp tcp
-p udp
--sport
--dport
--icmp-type
0/0echo reply ping
8/0echo request ping

显式匹配

multiport 多端口

iptables -I INPUT -d 192.168.2.10 -p tcp -m multiport --dports 22,80 -j ACCEPT 
#在INPUT链中开放本机tcp 22,tcp80端口

iptables -I OUTPUT -s 192.168.2.10 -p tcp -m multiport --sports 22,80 -j ACCEPT
#在OUTPUT链中开放源端口tcp 22,tcp80

iprange 多ip地址

iptables -A INPUT -d 192.168.2.10 -p tcp --dport 23 -m iprange --src-range 192.168.2.11-192.168.2.21 -j ACCEPT 

iptables -A OUTPUT -s 192.168.2.10 -p tcp --sport 23 -m iprange --dst-range 192.168.2.11-192.168.2.21 -j ACCEPT

time 指定访问时间范围

iptables -A INPUT -d 192.168.2.10 -p tcp --dport 901 -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --time-stop 18:00:00 -j ACCEPT 

iptables -A OUTPUT -s 192.168.2.10 -p tcp --sport 901 -j ACCEPT

动作

ACCEPT:

DROP:

REJECT:

SNAT:
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT --to-source 202.12.10.100

MASQUERADE:SNATip
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j MASQUERADE

DNAT:
iptables -t nat -A PREROUTING -i eth1 -d 202.12.10.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.11:8080

REDIRECT:

LOG:/var/log/message

iptables规则的保存与重载

保存

iptables-save > /etc/sysconfig/iptables

重载

iptables-restore < /etc/sysconfig/iptables

iptables范例

清空现有规则


iptables -F


iptables -F INPUT

查看规则

iptables -nL


iptables -nvL


iptables -nL --line-numbers

设置链的默认规则

iptables -P INPUT ACCEPT 
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

删除规则


iptables -D INPUT 2


iptables -D INPUT -p tcp --dport 80 -j ACCEPT

禁止来自10.0.0.188 ip地址访问80端口的请求

iptables -A INPUT -p tcp -s 10.0.0.188 --dport 80 -j DROP

实现把访问10.0.0.3:80的请求转到172.16.1.17:80(DNAT)

iptables -t nat -A PREROUTING -d 10.0.0.3 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.17:80

实现172.16.1.0/24段所有主机通过124.32.54.26外网IP共享上网(SNAT)

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT --to-source 124.32.54.26

只允许远程主机访问本机的80端口

iptables -A INPUT -p tcp --dport 80 -j ACCEPT   80访
iptables -P INPUT DROP 访

允许通过本地回环网卡访问本机

[root@localhost ~]# iptables -I INPUT -d 127.0.0.1 -p tcp --dport=9000 -i lo -j ACCEPT 

[root@localhost ~]# iptables -I INPUT -i lo -j ACCEPT

允许连接态产生的衍生态

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

实现共享主机上网

iptables防火墙总结_iptables总结_02

  1. 实现PC-D可以经过linux网关B上网,上因特网浏览网页等
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
  1. 实现外部用户A通过访问Linux网关B:10.0.0.8 即可以访问到内部 Server 172.16.1.51:80提供的web服务
iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.61:80
  1. 假如1,2都配好了,但是问题处在内网普通PC-D和内部server-C,没有配置正确的网关,如何通过tcpdump来排查
windowsping 10.0.0.8
tcpdump|grep -i icmp


举报

相关推荐

防火墙——iptables

Iptables防火墙

iptables 防火墙

iptables防火墙

防火墙之iptables

iptables 防火墙汇总

0 条评论