linux下firewalld和iptables的管理

什么是防火墙里面的表
一共三张表filter nat mangle里面的内容要知道
要知道几个名词:
input output forward postrouting prerouting
三张表 五条链都要明白
以上这些是最基本的
如果要访问某台主机上面的http服务
必须先经过那台主机的内核允许,才可以进行访问
防火墙其实也是在内核上面开启的一个服务
防火墙里面有表格,写一些规则,允许哪个主机访问什么服务
这个表格由iptables进行控制
但是有两种规则:iptables 与 firewalld
当1.1.1.1这个主机想去访问172.25.254.111的时候
因为二者不在一个网段
因此中间需要有一个具有地址伪装功能的主机,它有两个网卡
第一张表:filter表格:放的是经过内核的ip input output forward
第二张表:nat表格:放的不是经过内核的服务 input output postrouting prerouting
第三张表:备用表格:mangle input output forward postrouting prerouting

先将firewalld
######################################学会安装firewalld防火墙,并且使用图形界面管理

systemctl stop iptables
systemctl mask iptables
systemctl start firewalld
systemctl enable firewalld

在这里插入图片描述

firewalld域:网络区名称 默认配置

1.firewall-config 输入这个命令,firewalld图形化管理

在里面进行一系列设置,**
在这里插入图片描述

2.学会使用命令管理firewalld

使用命令行接口配置防火墙

firewall-cmd --state  查看防火墙的状态

在这里插入图片描述

firewall-cmd --get-active-zones  查看正在使用的域

在这里插入图片描述

firewall-cmd --get-default-zones  查看系统默认使用的域

在这里插入图片描述

firewall-cmd --get-zones 查看域

在这里插入图片描述

firewall-cmd --zone=public --list-all 列出公共域里面所有可以支持添加的服务

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

firewall-cmd --get-services 列出所有的服务

在这里插入图片描述

firewall-cmd --set-defaults-zone=dmz  更改默认的域
能列出来的服务和端口是集成在一块的

在这里插入图片描述

3.域对ssh服务的影响

实验器材:一个真机,两个虚拟机,其中一个虚拟机是双网卡,得有apache服务
在这里插入图片描述
在这里插入图片描述

下载Apache服务

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

在这里插入图片描述

在desktop上面:

firewall-cmd --list-all eth0和eth1均在public域里面,不允许外来主机访问apache

在这里插入图片描述

在这里插入图片描述

firewall-cmd --remove-interface=eth1 --zone=public将eth1从public域上面移走
firewall-cmd --list-all 

在这里插入图片描述

firewall-cmd --add-interface=eth1 --zone=trusted
firewall-cmd --list-all --zone=trusted

在这里插入图片描述

此时desktop的eth1在trusted

在server上面:

输入firefox打开浏览器
输入1.1.1.111想访问desktop的apache,可以访问

在这里插入图片描述

在desktop上面:

firewall-cmd --list-all 
firewall-cmd --list-all --zone=trusted
firewall-cmd --change-interface=eth1 --zone=public

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

firewall-cmd --permanent --zone=internal --add-source=172.25.0.0/24指定服务
firewall-cmd --permanent --zone=internal --remove-source=172.25.0.0/24移走服务
firewall-cmd --permanent --zone=internal --add-interface=eth0添加网卡所在的域
firewall-cmd --permanent --zone=internal --change-interface=eth0改变网卡所在的域
firewall-cmd --permanent --zone-internal --remove-interface=eth0将eth0网卡从internal域上面移走
firewall-cmd --permanent --zone=public --add-service=smtp永久添加服务
firewall-cmd --permanent --zone=public --remove-service=smtp永久移走服务
firewall-cmd --zone=public --list-ports列出允许的端口
firewall-cmd --permanent --zone=public --add-port=8080/tcp永久添加,开机依然生效
firewall-cmd --permanent --zone=public --remove-port=8080/tcp永久移走,开机依然生效

如果改域里面的服务不加permanent的话,直接改,直接查就会生效
reload后,就会返回原来的状态

firewall-cmd --reload 改完重新加载使其生效,但是不会断开已经连接的
firewall-cmd --complete-relode 改完加载,并且断开所有的连接

