讓你的服務(wù)器更安全 - 使用 UFW 開啟防火墻

UFW(Uncomplicated Firewall) 是一個(gè)非常容易上手的 iptables 類防火墻配置工具,這個(gè)工具可以對出入服務(wù)的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行分割揍庄、過濾愧怜、轉(zhuǎn)發(fā)等等細(xì)微的控制,進(jìn)而實(shí)現(xiàn)諸如防火墻颗祝、 NAT 等功能所踊。它簡化了 iptable 那復(fù)雜的配置過程泌枪。我們都知道 iptable 非常強(qiáng)大、靈活污筷,但是對于初學(xué)者來學(xué)習(xí)如何使用它正確的配置防火墻是比較難的工闺,但是你又想保護(hù)你的網(wǎng)絡(luò)乍赫,UFW 將會(huì)是你最好的選擇瓣蛀。

下面我將會(huì)解釋如何在 Ubuntu 14.04 中使用 UFW 安裝、配置防火墻雷厂。

使用前提

在你使用這片教材之前惋增,我希望你有一個(gè)獨(dú)立的 no-root 超級管理員用戶 - 擁有 root 的所有權(quán)限。你可以查看我這篇文章 讓你的服務(wù)器更安全 - 初始化服務(wù)器配置 中創(chuàng)建用戶相關(guān)步驟改鲫。

一般來說 UFW 是默認(rèn)會(huì)被安裝的诈皿,假如你的系統(tǒng)中沒有安裝,你可以使用 apt-get 來安裝像棘。

$ sudo apt-get install ufw

使用 IPv6

如果你的 Ubuntu 服務(wù)器已啟用 IPv6稽亏,為了確保 UFW 能支持 IPv6 協(xié)議。

打開 UFW 的相關(guān)配置缕题,使用你最喜歡的編輯器截歉,這里我使用 vim

$ vim /etc/default/ufw

然后,確認(rèn) IPv6 是否設(shè)置成 yes烟零,如果沒有則設(shè)置為 yes瘪松,大致如下:

...
IPV6=yes
...

退出并保存咸作,當(dāng) UFW 開啟時(shí),它將會(huì)同時(shí)支持 IPv4IPv6 的配置規(guī)則宵睦。

查看 UFW 狀態(tài)和配置規(guī)則

在任何時(shí)間记罚,你都可以檢查它的狀態(tài)和配置規(guī)則,如下:

$ sudo ufw status verbose

默認(rèn)情況下壳嚎,UFW 并沒有開啟桐智,它將會(huì)輸出如下結(jié)果:

# Output:
Status: inactive

假如你已經(jīng)開啟了防火墻,它將會(huì)輸出狀態(tài)為 active烟馅,并列出你所配置的規(guī)則酵使。例如:你允許來自任何地方的 SSH 連接,將將會(huì)輸出如下結(jié)果:

# Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere

像這樣通過 status 就可以檢查你的防火墻狀態(tài)和配置了焙糟。

注意:在開啟防火墻之前口渔,你需要確保你允許了 SSH 連接,否則當(dāng)你關(guān)閉遠(yuǎn)程連接后穿撮,你就無法再連上了缺脉。博主自己就曾用這招坑了自己!:joy:

設(shè)置默認(rèn)規(guī)則

當(dāng)你需要開始配置你的防火墻規(guī)則時(shí)悦穿,首先攻礼,你需要設(shè)置默認(rèn)規(guī)則:拒絕所有流入連接,允許流出連接栗柒。意思是礁扮,不允許任何人連接你的主機(jī),允許主機(jī)內(nèi)的任何應(yīng)用訪問外部網(wǎng)絡(luò)瞬沦。

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

開啟 SSH 連接

上面我們已經(jīng)設(shè)置了默認(rèn)不接受任何外來連接太伊,同樣也包括了 SSH 使用的 22 端口。所以逛钻,為了我們能通過 SSH 來操作主機(jī)僚焦,所以我們需要配置允許 SSH 連接到我們的主機(jī)上。

通過如下命令來配置:

$ sudo ufw allow ssh

