给VPS安装防火墙
介绍两种linux安装防火墙的方法,一种较复杂,一种很简单。
使用firewalld
大多数VPS都自带防火墙,但也有的vps是完全的裸机(比如意大利的arubacloud),需要自己安装。方法如下:
Debian系统:
1 |
apt install firewalld -y |
Centos系统:
1 |
yum install firewalld -y |
若无法安装,需要先更新系统:
1 |
apt-get update |
启动防火墙:
1 |
systemctl start firewalld |
设置端口,比如Transmission,shadowsocks,v2ray,都会用到自己的端口,甚至如搬瓦工这种使用随机SSH端口,必须将该端口设置到防火墙上,否则下次SSH将再也无法访问这台主机,只能重装系统。
防火墙端口设置语法为:
1 |
firewall-cmd --permanent --zone=public --add-port=443/tcp |
其中443即为端口号,可以用自己设置的端口替代,SSH/Shadowsocks/Transmission使用的都是此类TCP端口。
如果是域名,则使用以下代码:
1 2 |
firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https |
关闭某端口比如443:
1 |
firewall-cmd --permanent --zone=public --remove-port=443/tcp |
需重启防火墙使变化生效:
1 |
firewall-cmd --reload |
查看目前打开的端口:
1 |
firewall-cmd --list-ports |
使用ufw
ufw (Uncomplicted Firewall) 这个工具比firewalld更简单,语法更像英语且直白。
系统:Debian 9
安装:
1 |
apt install ufw |
先恢复到默认状态:
1 2 |
ufw default deny incoming ufw default allow outgoing |
以上语句设置后,不允许输入通讯,允许输出通讯。
允许ssh通过:
1 |
ufw allow ssh |
ssh使用的默认端口是22,假设端口不是22,比如搬瓦工使用特殊的端口,则直接开通端口(以2020为例):
1 |
ufw allow 2020 |
以上2020端口打开的既是tcp也是udp通道,如果只要tcp,则:
1 |
ufw allow 2020/tcp |
ufw预置了常用软件的端口,查看:
1 |
ufw app list |
返回如下结果:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Available applications: AIM Bonjour CIFS DNS Deluge IMAP IMAPS IPP KTorrent Kerberos Admin Kerberos Full Kerberos KDC Kerberos Password LDAP LDAPS LPD MSN MSN SSL Mail submission NFS Nginx Full Nginx HTTP Nginx HTTPS OpenSSH POP3 POP3S PeopleNearby SMTP SSH Socks Telnet Transmission Transparent Proxy VNC WWW WWW Cache WWW Full WWW Secure XMPP Yahoo qBittorrent svnserve |
服务器设置网页时,需要打开http或者https权限,如果安装的是Nginx,可以使用代码
1 |
nfw allow "Nginx HTTP" |
或者
1 |
nfw allow "Nginx HTTPS" |
获得http及https的权限,或者直接两种都设置:
1 |
nfw allow "Nginx Full" |
另外打开http/https权限也可以直接使用ufw allow http,ufw allow https来开启权限;同时因为http对应的默认端口是80,https对应的默认端口是443,也可直接打开端口ufw allow 80,ufw allow 443.
nfw出装时的停止状态,需要开启:
1 |
ufw enable |
不想firewalld,nfw的好处是新开启的端口或服务不需要重启就能生效,可以使用代码查看:
1 |
ufw status |
如果开启的服务多的话,可以给每个服务编号:
1 |
ufw status numbered |
开启一段端口,必须分别设置tcp和udp:
1 2 |
ufw allow 6000:6007/tcp ufw allow 6000:6007/udp |
关闭某个端口:
1 |
ufw deny 2222 |
删除某个规则:
1 |
ufw delete allow 22 |
或者先查看编号:
1 |
ufw status numbered |
然后删除某个编号对应的服务,比如删除编号2对应的http服务:
1 |
ufw delete 2 |
关闭ufw:
1 |
ufw disable |
重置ufw 规则:
1 |
ufw reset |
参考文章:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04