天天看點

Linux關閉ufw防火牆,開啟ufw防火牆的一些指令

UFW,即Uncomplicated Firewall,是基于iptables實作的防火牆管理工具,旨在簡化配置防火牆的過程,是以實際上UFW修改的是iptables的規則。雖然iptables是一個堅實而靈活的工具,但初學者很難學習如何使用它來正确配置防火牆。如果您希望開始保護您的網絡,并且您不确定使用哪種工具,UFW可能是您的正确選擇。

本文測試環境為Ubuntu 16.04,其他系統可做參考。

0x01. 溫馨提示

如果是遠端操作的話,請做好定時防火牆失效,防止自己連接配接不上。

每10分鐘關閉防火牆

$ crontab -e

#*/10 * * * * /data/shell/stop_ufw.sh

非常簡單的代碼

$ cat /data/shell/stop_ufw.sh

#!/bin/bash

/usr/sbin/ufw disable

0x02. 環境要求

Ubuntu系統預設已經安裝了UFW,如果沒有ufw,可以手動安裝:

$ sudo apt-get update

$ sudo apt-get install ufw

0x03. 基礎配置

允許UFW管理IPV6

如果您的Ubuntu伺服器網絡支援IPv6,請確定UFW配置為支援IPv6,以便除了IPv4之外還将管理IPv6的防火牆規則。

sudo vim /etc/default/ufw

確定你的IPV6選項為yes即可:

IPV6=yes

設定預設規則

UFW預設情況下允許所有的出站連接配接,拒絕所有的入站連接配接,是以這裡首先将UFW設定為預設規則:

$ sudo ufw default deny incoming

$ sudo ufw default allow outgoing

ufw default也允許使用reject參數

允許SSH連接配接

一旦啟用UFW之後,如果沒有允許SSH連接配接,将無法再通過SSH遠端通路主機,是以在開啟防火牆之前要确認SSH連接配接已經設定為允許:

$ sudo ufw allow ssh

這裡建立一條規則,允許ssh連接配接,其實是允許22端口的連接配接,等價于:

$ sudo ufw allow 22

UFW通過/etc/services知道ssh服務使用的預設端口為22,如果你的SSH服務使用的端口不是22,則應該修改為相應 的端口号。

檢視防火牆狀态

通過以下指令檢視防火牆狀态:

$ sudo ufw status verbose

也可以不帶verbose,當防火牆處于關閉狀态時隻會顯示inactive

可以檢視剛剛添加的防火牆規則:

0x04. 啟用/禁用UFW

啟用UFW指令:

$ sudo ufw enable

該指令預設會将UFW設定為開機啟動,如果發現重新開機後UFW并沒有自動啟動,可以手動設定UFW服務開機自動啟動:

$ sudo systemctl start ufw

$ sudo systemctl enable ufw

記得檢視防火牆目前的狀态:

$ sudo ufw status

Status: active

To Action From

-- ------ ----

80/tcp ALLOW Anywhere

443/tcp ALLOW Anywhere

禁用UFW指令:(該指令會禁用防火牆并關閉其開機自動啟動)

$ sudo ufw disable

0x05. 啟用/禁用防火牆日志

啟用防火牆日志:

$ sudo ufw logging on

禁用防火牆日志:

$ sudo ufw logging off

可以指定日志級别sudo ufw logging low|medium|high

日志檔案在/var/log/ufw.log

内容形如:

Oct 11 11:51:31 store42 kernel: [45088.074036] [UFW BLOCK] IN=eno1 OUT= MAC=80:18:44:e1:ae:68:00:0f:e2:b1:01:01:08:00 SRC=60.169.78.143 DST=183.60.192.48 LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=1991 PROTO=TCP SPT=44007 DPT=8080 WINDOW=1024 RES=0x00 SYN URGP=0

其中前面列出了主機防火牆日志的日期、時間、主機名,後面的内容意思是

[UFW BLOCK]:表示事件描述的開始以及是何種事件。在此例中,它表示阻止了連接配接。

IN:如果它包含一個值,那麼代表該事件是傳入事件

