Linux防火墙设置(不用firewalld,使用iptable作为防火墙)

本文详细介绍如何在CentOS7中禁用默认的firewalld防火墙,安装并配置iptables作为替代方案。从卸载firewalld到安装iptables,再到设定各种规则如允许特定端口和服务,最后保存和启动iptables服务,提供了全面的步骤指导。

iptables 的安装与配置(不用firewalld,使用iptable作为防火墙)

由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables。

# service firewalld status; #查看防火墙状态

 

(disabled 表明 已经禁止开启启动 enable 表示开机自启,inactive 表示防火墙关闭状态 activated(running)表示为开启状态)

# service firewalld start;  或者 #systemctl start firewalld.service;#开启防火墙

# service firewalld stop;  或者 #systemctl stop firewalld.service;#关闭防火墙

# service firewalld restart;  或者 #systemctl restart firewalld.service;  #重启防火墙

# systemctl disable firewalld.service #禁止防火墙开启自启

 # systemctl enable firewalld #设置防火墙开机启动

#yum remove firewalld #卸载firewall

 禁用/停止自带的firewalld服务

systemctl stop firewalld  #停止firewalld服务  

 systemctl mask firewalld  #禁用firewalld服务 

安装iptables防火墙及操作:

service iptables status   #先检查是否安装了iptables  

yum install -y iptables  #安装iptables  

yum update iptables   #升级iptables  

yum -y install iptables-services  #安装iptables-services  

设置现有规则

iptables -L -n   #查看iptables现有规则  

iptables -P INPUT ACCEPT  #先允许所有,不然有可能会杯具  

iptables -F  #清空所有默认规则  

iptables -X  #清空所有自定义规则  

iptables -Z  #所有计数器归0  

iptables -A INPUT -i lo -j ACCEPT  #允许来自于lo接口的数据包(本地访问)  

iptables -A INPUT -p tcp --dport 22 -j ACCEPT  #开放22端口  

iptables -A INPUT -p tcp --dport 21 -j ACCEPT  #开放21端口(FTP)  

iptables -A INPUT -p tcp --dport 80 -j ACCEPT #开放80端口(HTTP)   

iptables -A INPUT -p tcp --dport 443 -j ACCEPT  #开放443端口(HTTPS)  

iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT  #允许ping  

iptables -A INPUT -m state --state  RELATED,ESTABLISHED -j ACCEPT  #允许接受本机请求之后的返回数据 RELATED,是为FTP设置的  

iptables -P INPUT DROP  #其他入站一律丢弃  

iptables -P OUTPUT ACCEPT  #所有出站一律绿灯 

iptables -P FORWARD DROP  #所有转发一律丢弃   

其他规则设定

iptables -A INPUT -p tcp -s 45.96.174.68 -j ACCEPT  #如果要添加内网ip信任(接受其所有TCP请求)  

iptables -P INPUT DROP  #过滤所有非以上规则的请求  

iptables -I INPUT -s ***.***.***.*** -j DROP  #要封停一个IP,使用下面这条命令:  

iptables -D INPUT -s ***.***.***.*** -j DROP  #要解封一个IP,使用下面这条命令:  

保存规则设定

service iptables save  #保存上述规则  

开启iptables服务

systemctl enable iptables.service  #注册iptables服务  相当于以前的chkconfig iptables on  

systemctl start iptables.service  #开启服务  

systemctl status iptables.service  #查看状态    

关于iptable防火墙的命令

然后安装iptables:

yum install iptables

yum install iptables-services

查看防火墙:

service iptables status

停止防火墙

service iptables stop

开启防火墙

service iptables start

永久开启关闭防火墙

开启: systemctl enable iptables

关闭: systemctl disable iptables

service iptables save #设置完成后要保存,不然重启后还是之前的样子

systemctl restart iptables #重启防火墙

Linux系统中配置的防火墙规则未生效,可能是由多种原因导致的。以下是一些常见的解决方法和排查步骤: ### 1. 检查防火墙服务是否运行 确保防火墙服务(如`iptables`或`firewalld`)正在运行。可以通过以下命令检查其状态: ```bash systemctl status firewalld ``` 或 ```bash systemctl status iptables ``` 如果服务未运行,可以使用以下命令启动并启用它: ```bash systemctl start firewalld systemctl enable firewalld ``` 或 ```bash systemctl start iptables systemctl enable iptables ``` ### 2. 验证规则是否正确应用 在配置完防火墙规则后,需要确认规则是否已正确加载。可以使用以下命令查看当前的防火墙规则: ```bash iptables -L -n -v ``` 或 ```bash firewall-cmd --list-all ``` 如果规则未显示在输出中,则可能未正确应用。 ### 3. 检查规则的保存 如果规则未保存,重启后将会丢失。对于`iptables`,可以使用以下命令保存规则: ```bash /etc/rc.d/init.d/iptables save ``` 这将规则保存到`/etc/sysconfig/iptables`文件中。保存后,重启防火墙服务以确保规则生效: ```bash systemctl restart iptables ``` ### 4. 确认规则的优先级 规则的顺序可能会影响其生效。例如,`DROP`规则如果位于`ACCEPT`规则之前,可能会导致预期的流量被丢弃。可以通过以下命令查看规则的顺序: ```bash iptables -L -n -v --line-numbers ``` 如果需要调整规则的位置,可以使用`-I`(插入)或`-D`(删除)选项来修改规则顺序。 ### 5. 检查默认策略 默认策略(如`INPUT`、`FORWARD`和`OUTPUT`链的默认目标)可能会影响规则的生效。例如,如果`INPUT`链的默认策略是`DROP`,但未明确允许某些流量,则这些流量将被拒绝。可以通过以下命令查看默认策略: ```bash iptables -L -n -v | grep policy ``` 如果需要更改默认策略,可以使用以下命令: ```bash iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT ``` ### 6. 检查网络接口配置 确保规则中的网络接口与实际使用的接口匹配。可以通过以下命令查看网络接口: ```bash ip link show ``` 如果规则中指定了接口(如`-i eth0`),请确保接口名称正确。 ### 7. 检查日志以获取更多信息 启用日志记录可以帮助诊断规则未生效的原因。可以通过以下命令添加日志规则: ```bash iptables -A INPUT -j LOG --log-prefix "IPTables-Dropped: " ``` 日志信息通常可以在`/var/log/messages`或`/var/log/syslog`中找到。 ### 8. 检查SELinux或AppArmor SELinux或AppArmor等安全模块可能会限制防火墙规则的生效。可以通过以下命令检查它们的状态: ```bash sestatus ``` 或 ```bash aa-status ``` 如果需要临时禁用SELinux,可以编辑`/etc/selinux/config`文件并将`SELINUX=enforcing`更改为`SELINUX=permissive`。 ### 9. 检查内核模块 某些防火墙功能依赖于内核模块。可以通过以下命令检查相关模块是否加载: ```bash lsmod | grep iptable ``` 如果模块未加载,可以使用`modprobe`命令加载它们。 ### 10. 检查网络连接 确保网络连接本身没有问题。可以通过以下命令测试网络连通性: ```bash ping <目标IP> ``` 或 ```bash curl http://<目标IP>:<端口> ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值