防火墙--iptablesfirewalld
Posted 南岸青栀*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了防火墙--iptablesfirewalld相关的知识,希望对你有一定的参考价值。
防火墙–iptables
(记录记录)
参考https://www.yuque.com/xiaoyaozone/tldaxg/efw2v9
前言
iptables是fedora系列上一代防火墙,是centos/rhel 6以及6之前发行版中默认使用的防火墙服务,在rhel/centos7时代,默认的防火墙服务已经换成了firewalld,firewalld底层是使用的iptables的库,此次升级防火墙是因为iptables的使用过于复杂,命令语法不够人性化。
iptables四表五链
四表
- filter表——过滤数据包
- Nat表——用于网络地址转换(IP、端口)
- Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QoS
- Raw表——决定数据包是否被状态跟踪机制处理
五链
- 在进行路由选择前处理数据包(PREROUTING)
- 处理流入的数据包(INPUT)
- 处理流出的数据包(OUTPUT)
- 处理转发的数据包(FORWARD)
- 在进行路由选择后处理数据包(POSTROUTING)
基本的命令参数
命令实例
# 清空防火墙规则
[root@localhost ~]# iptables -F
# 查看防火墙规则
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#默认INPUT全部允许
[root@localhost ~]# iptables -I INPUT -p icmp -j DROP
[root@localhost ~]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP icmp -- 0.0.0.0/0 0.0.0.0/0
2 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
我们使用客户端ping服务器,可以发现规则id越小,优先级越高
我们使用ping可以测试drop和reject区别,drop就是把数据包直接丢弃,不回复过来的ack,reject是拒绝访问,会对数据包进行回复,使用drop可以很好的隐藏自己,使用reject会告诉对方自己是存在并且在线的。
[root@localhost ~]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP icmp -- 0.0.0.0/0 0.0.0.0/0
2 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
[root@localhost ~]# iptables -D INPUT 1
[root@localhost ~]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 REJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
防火墙–firewalld
firewalld是centos/rhce7开始默认使用,使用的是iptables的接口作为底层,服务默认开启,默认区域是public,默认放心ssh服务的默认端口(22、tcp)的dhcpv6-client的默认端口(53、udp)
常用命令集
案例:给网页设置规则
安装apache服务后,修改防火墙配置使客户端能访问网页的几种方法
[root@localhost ~]# yum install httpd
[root@localhost ~]# systemctl restart httpd
# 启动服务后,我们在客户端访问,发现无法访问,进系统查看服务对应的端口号
[root@localhost html]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6810/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7078/master
tcp6 0 0 :::80 :::* LISTEN 17683/httpd
tcp6 0 0 :::22 :::* LISTEN 6810/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7078/master
# 我们发现是80端口,接下来可以尝试着将80端口放行看看是否能访问
法1:放行端口号
[root@localhost ~]# firewall-cmd --add-port=80/tcp
# 这条命令敲完后,80端口的放行会立即生效,但是却无法永久生效,防火墙配置重载或者服务重启之后,临时的配置会消失
# 防火墙服务重启的命令
[root@localhost ~]# systemctl restart firewalld.service
# 防火墙重载的命令
[root@localhost ~]# firewall-cmd --reload
# 重载完之后用firewalld-cmd --list-all查看发现80端口的规则消失了
# 使用以下命令会永久写入配置
[root@localhost ~]# firewall-cmd --add-port=80/tcp --permanent
# 发现敲完之后,配置不会立即生效,要重启或者重载防火墙之后这条命令才会生效,如果只是加一条规则,建议先敲永久生效的命令,然后下面把这条命令最后的--permanent删除之后再执行一遍就能立即生效了
# 如果敲了很多了临时生效的命令,是因为忘记敲--permanent导致的,这时候不想再一条条敲了,可以用下面的命令让当前临时生效的规则永久保存
[root@localhost ~]# firewall-cmd --runtime-to-permanent
法2:放行服务
# 首先把定义的运行80端口访问的规则删除掉
[root@localhost ~]# firewall-cmd --remove-port=80/tcp --permanent
# 添加服务名规则
[root@localhost ~]# firewall-cmd --add-service=http --permanent
[root@localhost ~]# firewall-cmd --add-service=http
以上是关于防火墙--iptablesfirewalld的主要内容,如果未能解决你的问题,请参考以下文章