ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

iptables实现网络防火墙

2021-06-04 09:34:32  阅读:165  来源: 互联网

标签:iptables 24 自定义 TOINTERNET 防火墙 192.168 网络 FORWARD


iptables/netfilter网络防火墙:
  (1) 充当网关
  (2) 使用filter表的FORWARD链

192开头的IP地址模拟内网,使用的是虚拟机中的NAT模式,172开头的IP地址这里充当外网IP,使用的是桥接

  172.16.8.78 外网IP地址
  192.168.1.7 内网IP地址

充当网关, 将主机名设置为Firewalld,只是为了区分清楚

hostnamectl set-hostname Firewalld

192.168.1.6上修改网卡配置,将其网关指定到192.168.1.7(NAT)

vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
NAME=eth0
BOOTPROTO=static
PREFIX=24
ONBOOT=yes
NM_CONTROLLED=yes
IPADDR=192.168.1.6
GATEWAY=192.168.1.7

172.16.8.49 充当外网客户端将其网关设置为172.16.8.78,这个IP地址和192.168.1.7是同一个机器,只不过这个是外网地址

vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7bc25b67-d129-5cd8-8ccc-90eaa29767fb
DEVICE=ens33
ONBOOT=yes
IPADDR=172.16.8.49
NETMASK=255.255.254.0
GATEWAY=172.16.8.78

一、在192.168.1.7上修改配置

vim /etc/sysctl.conf 

net.ipv4.ip_forward=1

使其生效

sysctl -p

此时在192.168.1.6和172.16.8.49上互拼对方都是可以访问的

二、设置允许192网段的IP地址可以ping到172网段,172网段ping不到192网段,也可以理解为从内网可以ping到外网,外网ping不到内网

1、在网关主机192.168.1.7IP地址的主机上设置iptables ,穿过这个主机的所以在FORWARD上设置,拒绝所有(默认accept)

iptables -A FORWARD -j REJECT

这时192.168.1.6和172.16.8.49 两台主机是不通的

响应报文是0,请求报文类型是8

2、在上一条命令前添加一条新的记录 ,直接通过-A追加的话是不生效的,前面一条规则生效了,就不匹配后面一条规则了。

iptables -I FORWARD 1 -s 192.168.1.0/24 -p icmp --icmp-type 8 -j ACCEPT

iptables -I FORWARD 1 -d 192.168.1.0/24 -p icmp --icmp-type 0 -j ACCEPT

插入一条几记录,1表示在第一条前面,-s 源地址 ,-p icmp 指定ICMP协议 ,-d目标地址。

3、删除掉其中0的记录,内网也就ping不到外网了,只有去没有回的记录了。

iptables -D FORWARD 1

4、不用0记录,启用状态跟踪

iptables -I FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT

能ping出去,回来就算ESTABLISHED,现在就能ping通外网

5、允许内网访问外网的http服务

iptables -I FORWARD 2 -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT

定义从内网的192.168.1.0/24这个网段,可以访问外网的80端口,因为第4条添加了状态跟踪就不需要考虑回来的问题了。

iptables -R FORWARD 2 -s 192.168.1.0/24 -p tcp -m multiport --dports 80,443 -j ACCEPT

这里直接替换掉刚刚的命令,80和443不是连续的端口,所以需要-m指定模块  multiport,也可以写两条命令

6、内部web服务器,外部可以访问

iptables -I FORWARD 2 -d 192.168.1.6 -p tcp --dport 80 -j ACCEPT

在forward 第2条钱插入一条,目标地址192.168.1.6 的80 端口,允许访问

插入在第几条没关系,只要在拒绝所有前面就行,

三、策略太多,新建一个自定义链,将你需要定义的规则放在一个自定义的链中,链接到系统自带的五个链中。

链管理:
  -N:new, 自定义一条新的规则链
  -X:delete,删除自定义的空的规则链
  -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:
  ACCEPT:接受
  DROP:丢弃
-E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除

1、新建自定义链,用于从局域网访问外网,链名TOINTERNET

iptables -N TOINTERNET

2、允许外网访问内网的192.168.1.0/24这个网段的80和443端口,将这条规则添加到TOINERNET这个自定义的链中

iptables -A TOINTERNET -s 192.168.1.0/24 -p tcp -m multiport --dport 80,443 -j ACCE
PT

3、允许icmp这个类型的8 访问192.168.1.0/24 将这条记录添加到TOINTERNET这个自定义链中

iptables -A TOINTERNET -s 192.168.1.0/24 -p icmp --icmp-type 8 -j ACCEPT

4、将刚刚创建的链关联到forward链中

iptables -I FORWARD 2 -j TOINTERNET

在foreword第二条添加了一个TOINERNET规则(类似于函数和调用函数的关系)

5、在TOINTERNET替换掉第一条规则 ,允许22,80,444访问

iptables -R TOINTERNET 1 -s 192.168.1.0/24 -p tcp -m multiport --dport 22,80,443 -j ACCEPT

自定义链的好处,在forward规则中更清晰,如果需要更改对应的规则,不需要修改forward中的规则,直接修改对应的链即可

四、删除自定义链

直接删除链是删除不了的

1、取消关联,找到FORWARD中关联的链,删除,我这里是第2条

iptables -D FORWARD 2

2、清空TOINTERNET 链

iptables -F TOINTERNET

3、删除TOINTERNET链

iptables -X TOINTERNET

 

标签:iptables,24,自定义,TOINTERNET,防火墙,192.168,网络,FORWARD
来源: https://www.cnblogs.com/alexlv/p/14848180.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有