文章目录
前言
一、火墙介绍以及实验环境设定
1.火墙介绍
位于内部网络以及外部网络之间的防御屏障,主要保护服务器的安全
1. netfilter
2. iptables
3. iptables|firewalld
2.实验环境设定
双网卡主机
vim /etc/sysconfig/network-scripts/ifcfg-enp1s0
NAME=enp1s0
DEVICE=enp1s0
IPADDR=172.25.0.190
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
GATEWAY=172.25.0.90
vim /etc/sysconfig/network-scripts/ifcfg-enp7s0
NAME=enp7s0
IPADDR=172.25.254.190
PREFIX=24
ONBOOT=yes
BOOTPROTO=none
DEVICE=enp7s0
单网卡主机
vim /etc/sysconfig/network-scripts/ifcfg-enp1s0
NAME=enp1s0
DEVICE=enp1s0
IPADDR=172.25.254.191
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
GATEWAY=172.25.0.90
3.火墙管理工具的切换
systemctl disabled --now firewalld.server
systemctl mask firewalld.server
systemctl umask iptables
systemctl enable --now iptables
##不同的火墙管理工具必须进行服务的锁定否则会互相进行影响
二、firewalld对火墙的管理方式以及设定
1.firewalld基础管理命令
trusted #接受所有的网络连接
home #用于家庭网络,允许接受ssh mdns ipp-client samba-client dhcp-client
work #工作网络 ssh ipp-client dhcp-client
public #公共网络 ssh dhcp-client
dmz #军级网络 ssh
block #拒绝所有(可以立刻拒绝客户访问)
drop #丢弃所有数据全部丢弃无任何回复(只能让客户等待)
internal #内部网络 ssh mdns ipp-client samba-client dhcp-client
external #ipv4网络地址伪装转发 sshd
火墙中默认的域都在配置文件中进行修改,重启后可以使得其生效
vim /etc/firewalld/firewalld.conf
6 DefaultZone=public
vim /lib/firewalld/zones/public.xml #.xml即超文本标记语言
1 <?xml version="1.0" encoding="utf-8"?>
2 <zone>
3 <short>Public</short>
4 <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
5 <service name="ssh"/>
6 <service name="dhcpv6-client"/>
7 <service name="cockpit"/>
8 <service name="dns"/>
9 <service name="http"/> #允许的服务内容在其中进行添加即可
10 </zone>
添加服务后重启火墙即可生效
vim /lib/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Work</short>
<description>For use in work areas. You mostly trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<service name="cockpit"/>
<service name="http"/>
</zone>
firewall-cmd --get-default-zone #查看默认域
firewall-cmd --set-default-zone=block #更改默认域为block
firewall-cmd --list-all #查看默认域的火墙策略
firewall-cmd --list-all --zone=work #查看指定域的火墙规则
firewall-cmd --get-services #查看所有可允许的服务
firewall-cmd --permanent --remove-service=http --zone=work #永久移除指定域中的服务
firewall-cmd --permanent --remove-service=http #永久移除当前域中的服务
firewall-cmd --reload #加载火墙策略使其生效
firewall-cmd --permanent --add-source=172.25.0.91/24 --zone=block
#添加指定的数据来源到某个域
firewall-cmd --permanent --remove-source=172.25.0.91/24 --zone=block
#删除指定来源
firewall-cmd --permanent --change-source=172.25.0.91/24 --zone=work
#更改指定来源到另外一个域中
firewall-cmd --permanent --list-sources #查看已经写入的指定数据来源
firewall-cmd --permanent --add-interface=enp1s0 --zone=block
#添加网络接口到block
firewall-cmd --permanent --remove-interface=enp1s0 --zone=block
#删除网络接口
firewall-cmd --permanent --change-interface=enp1s0 --zone=work
#更改网络接口到指定的域上
2.火墙中的三张表和五条链
默认的五条链
input #输入
output #输出
forward #转发的请求需要转发的
postrouting #路由之前的数据
prerouting #路由之后的数据
系统默认的三张表
filter #经过内核的数据表
nat #不经过内核的数据表
mangle #当filter和nat表不够时可以进行补充策略
filter表
input #记录所有访问内核的输入
output #记录经过内核的输出
forward #记录所有需要本机转发的数据,数据在不会经过内核处理但是NAT的时候会使用内核
nat表
input #不访问内核的输入策略
output #不妨问内核的输出策略
postrouting #路由之前的数据
perouting #路由之后的数据
3.firewalld高级策略
filter表
firewall-cmd --direct --get-all-rules #查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.0.91 -p tcp -j REJECT #-s指定IP-p指定协议-j指定状态
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 '!' -s 172.25.0.91 -p tcp -j REJECT #删除规则
nat表
firewall-cmd --permanent --add-masquerade #开启地址转换
firewall-cmd --permanent --add-forward-port=port=22:poroto=tcp:toaddr=172.25.0.190 #开启源地址转换
三、iptable对火墙的管理
1.iptables基础命令
iptables | 参数解释 |
---|---|
-A | 添加规则 |
-L | 查看规则 |
-n | 不做解析 |
-t | 指定表 |
-p | 指定协议 |
–dport | 指定目的地端口 |
-s | 指定数据来源为那个IP |
-j | 指定动作其中,REJECT拒绝,SNAT源地址转换,DNAT目的地地址转换,ACCEPT允许 |
-N | 新建表 |
-E | 更新连接名称 |
-X | 删除连接名称 |
-D | 删除规则 |
-I | 插入规则 |
-R | 更改规则 |
-P | 更改默认规则 |
-F | 刷新火墙数据 |
数据包类型 | 解释 |
---|---|
RELATED | 建立过连接的 |
ESTABLISHED | 正在建立连接的 |
NEW | 新的为建立过连接的 |
iptables -A INPUT -t filter -j REJECT -s 1.1.1.91 -p tcp --dport 22
iptables -D INPUT 6
iptables -I INPUT 1 -t filter -p tcp -s 1.1.1.91 --dport 22 -j DROP
iptables -R INPUT 1 -t filter -p tcp --dport 80 -s 172.25.254.90 -j REJECT
iptables -N westos #新建链
iptables -E westos westosa #更改链的名称
iptables -X westosa #删除链
iptables-save > /etc/sysconfig/iptables #永久保存用户的火墙设定
service iptables save #也可保存设定
2.iptable中的优化
iptables -I INPUT 2 -m state --state RELATED,ESTABLISHED -j ACCEPT #连接过的或是正在连接的可直接通过火墙
iptables -I INPUT 3 -m state --state NEW -i lo -j ACCEPT #本地回环接口可以直接通过火墙
service iptables save #保存火墙策略
3.iptables中的nat模式
iptables -t nat -A POSTROUTING -o enp7s0 -j SNAT --to-source 172.25.254.190 #开启地址转换功能使得其可以进行地址转换
iptables -t nat -A PREROUTING -i enp7s0 -j DNAT --to-dest 172.25.254.90 #源地址转换使得其可以进行源地址的转换