Linux---防火墙

1、概述
动态防火墙后台程序 firewalld提供了一个动态管理的防火墙,用以支持网络 “zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对ipv4和ipv6防火墙设置的支持。支持以太网桥,并有分离运行时间和永久性配置选择。还具备一个通向服务或者应用程序以直接增强防火墙规则的接口。
防火墙
三表五链,即三张表,五条链

五条链:input, output, prerouting, postouting, forward
三张表:filter ,nat, mangle
filter中包括input, output,forward  								##要进入内核处理
nat中包括input, output, prerouting, postouting					##只是经过,不需要内核处理,postouting是源地址解析,即先看到ip地址然后对ip地址进行转换,路由之后。prerouting是目的地址解析,即对看到的ip先转换,然后在进入,在路由之前。
mangle中包括input, output, prerouting, postouting, forward	##附加的权限	

有两种对防火墙的配置方式:firewalld和iptables,二者之间的本质不同在于iptables在/etc/sysconfig/iptables中存储配置,firewalld将配置存储在/usr/lib/firewalld/和/etc/firewalld/中的各种xml文件里。
在这里插入图片描述

2、管理SELinux端口标签

semanage port -a -t http_port_t -p tcp 6666			##添加6666端口
semanage port -d -t http_port_t -p tcp 6666			##删除6666端口
semanage port -l |grep http										##列出apache端口列表
semanage port -l														##列出所有端口		

实验:
服务机上

getenforce 
		Enforcing

在这里插入图片描述

	yum install httpd -y

在这里插入图片描述

	semanage port -l |grep http						##查看端口列表
	vim /etc/httpd/conf/httpd.conf

在这里插入图片描述
在这里插入图片描述

		42 Listen  6666								##修改apache端口为6666

在这里插入图片描述

	systemctl restart httpd				
				Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.											##服务不能正常启动

在这里插入图片描述

semanage port -a -t http_port_t -p tcp 6666		##添加6666端口,-a表示添加
semanage port -l |grep http						##查看端口
systemctl restart httpd							##重启apache服务,正常启动

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf
	42 Listen  80								##修改为默认80端口
systemctl restart httpd
semanage port -d -t http_port_t -p tcp 6666		##删除6666端口,-d表示删除
semanage port -l |grep http					

在这里插入图片描述在这里插入图片描述在这里插入图片描述
3、firewalld
配置防火墙的命令
搭建环境
147主机两块网卡 172.25.254.147 和1.1.1.147
另一台主机 1.1.1.247
启用firewalld

systemctl start firewalld
systemctl enable firewalld
systemctl disable firewalld
systemctl stop firewalld			##关闭
  1. firewalld的配置命令

     firewall-cmd --state						##查看防火墙状态
     firewall-cmd --get-active-zones				##查看当前活跃的域
     firewall-cmd --get-default-zone				##查看默认域
    

在这里插入图片描述

firewall-cmd --get-zones					##查看所有域
firewall-cmd --zone=public --list-all		##查看public域运行的列表

在这里插入图片描述

firewall-cmd --list-all						##查看默认域允许的列表

在这里插入图片描述

firewall-cmd --get-services					####查看所有可设置的服务

在这里插入图片描述

firewall-cmd --list-all-zones				##查看所有域的管理范围信息

在这里插入图片描述

firewall-cmd --set-default-zone=work		##修改火墙的域

在这里插入图片描述
firewalld的域
在这里插入图片描述

firewall-cmd --zone=trusted --add-source=172.25.254.47 	##47使用trusted域,其他使用默认
firewall-cmd --get-active-zones		

在这里插入图片描述
在这里插入图片描述

firewall-cmd --zone=public --remove-interface=eth1		##eth1从public上去掉
firewall-cmd --zone=trusted --add-interface=eth1		##eth1使用trusted域
firewall-cmd --list-all --zone=trusted					##看trusted域的列表
firewall-cmd --list-all --zone=public

在这里插入图片描述

firewall-cmd --add-service=dns					##临时添加dns	
firewall-cmd --remove-service=dns				##临时删除dns	

在这里插入图片描述

firewall-cmd --remove-service=dns --permanent	##永久删除
firewall-cmd --reload 							##重启服务	
firewall-cmd --complete-reload 					##重启服务,当前连接断开
  1. Direct Rules
    通过firewall-cmd 工具,可是使用 --direct选项在运行时间里增加或者移除链。直接端口模式是用于服务或者程序,以便在运行时间内增加特定的防火墙规则

     firewall-cmd --list-all					##查看	
    

在这里插入图片描述

firewall-cmd --remove-service=ssh		##临时删除使用ssh服务
firewall-cmd --list-all

在这里插入图片描述

firewall-cmd --direct --get-all-rules	##显示添加的规则
iptables -t filter -nL					##查看防火墙的表链中的现有设定

