1、iptables和firewalld一样,都是一种动态控制防火墙的工具,通过设定一系列的策略从而保证在与其他主机进行数据传输时系统的安全性。
2、iptables具有filter、nat、mangle、raw四种内建表,各个表中又有内建链,有各自不同的功能。
二、iptables常用内建表
1、filter表:filter表示iptables的默认表,如果没有自定义表,则默认为filter表,具有三种内建链
INPUT:处理来自外部的数据;
OUTPUT:处理往外发送的数据;
FORWARD链:将数据转发至本机的其他网卡上。
2、nat表:nat表中有三种内建链:
PREROUTING:处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址、
POSTROUTING:处理即将离开本机的数据包。它会转换数据包中的源IP地址
OUTPUT:处理本机产生的数据包
3、mangle表:Mangle表用于指定如何处理数据包。有五个内建表
PREROUTING、OUTPUT、POSTROUTING、FORWARD、INPUT
4、raw表:用于处理异常,有两个内建表:PREROUTING、OUTPUT
三、iptables的基本使用
1、iptables的安装
这里可以看到我已经安装
2、iptables的开启
在使用Iptables管理防火墙时,需要将firewalld服务关掉
3、iptables的查看
iptables -nL默认查看的是filter链
列表里
Chain INPUT (policy ACCEPT)表示如果没有读到关于自身策略,则按这个默认方式执行
火墙动作 协议 源入口 目的地 数据包的状态
target prot opt source destination
4、iptables的刷新
iptables -F即清空列表
5、iptables的配置文件
/etc/sysconfig/iptables
上面虽然清空了列表,但是策略还是在配置文件里,重启iptables服务就会出现
6、iptables策略的保存
先清空配置文件里的内容
再重启服务,可以看到策略全部被清空
这时我们随便添加一条策略
iptables -A INPUT -j ACCEPT(表示接受所有网络服务)
但此时配置文件里还是没有东西,表示只是临时一次性的
刷新一下就没有了,所以我们要将其保存在配置文件里,
service iptables save永久保存在文件里重启服务后会出现
四、iptables的策略
iptables
-t 后面接内建表的名称
-A 添加一个策略
-I 插入一个策略
-D 删除一个策略
-s 来源(策略所指定的ip)
-d 目的
-p 协议
--dport 端口(策略所指定的接口)
-i 匹配从什么接口进来 lo(回环接口)
-P 修改默认规则
-R 修改某一条规则
-N 增加自定的链
-E 修改链名称
-X 删除自定义链
-j ACCEPT|DROP(不回应)|REJECT 执行的动作
1、iptables -A INPUT -s 172.25.254.205 -p tcp --dport 22 -j ACCEPT
该条策略表示允许172.25.254.205主机通过22端口(ssh服务)访问自己,并将该策略写进filter的INPUT链中
2、iptables -I INPUT 2 -j REJECT
该条策略表示拒绝所有网络服务
链中策略的读取是有顺序的,如果靠前的策略的设定对于数据包有处理,则不读取靠后的策略
3、iptables -D INPUT 2
该策略表示删除filter链的INPUT里的第二条策略
4、iptables -N westos
该策略表示新建自定义链westos
5、iptables -E westos WESTOS
该策略表示修改自定义链的名称
6、iptables -X WESTOS
该策略表示删除自定义链
7、iptables -P INPUT DROP
该策略表示修改filter链的input的默认执行方式为DROP(表示对于所有数据包进行丢弃,没有任何回应)
8、iptables -t raw -nL
该策略表示列出链raw的内容
9、iptables -A INPUT ! -s 172.25.254.5 -p tcp --dport 80 -j ACCEPT
该策略表示除了172.25.254.5以外的所有主机都可以从80端口(apache)访问该主机
10、我们不可能每次都对每个数据包去一次次检验,那样将会加大负载,造成浪费,所以我们可以设定,如下命令
iptables -A INPUT -m state --state ESTABLISHED,RLATED -j ACCEPUT表示已经连接过的数据包和正在连接的数据包直接通过
-m,--state:表示iptables的状态机制,共有四种状态机制
NEW:该数据包想要开始一个新的连接
ESTABLISHED:已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包,即只要发送并接到应答
RELATED:该包是属于已经建立的某个连接所建立的新连接
INVALID:该包不匹配于任何连接,通常这些被DROP
11、iptables -t nat -A POSTROUTING -o eth0 -j SNAT - -to-source 172.25.254.105
POSTROUTING表示路由后转发,即在访问后进行转换
配置两块网卡eth0为172.25.254.105,eth1为192.168.0.105
然后把内核路由打开在/etc/sysctl.conf 里写入net.ipv4.ip_forward = 1
sysctl -p激活
访问端配置一块网卡为192.168.0.205
此时ping192.168.0.105可以通,但要想访问172.25.254.5,还不可以,如何实现
在desktop加上网关设置为server的192.168.0.105
现在可以ssh连接到172.25.254.5,但是w查看显示的是172.25.254.105在连接,实现了伪装,双网卡主机端起到中转路由的作用
12、继续上面,现在想要用172.25.254.5去连接192.168.0.205,怎么实现
在双网卡主机端,输入策略
iptables -t nat -A PREROUTING -i eth0(172) -j DNAT --to-dest 192.168.0.205
此时用172.25.254.5去ssh 172.25.254.105连接后可以看到连接的是192.168.0.205,双网卡主机端起到中转作用
策略里的PREROUTING表示路由前转发,即在访问前进行转换
-i: 表示数据包从eth0网卡进来
-d: 表示目的地址
DNAT 表示目的地址转换