linux关闭防火墙、添加访问策略

本文详细介绍如何在CentOS7中配置和管理firewalld及iptables防火墙,包括停止、禁用firewalld,以及通过iptables配置特定端口如SSH(22)、HTTP(80)和HTTPS(8080)的开放策略。
1.centos7
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和8080端口为例。***部分一般添加到“-A INPUT -p tcp -m state --state NEW -m tcp--dport 22 -j ACCEPT”行的上面或者下面,切记不要添加到最后一行,否则防火墙重启后不生效。
systemctl restart iptables.service #最后重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
### HTTPD 服务在关闭防火墙后仍无法访问的可能原因及解决方法 #### 服务未正常启动 即使防火墙关闭,若 `httpd` 服务未正确启动,仍然无法访问。可以通过以下命令检查服务状态: ```bash systemctl status httpd ``` 如果服务未运行,可以使用以下命令启动并设置开机自启: ```bash systemctl start httpd systemctl enable httpd ``` 这将确保 `httpd` 服务正常运行并持久化配置[^2]。 #### 端口限制配置 即使关闭了系统防火墙,某些服务(如 `iptables`)可能仍然限制了特定端口的访问。例如,`iptables` 可能仅对某些服务(如 `nginx`)开放了端口,而未对 `httpd` 开放。可以通过以下命令查看当前的 `iptables` 规则: ```bash iptables -L -n ``` 如果发现 `httpd` 的 80 端口未被允许,可以添加相应规则: ```bash iptables -A INPUT -p tcp --dport 80 -j ACCEPT service iptables save ``` 这将确保 80 端口对所有流量开放,并保存配置以防止重启后失效[^1]。 #### SELinux 或 AppArmor 限制 SELinux 或 AppArmor 等安全模块可能阻止了 `httpd` 的访问。可以通过以下命令临时禁用 SELinux 进行测试: ```bash setenforce 0 ``` 如果禁用后服务可以访问,则需要调整 SELinux 策略或永久禁用该模块。编辑 `/etc/selinux/config` 文件,将 `SELINUX=enforcing` 改为 `SELINUX=disabled`,然后重启系统[^1]。 #### 网络配置问题 确保服务器的网络配置正确,并且客户端能够通过网络访问服务器。可以通过以下命令测试本地访问: ```bash curl http://localhost ``` 如果本地可以访问,但远程无法访问,则可能是网络配置或路由问题。检查服务器的 IP 地址、子网掩码和网关设置是否正确,并确保客户端与服务器处于同一网络段。 #### 服务绑定配置问题 `httpd` 服务可能配置为仅绑定到 `127.0.0.1`,导致远程访问受限。检查 `/etc/httpd/conf/httpd.conf` 文件中的 `Listen` 指令,确保其绑定到服务器的公网 IP 或 `0.0.0.0`: ```apache Listen 80 ``` 如果配置为绑定特定 IP,例如: ```apache Listen 127.0.0.1:80 ``` 则需要修改为: ```apache Listen 0.0.0.0:80 ``` 然后重启 `httpd` 服务以应用更改: ```bash systemctl restart httpd ``` 这将确保服务监听所有网络接口,允许远程访问[^2]。 #### 其他服务冲突 某些服务可能占用 80 端口,导致 `httpd` 无法正常启动。可以通过以下命令检查端口占用情况: ```bash netstat -tuln | grep 80 ``` 如果发现其他服务(如 `nginx`)占用了 80 端口,可以停止该服务或更改其配置以释放端口。例如,停止 `nginx` 服务: ```bash systemctl stop nginx ``` 然后重新启动 `httpd` 服务: ```bash systemctl start httpd ``` 这将确保 `httpd` 能够正常使用 80 端口[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值