iptables

一、防火墙概述

1.什么是防火墙

​ 防火墙通常具备以下几个特点。

(1)位置权威性。
(2)检测合法性。
(3)性能稳定性。
2.防火墙的种类
(1)包过滤防火墙
(2)代理防火墙
(3)状态检测技术

二、iptables简介 firewalld

早期的Linux系统采用过ipfwadm作为防火墙,但在2.2.0核心中被ipchains所取代。

Linux 2.4版本发布后,netfilter/iptables信息包过滤系统正式使用。

Netfilter/iptables IP数据包过滤系统实际由netfilter和iptables两个组件构成。Netfilter是集成在内核中的一部分,它的作用是定义、保存相应的规则。而iptables是一种工具,用以修改信息的过滤规则及其他配置。用户可以通过iptables来设置适合当前环境的规则,而这些规则会保存在内核空间中。

对于Linux服务器而言,采用netfilter/iptables数据包过滤系统,能够节约软件成本,并可以提供强大的数据包过滤控制功能,iptables是理想的防火墙解决方案。

1、工作原理
1.1默认的4个规则表

具有相同功能的规则的集合

列表查看各个规则 :
iptables -t filter -L -n(数字格式显示IP和端口) 
  • raw表:确定是否对该数据包进行状态跟踪

  • mangle表:为数据包设置标记

  • nat表:修改数据包中的源、目标ip地址或端口,地址转换功能

  • filter表:确定是否放行该数据包(过滤)

1.2默认的5种规则链:
  • INPUT:处理入站数据包
  • OUTPUT:处理出站数据包
  • FORWARD:处理转发数据包
  • POSTROUTING:在进行路由选择后处理数据包
  • PREROUTING:在进行路由选择前处理数据包

其中input、output链主要用在“主机型防火墙”中,主要针对服务器本机进行保护;

而FORWARD\POSTROUTING\PREROUTING多用在“网络型防火墙”中,如使用Linux防火墙作为网关服务器,在公司内网与Ineternet之间进行安全控制。

2、匹配顺序
(1)规则表之间的顺序从左到右:raw mangle nat filter
(2)规则链之间的顺序:不同链的处理时机比较固定,顺序取决于数据包的流向。

入站数据流向: 来自外界的数据包到达防火墙后,首选被PREROUTING链处理,然后进行路由选择;如果数据包的目的地址是防火墙本机,交给INPUT链进行处理,通过以后再交给系统上层应用程序进行响应。

转发数据流向: 来自外界的数据包到达防火墙后,首选被PREROUTING链处理,然后进行路由选择;如果数据包的目标地址是其他外部地址,则交给FORWARD链进行处理,最后交给POSTROUTING链进行处理。

出站数据流向:防火墙本机向外部地址发送数据包,首选被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链进行处理。

(3)规则链内部各条防火墙规则之间的顺序:从上往下,一旦匹配,立即终止。
(4)Centos7中使用iptables
systemctl stop firewalld 关闭防火墙
yum install iptables-services 安装或更新服务
再使用systemctl enable iptables 启动iptables
最后 systemctl start iptables 打开iptables

再执行service iptables save

重启iptables服务:

service iptables restart
3、iptables语法格式
iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作]

举例:

iptables -t filter -A INPUT -s 192.168.10.0/24 -d 192.168.10.1 -p tcp --dport 80 -j ACCEPT
service iptables save    设置完后要保存设置的规则

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  确定  ]
systemctl restart iptables  重启服务新规则生效

举例:

iptables -L  没有-t 指定表名,默认查看的是fileter表中的信息
iptables -L INPUT  只看INPUT链
iptables -L --line-number  查看的是fileter表中的信息,并显示行号  
iptables -F  没有-t 指定表名,默认清空fileter表中的信息
iptables -t fileter -A INPUT -d 127.0.0.1 -p tcp --dport 22 -j ACCEPT  在链尾追加一条规则
iptables -I INPUT -s 192.168.75.1 -d 127.0.0.1 -p tcp --dport 22 -j ACCEPT  在第一个位置插入一条规则
iptables -I INPUT 2 -s 192.168.75.1 -d 127.0.0.1 -p tcp --dport 22 -j DROP 在第2条规则前插入一条规则
iptables -D INPUT 1  删除INPUT链中的第一条规则
iptables -P INPUT DROP   设置默认策略为拒绝所有连接
iptables -P INPUT ACCEPT  设置默认策略为允许已建立的规则进行连接
iptables -h     查看帮助信息
man iptables    查看iptables手册
4、规则的匹配条件

