Posted by novicepq on

给VPS安装防火墙

介绍两种linux安装防火墙的方法,一种较复杂,一种很简单。

使用firewalld

大多数VPS都自带防火墙,但也有的vps是完全的裸机(比如意大利的arubacloud),需要自己安装。方法如下:
Debian系统:

Centos系统:

若无法安装,需要先更新系统:

启动防火墙:

设置端口,比如Transmission,shadowsocks,v2ray,都会用到自己的端口,甚至如搬瓦工这种使用随机SSH端口,必须将该端口设置到防火墙上,否则下次SSH将再也无法访问这台主机,只能重装系统。

防火墙端口设置语法为:

其中443即为端口号,可以用自己设置的端口替代,SSH/Shadowsocks/Transmission使用的都是此类TCP端口。

如果是域名,则使用以下代码:

关闭某端口比如443:

需重启防火墙使变化生效:

查看目前打开的端口:

使用ufw

ufw (Uncomplicted Firewall) 这个工具比firewalld更简单,语法更像英语且直白。

系统:Debian 9

安装:

先恢复到默认状态:

以上语句设置后,不允许输入通讯,允许输出通讯。

允许ssh通过:

ssh使用的默认端口是22,假设端口不是22,比如搬瓦工使用特殊的端口,则直接开通端口(以2020为例):

以上2020端口打开的既是tcp也是udp通道,如果只要tcp,则:

ufw预置了常用软件的端口,查看:

返回如下结果:

服务器设置网页时,需要打开http或者https权限,如果安装的是Nginx,可以使用代码

或者

获得http及https的权限,或者直接两种都设置:

另外打开http/https权限也可以直接使用ufw allow http,ufw allow https来开启权限;同时因为http对应的默认端口是80,https对应的默认端口是443,也可直接打开端口ufw allow 80,ufw allow 443.

nfw出装时的停止状态,需要开启:

不想firewalld,nfw的好处是新开启的端口或服务不需要重启就能生效,可以使用代码查看:

如果开启的服务多的话,可以给每个服务编号:

开启一段端口,必须分别设置tcp和udp:

关闭某个端口:

删除某个规则:

或者先查看编号:

然后删除某个编号对应的服务,比如删除编号2对应的http服务:

关闭ufw:

重置ufw 规则:

参考文章:

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04