linux中部署防火墙服务

1.什么是防火墙?

Firewalld概述:动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选择。

2.实验环境配置

服务端:
双网卡:eth0:172.25.254.216
eth1:1.1.1.126
在这里插入图片描述
客户端:
单网卡:eth0:1.1.1.126
在这里插入图片描述
真机:
ip:172.25.254.16

3.firewall和iptables service区别

firewalld 和 iptables service 之间最本质的不同是 :iptables service 在 /etc/sysconfig/iptables 中储存配置;firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里 。

在这里插入图片描述

4.用图形方式配置防火墙

防火墙的域:
在这里插入图片描述

firewall-config            ##打开图形配置

在这里插入图片描述
更改默认域:
左上角option-change defaults-zone-域为block
在这里插入图片描述

yum install httpd -y
vim /var/www/html/index.html

在这里插入图片描述

点击trusted域选择sources添加ip:172.25.254.16

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

5.使用命令方式配置防火墙

命令:

  1. systemctl start firewalld 打开防火墙
  2. firewall-cmd --state 查看防火墙状态
  3. firewall-cmd --get-active-zones 查看正在使用的域
  4. firewall-cmd --get-default-zone 查看默认域是哪个
  5. firewall-cmd --get-zones 查看
  6. firewall-cmd --zone=public --list-all 查看public域的信息
  7. firewall-cmd --get-services 查看域的所有服务
  8. firewall-cmd --list-all-zones 查看所有的域
  9. firewall-cmd --set-default-zone=dmz 将默认域改为dmz
  10. firewall-cmd --remove-interface=eth1 删除eth1网卡
systemctl start firewalld        ##打开防火墙
systemctl enable firewalld       ##设为开机启动
firewall-cmd --state             ##查看防火墙状态

在这里插入图片描述

6:为域添加访问ip

在服务端:
安装http服务,并编写测试内容

yum install httpd
systemctl start httpd
vim /var/www/html/index.html

在这里插入图片描述

firewall-cmd --list-all             ##查看防火墙所以参数

在这里插入图片描述
此时服务端开放的域为public,不允许http访问
在这里插入图片描述
将172.25.254.16添加到trusted域
在这里插入图片描述此时可以真机(172.25.254.16)访问
在这里插入图片描述

7.接口控制访问不同域

firewall-cmd --list-all

在这里插入图片描述
此时两个网卡都可以ping通
在这里插入图片描述
在这里插入图片描述
将网卡eth1加入block域
在这里插入图片描述
此时网卡eth1,ping不通
在这里插入图片描述

8.firewall-cmd --reload与firewall-cmd --complete-reload

此时服务端eth1端口开放ssh服务
在这里插入图片描述客户端(1.1.1.126)可以正常使用ssh服务
在这里插入图片描述
服务端:

firewall-cmd --permanent --remove-service=ssh            ##永久移除ssh服务
firewall-cmd --reload                                    ##重新加载firewall

在这里插入图片描述若在重新加载防火墙之前已经通过ssh访问服务端,则不受影响(未退出前)
在这里插入图片描述
若使用完全加载,则已经使用ssh的会卡住无法进行有效操作。此时可以使用killall -9 ssh强制关闭。
在这里插入图片描述

9.添加端口:(默认端口为80,改为8080)可以改配置文件,也可以通过命令修改

1.通过配置文件

firewall-cmd --list-all
firewall-cmd --add-service=http

在这里插入图片描述

vim /etc/httpd/conf/httpd.conf             ##编辑配置文件更改端口
systemctl restart httpd

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

vim /usr/lib/firewalld/services/http.xml     更改http端口
systemctl restart httpd

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

补充,防火墙配置文件

cd /etc/firewalld/zones                 ##防火墙新旧配置

在这里插入图片描述在这里插入图片描述在这里插入图片描述
2.通过命令
apache用法
修改前本机selinux=enforcing

vim /etc/httpd/conf/httpd.conf
43 Listen 8080		##修改默认端口为8080
firewall-cmd --permanent --add-port=8080/tcp  ##若出现killed则说明此添加端口已被使用过。
firewall-cmd --reload 

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

10.Direct Rules 详细规则

服务端:
永久删除ssh
在这里插入图片描述

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.16 -p --dport 22 -j ACCEPT	        ##只有16可以访问ssh

在这里插入图片描述
-p:类型 -s:转化成 -j:有三种: ACCEPT(接收),REJUCT(拒绝),DROP(丢弃)

测试:
此时真机(16)仍可以访问ssh
在这里插入图片描述

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.16 -p --dport 22 -j ACCEPT	
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.16 -p --dport 22 -j ACCEPT	   ##只有16不可访问ssh

在这里插入图片描述
测试:
真机(16)
在这里插入图片描述客户端(216)
在这里插入图片描述

11.Rich Rules 高级规则

伪装(在路由前):

firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.216   目的地转化到1.1.1.216
firewall-cmd --masquerade        

