Linux防火墙

防火墙

netfilter 是真正的防火墙,位于Linux内核中的包过滤功能体系
称为Linux防火墙的"内核态"
firewalld 和iptables 是默认的管理防火墙规则的工具
称为Linux防火墙的“用户态”

防火墙的分类

按保护范围划分:

  • 主机防火墙:服务范围为当前一台主机
  • 网络防火墙:服务范围为防火墙一侧的局域网

按实现方式划分:

  • 硬件防火墙:在专用硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现,如:华为, 山石hillstone,天融信,启明星辰,绿盟,深信服, PaloAlto , fortinet, Cisco, Checkpoint,等
  • 软件防火墙:运行于通用硬件平台之上的防火墙的应用软件,Windows 防火墙 ISA --> Forefront

按网络协议划分:

  • 网络层防火墙:OSI模型下四层,又称为包过滤防火墙
  • 应用层防火墙/代理服务器:proxy 代理网关,OSI模型七层

iptables

概述

属于“用户态”(User Space, 又称为用户空间)的防火墙管理体系。是一种用来管理Linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables目录下。
netfilter/iptables后期简称为iptables。iptables是基于内核的防火墙,其中内置了raw、mangle、 nat和filter四个规则表。表中所有规则配置后,立即生效,不需要重启服务。

五种规则链

规则的作用:对数据包进行过滤或处理

链的作用:容纳各种防火墙规则

脸的分类依据:处理数据包不同的时机

INPUT :处理发送到本站入站数据包

OUTPUT:处理出本站数据包

FORWARD:处理转发数据包

POSTROUTING链:在进行路由选择后处理数据包

PREROUTING链:在进行路由选择前处理数据包

链内匹配规则

按照顺序一次检查,匹配即停止

若找不到相匹配的规则,则按链的默认策略处理

四个规则表

作用:容纳各种规则链

raw表:确定是否对该数据包进行状态跟踪

mangle表:为数据包设置标记

nat表: 修改数据包的源、目标IP地址或端口

filter表: 确定是否放行该数据包

规则表之间的顺序

raw→mangle→nat→filter
Linux防火墙_第1张图片

相关操作

操作前关闭防火墙,安装iptables
systemctl stop firewalld.service
yum -y install iptables iptables-services

格式
iptables  [-t 表名]  管理选项  [链名]  [匹配条件]  [-j 控制类型]
iptables   table    command  chain   parameter target

iptables -t #默认指定filter表
		 -t nat
		 
command -A 追加
		-D 删除
		-vnL 显示详细规则链
		-R 替换
		-F 清空所有
		-I 插入
iptables -vnL --line-numbers  #查看规则的编号

chain 链名
INPUT		#处理发送到本站入站数据包
OUTPUT		#处理出本站数据包
FORWARD		#处理转发数据包
POSTROUTING #在进行路由选择后处理数据包
PREROUTING 	#在进行路由选择前处理数据包

parameter匹配条件
		 -p 端口
		 -s 源ip
		 -d 目的ip
		 -i 入站网卡
		 -o 出站网卡
		 --sport 源端口
		 --dport 目的端口
target控制类 
		-j ACCEPT 已读不回
		-j DROP	  回复拒绝
		-j REJECT 允许
		-j LOG	  生成日志
		

添加新的防火墙

iptables -t filter -A INPUT -p icmp -j REJECT     DROP   ACCEPT  #不允许任何主机ping本主机

iptables -I  INPUT 2 -p tcp --dport 22 -j ACCEPT  #允许主机ssh端口 通过我的

查看规则表

iptables [-t表名] -n -L [链名] |[-- line-numbers]
或
iptables - [vn]L  #不可以合写为-Ln
[root@localhost ~]iptables -vnL --line-numbers

删除、替换、清空规则

删除:
iptables -D INPUT 5
替换:
iptables -A INPUT -s 192.168.91.101 -j DROP
iptables -R INPUT 1 -s 192.168.91.101 -j ACCEPT
清空:
iptables -F INPUT

设置默认策略

执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃, OUTPUT 链的默认策略设为允许。
iptables [-t表名] -P <链名> <控制类型>
iptables -P INPUT DROP      输入后没显示  清除所有规则之后生效,因为下面只剩下DROP  添加远程端口22

iptables -P FORWARD DROP

通用匹配

iptables -A FORWARD ! -p icmp -j ACCEPT
iptables -A INPUT -s 192.168.91.101 -j DROP
iptables -I INPUT -i ens33 -s 192.168.91.0/24 -j DROP

iptables -I INPUT -p icmp -j DROP
iptables -A FORWARD ! -p icmp -j ACCEPT           //感叹号”!”表示取反

隐含扩展

[root@localhost ~]iptables -A INPUT -p tcp  --sport 10000:30000 -j REJECT 
#10000到30000 全部被拒

root@localhost ~]iptables -I INPUT -i ens33 -p tcp --tcp-flags FIN,RST,ACK SYN -j ACCEPT
#丢弃SYN请求包,放行其他包

显示扩展模块

NAT

SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP

DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP

SNAT的应用

Linux防火墙_第2张图片

为7-2添加一块网卡,为仅主机模式

Linux防火墙_第3张图片

设置网卡,修改网卡地址,重启网卡

Linux防火墙_第4张图片
Linux防火墙_第5张图片

打开路由转发功能

vim/etc/sysctl.conf
	net.ipv4.ip_forward = 1
	sysctl -p

Linux防火墙_第6张图片

7-1改网关 改成与7-2ens33相同,并重启

vim /etc/sysconfig/network-scripts/ficfg-ens33
systemctl restart network #重启网卡 

Linux防火墙_第7张图片
Linux防火墙_第8张图片

将7-3作为外网服务器,改为仅主机模式

Linux防火墙_第9张图片

修改网卡地址

Linux防火墙_第10张图片
Linux防火墙_第11张图片

在7-2清空规则,设置snat

Linux防火墙_第12张图片

检测内网是否可以访问外网

Linux防火墙_第13张图片

DNAT的应用

查看是否安装好httpd的服务,编辑一个网页

Linux防火墙_第14张图片

Linux防火墙_第15张图片

在7-2设置DNAT

在这里插入图片描述

7-3 是否可以访问页面

Linux防火墙_第16张图片

你可能感兴趣的:(linux,运维,服务器)