我们知道服务器的防火墙是一种以软件为基础的网络安全系统,或者在某些情况下,是一种以硬件为基础的网络安全系统。它能自动监控系统中的流量流入和流出,并根据预先配置的规则阻止某些类型的数据流。
在Linux服务器中,Firewalld和UFW是两个最流行的防火墙软件。它们可以用于各种流量的阻断;从阻断某个网站,到阻断某个特定的服务器ip。
今天我们将学习如何使用这两款防火墙来封禁Linux中的某个特定端口。
列出Linux中的开放端口
运行以下命令来查找Linux中的开放端口。
$ ss -tuln | grep LISTEN
举个例子,我们将尝试使用两个防火墙来阻止端口22(SSH使用的端口)。
1、使用Firewalld防火墙封禁端口
Firewalld在Linux发行版中默认是不可用的,它可以从官方仓库中安装。
在Debian、Ubuntu和类似的发行版中,运行以下命令安装它。
$ sudo apt install firewalld
在RedHat、Fedora、CentOS和类似的发行版中安装它。
$ sudo yum install firewalld
通过运行验证firewalld防火墙是否已经启动。
$ sudo service firewalld status
现在,使用Firewalld来封禁一个端口的命令是:
$ sudo firewall-cmd --remove-port = 22 / tcp --permanent
$ sudo firewall-cmd --remove-port = 22 / tcp --permanent
首先,'firewall-cmd'是Firewalld的命令,因为Firewalld本身是作为后台监听守护进程运行的。其次,22是要封锁的端口,'tcp'和'udp'是该端口上要封锁的传输层协议。标识'--permanent'可以在重启后仍然保持端口封禁状态。
运行下面的命令来实现这些改变。
$ sudo firewall -cmd --reload
SSH现在在你的系统上被阻止了,任何试图通过SSH连接的客户端都会得到一个错误。你可以通过运行同样的命令,用'--add-port'代替删除来再次启用SSH。
$ sudo firewall-cmd --add-port=22/tcp --permanent
$ sudo firewall-cmd --add-port=22/udp --permanent
2、使用UFW防火墙封禁端口
UFW是uncomplicated firewall的缩写,它在Linux发行版中是默认可用的。首先,用以下命令启用UFW。
$ sudo ufw enable
用下面的命令来阻止一个端口。
$ sudo ufw deny 22
现在所有的SSH连接将被阻止。通过SSH访问系统将导致 "连接拒绝 "错误。
要再次启用SSH,请运行
$ sudo ufw allow 22
在这篇文章中,我们学习了如何在Linux服务器中使用两个防火墙来阻止一个端口:Firewalld和UFW。当然,有更多的选项可以使用这些防火墙来阻止流量;包括只阻止传入的连接但允许正在进行的连接等,大家可以自己研究一下。