可直接使用,不依赖于其他的条件或扩展模块
包括网络协议、IP地址、网络接口等匹配方式

iptables -t filter INPUT -s 192.168.0.0/24 -j REJECT 
隐含条件匹配

一般需要以特定的协议匹配作为前提,包括端口、TCP标记、ICMP类型等匹配方式,源端口 2000以上的随机端口

显式条件匹配

​ 需要使用“-m扩展模块”的形式明确指定匹配方式

5、举例说明
1、拒绝192.168.0.1访问web服务
Iptables  -A INPUT -s 192.168.0.1 -p tcp --dport 80 -j REJECT
2、拒绝192.168.0.0/24ping通服务器
iptables -A INPUT -s 192.168.0.0/24 -p icmp -j REJEC
3、允许192.168.1.0/24访问服务器的21与80端口
iptables -A INPUT -s 192.168.1.0/24 -m multiport -p tcp --dports 21,80 -j ACCEPT
6、练习:
1、建立规则:
iptables -A INPUT -p icmp -j DROP

iptables -A OUTPUT -p udp --sport 25 -j DROP

iptables -I INPUT -s 192.168.0.0/24 -j REJECT
2、删除规则:
Iptables -D INPUT -p icmp -j DROP

iptables -D INPUT 1
3、基于TCP包的目的端口来匹配包
  iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
4、基于目标网络来匹配包
 iptables -I OUTPUT -d 192.168.1.0/24 -j ACCEPT
5、以包离开本地所使用的网络来匹配
 iptables -A OUTPUT -o eth1 -j ACCEPT
1、查看nat表中所有链的规则
   iptables -t nat  -L OUTPUT
2、查看filter表中FORWARD链的规则
 iptables -t filter -L FORWARD 
3、为filter表的INPUT链添加一条规则,规则为拒绝所有使用ICMP协议的数据包
iptables -A INPUT -p icmp -j DROP将数据包丢弃,不回应

REJECT丢弃并回应
4、为filter表的INPUT链添加一条规则,规则为允许访问TCP协议的80端口的数据包通
  iptables  -A INPUT -p tcp --dport 80 -j ACCEP
5、在filter表中INPUT链的第2条规则前插入一条新规则,规则为不允许访问TCP协议的53端口的数据包通过。
查看:iptables -L -n --line-number  (显示规则的序号:num)

iptables  -I INPUT 2 -p tcp --dport 53 -j DOP
6、在filter表中INPUT链的第1条规则前插入一条新规则,规则为允许源IP地址属于172.16.0.0/16网段的数据包通过
 iptables  -I INPUT 1 -s 172.16.0.0/16 -j ACCEPT
7、删除filter表中的第2条规则。
 iptables  -D INPUT 
8、清除filter表中INPUT链的所有规则。
 iptables -t filter -F INP
