目录
实验环境:两台虚拟机,一台双网卡虚拟机,一台单网卡
双网卡:
单网卡:
一.火墙介绍:
1.netfilter
2.iptables
3.iptables | firewalld #iptables firewalld 同时只能用一个
二.火墙管理工具切换 :
在rhel8中默认使用的是firewalld
firewalld----->iptables #firewalld切换为iptables
dnf install iptables-services -y #安装iptables
systemctl stop firewalld #停止firewalld
systemctl disable --now firewalld #停用firewalld
systemctl mask firewalld #屏蔽服务,让它不能启动
systemctl unmask iptables #解除iptables的屏蔽
systemctl enable --now iptables #开启iptables
iptales -------> fiewalld #iptables切换为firewalld
dnf install firewalld -y #安装firewalld
systemctl disable --now iptables #停用iptables
systemctl mask iptables #屏蔽服务,让它不能启动
systemctl unmask firewalld #解除i火墙的屏蔽
systemctl enable --now firewalld #开启firewalld
三.火墙的默认策略:
默认策略中的5条链
input #输入
output #输出
forward #转发
postrouting #路由之后
prerouting #路由之前
默认的3张表
filter #经过本机内核的数据(input output forward)
nat #不经过内核的数据(postrouting,prerouting,input,output)
mangle #当filter和nat表不够用时使用(input output forward postrouting,prerouting,)
数据包状态
RELATED #建立过连接的
ESTABLISHED #正在连接的
NEW #新的
四:firewalld
1.firewalld的开启
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable --now firewalld
dnf install firewall-config-0.8.0-4.e18.noarch -y #防火墙图形控制安装
firewall-config #图形防火墙的开启
2.关于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
3.关于firewalld的设定原理及数据存储
/etc/firewalld ##火墙配置目录
/lib/firewalld ##火墙模块目录
4. firewalld的管理命令
firewall-cmd --state ##查看火墙状态
firewall-cmd --get-active-zones ##查看当前火墙中生效的域
firewall-cmd --get-default-zone ##查看默认域
firewall-cmd --list-all ##查看默认域中的火墙策略
firewall-cmd --list-all --zone=work ##查看指定域的火墙策略
firewall-cmd --set-default-zone=trusted ##设定默认域
firewall-cmd --get-services ##查看所有可以设定的服务
firewall-cmd --permanent --remove-service=cockpit ##移除服务
firewall-cmd --permanent --add-service=cockpit ##添加服务
firewall-cmd --reload
firewall-cmd --permanent --add-source=172.25.254.23 --zone=trusted ##指定数据来源访问指定域
firewall-cmd --reload
firewall-cmd --permanent --remove-source=172.25.254.23 --zone=trusted ##删除自定域中的数据来源
firewall-cmd --permanent --remove-interface=ens9 --zone=public ##删除指定域的网络接口
firewall-cmd --permanent --add-interface=ens9 --zone=block ##添加指定域的网络接口
firewall-cmd --permanent --change-interface=ens9 --zone=public ##更改网络接口到指定域
5firewalld的高级规则
firewall-cmd --direct --get-all-rules ##查看高级规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.23 -p tcp --dport 80 -j REJECT 1
#设置filter表INPUT链中的第一条规则,拒绝指定IP23的80端口的网络数据
firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 ! -s 172.25.254.23 -p tcp --dport 80 -j REJECT
#删除指定规则
curl http://1.1.1.123
## filter 三个表格其中之一
## INPUT 进入
## ! 除了
## p是协议, s是IP地址
## rule 规则
## REJECT 拒绝
## 1 表示input链的第一条
6.firewalld中的NAT
SNAT :
在双网卡的主机中:
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload开启地址伪装服务
在单网卡主机中:
单网卡设置双网卡服务器的1网段的网关后,用但网卡连接真机(32),在真机中显示的是我们的双网卡主机连接的它
DNAT :
双网卡的主机中:
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toaddr=1.1.1.223
firewall-cmd --reload
别的主机连接服务器,服务器会将22端口的网络数据转发至设定的ip223(在双网卡主机中设定命令,然后用真机链接双网卡的,双网卡主机将远程链接转换到223主机的22端口(就是在真机链接双网卡主机之后,ifconfig看的是单网卡的ip,直接转换到单网卡了)。)
五.iptables :
1.iptables的开启:
2.iptables的查看以及监控
查看:iptables -nL
监控:watch -n 1 iptables -L
3. iptables 的使用
/etc/sysconfig/iptables #iptables 策略记录文件
两种永久保存策略:
一:iptales-save > /etc/sysconfig/iptables
二:service iptables save
4.iptables命令
iptables
-t ##指定表名称
-n ##不做解析
-L ##查看
-A ##添加策略
-p ##协议
--dport ##目的地端口
-s ##来源
-j ##动作
ACCEPT ##允许
DROP ##丢弃
REJECT ##拒绝
SNAT ##源地址转换
DNAT ##目的地地址转换
-N ##新建链
-E ##更改链名称
-X ##删除链
-D ##删除规则
-I ##插入规则
-R ##更改规则
-P ##更改默认规则
-F ##暂时清空,reset可以恢复
iptables -t filter -A INPUT -j ACCEPT #filter接收所有设备输入
iptables -I INPUT -s 172.25.254.32 -j REJECT #拒绝21输入,策略位置会影响结果,命令的读取是由上往下,例如设置filter允许INPUT所有输入为第一位就不会读取这条命
可以控制插入命令的顺序,默认第一位,如果要改变INPUT 后面加上数字INPUT 2
iptables -D IN PUT 1 #删除NPUT表里的第一个策略
iptables -R INPUT 1 -j REJECT ##更改INPUT表中规则为REJECT
5. iptables的优化策略
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #只接收建立过连接的和正在连接的数据和请求
iptables -A INPUT -m state --state NEW -i lo -j ACCEPT #接收来自新的lo回环接口的数据和请求
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT #接收来自新的22端口的数据和请求
ptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT #接收来自新的53(dns)端口的数据和请求
iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT #接收来自新的80端口的数据和请求
less /etc/services #查看所有服务的端口号
iptables -A INPUT -m state --state NEW -j REJECT #拒绝所有新的数据的请求
iptales-save > /etc/sysconfig/iptables
6.iptables中的NAT
iptables -t nat -nL ##查看nat列表策略
SNAT :
iptables -t nat -A POSTROUTING -o ens3 -j SNAT --to-source 172.25.254.123 #设置地址伪装,将ens3接口的流出数据的IP修改为123
sysctl -a | grep ip_forward #查看服务ip_forward是否启动
vim /etc/sysctl.conf #1是启动,如果是0则是未启动需手动输入
net.ipv4.ip_forward = 1
sysctl -p测试 :然后用单网卡主机连接真机
DNAT :
iptables -t nat -A PREROUTING -i ens3 -j DNAT --to-dest 1.1.1.223 #设置DNAT,服务器把对ens3的访问转发到1.1.1.223
测试: