iptables

iptables:iptables有多种功能,每一种功能都用一张表来实现,最常用的功能是防火墙和NAT。从RHEL7开始,默认的防火墙为firewalld,但是它的底层仍然在调用iptables。
iptables有四个表:raw(状态跟踪表)、mangle(包标记表)、nat(地址转换表)、filter(过滤表-默认的表)。
环境搭配:
client1:eth0->192.168.88.10,网关192.168.88.11
node1:eth0->192.168.88.11,eth1->192.168.99.11
server1:eth1->192.168.99.100,网关192.168.99.11
配置双网卡通信
此时就能使用88网段ping99网段
在node1主机上安装iptables服务,先关闭firewalld防火墙
防火墙filter表:配置iptables时,不指定表就是使用filter表;配置时不指定规则链,则配置所有链;可以向规则链中加入很多规则,数据包进入该链时,从上向下匹配,一旦匹配就停止,开始应用规则。如果全都不匹配,则应用默认规则;命令选项、链名、目标操作使用大写字母,其他小写字母。
指定filter表和不指定表查看表的结果都是一样的
filter中的三条链:
INPUT:数据包的目标地址是自己,则进入INPUT链。
OUTPUT:数据包的源地址是自己,则进入OUTPUT链。
FORWARD:数据包穿过自己,则进入FORWARD链。
iptables常用选项:
-A:追加规则--iptables -A INPUT
-D:删除规则--iptables -D INPUT 1(编号)
-R:修改规则--iptables -R INPUT 1 -s 192.168.88.10 -j DROP
-I:插入规则--iptables -I INPUT 1 --dport 80 -j ACCEPT (成为规则1)
-L:查看规则--iptables -L INPUT (列出该规则链中的所有规则)
-F:清空规则--iptables -F
-P:设置默认规则--iptables -P INOUT DROP
通用参数:
-p:协议--iptables -A INPUT -p tcp
-s:源地址--iptables -A INPUT -s 192.168.88.1
-d:目的地址--iptables -A INPUT -d 192.168.88.1
--sport:源端口--iptables -A INPUT -p tcp --sport 22
--dport:目的端口--iptables -A INPUT -p tcp --dport 22
-i:指定入口网卡--iptables -A INPUT -i eth0
-o:指定出口网卡--iptables -A INPUT -i eht0
-j:指定要进行的处理动作,常用的ACTION:DROP(丢弃)、REJECT(明确拒绝)、ACCEPT(接收)。
-n:以数字形式显示
查看filter表中的规则,-t指定表名。所有的规则链都是空的。iptables -t filter -L
不指定表名也是filter表
开启iptables服务
此时规则链中就会增加一些规则
清空规则:iptables -F 。不指定规则链就清空所有的规则
可以设置默认拒绝,然后明确允许;也可以设置默认允许,然后明确拒绝。
向INPUT链的默认规则设置DROP丢弃,-P设置默认规则。
先设置宿主机的IP地址为允许访问,否则修改默认规则为DROP该ssh就会断开
修改默认规则为DROP
-n以数字形式显示
当其他主机访问是就会ping不通,node1主机既不拒绝也不允许,会把请求访问的包丢弃。
当使用node1主机ping192.168.88.10主机时也不能ping通,因为访问外面主机时OUPPUT默认的是ACCEPT允许规则可以访问,当192.168.88.10主机要返回请求时,会被node1主机的INPUT规则链中的规则所拒绝。网络通信是双向的。
允许88网段的所有主机访问node1主机的ssh端口
 iptables -I INPUT 1 -s 192.168.88.0/24 -p tcp --dport 22 -j ACCEPT
此时就能远程登录了
但ping还是不能ping通的,因为只是设置的所有主机访问ssh的端口被允许,而其他主机访问的数据包还是丢弃的。
当安装http服务时会安装不上
因为使用的yum为网络yum源,设置的INPUT规则链中没有允许240的ftp服务端口的规则,所以240主机返回的数据包会被丢弃
设置规则240主机被允许
此时就能安装http服务了
开启http服务
当其他主机访问11主机的http服务会被丢弃,
设置所有主机允许访问11主机的80端口的规则。不指定IP 地址则默认所有地址
此时就能访问了
禁止宿主机1地址ping node1主机11IP地址,使用icmp协议没有端口
iptables -A INPUT -s 192.168.88.1 -p icmp -j REJECT。但该规则位于允许宿主机所有访问所有协议规则的下面,所以会执行允许访问所有协议规则不会执行拒绝ping的规则。
此时还是能够ping通
将该规则删除,重新写在最上面
插入没有指明位置默认插入到第一个 iptables -I INPUT -s 192.168.88.1 -p icmp -j REJECT
此时宿主机就不能ping通node1了
每次系统开机该防火墙数据就会消失,需要保存数据到/etc/sysconfig/iptables文件中,因为iptables重启会自动加载该文件。
iptables-save将防火墙规则打印到屏幕
将防火墙打印到屏幕的内容导入到/etc/sysconfig/iptables中
当自己访问自己的时候就不能访问
因为数据是双向通信的,自己访问自己的80端口时会随机生成一个大于1024的源端口(如1234),访问自己的80目标端口,能够成功的访问到。但当访问请求传递回的时候目标端口就变成的随机生成的那个大于1024的源端口(1234),而源端口就变成的80端口,此时没有设置改源端口的允许规则所以就访问失败。
设置192.168.88.11的所有端口被允许放行
iptables -I INPUT -d 192.168.88.11 -p tcp --sport 80 -j ACCEPT
或者允许所有的端口的目标端口被放行iptables -I INPUT -p tcp --sport 80 -j ACCEPT
此时自己就能够访问自己的80端口了
设置自己访问自己的ssh服务
iptables -I INPUT -p tcp --sport 22 -j ACCEPT
此时就那个ssh自己了
FORWARD链:
在server1上安装http服务
此时客户端能够访问服务器
在node1上配置防火墙保护server1:1、默认拒绝所有数据包通过。2、从server1所在网段发往client1所在网段的包全部允许。3、从client1所在的网段到server1所在网段,允许ICMP、ssh、80、443端口通过。
FORWARD默认允许所有通过
1、设置默认拒绝所有数据包通过iptables -P FORWARD DROP
此时server1和client1完全不通
2、设置从server1所在网段发往client1所在网段的包全部允许
iptables -A FORWARD -s 192.168.99.0/24 -d 192.168.88.0/24 -j ACCEPT
此时server不能ping通client因为数据是双向的,当client回应server是会被拒绝。
3、设置从client1所在的网段到server1所在网段,允许ICMP、ssh、80、443端口通过。
此时就那个连接到server1主机了
但ssh服务还是不能连接
设置源22端口允许通行
iptables -A FORWARD -s 192.168.88.0/24 -d 192.168.99.0/24 -p tcp --sport 22 -j ACCEPT
此时就那个远程登录客户端了
设置server访问客户端的http通行
 iptables -A FORWARD -s 192.168.88.0/24 -d 192.168.99.0/24 -p tcp --sport 80 -j ACCEPT
清空FORWARD规则链,重新编写
-m multiport 允许连续设置端口,使用逗号隔绝非连续的端口,使用冒号来表示连续端口(如10:120)
iptables -A FORWARD -s 192.168.88.0/24 -d 192.168.99.0/24 -p tcp -m multiport --dport 22,80,443 -j ACCEPT
端口可以使用范围来表示,IP地址也可以使用范围来表示
拒绝192.168.88.10-20访问192.168.99.50-150。-m是引导扩展模块,src-range是源地址范围,dst-range是目标地址范围
 iptables -I FORWARD -m iprange --src-range 192.168.88.10-192.168.88.20 --dst-range 192.168.99.50-192.168.99.150 -j REJECT
此时就不能连接server1主机了
NAT:网络地址翻译、网络地址转换。NAT技术的产生主要是解决ipv4地址不够用,NAT一般用于将私有地址转换成全球唯一的公有地址、
私有地址:A类:10.0.0.0-10.255.255.255、B类:172.16.0.0-172.31.255.255、C类:192.168.0.0-192.168.255.255
私有地址如果需要访问互联网中的公有地址进行上网,可以通过NAT技术将私有地址转换成公有地址,再访问外界。
配置SNAT:S(Source)
查看client访问server的记录
访问server
此刻就有client的访问记录
查看NAT表  iptables -t nat -L
向nat表中的POSTROUTING链(路由后)中添加规则,将源地址192.168.88.0/24转换创外网卡地址  iptables -t nat -A POSTROUTING -s 192.168.88.0/24 -j MASQUERADE
此时客户端访问server,就会变成99网段的地址
  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值