实验步骤:

在desktop上面:

firewall-cmd --list-all有ssh服务
firewall-cmd --permanent --remove-service=ssh永久移走ssh服务
firewall-cmd --list-all

在真机上面:

ssh root@172.25.254.111可以连接上
在desktop上面:
firewall-cmd --reload
firewall-cmd --list-all

在真机上面
发现刚才的连接没有断开
因为此时已经没有使用22端口
netstat -antlupe | grep ssh
在desktop上面:
firewall-cmd --complete-reload 完全加载,断开

在真机上面:发现断开了已经用不了了
在真机里面打开一个shell,killall -9 ssh断开了

在desktop上面:

cd /etc/firewalld配置文件
ls
cd zones/进入域
ls
vim public.xml查看这个域的服务
vim public.xml.old之前的服务(因此比较人性化)
firewall-cmd --permanent --add-service=ssh添加ssh服务,不加载
vim public.xml现在没有ssh
vim public.xml.old之前有ssh
firewall-cmd --reload加载
vim public.xml现在有ssh
vim public.xml.old之前没有
cd /lib/firewalld/函数库


cd services/服务的配置文件
ls
vim ssh.xml发现服务和端口是捆绑在一块的
22--->23改端口
systemctl restart firewalld重启防火墙,使其加载生效

在这里插入图片描述
在这里插入图片描述
在真机上面: ssh root@172.25.254.105连接不上
因为ssh连接默认会找desktop的22端口,此时desktop的ssh服务是23端口,因此连接不上
在这里插入图片描述
现在只想要172.25.254.72真机ssh访问desktop(服务端指定什么人访问什么服务)
服务端一共有三个动作

accept(接受客户端的请求)
reject(拒绝请求,但是给客户端有回应,客户端不再访问)
drop(丢弃,没有回应,客户端会一直发数据包,加大负载)

实验步骤:
在desktop上面:

firewall-cmd --list-all 发现有ssh服务
此时真机和server都可以ssh连接desktop虚拟机
现在我想指定只有真机可以,server不可以
firewall-cmd --direct --
firewall-cmd --direct --add-rule
firewall-cmd --direct --add-rule ipv4
firewall-cmd --direct --add-rule ipv4 filter(规则表) INPUT(链) 1(写在第一条) -s(源ip) 172.25.254.11 -p(协议类型) tcp --dport(目的端口) 22 -j(动作) ACCEPT

在这里插入图片描述

firewall-cmd --list-all
firewall-cmd --remove-service=ssh
firewall-cmd --list-all

在这里插入图片描述

测试:

此时真机可以ssh连接desktop,server不可以ssh连接desktop

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

在desktop上面:

firewall-cmd --direct --get-all-rules
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.11 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --get-all-rules

在这里插入图片描述

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.11 -p tcp --dport 22 -i ACCEPT
不让72走允许这条策略,走原来默认的策略

在这里插入图片描述

测试:

此时只有server可以ssh,真机不可以ssh

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

4.怎样解决ssh连接慢的问题?

因为DNS的原因
连接谁就在哪设置,客户端连接服务端,在服务端设置

vim /etc/ssh/sshd_config
UseDNS no
systemctl restart sshd重启服务

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

5.firewalld的地址伪装和端口转发

路由之前(地址伪装),,,,,,路由之后(端口转发)都要知道

地址伪装实验步骤:
现在想用server1.1.1.211ping通desktop172.25.254.111
因为二者不在一个网段,因此不通

在这里插入图片描述

在server上面:

cd /etc/sysconfig/network-scripts
ls
vim ifcfg-eth0
GATEWAY=1.1.1.111 加入desktop的ip作为网关
systemctl restart network
route -n查看一下网关

在这里插入图片描述

在desktop上面

firewall-cmd --list-all看地址伪装功能是否开启

在这里插入图片描述

firewall-cmd --permanent --add-masquerade添加伪装功能
firewall-cmd --reload
firewall-cmd --list-all

在这里插入图片描述

sysctl -a | grep ip_forward

如果为0,则在/etc/sysctrol.conf 下添加这一行

在这里插入图片描述