這個(gè)配置將會(huì)允許所有 22 端口上的連接曙痘,默認(rèn) 22 端口是被 SSH 監(jiān)聽的芳悲。UFW 知道什么是 ssh,因?yàn)樗?/etc/services 中已經(jīng)被定義好了边坤。

當(dāng)然我們也可以指定允許 22 端口的所有連接:

$ sudo ufw allow 22

這個(gè)和上面一個(gè)命令的作用是一樣的名扛。

開啟 UFW

上面已經(jīng)允許 SSH 連接,我們就可以放心的開啟防火墻了茧痒,使用如下命令:

$ sudo ufw enable

在這個(gè)過程中肮韧,你將會(huì)收到一條警告信息(command may disrupt existing ssh connections.),需要你手動(dòng)確認(rèn),輸入 y 按回車即可惹苗。

:smile: 太棒了殿较,我們已經(jīng)開啟了防火墻,你可以再一次通過 sudo ufw status verbose 來查看桩蓉。

配置其他規(guī)則

HTTP/HTTPS

當(dāng)我們部署 WEB 引用服務(wù)器時(shí)淋纲,我們需要使用 80443 端口來接受請求,這是我們需要開啟這兩個(gè)端口院究,操作如下:

$ sudo ufw allow http
$ sudo ufw allow https

或者洽瞬,你可以指定端口:

$ sudo ufw allow 80
$ sudo ufw allow 443

FTP

FTP 連接一般用于非加密文件傳輸,它默認(rèn)監(jiān)聽 21 端口业汰,也許你永遠(yuǎn)都不會(huì)用到伙窃。

$ sudo ufw allow ftp

或者,你可以指定端口:

$ sudo ufw allow 21/tcp

指定端口范圍

你可以指定一個(gè)端口范圍样漆,來配置防火墻策略为障,當(dāng)有些服務(wù)需要使用多個(gè)端口時(shí),這個(gè)就起到了作用放祟。

如鳍怨,為了允許所有 X11 連接,他們使用的端口范圍是 6000 ~ 6007跪妥,你可以這樣配置:

$ sudo ufw allow 6000:6007/tcp
$ sudo ufw allow 6000:6007/udp

指定端口范圍時(shí)鞋喇,你必須指定協(xié)議類型(TCPUDP)。

指定 IP 地址

使用 UFW 工作的時(shí)候眉撵,你可以指定 IP 地址侦香,例如:假如你想允許來自某一個(gè) IP 所有連接,你可以指定 from 這個(gè) IP 地址纽疟。

$ sudo ufw allow from 192.168.66.213

上面的配置將會(huì)允許 192.168.66.213 連接到我們主機(jī)的任何開放了的端口罐韩。

我們還可以指定只允許某個(gè) IP 到主機(jī)某一個(gè)端口的連接,拒絕某個(gè) IP 到主機(jī)其他所有端口的連接仰挣,我們可以這樣做:

$ sudo ufw allow from 192.168.66.213 to any port 80

上面配置中伴逸,我們只允許 192.168.66.213 連接到我們的 80 端口缠沈。

配置子網(wǎng)

當(dāng)你需要允許子網(wǎng)內(nèi)所有的 IP膘壶,你可以 CIDR 的格式來配置,例如:當(dāng)你需要允許 IP 地址從 192.168.1.1192.168.1.254 內(nèi)所有 IP 的連接時(shí)洲愤,你可以這樣配置:

$ sudo ufw allow from 192.168.1.1/24

當(dāng)然颓芭,像上面一樣,我們也可以同時(shí)指定端口號(hào):

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

上面配置中柬赐,我們允許 192.168.1.1/24 內(nèi)的所有主機(jī)通過 SSH 連接我們的主機(jī)亡问。

指定網(wǎng)絡(luò)接口

如果您想創(chuàng)建只適用于特定網(wǎng)絡(luò)接口的防火墻規(guī)則,您可以通過指定 allow in on 加上網(wǎng)絡(luò)接口的名稱 來配置規(guī)則。

在配置之前你可以先查找所有的網(wǎng)絡(luò)接口州藕,再配置:

$ ip addr
# Output Excerpt:
...
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
...
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default 
...

