Iptables与acl
一、 firewalld与iptables的关系
1、 centos7里面firewalld与iptables共存;centos5、6只有iptables;
2、 firewalld的底层调用的是iptables,建立在iptables之上;
二、firewalld
1、firewalld使用区域管理,划分不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流;/usr/lib/firewalld/zones/
2、firewalld防火墙判定原则:
(1) 查看客户端请求中来源ip地址,查看自己所有区域中规则,哪个区域中有该源IP地址规则,则进入该区域。
(2) 默认情况下为public区域。
3、 firewalld常见区域:
(1) public:仅允许访问本机的ssh、dhcp、ping服务。
(2) trusted:允许任何访问。
(3) block:拒绝任何来访请求,明确拒绝客户端。
(4) drop:丢弃任何来访的数据包,不给任何回应。
4、 firewalld常见命令:(–permanent永久添加)
#查看默认区域:
firewall-cmd --get-default-zone
#修改默认区域:
firewall-cmd --set-default-zone=trustd
#添加允许的协议:
firewall-cmd --zone=public --add-server=ftp
#查看区域详情:
firewall-cmd --zone=public --list-all
#临时开放80端口:
firewall-cmd --add-port=80/tcp
#临时关闭80端口:
firewall-cmd --remove-port 80/tcp
#加黑名单:
firewall-cmd --zone=block --add-source=192.168.99.100/24
#重新加载防火墙配置:
firewall-cmd –reload
三、iptables
1、iptables是Linux防火墙的一个工具,可以根据预定义的规则,来给进出的网络流量设置不同的策略。其中,iptables的规则是基于"表"和"链"的,iptables有多种功能,每一种功能都用一张表来实现。
2、四张表:
(1). filter
表:默认情况下,Linux系统使用的是filter表,用于过滤进出网络接口的数据包,是iptables中最常用的表。
(2). nat
表:用于处理网络地址转换(NAT),包括负载均衡和反向代理等功能。
(3). mangle
表:用于修改数据包的TOS(Type of Service)字段和TTL(Time to Live)值,实现更强大的QoS(Quality of Service)功能。
(4). raw
表:用来配置和控制内核数据包的处理方式。
3、五条链:
(1). INPUT:输入链,用于针对进入本地计算机的数据包做出处理。
(2). OUTPUT:输出链,用于处理本地计算机发出的数据包和响应。
(3). FORWARD:转发链,用于在本地计算机之间转发数据包。
(4). PREROUTING:预路由链,用于在路由之前处理数据包,如DNAT(目标地址转换)和源地址转换等。
(5). POSTROUTING:后路由链,用于在路由之后处理数据包,如SNAT(源地址转换)和MASQUERADE(伪装地址)等。
4、 规则链内的匹配顺序
(1):顺序比对,匹配即停止(log除外);
(2):若无任何匹配,则按该链的默认策略处理;
5、iptables命令基本用法
(1) iptables -t 表名 选项 链名 条件 -j 目标操作
注意事项:
- 可以不指定表,默认为filter表;
- 可以不指定链,默认为对应表的所有链;
- 选项、链名、目标操作要大写,其他小写;
(2) 命令选项
添加规则:
- -A 在链的末尾添加一条规则
- -I 在链的开头或指定序号插入一条规则
查看规则:
- -L 列出所有的规则条目
- -n 已数字形式显示地址、端口等信息
- --line-numbers 查看规则时,显示规则的序号
删除规则:
- -D 删除链内指定序号或内容的一条规则
- -F 清空所有的规则
默认规则:
- -P 为指定的链设置默认规则
(3) 命令条件
-p 协议名、-s 源地址、-d 目的地址、-i 收数据的网卡、-o 发数据的网卡、–sport 源端口、–dport 目标端口、–icmp-type ICMP类型;
(4) 目标操作
- ACCEPT:允许通过、放行
- DROP:直接丢弃,不给出任何回应
- REJECT:拒绝通过,必要时会给出提示
- LOG:记录日志,然后传给下一条规则
(5)保存规则:
iptables-save > /etc/sysconfig/iptables
7、例题环境:
要求:创建一条iptables防火墙规则,禁止192.168.88.10访问本机的22端口。
iptables -I INPUT -s 192.168.88.10 -p tcp -dport 22 -j REJECT
要求:创建一条iptables防火墙规则,只接受192.168.88.10访问本机的任何服务。
iptables -I INPUT -s 192.168.88.10 -j ACCEPT iptables -P INPUT DROP
要求:
#配置防火墙,默认拒绝所有数据包通过;
iptables -P FORWARD DROP(默认策略不允许用REJECT)
#从server所在网段发往client所在网段的数据包全部允许;
iptables -A FORWAED -s 192.168.99.0/24 -d 192.168.88.0/24 -j ACCEPT
#从client所在网段发往server所在网段,允许ping,22、80、443端口通过。
iptables -A FORWAED -s 192.168.88.0/24 -d 192.168.99.0/24 -p icmp -j ACCEPT
iptables -A FORWAED -s 192.168.88.0/24 -d 192.168.99.0/24 -p tcp -m multiport –dport 22,80,443,100:120 -j ACCEPT
其他命令:
Ip段之间拒绝访问:iptables -I FORWAED -m iprange --src-range 192.168.88.10-192.168.88.20 --dst-range 192.168.99.50-192.168.99.150 -j REJECT
根据mac封禁主机:iptables -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP
开启路由转发:echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
或者 echo 1 > /proc/sys/net/ipv4/ip_forward
四、ACL(访问控制列表)
1、ACL可以实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的,从而切实保障网络环境的安全性和网络服务质量的可靠性。
2、ACL是由一系列permit或deny语句组成的、有序规则的列表。
3、ACL是能够匹配一个IP数据包中的源IP地址、目的IP地址、协议类型、源目的端口等元素的基础性工具,可在Traffic-filter、NAT(Network Address Translation)、路由策略、防火墙策略、QoS中被调用;
4、acl语句组成:
- ACL名称:通过名称来标识ACL,更加方便记忆,这种ACL,称为命名型ACL。
命名型ACL实际上是“名字+数字”的形式,可以在定义命名型ACL时同时指定ACL编号。
- ACL编号:用于标识ACL,也可以单独使用ACL编号,表明该ACL是数字型。
不同的ACL类型使用不同的ACL编号取值标识。
- 规则:即描述报文匹配条件的判断语句。
规则编号:用于标识ACL规则。可以自行配置规则编号,也可以由系统自动分配。系统按照规则编号从小到大的顺序,将规则依次与报文匹配,一旦匹配上一条规则即停止匹配。
- 动作:报文处理动作,包括permit/deny两种,表示允许/拒绝。
匹配项:描述每条规则的报文匹配条件(报文的源地址、目的地址、端口号等)的判断语句,设备基于这些规则的匹配项进行报文匹配
(1)ACL编号:在网络设备上配置ACL时,每个ACL都需要分配一个编号,称为ACL编号,用来标识ACL。不同分类的ACL编号范围不同。
分类 | 编号范围 | 规则描述 |
---|---|---|
基本ACL | 2000~2999 | 仅使用报文的源IP地址、分片信息和生效时间段信息来定义规则 |
高级ACL | 3000~3999 | 可使用IPV4报文的源IP地址、目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口号、UDP源/目的端口号、生效时间段等来定义规则 |
二层ACL | 4000~4999 | 使用报文的以太网帧头信息来定义规则,如根据源MAC地址、目的MAC地址、二层协议类型等 |
用户自定义ACL | 5000~5999 | 使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则 |
用户ACL | 6000~6999 | 既可使用IPV4报文源IP地址或源UCL(user control list)组,也可使用目的IP地址或目的UCL组、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则 |
(2)规则编号:每条规则都有一个相应的编号,称为规则编号,用来标识ACL规则。可以自定义,也可以系统自动分配。ACL规则的编号范围是0~4294967294,所有规则均按照规则编号从小到大进行排序。
步长(Step):
步长是系统自动为ACL规则分配编号时,每个相邻规则编号之间的差值,缺省值为5。步长的作用是为了方便后续在旧规则之间,插入新的规则。
(3)动作:每条规则中的permit或deny,就是与这条规则相对应的处理动作。permit指“允许”,deny指“拒绝”,但是ACL一般是结合其他技术使用,不同的场景,处理动作的含义也有所不同。
(4)acl的匹配位置
(5)匹配项:ACL定义了极其丰富的匹配项。例如,二层以太网帧头信息(如源MAC、目的MAC、以太帧协议类型)、三层报文信息(如目的地址、协议类型)以及四层报文信息(如TCP/UDP端口号)等
通配符:点分十进制格式,换算成二进制后,“0”表示“匹配”,“1”表示“不关心”。
例:拒绝或允许源ip等于1.1.1.1的报文,通配符就是0.0.0.0
拒绝或允许源ip等于1.1.1.0/24网段的报文,通配符就是0.0.0.255
5、acl运用
Undo traffic-filter inbound
删除原有acl策略