文章目录
- 前言
- 一.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 --reload
或 firewall-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