linux启动或关闭防火墙,开放端口

本文摘自本人的原创博客从零开始搭建Linux服务器开发运行环境-详细步骤,第六章。

1.查看防火墙

查看防火墙状态:service iptables status
开启防火墙:service iptables start
关闭防火墙:service iptables stop

如果出现报错:Unit iptables.service could not be found.

这是因为CentOS7默认的防火墙不是iptables,而是firewalle。出现此情况可能是iptables防火墙未安装。

如果你只是想开放某个端口的防火墙,那么你有两种选择:1.firewalld 防火墙;2.iptables防火墙。如果你选择第一种,则不用安装iptables。

下面介绍firewalld 防火墙开放端口的方法和iptables的安装方法。

2.firewalld 防火墙开放端口

查看firewalld状态:systemctl status firewalld

开启firewalld:systemctl start firewalld

如果启动报错:Failed to start firewalld.service: Unit is masked.

是因为被锁定了,取消firewalld的锁定:systemctl unmask firewalld,再启动即可。

开放某个端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent

重新载入:firewall-cmd --reload

这样,3306端口都开放啦。

3.安装iptables服务

首先,停止firewalld服务,执行:systemctl stop firewalld
禁用firewalld服务,执行:systemctl mask firewalld
执行:systemctl unmask firewalld
安装iptables服务,执行:yum -y install iptables-services
设置开机启动,执行:

systemctl enable iptables
systemctl stop iptables
systemctl start iptables
systemctl restart iptables
service iptables save

然后就可以启动防火墙啦!

4.iptables防火墙开放端口

先停掉防火墙service iptables stop

关闭firewalld:

systemctl stop firewalld  
systemctl mask firewalld

开放3306端口,执行:iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

后面如果还有端口要开放,直接在文件/etc/sysconfig/iptables里照着样子添加一行即可

保存,执行:service iptables save

开启服务,执行:systemctl restart iptables.service

查看防火墙状态:service iptables status

可以看到,防火墙已经在运行了,讲道理此时3306端口也已经开放了。

但是!有可能你跟我一样,mysql客户端还是连不上!,这是因为如果是阿里云的服务器,需要在阿里云的控制台去开放端口。

博主表示在写这篇博客的时候一度怀疑人生,思前想后想不通,最后发现是阿里云在作祟,坑不坑!!!

5.开放阿里云服务器的端口

登陆你的阿里云,进入控制台,找到你的云服务器实例,点击后面的更多,选择【网络和安全组】下的【安全组配置】

点进去以后,点击【配置规则】,添加一个新的或者克隆一个规则

协议类型要选Mysql(3306),然后保存

这样就生效啦,赶快使用你的mysql客户端连接一下(注意防火墙要保证3306端口开放)

如果你此时连接还是报错:

这个报错1130,说明你所连接的用户账户没有远程连接的权限,只能在本机localhost登录,。需要更改 mysql 数据库里的 user表里的 host字段 把localhost改成%,下面介绍方法:

执行mysql -u root -p,输入密码

进入mysql控制台,进入数据库:use mysql;
更改host字段值:update user set host='%' where host='localhost';
刷新:flush pricilges;
查看:select host,user from user;

退出:quit;

此时,你就可以使用mysql客户端连接你的mysql啦,实在不行的话你重启一下mysql试试:service mysql start,或者修改一下root的密码,保证你输入的密码正确。

可以看见已经连接成功。怎么样,6不6!!!
--------------------- 
作者:林晓风 
来源:优快云 
原文:https://blog.youkuaiyun.com/Lin_xiaofeng/article/details/87454717
版权声明:本文为博主原创文章,转载请附上博文链接!

### 如何在 Linux 中通过防火墙关闭特定端口 #### 使用 `firewalld` 关闭指定端口 如果当前系统正在使用 `firewalld` 作为主要的防火墙管理工具,则可以通过以下命令移除已开放端口: ```bash firewall-cmd --zone=public --remove-port=<端口号>/<协议> --permanent ``` 例如,要关闭 TCP 协议下的 80 端口,可以执行如下命令[^2]: ```bash firewall-cmd --zone=public --remove-port=80/tcp --permanent ``` 完成上述操作后,需重新加载 `firewalld` 的配置以使更改生效: ```bash firewall-cmd --reload ``` 为了确认该端口已被成功关闭,可运行查询命令: ```bash firewall-cmd --query-port=80/tcp ``` 若返回值为 `no`,则表示端口已经成功关闭[^3]。 --- #### 使用 `iptables` 关闭指定端口 对于使用 `iptables` 进行防火墙管理的情况,可通过添加拒绝规则实现关闭特定端口的功能。以下是具体方法: 创建一条规则阻止对目标端口的所有流量(假设端口为 80): ```bash iptables -A INPUT -p tcp --dport 80 -j DROP ``` 保存这些规则以便重启后仍然有效(不同发行版可能有不同的保存方式)。例如,在 CentOS 上可以执行以下命令保存并启用服务: ```bash service iptables save systemctl enable iptables.service ``` 注意:当从 `firewalld` 切换至 `iptables` ,应先停止并禁用 `firewalld` 服务,然后再启动和设置 `iptables`[^1]。 --- #### 总结 无论是采用 `firewalld` 还是 `iptables` 来管理防火墙,都可以灵活控制哪些端口处于打开状态以及哪些应该被屏蔽掉。选择合适的工具取决于具体的环境需求和个人偏好。务必记得测试修改后的策略是否按预期工作,并定期审查安全日志文件来发现潜在威胁[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值