文章目录

  • 前言
  • 一.firewalld 使用
  • 查看防火墙
  • 禁用防火墙
  • 开启防火墙
  • 重载防火墙
  • 查看开放端口
  • 其他命令
  • 二.iptables 使用
  • 查看防火墙
  • 禁用防火墙
  • 开启防火墙
  • 查看开放端口
  • 三.systemctl管理服务和程序



前言

不同版本的防火墙有不同版本的防火墙软件来管理防火墙,这里版本的主要区别是 Centos7 和7之前的版本有差别.

Centos7 默认安装了 firewalld 来管理防火墙,如果没有安装的话,可以使用 yum install firewalld firewalld-config进行安装。

Centos7 之前的版本主要是通过 iptables 软件来管理防火墙.

iptables 是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发。在大部分Linux发行版中,可以通过手册页或 man iptables 获取用户手册。通常iptables需要内核模块支持才能运行,此处相应的内核模块通常是Xtables。因此,iptables操作需要超级用户权限,其可执行文件通常位于/sbin/iptables或/usr/sbin/iptables。
同时,需要说明的是,以上命令通常只用于处理IPv4数据包;而对于IPv6数据包,则使用类似的ip6tables命令。当前,iptables支持内核2.4以上版本,旧版内核环境下则使用ipchains(于2.2版内核)或ipwadm(于2.0版内核)完成类似的功能。
2014年1月19日起发行的Linux内核3.13版则使用nftables取而代之,但仍然提供iptables命令做为兼容接口

查看当前系统版本我们可以使用uname -r 或者使用lsb_release -a 来查看系统信息LSB (Linux Standard Base) and Distribution information.

[root@yveshe ~]# uname -r
3.10.0-957.1.3.el7.x86_64
[root@yveshe ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.6.1810 (Core) 
Release:	7.6.1810
Codename:	Core

接下来将介绍,不同版本的防火墙软件操作防火墙的简单命令, 包括(查看防火墙状态, 禁用防火墙, 开启防火墙, 设置开机是否自启防火墙)


一.firewalld 使用

查看防火墙

[root@yveshe ~]# firewall-cmd --state
not running
[root@yveshe ~]# systemctl list-unit-files|grep firewalld.service
firewalld.service                             disabled
[root@yveshe ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)     --表示防火墙已经关闭
     Docs: man:firewalld(1)

禁用防火墙

禁用防火墙: systemctl stop firewalld

禁止开机启动: systemctl disable firewalld.service 注意 :.service可以不写

[root@yveshe ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

开启防火墙

开启防火墙: systemctl start firewalld

设置开机启用: systemctl enable firewalld

[root@yveshe ~]#  systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

重载防火墙

重新加载防火墙: firewall-cmd --reload

[root@yveshe ~]# firewall-cmd --reload
FirewallD is not running

查看开放端口

查看已经开发的端口:

[root@yveshe ~]# firewall-cmd --list-ports
80/tcp

开启端口:
firewall-cmd --zone=public --add-port=80/tcp --permanent 命令含义如下

# --zone	         #作用域
# --add-port=80/tcp  #添加端口,格式为:端口/通讯协议
# --permanent        #永久生效,没有此参数重启后失效

重新加载防火墙,使得开放端口生效:
firewall-cmd --reload

其他命令

查看版本: firewall-cmd --version 更新防火墙规则: firewall-cmd --reloadfirewall-cmd --complete-reload 查看帮助: firewall-cmd --help 查看区域信息: firewall-cmd --get-active-zones

参考: https://www.jianshu.com/p/9d6e57d1ccfd


二.iptables 使用

查看防火墙

查看防火墙状态: service iptable status

[root@yveshe ~]$service iptable status
Redirecting to /bin/systemctl status  iptable.service
● iptable.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)    --表示防火墙已经关闭

禁用防火墙

临时禁用防火墙: servcie iptables stop

永久关闭防火墙: chkconfig iptables off

开启防火墙

临时开启: service iptables start

永久开启: chkconfig iptables on

查看开放端口

CentOS 7、RedHat 7 之前的 Linux 发行版开放端口设置如下

#命令方式开放5212端口命令

#开启5212端口接收数据
/sbin/iptables -I INPUT -p tcp --dport 5212 -j ACCEPT


#开启5212端口发送数据
/sbin/iptables -I OUTPUT -p tcp --dport 5212 -j ACCEPT

#保存配置
/etc/rc.d/init.d/iptables save

#重启防火墙服务
/etc/rc.d/init.d/iptables restart

#查看是否开启成功
/etc/init.d/iptables status

或者直接修改配置文件/etc/sysconfig/iptables

比如我要开放22/80/3306三个端口,可以在/etc/sysconfig/iptables文件中添加三行信息,如下:

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us 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 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 

COMMIT

三.systemctl管理服务和程序

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service

在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service

查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
查看已启动的服务列表:systemctl list-unit-files|grep enabled