Linux系统防火墙firewall和iptables策略管理

吃可爱长大的小学妹 提交于 2019-12-13 00:07:44

1.1.2.1 Linux系统-防火墙策略管理



一、防火墙策略介绍

作用: 提供一道保护性的安全屏障,起到保护隔离作用,隔离公网和私网之间
分类:硬件防火墙  软件防火墙
程序:RHEL6以下iptables命令,RHEL7以上firewalld命令
firewalld底层是调用包过滤防火墙iptables
包过滤防火墙:工作在3层,对ip包进行过滤处理

二、firewall防火墙

  • (一)firewall防火墙介绍
1.firewall防火墙安装
yum install firewalld      #安装服务
systemctl start firewalld  #开启服务
systemctl enable firewalld #开机自启
systemctl status firewalld #查看状态
firewall-cmd命令操作
firewall-config图形化操作

2.防火墙预设安全区域
规则:根据所在的网络场地区分,预设保护规则集,匹配即停止
public  #仅允许访问本机sshd dhcp ping
trusted #允许任何访问
block   #阻塞任何来访请求,明确居拒绝,给客户端回应
drop    #丢弃任何来访的数据包,直接丢弃,不给客户端回应,节省服务器资源

3.防火墙判定规则
首先查看数据包中,源IP地址
查看所有区域规则,哪个区域有该源IP地址的规则,则进入该区域
进入默认区域public
  • (二)firewall防火墙配置
格式:firewall-cmd [--permanent] [选项] 
不添加--permanent为临时命令,立即生效
添加--permanent为永久配置,需要--reload才能生效
--reload 不重启情况下重新加载防火墙所有配置文件规则

1.增加
--zone=安全区域 --add-source=IP地址 #增加源IP地址
--zone=安全区域 --add-service=服务协议 #增加服务协议
--zone=安全区域 --add-port=开放端口/服务协议 #增加开放端口

2.删除
--zone=安全区域 --remove-source=IP地址 #删除源IP地址
--zone=安全区域 --remove-service=服务协议 #删除服务协议
--zone=安全区域 --remove-port=开放端口/服务协议 #删除开放端口

3.修改
--set-default-zone=安全区域 #永久修改默认区域
--zone=安全区域 --add-forward-port=port=原端口号:proto=协议:toport=目标端口号 #修改端口转发,测试使用其他主机访问

4.查看
--version #查看防火墙版本
--get-default-zone #查看默认区域
--zone=安全区域 --list-all #查看安全区域规则

三、iptables防火墙

  • (一)iptables防火墙介绍
1.iptables防火墙测试环境
hostA eth0 192.168.4.10
hostB eth0 192.168.4.20 eth1 192.168.2.20 防火墙
hostC eth1 192.168.2.10

2.iptables防火墙安装
yum -y install iptables-services #安装服务
systemctl start iptables         #开启服务
systemctl enable iptables        #开机自启
systemctl status iptables        #查看状态

3. iptables的四表五链
四表五链:表是防火墙功能,链是防火墙过滤规则

(1)四表,防火墙功能表
防火墙功能:包过滤功能,地址转换,打标记,状态跟踪
包过滤表filter表-INPUT FORWARD OUTPUT
地址转换表nat表-PREROUTING POSTROUTING OUTPUT
包标记表mangle表-PREROUTING POSTROUTING INPUT OUTPUT
状态跟踪表raw表-PREROUTING OUTPUT


(2)五链,防火墙过滤规则
INPUT       #进入防火墙服务器的数据包
OUTPUT      #从防火墙服务器本机出去的数据包
FORWARD     #经过防火墙数据的包
PREROUTING  #路由前处理 
POSTROUTING #路由后处理 

(3)链内规则匹配顺序
顺序比对,匹配即停止,LOG除外
若无任何匹配,则按该链的默认策略处理

(4)防护类型
根据保护对象主机,其他主机区分
主机型防火墙:服务运行后保护自己filter->INPUT
网络型防火墙:控制数据包是否运行经过本机filter-->FORWARD

  • (二)iptables命令格式
1.iptables命令格式
管理程序位置: /sbin/iptables
命令格式:
iptables [-t 表名] 选项 [链名] [匹配条件] [-j 目标操作]
格式结构:iptables <- 表 <- 链 <- 规则
保存配置:iptables-save > /etc/sysconfig/iptables

2.iptables整体规则
可以不指定表,默认为filter表
可以不指定链,默认为对应表的所有链
如果没有匹配的规则,则使用防火墙默认规则
选项/链名/项目操作用大写字母,其余都小写

  • (三)iptables命令常用选项
1.iptables命令常用选项
(1)添加规则
-A #在链的末尾追加一条规则
-I #在链的开头或指定序号,插入一条规则
(2)删除规则
-D #删除链内指定序号或内容的一条规则
-F #清空所有的规则
(3)设置默认规则
-P #为指定的链设置默认规则,默认策略只能是ACCPET和DROP
(4)查看规则
-L #列出所有的规则条目
-n #以数字形式显示地址,端口等信息
--line-numbers #查看规则时,显示规则的序号

