RHEL中的防火墙种类
1.iptables
2.firewalld
3.ip6tables
4.ebtables
系统中防火墙的结构:
firewalld
firewalld不是防火墙,只是用来管理防火墙的一种软件,对iptables进行操作,之后会对内核进行修改
Firewalld的工作状态
firewall-config & ##打开图形管理防火墙界面
Runtime ##临时性修改会立即生效,服务重启后消失
Permanet ##永久性修改,需要重启服务后才会生效
监控命令:
临时性修改:(会立即生效)
永久性修改:(不会立即生效)
需要重启防火墙服务
永久性更改火墙的服务,会记录到防火墙的配置文件中
public.xml.old是对public.xml的备份
/usr/lib/firewalld/目录下是对所有火墙服务状态的记录,永久性更改火墙服务,该目录下的文件也会及时做出相应的修改
firewall-cmd --state ##查看防火墙的状态
firewall-cmd --get-active-zones ##查看防火墙正在运行的网络区
firewall-cmd --get-services ##查看防火墙所有的服务
firewall-cmd --get-default-zone ##查看默认网络区
firewall-cmd --get-zones ##查看防火墙所有的网络区
如果想更改服务的名称,可以切换到/usr/lib/firewalld/services目录下进行修改,修改后需要重启火墙服务
但是一般不建议随意修改服务的名称
firewall-cmd --list-all-zones ##查看防火墙所有网络区的详细信息
firewall-cmd --list-all --zone=public ##查看public网络区的所有信息
firewall-cmd --list-all --zone=trusted ##查看trusted网络区的所有信息
firewall-cmd --set-default-zone=trusted ##设定默认网络区为trusted
firewall-cmd --add-sourse=172.25.254.49 --zone=trusted ##将172.25.254.49这个ip添加到trusted网络区
firewall-cmd --remove-sourse=172.25.254.49 --zone=trusted ##将172.25.254.49这个ip移除trusted网络区
为了方便实验,我们可以安装一个httpd服务来检测试验的效果
编辑服务下可读取的文件,启动服务
将默认网络区设为dmz,将eth1网卡从dmz网络区中移除添加到trusted网络区
eth0的ip为:172.25.254.149
eth1的ip为:172.25.49.149
此时httpd服务只能通过eth1这块网卡的ip
上面的更改为临时性更改,重启火墙服务后会消失
编辑httpd的主配置文件,将服务端口改为8080
在图形管理火墙界面中添加8080/tcp端口
Reload Firewalld ##重启火墙服务
此时默认的80端口将无法登陆httpd服务,需在访问的ip后添加8080端口
永久性的移除http和https服务,需要重启火墙服务才会生效
永久性移除8080/tcp端口,也需要重启火墙服务才会生效
此时将无法登陆httpd服务
firewall-cmd --reload ##重启火墙服务临时性的修改会消失,但临时性正在连接中的服务不会断开
firewall-cmd --complete-reload ##重启火墙服务临时性的修改会消失,如果临时性的服务正在连接中服务将会断开
firewall-cmd --direct --get-all-rules ##查看火墙服务中的所有规则
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.49 -p tcp --dport 22 -j REJECT
拒绝ip为172.25.254.49的主机访问22端口的ssh服务
测试:
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 ! -s 172.25.254.49 -p tcp --dport 21 -j REJECT
只允许ip为172.25.254.49的主机访问21端口的ftp服务,其他主机都拒绝
测试之前需要将ftp服务添加到火墙服务上
测试: