CentOS7防火墙firewalld和iptable的设置和使用

本文介绍了在CentOS7上遇到服务无法访问问题后,通过排查发现是防火墙设置导致的。文章详细总结了firewalld的基本使用、systemctl的介绍、firewalld-cmd的配置,以及如何开启端口和服务。此外,还提供了将系统防火墙从firewalld切换到iptables的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部署了服务器环境之后,服务器正常启动,日志也正常打印,但是服务不能访问,对问题逐一进行排查,最后发现是服务器防火墙设置的问题。于是将防火墙的一些设置方法总结记录如下:

 

1、firewalld的基本使用

启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld

2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
设置firewall开机启动:systemctl enable firewalld.service
禁止firewall开机启动:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl –failed

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

4.那怎么开启一个端口

添加
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

5.如何开放一个服务

暫時開放 ftp 服務
firewall-cmd –add-service=ftp

永久開放 ftp 服務
firewall-cmd –add-service=ftp –permanent
永久關閉
firewall-cmd –remove-service=ftp –permanent
success

讓設定生效
systemctl restart firewalld

檢視設定是否生效
iptables -L -n | grep 21
ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW

檢查防火牆狀態
firewall-cmd –state
running

systemctl stop firewalld
firewall-cmd –state
not running

firewall-cmd –list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

在 FirewallD 的服務名稱
firewall-cmd –get-service
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp 
high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd 
ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn 
pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind 
samba samba-client smtp ssh telnet tftp tftp-client transmission-client 
vnc-server wbem-https

查詢服務的啟用狀態
firewall-cmd –query-service ftp
yes
firewall-cmd –query-service ssh
yes
firewall-cmd –query-service samba
no
firewall-cmd –query-service http
no

自行加入要開放的 Port
firewall-cmd –add-port=3128/tcp
firewall-cmd –list-all
public (default)
interfaces:
sources:
services: dhcpv6-client ftp ssh
ports: 3128/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

6.CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤。

 

1)、关闭firewall:
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd –state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

2)、iptables防火墙(这里iptables已经安装,下面进行配置)
vi/etc/sysconfig/iptables #编辑防火墙配置文件
sampleconfiguration for iptables service
you can edit thismanually or use system-config-firewall
please do not askus to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT[0:0]
:OUTPUT ACCEPT[0:0]
-A INPUT -m state–state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -mstate –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 80 -jACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 8080-j ACCEPT
-A INPUT -j REJECT–reject-with icmp-host-prohibited
-A FORWARD -jREJECT –reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出

 

### 如何通过防火墙或系统设置永久禁用80端口 为了实现CentOS 8系统的80端口被永久禁用,可以通过修改防火墙规则来阻止任何流量访问该端口。以下是具体的操作方式: #### 方法一:使用`firewalld`服务 如果当前系统正在运行 `firewalld` 防火墙,则可以直接利用其命令行工具来拒绝特定端口的流量。 1. **移除已有的80端口开放规则** 如果之前已经开启了80端口,需要先将其删除。 ```bash firewall-cmd --remove-port=80/tcp --permanent ``` 2. **添加拒绝策略** 添加一条新的规则用于明确拒绝针对80端口的所有入站连接请求。 ```bash firewall-cmd --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port protocol="tcp" port="80" reject' --permanent ``` 3. **重新加载并验证更改** 完成上述操作之后,需重新载入配置使改动生效,并确认新规则已被应用。 ```bash firewall-cmd --reload firewall-cmd --list-all ``` 以上步骤确保即使重启服务器后,对于HTTP服务默认使用的80端口依旧保持关闭状态[^1]。 #### 方法二:编辑Iptables规则文件 当更倾向于传统iptables管理方案时,也可以手动调整相关联的规则定义文档达到相同效果。 1. 打开iptables配置文件进行编辑: ```bash vi /etc/sysconfig/iptables ``` 2. 查找是否存在允许80端口的数据包进入规则(如 `-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT`),如果有则将其注释掉或者直接删除。 3. 新增一行用来显式丢弃发往本地主机上监听于TCP协议下的第80号目标端口号的一切尝试联系行为记录条目如下所示形式之一即可满足需求: ```bash -A INPUT -p tcp --dport 80 -j DROP ``` 4. 存盘退出后再执行一次启动脚本来激活最新设定内容: ```bash systemctl restart iptables.service ``` 这样做的好处在于即便经历多次开关机循环也不会轻易丢失先前所做的各项参数定制成果[^4]。 ```bash # 示例代码片段展示如何处理iptable规则中的80端口封锁情况 -A INPUT -p tcp --dport 80 -j DROP ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值