5.16. 配置防火墙锁定
				如果本地应用程序或服务以 
root 身份运行(例如 libvirt),则可以更改防火墙配置。使用这个特性,管理员可以锁定防火墙配置,从而达到没有应用程序或只有添加到锁定白名单中的应用程序可以请求防火墙更改的目的。锁定设置默认会被禁用。如果启用,用户就可以确定,防火墙没有被本地的应用程序或服务进行了不必要的配置更改。
			5.16.1. 使用命令行客户端配置锁定
复制链接链接已复制到粘贴板!
					要查询是否启用了锁定,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
					 如果启用了锁定,该命令会打印 
root 身份运行以下命令: 
firewall-cmd --query-lockdown
~]# firewall-cmd --query-lockdownyes,且退出状态为 0。否则,将打印 no ,且退出状态为 1。
				
					要启用锁定,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 身份输入以下命令: 
firewall-cmd --lockdown-on
~]# firewall-cmd --lockdown-on
					要禁用锁定,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 身份使用以下命令: 
firewall-cmd --lockdown-off
~]# firewall-cmd --lockdown-off5.16.2. 使用命令行客户端配置锁定白名单选项
复制链接链接已复制到粘贴板!
					锁定白名单中可以包含命令、安全上下文、用户和用户 ID。如果白名单中的命令条目以星号 “*” 结尾,则所有以该命令开头的命令行都将匹配。如果没有 “*”,则包括参数的绝对命令必须匹配。
				
					上下文是正在运行的应用程序或服务的安全(SELinux)上下文。要获得正在运行的应用程序的上下文,请使用以下命令: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
					 该命令返回所有正在运行的应用程序。通过 grep 工具将结果进行管道输出以获取感兴趣的应用程序。例如: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
ps -e --context
~]$ ps -e --contextps -e --context | grep example_program
~]$ ps -e --context | grep example_program
					要列出白名单中的所有命令行,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --list-lockdown-whitelist-commands
~]# firewall-cmd --list-lockdown-whitelist-commands
					要在白名单中添加命令 command,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --add-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
~]# firewall-cmd --add-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
					要从白名单中删除命令 command,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --remove-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
~]# firewall-cmd --remove-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
					要查询 command 命令是否在白名单中,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
					 如果为 true,命令会打印 
root 用户身份输入以下命令: 
firewall-cmd --query-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
~]# firewall-cmd --query-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'yes,且退出状态为 0。否则,将打印 no ,且退出状态为 1。
				
					要列出白名单中的所有安全上下文,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --list-lockdown-whitelist-contexts
~]# firewall-cmd --list-lockdown-whitelist-contexts
					要在白名单中添加上下文 context,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --add-lockdown-whitelist-context=context
~]# firewall-cmd --add-lockdown-whitelist-context=context
					要从白名单中删除上下文 context,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 身份输入以下命令: 
firewall-cmd --remove-lockdown-whitelist-context=context
~]# firewall-cmd --remove-lockdown-whitelist-context=context
					要查询上下文 context 是否在白名单中,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
					 如果为 true,则打印 
root 用户身份输入以下命令: 
firewall-cmd --query-lockdown-whitelist-context=context
~]# firewall-cmd --query-lockdown-whitelist-context=contextyes,退出状态为 0 ,否则打印 no,退出状态为 1。
				
					要列出白名单中的所有用户 ID,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --list-lockdown-whitelist-uids
~]# firewall-cmd --list-lockdown-whitelist-uids
					要在白名单中添加用户 ID uid,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --add-lockdown-whitelist-uid=uid
~]# firewall-cmd --add-lockdown-whitelist-uid=uid
					要从白名单中删除用户 ID uid,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --remove-lockdown-whitelist-uid=uid
~]# firewall-cmd --remove-lockdown-whitelist-uid=uid
					要查询用户 ID uid 是否在白名单中,请输入以下命令: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
					 如果为 true,则打印 
firewall-cmd --query-lockdown-whitelist-uid=uid
~]$ firewall-cmd --query-lockdown-whitelist-uid=uidyes,退出状态为 0 ,否则打印 no,退出状态为 1。
				
					要列出白名单中的所有用户名,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --list-lockdown-whitelist-users
~]# firewall-cmd --list-lockdown-whitelist-users
					要在白名单中添加用户名 user,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --add-lockdown-whitelist-user=user
~]# firewall-cmd --add-lockdown-whitelist-user=user
					要从白名单中删除用户名 user,请以 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
root 用户身份输入以下命令: 
firewall-cmd --remove-lockdown-whitelist-user=user
~]# firewall-cmd --remove-lockdown-whitelist-user=user
					要查询用户名 user 是否在白名单中,请输入以下命令: 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
					 如果为 true,则打印 
firewall-cmd --query-lockdown-whitelist-user=user
~]$ firewall-cmd --query-lockdown-whitelist-user=useryes,退出状态为 0 ,否则打印 no,退出状态为 1。
				5.16.3. 使用配置文件配置锁定白名单选项
复制链接链接已复制到粘贴板!
					默认白名单配置文件包含 NetworkManager 上下文和 libvirt 的默认上下文。用户 ID 0 也位于列表中。 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
				
					以下是一个白名单配置文件示例,为 firewall-cmd 工具启用所有命令,对于名为 user 的用户,其用户 ID 为 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
					 此示例展示了 
 
Copy to Clipboard
Copied!
 
 
Toggle word wrap
Toggle overflow
 
 
。在这个示例中,只允许 --lockdown-on 命令。 
					
815 : 
user id  和 user name ,但只需要其中一个选项。Python 是程序解释器,它位于命令行的前面。您还可以使用特定的命令,例如: /usr/bin/python /bin/firewall-cmd --lockdown-on
/usr/bin/python /bin/firewall-cmd --lockdown-on注意
							在 Red Hat Enterprise Linux 7 中,所有工具都放在 
/usr/bin/ 目录中,/bin/ 目录被符号链接到 /usr/bin/ 目录。换句话说,虽然以 root 用户身份运行 firewall-cmd 的路径可能会解析为 /bin/firewall-cmd,但现在可以使用/usr/bin/firewall-cmd。所有新脚本都应该使用新位置。但请注意,如果以 root 身份运行的脚本已被写为使用 /bin/firewall-cmd 路径,那么除了通常为非root 用户使用的 /usr/bin/firewall-cmd 路径外,还必须将该命令路径列入白名单。
						
							命令的 name 属性末尾的 “*” 表示所有以这个字符串开头的命令都将匹配。如果没有 “*”,则包括参数的绝对命令必须匹配。