一、redhat7中防火墙的配置和使用
RHEL7 虽然仍有
iptables
,但不建议使用了,而是使用新的firewalld
服务。
1.systemctl:redhat7中使用了firewalld代替了原来的iptables
systemctl unmask firewalld #执行命令,即可实现取消服务的锁定
systemctl mask firewalld # 下次需要锁定该服务时执行
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
systemctl reloadt firewalld.service #重载配置
systemctl restart firewalld.service #重启服务
systemctl status firewalld.service #显示服务的状态
systemctl enable firewalld.service #在开机时启用服务
systemctl disable firewalld.service #在开机时禁用服务
systemctl is-enabled firewalld.service #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表
2.防火墙常用命令:
常用命令介绍
firewall-cmd --version ##查看版本
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,更新防火墙规则,执行结果success
firewall-cmd --list-all ##查看防火墙所有配置情况
firewall-cmd --list-ports ##查看所有打开的端口
firewall-cmd --list-services ##查看所有允许的服务
firewall-cmd --get-services ##获取所有支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --zone=public --list-ports ##查看所有打开的端口
#区域相关
firewall-cmd --list-all-zones ##查看所有区域信息
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-active-zones ##查看活动区域信息
firewall-cmd --get-zone-of-interface=eth0 ##查看指定接口所属区域
firewall-cmd --set-default-zone=public ##设置public为默认区域
firewall-cmd --get-default-zone ##查看默认区域信息
firewall-cmd --zone=public --add-interface=eth0 ##将接口eth0加入区域public
#开饭服务或端口
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则,这个命令是和iptables的相同的
firewall-cmd --help ##查看帮助
man firewall-cmd ##查看帮助
firewall-cmd --panic-on ##拒绝所有包
firewall-cmd --panic-off ##取消拒绝状态
firewall-cmd --query-panic ##查看是否拒绝
#接口相关
firewall-cmd --zone=public --remove-interface=eth0 #从区域public中删除接口eth0
firewall-cmd --zone=default --change-interface=eth0 #修改接口eth0所属区域为default
firewall-cmd --get-zone-of-interface=eth0 #查看接口eth0所属区域
#端口控制
firewall-cmd --add-port=80/tcp --permanent #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent #永久删除80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent #永久添加80端口例外(区域public)
firewall-cmd --zone=public --remove-port=80/tcp --permanent #永久删除80端口例外(区域public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(区域public)
firewall-cmd --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp # 开放80端口
firewall-cmd --permanent --remove-port=8080/tcp # 移除端口
firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙)
-------------------------------------示例--------------------------------------------
# 添加服务端口
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public(作用域) --add-service=http(服务) --permanent(永久生效)
firewall-cmd --reload # 重新载入,更新防火墙规则
firewall-cmd --zone= public --query-port=80/tcp #查看
# 删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent # 删除
# 控制IP段访问
# firewall-cmd --list-all 查看 默认是允许所有的访问
# firewall-cmd --permanent --remove-service=ssh 禁掉
# firewall-cmd --permanent --add-rich-rule 'rule service name=ssh family=ipv4 source address=192.168.1.0/24 accept' 允许访问
# firewall-cmd --permanent --add-rich-rule 'rule service name=ssh family=ipv4 source address=192.168.2.0/24 reject' 拒绝访问
# firewall-cmd --reload 重启一下
# firewall-cmd --list-all 在看一下变化。
# firewall-cmd --permanent --remove-rich-rule 'rule service name=ssh family=ipv4 source address=192.168.1.0/24 accept' 删除策略
## 检查设置是否生效
iptables -L -n | grep 21
## 设置黑/白名单
firewall-cmd --permanent --zone=trusted --add-source=ip 执行结果success
## 重新加载配置
firewall-cmd --reload # 执行结果success
## 列出白名单
firewall-cmd --permanent --zone=trusted --list-sources 执行结果所有的ip
## 删除所有
firewall-cmd --zone=drop --list-all 需要重新加载配置
## 删除指定
firewall-cmd --permanent --zone=drop --remove-source=ip 需要重新加载配置
参数解释 :
–add-service #添加的服务
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
3.开启端口
# 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
二、iptables 使用(Redhat7 以下版本)
yum install iptables-services #安装iptables
systemctl stop firewalld.service #停止firewalld
systemctl mask firewalld.service #禁止自动和手动启动firewalld
systemctl start iptables.service #启动iptables
systemctl start ip6tables.service #启动ip6tables
systemctl enable iptables.service #设置iptables自启动
systemctl enable ip6tables.service #设置ip6tables自启动
- iptables 语法:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> –sport 源端口 <-d 目标IP/目标子网> –dport 目标端口 -j 动作
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-m:加载其他模块功能;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
1.开放80,22,8080 端口
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
2.保存
/etc/rc.d/init.d/iptables save
3.查看打开的端口
/etc/init.d/iptables status
4.关闭防火墙
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
————————————————
版权声明:本文参考为CSDN博主「朽木o0」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/s_p_j/article/details/80979450