Centos7 端口开放与防火墙设置

Linux安装链接:使用VMware新建Red Hat Enterprse Linux 6操作系统

VirtualBox下安装CentOS7链接:VirtualBox下安装CentOS7系统

1.Centos7 端口开放及查看

1.1 开放|关闭端口

1
2
3
4
5
6
7
8
9
10
11
12
13
# 开放5672端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent

#关闭5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent

# 配置立即生效,重载防火墙配置
firewall-cmd --reload

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

1.2 设置防火墙便于端口可供外部访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports

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

#关闭防火墙
systemctl stop firewalld.service

#查看监听的端口
netstat -lnpt
#注意:centos7默认没有 netstat 命令,需要安装 net-tools 工具,命令为:
yum install -y net-tools

#检查端口被哪个进程占用
netstat -lnpt |grep 5672

2.防火墙设置

1
2
3
4
5
6
7
8
9
#查看防火墙状态(not running表示防火墙关闭,running表示防火墙开启)
firewall-cmd --state

#查看防火墙已经开放的端口
firewall-cmd --list-ports
#如果防火墙已经关闭,则该命令显示:FirewallD is not running

#重启防火墙
firewall-cmd --reload

3.systemctl命令操作防火墙

历史上,Linux 的启动一直采用init进程。比如:

1
2
3
$ sudo /etc/init.d/apache2 start
# 或者
$ service apache2 start

这种方法有两个缺点。
   一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
   二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。
   Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。使用了 Systemd,就不需要再用init了。Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

参考链接:linux systemctl 指令

systemctl是 Systemd 的主命令,用于管理系统。命令格式:

1
systemctl 操作命令 服务名称

以systemctl操作防火墙服务为例,其他服务类似,修改服务名称即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#启动防火墙服务
systemctl start firewalld.service

#关闭防火墙服务
systemctl stop firewalld.service

#重启防火墙服务
systemctl restart firewalld.service

#查看防火墙的状态
systemctl status firewalld.service

#设置开机启动. 默认情况下,Centos7防火墙是打开的
systemctl enable firewalld.service

#设置开机时禁用防火墙服务
systemctl disable firewalld.service

#查看防火墙服务是否开机启动
systemctl is-enabled firewalld.service;echo $?

#查看已启动的服务列表
systemctl list-unit-files|grep enabled

4.CentOS7和6的默认防火墙的区别

CentOS 7默认使用的是firewall作为防火墙,而CentOS 6使用iptables作为防火墙
如果需要设置Centos 7的防火墙为iptables,步骤如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 4.1 先关闭CentOS 7的防火墙
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动

# 4.2 下载安装 iptables service服务
yum -y install iptables-services

# 4.3 如果要修改防火墙配置,如增加防火墙端口3306
vi /etc/sysconfig/iptables
#增加规则
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
#保存退出后

# 4.4 重启防火墙使配置生效
systemctl restart iptables.service

# 4.5 设置防火墙开机启动
systemctl enable iptables.service

# 4.6 最后重启系统使设置生效即可。
#打开防火墙
systemctl start iptables.service

#关闭防火墙。解决主机不能访问虚拟机CentOS中的站点,前阵子在虚拟机上装好了CentOS6.2,并配好了apache+php+mysql,但是本机就是无法访问。(没遇到过这种情况)
systemctl stop iptables.service