在这里插入图片描述
测试:
在这里插入图片描述
查看内核路由功能是否打开:

sysctl -a | grep ip_forward
vim /etc/sysctl.conf

在这里插入图片描述
若=0则进入/etc/sysctl.conf在最后写入
在这里插入图片描述
端口转换
服务端:

firewall-cmd --permanent --change-interface=eth1 --zone=public     ##将eth1端口加入public域
systemctl restart firewalld                                        ##重启防火墙
firewall-cmd --add-masquerade                                      ##打开伪装功能

在这里插入图片描述
客户端:

修改网关为1.1.1.116
在这里插入图片描述
在这里插入图片描述

iptables命令管理

内核的3张表,5条列
filter表:经本机内核的数据:input,forward,ouput
nat表:不经过本机内核的数据:input,ouput,prerouting,postrouting
mangel表:所有经过主机的数据:input,forward,ouput,prerouting,postrouting

iptables的一些参数含义:

-t 指定表名称,不加默认指filter
-n 不作解析
-L 列出指定表中的策略
-A 增加策略,不能指定加的位置,默认加到最后
-p 网络协议
–dport 端口
-s 数据来源
-j 动作
ACCEPT 允许
REJECT 拒绝
DROP 丢弃
-N 增加链
-E 修改链名称
-X 删除链
-D 删除指定策略
-F 刷掉原有策略
-I 插入,默认插入到最前面,可以指定位置
-R 修改策略,更改,刷新
-P 修改默认策略
yum search iptables 
yum install iptables-services -y
systemctl start iptables
systemctl enable iptables

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

显示内核三张表信息

iptables -nL             ##列出信息-n不做解析

在这里插入图片描述
查看nat表
在这里插入图片描述
查看mangle表在这里插入图片描述
刷新

iptables -F

在这里插入图片描述
保存当前

service iptables save

在这里插入图片描述
表里信息保存在/etc/sysconifg/iptables里
在这里插入图片描述

iptables -t filter -A INPUT -i lo -j ACCEPT 给filter表中加回环接口,动作是accept
iptables -nL  查看有没有添加成功

在这里插入图片描述

iptables -t filter -A INPUT -s 172.25.254.16 -j ACCEPT 给filter表添加这个ip,这个ip可以访问all prot
iptables -nL  查看有没有添加成功

在这里插入图片描述

iptables -t filter -A INPUT -s 172.25.254.10 -j REJECT  给filter表添加ip这个ip禁止reject
但是策略读取是从前往后的2生效后就不执行3了。

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

iptables -D INPUT 3  删除第三条
iptables -nL

在这里插入图片描述

iptables -R INPUT 2 -s 172.25.254.16 -j REJECT  修改第二条的accept为reject
iptables -nL

在这里插入图片描述
此时真机(172.25.254.16)无法ssh服务端
在这里插入图片描述

iptables -I INPUT 2 -s 172.25.254.16 -p tcp --dport 22 -j ACCEPT
将端口为22的ip为10的插入到第二条,指定位置
iptables -nL

在这里插入图片描述
其他主机能不能连接取决于此时的policy是accept还是reject还是drop,除了设定的主机之外的其他主机都走的是默认的设定。

因为先执行2所以真机可以ssh服务端
在这里插入图片描述
其他主机也能使用ssh连接服务端
在这里插入图片描述

iptables -P INPUT DROP  将默认的动作设置为drop,其他主机此时连接不上
iptables -nL

在这里插入图片描述
此时真机可以ssh服务端,但其他主机则不能连接上显示连接超时。
在这里插入图片描述
在这里插入图片描述

iptables -N westos 增加链westos
iptables -E westos XUPT  修改连名称为XUPT
iptables -X WESTOS  删除WESTOS
iptables -nL

在这里插入图片描述

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

nat表的一些参数设定:

iptables -t nat -nL 查看
地址伪装 从外面进来 ,伪装成别人的地址 ,路由之后,不经过内核
端口转发 从里面出去
地址转换,编辑nat表。
dnat 目的地址转换
snat 源地址转换
-o出去

地址伪装:

服务端:

查看内核路由功能是否打开:

sysctl -a | grep ip_forward
vim /etc/sysctl.conf

在这里插入图片描述
若=0则进入/etc/sysctl.conf在最后写入
在这里插入图片描述
在这里插入图片描述
客户端:(1.1.1.216可以ping通172.25.254.16)
在这里插入图片描述
在这里插入图片描述
端口转发:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 1.1.1.216:22   ##进来,目的地址转换
从eth0进,把要连接双网卡主机eth0网卡的ip172.25.254.116的端口22,目的地址转化称到1.1.1.216的22端口 -i input
##路由前端口转发,连接 172.25.254.116的22端口会转到1.1.1.216 的22端口
iptables -t nat -nL  查看

在这里插入图片描述
测试:真机连接eth0172.25.254.116 会自动转化为client端的eth0 1.1.1.216
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44889616/article/details/90760225
今日推荐