Linux-iptables构建网络防火墙

1.理解iptables表和链

如图:netfilter钩子与iptables表和链的处理顺序
在这里插入图片描述
五个表
filter 主要用于过滤包,是系统预设的表,该表内建3个链:

INPUT,OUTPUT,FORWARD。INPUT链作用于进入本机的包,OUTPUT链作用于本机送出去的包,FORWARD链作用于那些跟本机无关的包。

nat表 主要用于网络地址转换,它也有三个链。

PREROUTING链的作用是在包刚刚到达防火墙时改变它的目的地址(如果需要的话),OUTPUT链的作用是改变本地产生的包的目的地址,POSTROUTING链的作用是在包即将离开防火墙时改变其源地址。

mangle表

主要用于给数据包做标记,然后根据标记去操作相应的包。这个表几乎不怎么用,除非像称为一个高级网络工程师。

raw表

可以实现不追踪某些数据包,默认系统的数据包都会被追踪,但追踪势必消耗一定的资源,所以可以用raw表来指定某些端口的包不被追踪。

security表,

在centos6中是没有的,他用于强制访问控制(MAC)的网络规则。

netfilter的5个链

PREROUTING: 数据包进入路由表之前。

INPUT:通过路由表后目的地为本机。

FORWARDING: 通过路由表后,目的地不为本机。

OUTPUT: 由本机产生,向外转发。

POSTROUTONG: 发送到网卡接口之前。

2.iptables 语法

[root@bogon ~]# getenforce
Enforcing                  开启状态
[root@bogon ~]# setenforce 0
[root@bogon ~]# getenforce
Permissive                 暂停状态,重启后恢复

2.1脚本编写

!/bin/sh
首先清除所有规则
iptables -F
#以下两行允许某些调用localhost的应用访问
iptables -A INPUT -i lo -j ACCEPT #规则1
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT#规则2
#以下一行允许从其他地方 ping
iptables -A INPUT -p icmp --icmp-type echo-reguest -j ACCEPT#规则3
#以下一行允许从其他主机、网络设备发送MTU调整的报文
#在一些情况下,例如通过工Psec VPN隧道时,主机的MTU需要动态减小
iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT #规则4
#以下两行分别允许所有来源访问TCP 80、443端口
iptables -A INPUT -p tcp --dport 80-j ACCEPT #规则5
iptables -AINPUT -p tcp --dport 443 -jACCEPT#规则6
#以下一行允许104.224.147.43来源的IP访同TCP 22端口(OpenssH)
iptables -A INPUT -p tcp -s 104.224.147.431 --dport 22 -j ACCEPT #规则7
#以下一行允许104.224.147.43来源的IP访间 UDP 161端口(SNMP)
iptables -A INPUT-p tcp -s 104.224.147.431 --dport 161 -j ACCEPT #规则8#以下一行禁止所有其他的进入流量
iptables -A 工NPUT -j DROP#规则9 白名单机制的贯穿原则
#以下一行允许本机响应规则编号为01~08的数据包发出
iptables -A OUTPUT -m state--stace bonDuaJ AccBPTY#规则10
#以下一行禁止本机主动发出外部连接
iptables -AOUTPUT -jDROP #规则11 防止反弹
#以下一行禁止本机转发数据包
iptables -A FORWARD -DROP#规则12

3.iptables网络地址转换

在这里插入图片描述

3.1源地址转化

1.在服务器B上,指定其网络的默认网关是10.128.70.112(即服务器A的内网地址)。
2.在服务器A上,启用路由功能。启用的方法命令如下:

sysctl -w net.ipv4.ip_forward=1

3.在服务器A上,设置iptables规则如下:

iptables -t filter -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to x.y.z.173 #eth0是服务器A的外网网卡,x.y.z.173是服务器A的外网IP

3.2目的地址转换

目的地址转换用于外部直接访问无外网IP的服务器B,命令如下:

iptables -t nat -A PREROUTING -d x.y.z.173 -p tcp -m tcp --dport 1521 -j DNAT --to-destination 10.128.70.111:1521 #改写目的地址为:10.128.70.111,目的端口为1521

iptables -t nat -A POSTROUTING -d 10.128.70.111 -p tcp -m tcp --dport 1521 -j SNAT --to-source 10.128.70.112 #改写源地址ip为服务器A的内网ip,此时在服务器B上相当于是与服务器A在进行通信

参考:

https://blog.csdn.net/weixin_42478365/article/details/120711982
。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值