防火墙策略管理(firewall)python
做用:隔离安全
局域网和外网之间网络
阻止入站,容许出站ssh
软件防火墙tcp
系统服务:firewalldide
管理工具:firewall-cmd(命令工具、 Linux7),firewell-config(图形工具)工具
查看防火墙服务状态spa
[root@server0 ~]# systemctl status firewalld.service orm
firewalld.service - firewalld - dynamic firewall daemonserver
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
Active: active (running) since 三 2017-11-01 11:37:48 CST; 4h 6min ago
Main PID: 477 (firewalld)
CGroup: /system.slice/firewalld.service
└─477 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
11月 01 11:37:49 localhost systemd[1]: Started firewalld - dynamic firewall....
Hint: Some lines were ellipsized, use -l to show in full.
预设安全区域
根据所在的网络场所区分,预设保护规则集
public:仅容许访问本机的sshd等少数几个服务(默认进入的区域)
trusted:容许任何访问
block:拒绝任何来访请求
drop:丢弃任何来访的数据包
例:
[root@server0 ~]# firewall-cmd --get-default-zone
public
[root@server0 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
防火墙判断的规则:(匹配及中止)
1.首先看请求(客户端)当中的源IP地址,全部区域中是否有对于该IP地址的策略,若是有则该请求进入该区域
2.若是没有,进入默认区
[root@server0 ~]# firewall-cmd --zone=public --add-
--add-forward-port= --add-masquerade --add-service=
--add-icmp-block= --add-port= --add-source=
--add-interface= --add-rich-rule
[root@server0 ~]# firewall-cmd --zone=public --add-service=http #开启http服务
success
[root@server0 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@server0 ~]# firewall-cmd --zone=public --add-service=ftp #开启ftp服务
success
[root@server0 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client ftp http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
[root@server0 ~]# firewall-cmd --reload #从新加载配置
success
[root@server0 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
--permanent选项 :永久生效,没有此参数重启后失效
[root@server0 ~]# firewall-cmd --permanent --zone=public --add-service=ftp #开启永久ftp服务
success
[root@server0 ~]# firewall-cmd --permanent --zone=public --add-service=http#开启永久http服务
success
[root@server0 ~]# firewall-cmd --reload #从新加载配置
success
[root@server0 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources:
services: dhcpv6-client ftp http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
修改默认区域
firewall-cmd --set-default-zone=区域名
例:
[root@localhost ~]# ping 172.25.0.11
PING 172.25.0.11 (172.25.0.11) 56(84) bytes of data.
64 bytes from 172.25.0.11: icmp_seq=1 ttl=64 time=0.174 ms
[root@server0 ~]# firewall-cmd --set-default-zone=block
success
[root@localhost ~]# ping 172.25.0.11
PING 172.25.0.11 (172.25.0.11) 56(84) bytes of data.
From 172.25.0.11 icmp_seq=1 Destination Host Prohibited
[root@server0 ~]# firewall-cmd --set-default-zone=drop
success
[root@localhost ~]# ping 172.25.0.11
PING 172.25.0.11 (172.25.0.11) 56(84) bytes of data.
开网段
[root@server0 ~]# firewall-cmd --permanent --zone=public --add-source=172.25.0.10
success
[root@server0 ~]# firewall-cmd --reload
success
[root@server0 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources: 172.25.0.10
services: dhcpv6-client ftp http ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
实现本机的端口映射
本地应用的端口重定向(端口1-->端口2)
从客户机访问端口1的请求,自动映射到本机端口2
好比,访问如下两个地址能够看到相同的页面:
http://server0.example.com:5423/
http://server0.example.com/
例:
[root@server0 ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=5423:proto=tcp:toport=80
success
[root@server0 ~]# firewall-cmd --reload
success
[root@server0 ~]# firewall-cmd --zone=public --list-all
public (default, active)
interfaces: eth0 eth1 eth2 team0
sources: 172.25.0.10
services: dhcpv6-client ftp http ssh
ports:
masquerade: no
forward-ports: port=5423:proto=tcp:toport=80:toaddr=
icmp-blocks:
rich rules:
防火墙应对方法
方式1:默认区域block,容许的放入trusted
方式2:默认区域trusted,拒绝的放入block
在RHCE的考试中会涉及到各类服务的配置 为了是考试变的简单
能够将防火墙的应对方法设置为 默认区域trusted,拒绝的放入block
在两台虚拟机上执行以下操做
# firewall-cmd --set-default-zone=trusted
在RHCE的考试中有一道题目是:
在RHCE7的考试中有一道考试题目是:
按如下要求配置 SSH 访问:
用户可以从域 example.com(这个域名考试会改变) 内的客户端 SSH 远程访问您的两个虚拟机系统
在域 my133t.org (这个域名考试会改变) 内的客户端不能访问您的两个虚拟机系统
这道题也能够用经过配置防火墙策略 将这个网段放入block区域
例如 my133t.org 对应的网段为 172.34.0.0 在两台虚拟机上执行以下操做
# firewall-cmd --permanent --add-source=172.34.0.0/24 --zone=block
*若是想要经过配置SSH服务来完成这道题 能够访问 http://www.javashuo.com/article/p-zwlufrva-kx.html
在系统 server 0上配置端口转发,要求以下:
在 172.25.0.0/24 网络中的系统,访问 server0 的本地端口 5423 将被转发到80
此设置必须永久有效
# firewall-cmd --permanent --zone=trusted --add-forward- port=port=5423:proto=tcp:toport=80
注意 凡是执行配置防火墙策略中 带有 --permanent 选项的命令时 都要执行以下操做
# firewall-cmd --reload #从新加载配置