上面列舉了網(wǎng)絡(luò)接口的一些信息束世,他們通常叫做 eth0eth1 之類的名字。

假如你的 eth0 為公網(wǎng)地址床玻,你同事需要向外開放 80 端口毁涉,你可以如下操作:

$ sudo ufw allow in on eth0 to any port 80 

上面配置中,你的服務(wù)器將會(huì)接受來自于公網(wǎng)的 HTTP 請求锈死。

另外贫堰,假如你想你的 MySQL 服務(wù)器(監(jiān)聽 3306)只接受通過內(nèi)網(wǎng)網(wǎng)卡 eth1 的請求,你可以這樣:

$ sudo ufw allow in on eth1 to any port 3306 

如上配置中待牵,只有在用一個(gè)內(nèi)網(wǎng)中的服務(wù)器才能連接你的 MySQL 服務(wù)器其屏。

添加拒絕連接規(guī)則

假如你沒有修改過我們上面設(shè)置過的默認(rèn)規(guī)則,它將會(huì)拒絕所有的外來連接缨该,通常情況下偎行,這樣大大的簡化了你配置一系列的防火墻規(guī)則,比如要求你創(chuàng)建指定端口啊贰拿,指定 IP 啊等等睦优。但是,如果你想拒絕某個(gè) IP 源或者某個(gè)網(wǎng)段的特定連接壮不;也許你知道攻擊源就來自于某個(gè) IP 或某個(gè)網(wǎng)段汗盘;再者,你想把默認(rèn)外接規(guī)則(incomming rule) 設(shè)置為 allow询一,這是你就需要指定某些拒絕規(guī)則了隐孽。

配置 拒絕規(guī)則 ,更我們上面配置 允許規(guī)則 是一樣的方式健蕊,只不過將 allow 改為 deny菱阵。

如:拒絕所有 HTTP 連接,即:拒絕所有連接 80 端口缩功。

sudo ufw deny http

當(dāng)然晴及,也可以指定端口號(hào):

sudo ufw deny 80

拒絕某一個(gè) 192.168.1.10 通過 SSH 連接到我們的主機(jī)上:

$ sudo ufw deny from 192.168.1.10 to any port 22

如果你想書寫更多的 拒絕規(guī)則 ,請參考之前描述的 允許規(guī)則 書寫方式嫡锌,將 allow 改為 deny 即可虑稼。

現(xiàn)在我們知道如何添加 允許規(guī)則拒絕規(guī)則,但是我們還不知道如何刪除規(guī)則势木,沒關(guān)系蛛倦,我們再往下看。

刪除規(guī)則

眾所周知啦桌,如何刪除一條防火墻規(guī)則和如何創(chuàng)建一條防火墻規(guī)則一樣重要溯壶,UFW 提供了兩種路徑刪除他們:

指定規(guī)則序號(hào)刪除

每一個(gè)規(guī)則在創(chuàng)建時(shí)都會(huì)分配一個(gè)序號(hào),你可以將它理解為數(shù)據(jù)庫的自增 ID 吧,可以通過他來進(jìn)行更方便的操作且改,你可以通過如下方式查看序號(hào):

sudo ufw status numbered
Numbered Output:
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    15.15.15.0/24
[ 2] 80                         ALLOW IN    Anywhere

假如你想刪除第 2 條規(guī)則验烧,拒絕所有指向 80 端口的連接,如下操作:

$ sudo ufw delete 2

注意:如果你啟用了 IPv6 規(guī)則又跛,這同時(shí)也將刪除相應(yīng)的 IPv6 規(guī)則噪窘。

指定實(shí)際規(guī)則刪除

如果你不想通過 規(guī)則序號(hào) 來刪除,你可以指定 創(chuàng)建時(shí)的參數(shù)格式 來刪除效扫,例如:當(dāng)你使用 sudo ufw allow http 創(chuàng)建的規(guī)則時(shí)倔监,你可以通過如下方式刪除:

$ sudo ufw delete allow http

同樣你可以指定端口號(hào)來替代服務(wù)名:

$ sudo ufw delete allow 80