2.匹配条件
(1)基本匹配条件

1)通用匹配
可直接使用,不依赖于其他条件或扩展,包括网络协议,IP地址,网络接口等条件
需要取反条件时,用叹号!
协议匹配 -p 协议名
地址匹配 -s 源地址 -d 目标地址
接口匹配 -i 数据接收网卡 -o 数据输出网卡

2)隐含匹配
要求以特定的协议匹配作为前提,包括端口,TCP标记,ICMP类型等条件
端口匹配 --sport 源端口 --dport 目标端口
ICMP类型匹配 --icmp-type ICMP类型(请求类型echo-request 回应类型echo-reply)

(2)扩展匹配条件

1)扩展条件的方法
前提条件:有对应的防火墙模块支持
格式:iptables [-t 表名] 选项 [链名] [匹配条件] [-m 扩展模块 --扩展条件 条件值] [-j 目标操作]

2)常见的扩展条件类型
扩展匹配
MAC地址匹配
-m mac --mac-source MAC地址
多端口匹配 
-m multiport --sports 源端口列表 
-m multiport --dports 目标端口列表
IP范围匹配 
-m iprange --src-range IP1-IP2 
-m iprange --dst-tange IP1-IP2

3.常用目标操作
ACCEPT #允许通过/放行
REJECT #拒绝通过,必要时会给出提示
DROP   #直接丢弃,不给出任何回应
LOG    #记录日志,然后传给下一个规则,匹配即停止规律的唯一例外

  • (四)iptables规则示例
1.iptables规则增删改查示例
(1)增加规则
iptables -t filter -A INPUT -p icmp -j DROP #增加协议
iptables -t filter -I INPUT 2 -p tcp --dport 20 -s 192.168.2.0/24 -j ACCEPT #在第二行插入规则

(2)删除规则
iptables -t 表名 -F #清空表规则
iptables -t 表名 -D 链名 1 #删除规则第一行

(3)修改规则
iptables -t filter -P INPUT ACCPET #修改默认规则

(4)查询规则
iptables -t 表名 -nL [链名] --line-numbers #查看四表规则

2.禁ping示例
环境:主机规则filter表INPUT链默认规则ACCEPT
要求:允许本机ping其他主机,禁止其他主机ping本机

(1)第一种方法
iptables -t filter -A INPUT -p icmp --icmp-type echo-request -j DROP 

(2)第二种方法
iptables -t filter -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -t filter -A OUTPUT -p icmp ! --icmp-type echo-request -j DROP

3.网络型防火墙规则示例
(1)开启内核的IP转发
sysctl -a | grep net.ipv4.ip_forward #查看路由转发功能状态
echo 1 > /proc/sys/net/ipv4/ip_forward #临时开启内核IP转发功能
echo'net.ipv4.ip_forward=1' >> /etc/sysctl.conf #永久开启内核IP转发功能

(2)设置网关
route -n #查看网关
route add default gw 192.168.4.20 #A主机临时设置网关
route add default gw 192.168.2.20 #B主机临时设置网关
echo "any net 0.0.0.0/0 gw 网关地址" > /etc/sysconfig/static-routes #永久设置网关

(3)设置网络型防火墙规则
iptables -t filter -P FORWARD DROP
iptables -t filter -A FORWARD -p icmp -j ACCEPT

B主机安装httpd服,A主机访问B主机网页服务
iptables -t filter -P FORWARD DROP
iptables -t filter -A FORWARD -p tcp --dport 80 -j ACCEPT 
iptables -t filter -A FORWARD -p tcp --sport 80 -j ACCEPT

3.扩展案例

多端口扩展
iptables -t filter -A FORWARD -p tcp -m multiport --sports 80,22,3306 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -m multiport --dports 80,22,3306 -j ACCEPT

A主机pingB主机
iptables -t filter -A FORWARD -p icmp -m iprange --src-range 192.168.4.20-192.168.4.40 -j ACCEPT
iptables -t filter -A FORWARD -p icmp -m iprange --dst-range 192.168.4.20-192.168.4.40 -j ACCEPT

  • (五)nat表典型应用
1.nat表典型应用介绍
nat(助记词Source Network Address Translation)
路由前:到达防火墙的数据包无目标地址
路由后:到达防火墙的数据包有目标地址

2.nat转换原理
私有地址转公有地址
修改数据包的源地址
仅用于nat表的POSTROUTING链

3.snat策略应用(路由主机应用)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.2.20 #公司网关IP固定,将私网地址改为公网IP地址,允许访问80端口,注意内网要设置网关
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
#公司网关IP不固定,动态转换私网IP为公网IP地址,注意内网要设置网关
tail -3 /etc/httpd/logs/access_log #查看网页访问记录

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!