在这里插入图片描述
实验,先临时删除ssh,47测试,进行配置,47测试,实验结束重启服务,恢复临时删除的ssh服务

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.47 -j ACCEPT			##只有47主机可以使用ssh,-s表示数据来源,1表示优先级第一位,ACCEPT表示允许,--dport指端口,22即ssh的端口
firewall-cmd --direct --get-all-rules

在这里插入图片描述在47上测试:
在这里插入图片描述

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.47 -j ACCEPT		##删除47主机使用ssh

在这里插入图片描述
在47上测试:
在这里插入图片描述

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 ! -s 172.25.254.47 -j ACCEPT			##除了47其他的都能使用

在这里插入图片描述在47上测试:
在这里插入图片描述在247上测试:
在这里插入图片描述

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 ! -s 172.25.254.47 -j ACCEPT		##删除除了47其他的都能使用

在这里插入图片描述
3)Rich Rules
通过“rich language”语法,可以用比直接接口方式更易理解的方法建立复杂防火墙规则。此外,还能永久保留设置。这种语言使用关键词值,是iptables工具的抽象表示。这种语言可以用来配置分区,也仍然支持现行的配置方式
在这里插入图片描述
4、iptables

启用iptables

systemctl start iptables		##启用
systemctl stop iptables		##关闭
systemctl mask iptables		##上锁	

在这里插入图片描述
1)基本配置 可扩展工作语言xml语言,系统中做数据封装

-t				##指定表名称
-n				##不做解析
-L				##列出制定表中的策略
-A				##增加策略
-p				##网络协议
--dport			##端口
-s				##数据来源
-j				##动作
ACCEPT			##允许
REJECT			##拒绝
DROP			##丢弃
-N				##增加链
-E				##修改链名称
-X				##删除链
-D				##删除指定策略
-I				##插入
-R				##修改策略
-P				##修改默认策略

iptables -nL				##查看

在这里插入图片描述

iptables -F 				##把策略刷新掉,刷掉之前的
service iptables save		##保存当前策略

在这里插入图片描述

iptables -P INPUT DROP		##修改默认,只有ACCEPT和	DROP两种

在这里插入图片描述

iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT			##设置所有都可以使用22端口
iptables -A INPUT -p tcp --dport 22  -s 172.25.254.47 -j ACCEPT	##设置47可以使用22端口,此处没有加-t filter是因为默认在filter表中

在这里插入图片描述

iptables -D INPUT 2			##删除第二条策略

在这里插入图片描述

iptables -I INPUT 1 -s 172.25.254.47 -p tcp --dport 22 -j ACCEPT	##第一条插入策略

在这里插入图片描述

iptables -R INPUT 1 -s 172.25.254.250 -p tcp --dport 22 -j ACCEPT	##替换掉第一条策略

在这里插入图片描述

iptables -N redhat			##增加链

在这里插入图片描述

iptables -E redhat WESTOS	##修改链名称

在这里插入图片描述

iptables -X WESTOS			##删除链	

在这里插入图片描述2)伪装与转发
<1>伪装
实验

双网卡147主机
	iptables -t nat -nL
	iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.147	##设置从eth0出时,地址伪装为172.25.254.147, POSTROUTING路由后伪装,即先看到路由然后伪装
	iptables -t nat -nL
sysctl -a |grep forward				##查看内核路由功能是否开启
	net.ipv4.ip_forward = 1			##1表示开启
如果不是1,修改为1
vim /etc/sysctl.conf
	net.ipv4.ip_forward=1
sysctl -p		

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在247主机
	修改网关为1.1.1.147
	ssh 172.25.254.47		##连接47主机

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在47主机 w -i
看到147主机连接,但是实际是1.1.1.247主机连接的
ssh 172.25.254.147
连接到147主机而不是1.1.1.247主机
在这里插入图片描述在这里插入图片描述

<2>转发
双网卡主机

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.247	##PREROUTING表示设置从eth0进的地址先伪装成1.1.1.247,再进入。此处即端口转发

在这里插入图片描述

iptables -t nat -nL

在这里插入图片描述
在47主机再次连接172.25.254.147
连接到的实际是1.1.1.247主机
在这里插入图片描述
3)

	iptables -F				##刷新掉之前配置
	iptables -nL			##查看
	service iptables save	##保存

在这里插入图片描述

	iptables -A INPUT -i lo -m state --state NEW -j ACCEPT					##允许本机回环访问
	iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT		##允许正在访问和之前访问过的
	cat /etc/services |grep iscsi											##查看服务的端口
	iptables -A INPUT -m state --state NEW -p tcp --dport 445 -j ACCEPT	##允许samba
	iptables -A INPUT -m state --state NEW -p tcp --dport 139 -j ACCEPT
	iptables -A INPUT -m state --state NEW -p tcp --dport 3260 -j ACCEPT	##允许iscsi
	iptables -A INPUT -m state --state NEW -j REJECT			##其余的拒绝

在这里插入图片描述
在这里插入图片描述

	iptables -t nat -F	
	iptables -t nat -nL

在这里插入图片描述测试:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值