firewalld
firewalld域
网络名称 默认配置
trusted(信任) ## 可接受所有的网络连接
home(家庭) ##用于家庭网络,仅接受ssh,mdns,ipp-client,samba-client或 dhcpv6- client服务连接
internal (内部) ##用于内部网络,仅接受ssh,mdns,ipp-client,samba-client或dhcpv6-client服务连接
work(工作) ##用于工作,仅接受ssh,ipp-client或dhcpv6-client服务连接
public(公共) ##为firewalld的默认区域,在公共区域内使用,仅接受ssh或dhcpv6-client服务连 接block(限制) ##拒
external(外部) ##出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
dmz(非军事区) ##仅接受ssh服务连接
drop(丢弃) ##任何接受的网络数据包都被丢弃,没有任何回复
block(限制) ##默认拒绝所有网络连接
hostnamectl set-hostname westos.westos.com
图形化调用火墙的命令
firewall-config
【修改默认域为trusted】
【修改默认域为public】
【修改默认域为block】
拒绝所有网络连接
【修改默认域为drop】
不给出任何响应
以下实验以public为例
【在public默认域中添加服务】
【在public默认域中添加端口】
【在public默认域打开伪装功能】
【在public默认域中,拒绝使用的用户】
步骤:
搭建实验环境
三台主机,真机(或其他虚拟机)desktop,server
1 真机:单网卡
eth0=175.25.254.12
systemctl restart network
测试网络
ping 172.25.254.112 ##网络通畅
2 desktop: 两块网卡
eth0=172.25.254.112
添加第二块虚拟网卡设备 ##打开图形界面,添加设备
eth1=192.168.0.112
systemctl restart network
3 server: 一块网卡
eth0=192.168.0.212
systemctl restart network
4 desktop:
yum install httpd -y
systemctl start httpd
安装 Firewall
yum install firewalld firewall-cmd -y
一般情况下,
Firewall 在 Linux 系统中为默认安装
安装 Apache
命令行调用火墙
systemctl start firewalld.service ##开启
systemctl stop firewalld.service ##停止
systemctl status firewalld.service ##状态
systemctl enable firewalld.service ##开机自动开启
systemctl disable firewalld.service ##开机自动关闭
systemctl mask firewalld.service ##锁定
systemctl disable firewalld.service ##解锁
使用命令接口配置防火墙
firewall-cmd --state ###显示火墙的状态 not running | running
firewall-cmd --list-all-zones ###查看火墙所有的域的信息
firewall-cmd --list-all ###查看火墙默认域的信息
firewall-cmd --get-active-zones ###查看火墙正在使用的域的信息
firewall-cmd --get-zones ###显示火墙所有的域名
firewall-cmd --get-default-zone ###查看默认域
firewall-cmd --zone=trusted --list-all ###显示指定域的信息,例如trusted
firewall-cmd --get-services ###火墙可添加的服务
firewall-cmd --set-default-zone=trusted ###更改默认域为trusted
Apache 测试防火墙服务
desktop:
eth0 :172.25.254.112
eth1 :192.168.0.112
firewall-cmd --add-source=172.25.254.12 --zone=trusted ##在火墙中指定ip加入指定域,只有12可以访问
firewall-cmd --remove-source=172.25.254.12 --zone=trusted ##删除指定域中的指定ip
firewall-cmd --remove-interface=eth1 --zone=public ##移除指定域public中的指定eth1的网络接口,使其可以使用其他服务来访问
firewall-cmd --add-interface=eth1 --zone=trusted ##添加指定网卡接口到指定域,其他主机可以访问192.168.0.112
firewall-cmd --change-interface=eth1 --zone=public/trusted ##修改网卡接口到指定的域
真机访问112
firewall-cmd --add-source=172.25.254.12 --zone=trusted
firewall-cmd --remove-source=172.25.254.30 --zone=trusted
firewall-cmd --add-interface=eth1 --zone=trusted
firewall-cmd --change-interface=eth1 --zone=public
火墙服务的数据文件
cd /usr/lib/firewalld/
ls
icmptypes ipsets services xmlschema zones
pwd
/usr/lib/firewalld/ ####火墙服务可以读取到的文件
cd services
cp -p http.xml iscsi.xml 火墙服务中加入iscsi服务,使策略可以调用。火墙启动时会读取此数据 文件。
vim iscsi.xml
主要 内容:
<short> iSCSI </short>
<description> iSCSI server. </description>
<port protocol="tcp" port="3260"/>
</service>
systemctl restart firewalld
firewall-cmd --permanent --zone=public --remove-service=iscsi
firewall-cmd --reload
firewall-cmd --list-all
vim iscsi.xml
增加/删除端口
firewall-cmd --add-port=8080/tcp ##临时添加,直接查看,不需要重载
firewall-cmd --remove-port=8080/tcp ##删除端口
firewall-cmd --permanent --add-port=8080/tcp ##永久添加
firewall-cmd --reload ##重载
firewall-cmd --list-ports ##查看端口
刷新
firewall-cmd --permanent --remove-service=ssh ##删除ssh服务
firewall-cmd --complete-reload ###加载并断服务,加载完成后根据火墙的策略在链接服务
firewall-cmd --reload ###加载火墙策略,但不会断掉服务只有服务断掉后在重新链接时火墙策略生效。
实验:
真机12: ssh root@172.25.254.112
在112:firewall-cmd --permanent --remove-service=ssh
firewall-cmd --complete-reload
测试
在此时连接112的真机12,断掉服务,运行不了
在112:firewall-cmd --permanent --remove-service=ssh
firewall-cmd --complete-reload
测试:在此时连接112的真机12,依然可以运行**
地址伪装
转换端口
实验环境
2 desktop: 两块网卡
eth0=172.25.254.112
eth1=192.168.0.112
systemctl restart network
maspuerade : yes ##开启地址伪装功能
sysctl -a | grep net.ipv4.ip_forward ## 查看内核路由功能是否开启
net.ipv4.ip_forward=1 ## 内核路由功能已开启
net.ipv4.ip_forward=0 ##内核路由未开启
开启内核路由的两中方法
一 :
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
二:
echo 1 > /proc/sys/net/ipv4/ip_forward
3 server: 一块网卡
eth0=192.168.0.212
GATEWAY=192.168.0.112 ##添加网关:双网卡主机任意一个 ip 地址
systemctl restart network
步骤:
双网卡主机设置地址转换功能
desktop:
firewall-cmd --permanent --add-service=ssh
firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.12
firewall-cmd --reload
firewall-cmd --all-list
## 任何 ip 远程登录本机 端口 22 号 sshd 服务都将被连接到 ip 172.25.12.250 主机
远程连接的真实 ip 是172.25.12.250 主机
需要认证密码为 172.25.254.12 主机的 root 密码
输入正确密码后,可以看到本机 ip 为 172.25.12.250
测试:
server:
ssh root@172.25.254.112
ifconfig ##ip为真机172.25.12.250
真机12:
w -i ## 查看到来源 ip 是172.25.254.112 主机而不是172.25.254.212主机
测试:
连接出现以下情况时,删除文件
server:
server:
真机:
拒绝用户使用指定服务访问
desktop :
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.12 -p tcp --dport 80 -j REJECT
firewall-cmd --reload
测试:
真机12:
浏览器中:172.25.254.112 被拒