在server上面:

firewall-cmd --list-all 看eth0是否在public里面,如果不在的话就添加

在这里插入图片描述

firewall-cmd --get-active-zones
firewall-cmd --set-default-zone=public
ping 172.25.254.105可以

在这里插入图片描述
端口转发实验步骤:

现在在desktop上面开启端口转发功能
在desktop上面:
firewall-cmd --list-all
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.205
firewall-cmd --list-all

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

在真机上面ssh root@172.25.254.105
输入server的密码,直接连上1.1.1.205
ifconfig查看一下ip

在这里插入图片描述

##################################################################

5.iptables(另一种火墙)

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

在desktop上面:

systemctl stop firewalld关闭firewalld
systemctl mask firewalld锁住
systemctl start iptables开启iptables

在这里插入图片描述

iptables -t filter -nL查看filter表格里面的链
-t后面跟表格的名称,不过不跟-t,默认为filter表格

在这里插入图片描述

iptablde -L查看所有链

在这里插入图片描述

iptables -F清除所有策略
iptables -nL查看

在这里插入图片描述

service iptables save保存

在这里插入图片描述

vim /etc/sysconfig/iptables查看

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

iptables -t filter -A INPUT -i lo -j ACCEPT将lo回环接口加入INPUT链
iptables -nL查看

在这里插入图片描述

iptables -t filter -A INPUT -s 172.25.254.72-j ACCEPT接受
iptables -nL

在这里插入图片描述
测试:
在真机里面连接ssh root@172.25.254.105因为防火墙从上往下读,匹配之后就不再读

在desktop上:
iptables -D INPUT 2删除第二条
iptables -nL查看

在这里插入图片描述

iptables -R INPUT 2 -S 172.25.254.11 -J REJECT修改策略
iptables -nL查看

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

测试:
在真机里面连接ssh root@172.25.254.105因为防火墙从上往下读,匹配之后就不再读

在desktop上:

iptables -I INPUT 2 -s 172.25.254.72 -p tcp --dport 22 -j ACCEPT插入策略
iptables -nL

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

在真机里面ssh可以,但是访问apache不行

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

在desktop上:

iptables -P INPUT DROP修改默认策略
iptables -nL

在这里插入图片描述
测试:
在真机里面连接ssh root@172.25.254.105因为防火墙从上往下读,匹配之后就不再读在这里插入图片描述

在desktop上:

iptables -nL
iptables -N westos添加链
iptables -nL

在这里插入图片描述

iptables -E westos WESTOS修改链的名字

在这里插入图片描述

iptables -nL
iptables -X WESTOS删除链
iptables -nL

在这里插入图片描述

策略其实就是一行规则
握手过程当中:smp协议
火墙就是内核上面的插件

在desktop上面:
iptables -t nat -nL查看一下nat表在这里插入图片描述
添加地址伪装功能

iptables -t nat -A PREROUTING -i(input) eth0 -p(协议类型) tcp --dport 22 -j DNAT --to-dest 1.1.1.205:22(转发到这个地址)
iptables -t nat -nL
此时eth0是在路由之前

在这里插入图片描述
在真机上面:

ssh root@172.25.254.111desktop
ifconfig发现是server

在这里插入图片描述

端口转发(从里面到外面 目的地地址转换)---->出去:(这个也要网关)
现在1.1.1.205ping172.25.254.105就可以,因为172.25.254.105与1.1.1.105在一个主机上,在同一个内核(网线上),这个是伪装的前提

在server上面:

ping 172.25.254.105通
1.1.1.205ping172.25.254.72不可以

在这里插入图片描述
当内网访问外网的时候,内网知道外网的存在
这个也需要在1.1.1.205上面设置网关1.1.1.105
现在想实现1.1.1.205ping172.25.254.72

在desktop上面:

iptabldes -t nat -nL
开启端口伪装功能
iptables -t nat -A POSTROUTING -o(output) eth0 -j SNAT --to-source 172.25.254.105在172.25.254.105上面进行伪装)
iptables -t nat -nL
此时eth0是在路由之后的

在这里插入图片描述

在server上面:

ping 172.25.254.72通

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值