注意:這種方式將會(huì)同時(shí)刪除相應(yīng)的 IPv4 和 IPv6規(guī)則。

關(guān)閉 UFW

現(xiàn)在菌仁,由于某些我們不想開啟防火墻了浩习,我們可以關(guān)閉它:

$ sudo ufw disable

重置 UFW 的配置

將入你配置了好多規(guī)則,但是你現(xiàn)在需要重新配置济丘,拋棄之前的配置規(guī)則谱秽,你可以這么做:

$ sudo ufw reset

這個(gè)命令將會(huì)刪除你之前配置的所有規(guī)則,但是默認(rèn)規(guī)則將會(huì)被保留摹迷。

總結(jié)

服務(wù)器安全一直都是一個(gè)重要的話題疟赊,開啟防火墻使我們保護(hù)服務(wù)器安全的重要手段之一,所以峡碉,無論什么情況下近哟,我們都應(yīng)該為服務(wù)器開啟防火墻。當(dāng)然鲫寄,開放 SSH 也是必不可少的吉执,與此同時(shí),你可以允許一些連接到您的服務(wù)器地来,同時(shí)并限制一些不必要的連接戳玫,這樣您的服務(wù)器才會(huì)更加的安全的提供服務(wù)。

想了解更多的 UFW 防火墻配置未斑,你可以參考這篇文章:UFW Essentials: Common Firewall Rules and Commands

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咕宿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜡秽,更是在濱河造成了極大的恐慌府阀,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件载城,死亡現(xiàn)場離奇詭異肌似,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)诉瓦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人睬澡,你說我怎么就攤上這事固额。” “怎么了煞聪?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵斗躏,是天一觀的道長。 經(jīng)常有香客問我昔脯,道長啄糙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任云稚,我火速辦了婚禮隧饼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘静陈。我一直安慰自己燕雁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布鲸拥。 她就那樣靜靜地躺著拐格,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刑赶。 梳的紋絲不亂的頭發(fā)上捏浊,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機(jī)與錄音撞叨,去河邊找鬼呛伴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛谒所,可吹牛的內(nèi)容都是我干的热康。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼劣领,長吁一口氣:“原來是場噩夢啊……” “哼姐军!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尖淘,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奕锌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后村生,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惊暴,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年趁桃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辽话。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肄鸽。...
    茶點(diǎn)故事閱讀 40,438評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖油啤,靈堂內(nèi)的尸體忽然破棺而出典徘,到底是詐尸還是另有隱情,我是刑警寧澤益咬,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布逮诲,位于F島的核電站,受9級特大地震影響幽告,放射性物質(zhì)發(fā)生泄漏梅鹦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一冗锁、第九天 我趴在偏房一處隱蔽的房頂上張望齐唆。 院中可真熱鬧,春花似錦蒿讥、人聲如沸蝶念。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽媒殉。三九已至,卻和暖如春摔敛,著一層夾襖步出監(jiān)牢的瞬間廷蓉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工马昙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桃犬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓行楞,卻偏偏與公主長得像攒暇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子子房,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容

  • CentOS7下Firewall防火墻配置用法詳解 centos 7中防火墻是一個(gè)非常的強(qiáng)大的功能了形用,但對于cen...
    很少更新了閱讀 5,689評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)证杭,斷路器田度,智...
    卡卡羅2017閱讀 134,695評論 18 139
  • 防火墻的概念iptables的簡介iptables命令網(wǎng)絡(luò)防火墻NATfirewalld服務(wù) 一、防火墻的概念 (...
    哈嘍別樣閱讀 1,825評論 0 1
  • LInux原始的防火墻工具iptables由于過于繁瑣,所以ubuntu系統(tǒng)默認(rèn)提供了一個(gè)基于iptable之上的...
    很少更新了閱讀 9,319評論 0 4
  • “春生夏長解愤,秋收冬藏”镇饺。秋天,萬物生機(jī)都在往回收送讲,植物把收生機(jī)獲收到果里奸笤,收回到根里惋啃,慢慢甩掉枝上的葉子,迎接冬天...
    石竹閱讀 1,400評論 8 6