9、禁止员工访问域名为www.xxxx.org的网站(域名必须存在,且能被解析,否则

会出错)

  iptables -A FORWARD -d [www.xxxx.org](http://www.xxxx.org) -j DROP

   iptables -A INPUT -d [www.xxxx.org](http://www.xxxx.org) -j OP
10、禁止员工访问IP地址为212.1.2.3的网站。
 iptables -A FORWARD -d 212.1.2.3 -p tcp --port 80 -j DRO
补充:
备份规则集:iptables-save > /etc/iptables-save

恢复规则集:iptables-restore < /etc/iptables-save

保存:service iptables save

三、综合案例

NAT:网络地址转换

源地址转换(SNAT):通常指私有地址转换成公有地址,内网访问互联网。

目标地址转换(DNAT):公网地址转换成私有地址,互联网访问内网服务器。

假如某公司需要Internet接入,由ISP分配IP地址202.112.113.112。采用iptables作为NAT服务器接入网络,内部采用192.168.1.0/24地址,外部采用202.112.113地址。为确保案例需要配置防火墙功能,要求内部web服务器192.168.1.100通过端口映射方式对外提供服务。网络拓朴图如下:

SNAT:源地址转换,通常指私有地址转换为公有地址,(内部数据发往外网的数据)对应的链是postrouting(路由规则后的动作)

DNAT:目标地址转换,通常指公有地址转换为私有地址,(外网数据发往内网的数据)

对应的链是prerouting(路由规则前的动作)
局域网内的web服务器192.168.1.100
Linux网关服务器:eth0:202.112.113.112 eth1:192.168.1.1
Inetrnet中的客户机:202.113.111
推荐实现步骤:


1、确认已开启网关的路由转发功能
  vim /etc/sysctl.conf 
 sysctl -p
2、添加使用DNAT策略的防火墙规则
iptables -t nat -A PREROUTING -i eth1 -d 10.1.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.1
3、源地址转换
客户端的网关--》防火墙的内网地址--》防火墙开转发
防火墙SNAT规则的操作:
  iptables -t nat -I POSTROUTING -s 192.168.100.0/24 -j SNAT --to-source 172.16.100.20
  开启转发:
  sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
  sysctl -p 
测试效果:
在客户端ping 172.16.100.10能ping通 。
去互联网机器上查看访问的ip地址是防火墙的外网地址。172网段的。
DNAT目的地址转换,意为把外网地址转换成私网地址。
DNAT是destination network address translation的缩写

当互联网上的用户来访问公司内网的服务器的时候,把公网的ip地址转换成公司的内网ip地址,当在服务器查看的时候发现是内网地址来访问的,这就是DNAT的作用。

| 互联网客户端      | 防火墙              | 内网服务器      |
| ----------------- | ------------------- | --------------- |
| IP:172.168.100.2 | 外网:172.168.100.1 | IP:192.168.1.2 |
| GW:172.168.100.1 | 内网:192.168.1.1   | GW:192.168.1.1 |

开启:转发
iptables -t nat -I PREROUTING -d 172.168.100.1 -j DNAT --to-destination 192.168.1.2

测试ping通了。

例:200台客户机,IP地址范围为192.1610.1.1-192.1610.1.254,掩码为255.255.255.255.0。Mail服务器:IP为192.1610.1.254/24;Ftp服务器:IP为192.1610.1.253/24;Web服务器:IP为192.1610.1.25/24。公司网络拓扑图如图所示。

在这里插入图片描述
需求分析
公司的内部网络为了保证安全性,首先要删除所有规则设置,并将默认规则设置为DROP,然后开启防火墙对于客户机的访问限制,打开Web、Msn、QQ以及mail的相应端口,并允许外部客户端登录Web服务器的80、22端口。
策略配置:

停掉firewalld防火墙以免冲突 并且下载iptables防火墙
在这里插入图片描述
在这里插入图片描述
(1)配置默认策略
删除策略
在这里插入图片描述
设置默认策略
在这里插入图片描述
在这里插入图片描述(2)允许回环地址
在这里插入图片描述
(3)连接状态设置
在这里插入图片描述
(4)设置80端口转发
在这里插入图片描述
(5)允许DNS查询
在这里插入图片描述
(6)允许访问服务器的SSH
在这里插入图片描述
(7)不允许内网主机登录MSN和QQ
QQ能够使用TCP80、8000、4000登录,MSN通过TCP1863、443验证。需要禁止这些端口的FORWARD转发,即可以。
在这里插入图片描述
(8)允许内网主机收发邮件
客户端发送邮件时访问邮件服务器TCP25端口,接收邮件时访问,可能使用的端口则较多,UDP协议以及ICP协议的端口:110,143,993以及995,如下所示:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值