OUT:如果它包含一個值,那麼代表事件是傳出事件

MAC:目的地和源 MAC 位址的組合

SRC:IP資料包的源IP

DST:目的地的IP

LEN:資料包長度

TTL:資料 TTL,或稱為time to live。

PROTO:資料包的協定

SPT:資料包的源端口

DPT:目标端口

WINDOW:發送方可以接收的資料包的大小

SYN URGP:訓示是否需要三次握手。 0 表示不需要。

0x06. 允許連接配接

預設情況下ufw的allow不加in允許連接配接是指允許入站連接配接,如果要指定允許出站,可以加上out,如:

$ sudo ufw allow in port #允許port入站

$ sudo ufw allow out port #允許port出站

允許指定端口的協定

通過剛才設定ssh的規則,可以知道直接allow就是允許連接配接

允許HTTP 80端口的所有連接配接:

$ sudo ufw allow http

等價于:

$ sudo ufw allow 80

允許指定範圍内的端口協定

例如,X11的連接配接端口範圍是6000-6007:

$ sudo ufw allow 6000:6007/tcp

$ sudo ufw allow 6000:6007/udp

允許指定IP的連接配接

$ sudo ufw allow from 192.168.1.100

允許192.168.1.100通路指定端口(22端口):

$ sudo ufw allow from 192.168.1.100 to any port 22

允許子網的連接配接

允許IP段192.168.1.1到192.168.1.254的所有連接配接

$ sudo ufw allow from 192.168.1.0/24

允許IP段192.168.1.0/24 通路指定端口(22端口)

$ sudo ufw allow from 192.168.1.0/24 to any port 22

指定允許通過某個網卡的連接配接

假設這裡允許eth0的80端口連接配接:

$ sudo ufw allow in on eth0 to any port 80

0x07. 拒絕連接配接

與允許連接配接一樣,隻需要将相應的allow換成deny即可,如拒絕http端口的所有連接配接:

$ sudo ufw deny http

等價于:

$ sudo ufw deny 80

拒絕指定ip的連接配接:

$ sudo ufw deny from 192.168.1.100

0x08. 删除規則

UFW有兩種方式删除防火牆規則,既可以通過規則号删除,也可以通過實際規則删除,通過規則号删除更容易。

通過規則号删除

首先檢視所有規則的規則号:

$ sudo ufw status numbered

Status: active

To Action From

-- ------ ----

[ 1] 80/tcp ALLOW IN Anywhere

[ 2] 443/tcp ALLOW IN Anywhere

[ 3] 22/tcp ALLOW IN Anywhere

[ 4] Anywhere ALLOW IN 192.168.1.0/24

然後直接delete即可,例如删除https(443)的連接配接規則:

$ sudo ufw delete 2

通過規則删除

删除allow http規則:

$ sudo ufw delete allow 80

0x09. 重置防火牆規則

$ sudo ufw reset

該指令将禁用UFW,并且删除所有已經定義的規則,不過預設該指令會對已經設定的規則進行備份

0x10. 備份/還原規則

UFW的所有規則檔案都在路徑/etc/ufw/,其中before.rules規則為UFW在運作使用者自定義的規則之前運作的規則,相應的before6.rules對應IPV6。after.rules為UFW啟用使用者自定義規則之後運作的規則。user.rules即為使用者自定義的規則。

/etc/default/ufw檔案為UFW的配置檔案。

是以可以通過直接備份這些配置檔案的方式來備份防火牆規則,需要備份的檔案有:

/etc/ufw/.rules

/lib/ufw/.rules

/etc/default/ufw # 這個配置檔案如果沒有修改過,可以不備份

修改配置檔案之後通過以下指令重新加載配置檔案:

$ sudo ufw reload

0x11. 其他

批量禁止IP

$ while read line; do sudo ufw deny from $line; done < file.txt

file.txt裡面是一個需要禁止的IP清單

參考:

1.How To Set Up a Firewall with UFW on Ubuntu

2.How to Configure a Firewall with UFW

http://notes.maxwi.com/2017/01/19/linux-command-tools-ufw/