1.火墙
Firewalld概述:
动态防火墙后台程序 firewalld 提供了一个 动态管理的防火墙, 用以支持网络 “ zones” , 以分配对一个网络及其相关链接和界面一定程度的信任。它具备对 IP v4 和 IP v6 防火墙设置的支持。它支持以太网桥 , 并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
系统提供了图像化的配置工具 firewall-config 、 system-config-firewall, 提供命令行客户端 firewall-cmd, 用于配置 firewalld 永久性或非永久性运行时间的改变 : 它依次用iptables 工具与执行数据包筛选的内核中的 Netfilter 通信。
firewalld 和 iptables 的区别:iptables 更接近数据,firewalld 简单
firewalld 和 iptables service 之间最本质的不同是 :iptables service 在 /etc/sysconfig/iptables 中储存配置firewalld 将配置储存在 /usr/lib/firewalld/ 和/etc/firewalld/ 中的各种 XML 文件里 .
############################################
2.firewalld 域
home(家庭):用于家庭网络,仅接受dhcpv6-client、ipp-client、mdns、 samba-client、ssh服务
internal(内部):用于内部网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务
public(公共):用于公共区域使用,仅接受dhcpv6-client、ssh服务
trusted(信任):接受所有网络连接
work(工作):用于工作区,仅接受dhcpv6-client、ipp-client、ssh服务
block(限制):拒绝所有网络连接
dmz(非军事区):仅接受ssh服务连接
drop(丢弃):任何接收的网络数据包都被丢弃,没有任何回复
external(外部):出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
#############################################
3.firewalld 的使用
打开火墙图形化的命令:
firewall-config
system-config-firewall
命令行配置火墙:
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 --get-services 所有服务
firewall-cmd --list-all-zones 列出所有的域
firewall-cmd --set-defaults-zone=dmz 更改默认域
例: 开启俩台虚拟机,一个双网卡主机desktop,配置ip eth0: 172.25.254.103,eth1:192.168.0.103 ,一个单网卡主机server 配置ip eth0:192.168.0.203
在desktop中:
yum insatll httpd -y
systemctl start httpd
systemctl enable httpd
利用apache服务来进行火墙的命令参数实验
firewall-cmd --list-all
firewall-cmd --set-default-zone=work 更改默认域为work
firewall-cmd --list-all
firewall-cmd --add-source=172.25.254.3 --zone=trusted
添加真机ip到trusted域,真机可以访问,server不可以
真机可以访问desktop的http
虚拟机server不能访问
firewall-cmd --remove-source=172.25.254.3 --zone=trusted
移除之后真机也不可以访问
firewall-cmd --remove-interface=eth1 --zone=public
移除eth1网卡,eth1对应的IP是192.168.0.103
firewall-cmd --list-all
firewall-cmd --add-interface=eth1 --zone=trusted
添加eth1到trusted,所有服务都可以访问
firewall-cmd --list-all --zone=trusted
查看trusted所有服务,已经添加上eth1,所以虚拟机server 可以访问
firewall-cmd --change-interface=eth1 --zone=public
更改eth1到public域,因此server又不可以访问网页
firewall-cmd --list-all
firewall-cmd --permanent --remove-service=ssh
火墙移除ssh
firewall-cmd --reload 不会立即中断正在连接的ssh服务
firewall-cmd --complete-reload 立即中断ssh服务,正在使用的ssh会断掉
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 -s 172.25.254.3 -p tcp --dport 22 -j ACCEPT
允许ip是3的主机使用 ssh这是在移除ssh的情况下做的
firewall-cmd --direct --remove-rule ipv4 filter INPUT 2 -s 172.25.254.3 -p tcp --dport 22 -j ACCEPT
让3主机不能ssh
firewall-cmd --direct --add-rule ipv4 filter INPUT 2 ! -s 172.25.254.3 -p tcp --dport 22 -j ACCEPT
除了3的其他主机可以使用ssh
#####################################
4.firewalld 的地址伪装
firewall-cmd --add-masquerade
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.0.203
将ssh 服务访问的人,引导至192.168.0.203server主机
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
虚拟机server 设置网关 gateway 172.25.254.103
w -i 可以看到连接server的显示为desktop,但真正连接server的是真机 172.25.254.3
#############################
5.firewalld 的配置文件
配置文件添加火墙服务列表内的服务
firewall-cmd --get-services
服务里面没有iscsi
cd /usr/lib/firewalld
ls
cd services/ .xml 配置文件
cp http.xml iscsi.xml
vim iscsi.xml
3 <short>ISCSI</short>
4 <description>iscsi service</description>
5 <port protocol"tcp" port="3260"/>
systemctl restart firewalld.serice
firewall-cmd --get-services
服务里面多出来iscsi
配置文件添加服务到火墙
firewall-cmd --list-all 火墙添加的服务没有http和iscsi
cd /etc/firewalld/zones
ls
vim public.xml
<service name="dhcpv6-client"/>
<service name="http"/>
<service name="iscsi"/>
<service name="ssh"/>
firewall-cmd --reload
firewall-cmd --list-all