centos7通过iptables启用端口

第一步 关闭默认防火墙

centos7默认使用的防火墙是Firewall,所以先要把Firewall 给关闭再使用iptables

关闭Firewall 命令

命令:systemctl stop firewalld #关闭防火墙

命令:systemctl disable firewalld #禁止开机启动

第二步 检查是否安装了iptables

检查是否安装了iptables,命令:service iptables status

如果没有安装,安装命令:yum install -y iptables,升级命令:yum update iptables

第三步 安装 iptables-services

安装iptables-services,命令:yum install iptables-services

第四步 开启 iptables-services

命令:systemctl start iptables.service #启动防火墙

命令:systemctl enable iptables.service #设置开机自启动

第五步 查看现有规则

命令:iptables -L -n

第六步 清除所有默认规则

清除默认规则前,一定要先允许所有的INPUT请求,否则可能导致服务器无法访问

允许所有INPUT请求命令:iptables -P INPUT ACCEPT

然后清空所有默认规则,命令:iptables -F

清空所有自定义规则,命令:iptables -X

所有计数器归0,命令:iptables -Z

第七步  允许来自于lo接口的数据包

如果没有此规则,你将不能通过127.0.0.1访问本地服务,例如ping 127.0.0.1,命令:iptables -A INPUT -i lo -j ACCEPT

第八步 开启指定端口

命令:iptables -A INPUT -p tcp --dport 端口 -j ACCEPT

案例:

命令:iptables -A INPUT -p tcp --dport 80 -j ACCEPT

命令:iptables -A INPUT -p tcp --dport 22 -j ACCEPT

第九步 允许icmp包通过,也就是允许ping

命令:iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

第十步 允许所有对外请求的返回包

本机对外请求相当于OUTPUT,对于返回数据包必须要接收啊,这相当于INPUT了

命令:iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

第十一步 过滤除iptables规则之外的所有请求

命令:iptables -P INPUT DROP

第十二步 保存规则(很重要,否则重启后不生效)

注意:设置完成以后先执行命令iptables -L -n看一下配置是否正确。

没问题后,先不要急着保存,因为没保存只是当前有效,重启后就不生效,这样万一有什么问题,可以后台强制重启服务器恢复设置。

另外开一个ssh连接,确保可以登陆。

确保没问题之后在进行保存

保存命令:service iptables save

第十三步 重启防火墙

systemctl restart iptables.service

第十四步 关闭防火墙

命令:systemctl stop iptables.service #关闭防火墙

命令:systemctl disable iptables.service #禁止开机启动

杂项

如果要添加内网ip信任(接受其所有TCP请求)

iptables -A INPUT -p tcp -s 192.168.1.50(改为允许的内网IP即可) -j ACCEPT

要封停一个IP,使用下面这条命令

命令:iptables -I INPUT -s...-j DROP

要解封一个IP,使用下面这条命令

命令:iptables -D INPUT -s...-j DROP

删除某个已有规则

要删除规则那么我们就需要先将所有iptables规则以序号标记显示,执行:

命令:iptables -L -n --line-numbers

比如要删除INPUT里序号为8的规则,执行:

命令:iptables -D INPUT 8

例子:完整的设置脚本

#!/bin/sh  

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

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

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

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

#所有计数器归0  iptables -Z

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

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

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

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

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

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

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

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

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

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

#保存  service iptables save

#重启动serv systemctl restart iptables.service

你可能感兴趣的:(centos7通过iptables启用端口)