【linux】防火墙端口设置|打开/关闭 防火墙| 防火墙iptables持久化|centos7
目录
防火墙命令
1、centos中firewalld与iptables
centos7以前的版本默认使用iptables服务进行管理防火墙规则。centos7以及其以上版本默认使用firewalld服务管理防火墙。所以在centos8中,就使用其默认的firewalld配置防火墙。
firewalld和iptables的官方说明可以参照
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls#sec-Comparison_of_Firewalld_to_system-config-firewall_and_iptables
centos7
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop 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
1、firewalld的基本使用
命令解析
firwall-cmd:是Linux提供的操作firewall的一个工具(服务)命令
–zone #作用域
–add-port=8080/tcp #添加端口,格式为:端口/通讯协议 ;add表示添加,remove则对应移除
–permanent #永久生效,没有此参数重启后失效
#进程与状态相关
启动: systemctl start firewalld
关闭: systemctl stop firewalld
systemctl status firewalld #查看防火墙状态
systemctl enable firewalld #设置防火墙随系统启动
systemctl disable firewalld #禁止防火墙随系统启动
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #更新防火墙规则 重新载入
firewall-cmd --list-ports #查看所有打开的端口
firewall-cmd --list-services #查看所有允许的服务
firewall-cmd --get-services #获取所有支持的服务
#区域相关
firewall-cmd --list-all-zones #查看所有区域信息
firewall-cmd --get-active-zones #查看活动区域信息
firewall-cmd --set-default-zone=public #设置public为默认区域
firewall-cmd --get-default-zone #查看默认区域信息
#接口相关
firewall-cmd --zone=public --add-interface=eth0 #将接口eth0加入区域public
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 --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --add-port=8080/tcp --permanent #永久添加8080端口例外(全局)
firewall-cmd --remove-port=8800/tcp --permanent #永久删除8080端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=8080/tcp --permanent #永久添加8080端口例外(区域public)
firewall-cmd --zone=public --remove-port=8080/tcp --permanent #永久删除8080端口例外(区域public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(区域public)
最常用命令
firewalld-cmd --zone=public --add-ports=8080/tcp --permanent
3.配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
防火墙设置
临时
那怎么开启一个端口呢
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
持久化
firewall-cmd
如果是新的centos 使用firewall-cmd管理的
firewall-cmd 命令加–permanent
iptables
如果是旧版本用iptables的
修改/etc/sysconfig/iptables
#!/bin/bash
echo "----------config firewall:open port."
IPTABLES_PATH=/etc/sysconfig/iptables
sed -i '/#hwBegin/,/#hwEnd/d' ${IPTABLES_PATH} #delete the hopewind old config
#add hopewind new config
sed -i '/OUTPUT ACCEPT/a\
#hwBegin\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 8806 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 3306 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60504 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60505 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60507 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60508 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60509 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60510 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60511 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60512 -j ACCEPT\
-A INPUT -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 60513 -j ACCEPT\
#hwEnd' ${IPTABLES_PATH}
service iptables restart
echo " "
参考或摘自:CentOS7打开关闭防火墙与端口的基本命令-https://www.cnblogs.com/pjblog-code/p/11456373.html
打开防火墙的某几个端口-https://www.cnblogs.com/pjblog-code/p/11456373.html
网上的教程:
设定防火墙规则
iptables -A INPUT -s 1.1.1.1/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 2.2.2.2/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 3.3.3.3/32 -p tcp -m tcp --dport 22 -j DROP iptables -A INPUT -s 4.4.4.4/32 -p tcp -m tcp --dport 22 -j DROP
保存防火墙规则
iptables-save > /etc/sysconfig/iptables
设定开机自动恢复iptables规则
vim /etc/rc.d/rc.local iptables-restore < /etc/sysconfig/iptables