Linux中的火墙管理之Iptables

########Iptables########
一.iptables三表五链:
1.filter(作用是过滤数据包;内核模块为iptables_filter.)
INPUT链:进来的数据包应用此规则链中的策略(经过内核)
FORWARD链:转发数据包时应用此规则链中的策略(经过内核进行路由)
OUTPUT链:外出的数据包应用此规则链中的策略(经过内核)

2.nat表(作用是用于网络地址转换(IP、端口); 内核模块为iptable_nat.)
INPUT链:进来的数据包应用此规则链中的策略(不经过内核)
PREROUTING链:对数据包作路由选择前应用此链中的规则(目的地地址转换DNAT)
POSTROUTING链:对数据包作路由选择后应用此链中的规则(源地址转换SNAT)
OUTPUT链:外出的数据包应用此规则链中的策略(不经过内核)

3.mangle表——五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
注:mangle表企业中几乎用不到,常用的就是filter和nat表,只有当它们不够用时才会用到mangle表

二.iptables与firewalld对比:
1.firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;
2,firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。
3.firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。

总结iptables和firewalld一样需要通过内核的netfilter(netfilter 组件也称为内核空间,是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。)来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。
实验环境:
1.systemctl stop firewall ##停止firewall火墙服务
systemctl mask firewall ##冻结firewall火墙服务
在这里插入图片描述
2.yum install iptables-services ##下载iptables工具软件包
systemctl start iptables ##开启iptables管理服务
systemctl enable iptables ##开机自启
在这里插入图片描述
在这里插入图片描述
三.iptables基本命令:
1. iptables -nL ##以数字形式列出表链中的所有规则(默认为filter表)
在这里插入图片描述
< -n: 数字输出,IP地址和端口会以数字的形式打印,默认情况下,程序试显示主机名、网络名或者服务(只要可用>
< -L:列出(list)指定链中所有的规则进行查看>

2. iptables -t nat -nL ##列出nat表中所有规则
在这里插入图片描述
iptables -t mangle -nL ##列出mangle表中所有规则
在这里插入图片描述
< -t:指定表名>
3. iptables -F ##清空表中所有规则
iptables -nL ##查看表中规则,会发现所有的source都被清除掉
在这里插入图片描述
但当我们systemctl restart iptables重启后source就都回来了
在这里插入图片描述
所以如果我们想要保留清空后的数据,我们只要在清空后执行 service iptables save 命令进行保存当前数据就行了
在这里插入图片描述
4. iptables -N westos ##新建westos链
在这里插入图片描述
< -N:根据给出的名称建立一个新的用户定义链>
5. iptables -E westos WESTOS ##将westos链名改为WESTOS
在这里插入图片描述
< -E:根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响>
6. iptables -X WESTOS ##删除WESTOS链
在这里插入图片描述
< -X:删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则>
7.iptables -t filter -A INPUT -s 172.25.254.5 -p tcp --dport 22 -j REJECT ##拒绝5号主机的ssh连接
在这里插入图片描述
在这里插入图片描述
参数意义:
< -t:指定表名>
< -A:在指定链的末尾添加一条新的规则>
< -s:指定源地址,可以是主机名、网络名和清楚的IP地址>
< -p:规则或待检查包的协议。指定协议可以是tcp等>
< --dport:端口号(22为ssh服务的端口号)>
< -j:目标跳转(指定规则的目标)>

8. iptables -t filter -A INPUT -s 172.25.254.5 -p tcp --dport 22 -j ACCEPT ##允许5号主机ssh连接
iptables -nL ##查看,会有两条规则
在这里插入图片描述
9. iptables -D INPUT 1 ##删除INPUT链中第一条规则
iptables -nL ##进行查看
在这里插入图片描述
10.刚才我们添加第二条规则时,它会默认加到第一条规则后面,接下来我们指定位置添加
iptables -I INPUT 1 -s 172.25.254.5 -p tcp --dport 22 -j REJECT ##添加新规则在链的头部(第一条)
在这里插入图片描述
< -I:根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会被插入链的头部。这也是不指定规则序号时的默认方式。>
11.iptables -P INPUT DROP ##修改INPUT 链的目标规则为DROP
在这里插入图片描述
在这里插入图片描述
四.指定特定用户允许某服务:
1.只允许某一客户端(5号主机)通过ssh连接,其他都拒绝:
(1).首先我们可以iptables -A INPUT -j REJECT ##给input链添加reject拒绝所有的规则
(2).接着iptables -I INPUT 1 -s 172.25.254.5 -p tcp --dport 22 -j ACCEPT ##给input链添加允许5
号主机进行ssh连接的规则,并放到第一条
在这里插入图片描述
这样就可以达到只允许特定客户端通过某种服务来访问自己,其他都拒绝的效果
在这里插入图片描述
2.除了5号主机,其他主机都可以通过ssh连接
(1)首先iptables -F ##清空所有规则
(2)接着iptables -A INPUT ! -s 172.25.254.4 -p tcp --dport 22 -j REJECT ##除了4号主机允许
其他都拒绝通过ssh连接**(!是除过的意思)**
在这里插入图片描述
在这里插入图片描述
五.SNAT(源地址转换)与DNAT(目的地地址转换):
此实验环境与上一篇firewall火墙中的地址转换一样,给desktop主机添加一个网卡,ip设为1.1.1.105;接着讲server主机ip设为1.1.1.205,加GATEWAY网关为1.1.1.105。
1.目的地地址转换:
(1).iptables -t nat -A PREPOUTING -i eth0 -j DNAT --to-dest 1.1.1.205 ##意思是当有数据包
从我的eth0网卡进入时,指定DNAT协议来处理这个数据包即对它进行目的地转换,目的地
为1.1.1.205这台主机
在这里插入图片描述
< -i:指定数据包从哪块网卡进入>
< -j:指定动作来处理数据包>

(2) 测试:我们通过6号主机ssh root@172.25.254.105来连接我的desktop主机,连通后我们
ifconfig查看一下ip时会发现ip为1.1.1.205
在这里插入图片描述
这就是DNAT目的地地址转换的效果
2.地址伪装:
(1).iptables -t nat POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.105 ##意思是当有
数据包从我的eth0网卡出去时,指定SNAT协议来处理数据包即进行源地址转换,数据包的
源为172.25.254.105
在这里插入图片描述
< -o:指定数据包从哪一块网卡出去>
< --to-source:执行SNAT动作后数据包的源地址>

(2).测试:我们用server(ip为1.1.1.205)主机ssh root@172.25.254.6来连接6号主机,连通后我
们w -i查看是哪台主机连接6号主机的,此时显示的是172.25.254.105主机,也就是我的
desktop主机
在这里插入图片描述
这就是源地址转换的效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值