当前位置: 代码迷 >> 综合 >> firewall-cmd 和 iptables 的基本使用
  详细解决方案

firewall-cmd 和 iptables 的基本使用

热度:45   发布时间:2023-10-24 23:20:38.0

ConterOS7.0以上默认使用的是firewalld,ConterOS7.0默认以下使用的是iptables。然而很多人习惯了使用iptables,所以本文也一并总结了iptables。不过需要注意:ConterOS7.0以上系统如果还想使用iptables的话,一般需要先安装,再使用。

一、firewalld

命令格式:

firewall-cmd [选项 ... ]

查看帮助:

firewall-cmd --help

基本使用:

查看防火墙状态:firewall-cmd --state

查看防火墙规则:firewall-cmd --list-all

更新防火墙规则:firewall-cmd --reload

(1)端口类

临时增加 (reload之后消失):

# firewall-cmd --add-port=88/tcp

永久增加 :

# firewall-cmd --permanent --add-port=88/tcp firewall-cmd --reload

临时删除端口:

# firewall-cmd --remove-port=88/tcp

永久删除端口:

# firewall-cmd --permanent --remove-port=88/tcp firewall-cmd --reload

查询某一具体端口:

# firewall-cmd --query-port=88/tcp

查看所有放行的端口:

# firewall-cmd --list-ports

(2)服务管理类

增加服务:(临时开放http服务)

# firewall-cmd --add-service=http

增加服务:(永久开放http服务)

# firewall-cmd --permanent --add-service=http    --永久开放http服务,没有--permanent参数重启后会失效

# firewall-cmd --reload     --重新加载配置

删除服务: (临时删除)

# firewall-cmd --remove-service=http

删除服务:(永久删除)

# firewall-cmd --permanent --remove-service=http    --永久移除http服务,没有--permanent参数重启后失效

# firewall-cmd --reload         --重新加载配置

查询服务 :

# firewall-cmd --query-service=http

获取所有支持的服务:

# firewall-cmd --get-services

防火墙服务的状态:

# systemctl status firewalld.service

启动/关闭/重启 防火墙:

# systemctl start firewalld.service   --启动

# systemctl stop firewalld.service   --关闭

# systemctl restart firewalld.service     --重启firewalld服务,使配置生效/可查

(3)其他

查看所有的zone信息:

# firewall-cmd --list-all-zones

预定义区域有:block dmz drop external home internal public trusted work    

查看默认的zone:

# firewall-cmd --get-default-zone

临时修改接口p3p1所属的zone为internal:

# firewall-cmd --zone=internal --change-zone=p3p1  

二、CentOS7系统中安装并使用iptables

安装:

yum install -y iptables-services

语法:

iptables(选项)(参数)

常用选项

-A:向规则链中添加条目; -D:从规则链中删除条目; -I:向规则链中插入条目;-L:显示规则链中已有的条目;

-A和-I的区别:-A 会将后执行的策略添加到已有策略后,而-I 则会插入到已有策略的前(既成为第一条策略)。

基本使用:

(注意:centos7.X使用iptables的话,要确保关闭firewalld服务,避免冲突。执行systemctl stop firewalld&&systemctl disable firewalld)

查看防火墙状态:systemctl status iptables(推荐) 或 service iptables status

关闭防火墙:systemctl stop iptables(推荐) 或 service iptables stop

开启防火墙规则:systemctl start iptables(推荐) 或 service iptables start

设置开机自启:systemctl enable iptables.service

列出现有iptables规则:

# iptables -L                     --L:表示列出规则

# iptables -L -n                 --n:表示将单词表达形式改成数字形式显示

备份原iptables规则,避免丢失规则:

# cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak

开放某个端口:

# iptables -I INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT  --开放22端口

# iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT  --开放80端口

开放22端口,允许192.168.1.0网段的服务器访问:

# iptables -I INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

开放22端口,只允许192.168.1.144服务器来访问:

# iptables -I INPUT -s 192.168.1.144 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

禁止某个的端口:

# iptables -I INPUT -p tcp --dport 80 -j DROP           --禁止80端口

示例:

添加规则,开放22端口:

# iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT               -I insert插入   -3为顺序

删除一个规则:

# iptables -D INPUT 3         --删除INPUT链的第3个规则

清空所有规则(一般我们在清空之前,一般会先备份原来的规则):

# iptables -F

使INPUT链拒绝所有请求,即主机会拒绝所有请求(慎用!):

# iptables -P INPUT DROP

出口一律放行:

# iptables -P OUTPUT ACCEPT

所有转发一律丢弃:

# iptables -P FORWARD DROP 

配置iptables命令行配置永久生效

方法1:

保存iptables命令行添加的规则到/etc/sysconfig/iptables

# iptables-save > /etc/sysconfig/iptables

方法2:

# service iptables save           --永久生效

  相关解决方案