給nginx文件服務(wù)器添加basic auth認(rèn)證

本文章為原創(chuàng)非復(fù)制行為

前言

nginx可以開(kāi)啟目錄瀏覽做文件服務(wù)器乱顾,但有時(shí)不想讓所有人都能訪問(wèn)占用服務(wù)器資源,或者對(duì)某個(gè)子目錄做一個(gè)私人的文件分享观蜗,可以加上一個(gè)簡(jiǎn)單的認(rèn)證basic auth静汤,使用簡(jiǎn)單適合安全性要求不高的地方。這種認(rèn)證在舊路由器固件上能經(jīng)常見(jiàn)到与倡,因?yàn)樵诰钟蚓W(wǎng)傳輸數(shù)據(jù)無(wú)傷大雅,但在公網(wǎng)非常不安全疚察,basic auth會(huì)以明文的方式傳輸賬號(hào)和密碼,長(zhǎng)久以來(lái)多次暴露密碼添加認(rèn)證也就無(wú)意義了仇奶,所以必須要為文件服務(wù)器配置ssl貌嫡,配置ssl還可以避免傳輸?shù)奈募驗(yàn)g覽的內(nèi)容被攻擊者知曉。

先說(shuō)一說(shuō)basic auth一些比較明顯的缺點(diǎn)

  1. 雖然賬號(hào)和密碼經(jīng)過(guò)base64轉(zhuǎn)換该溯,實(shí)際上還是明文傳輸
  2. 本身不能防止暴力破解岛抄,需要配合fail2ban等工具
  3. 不能控制用戶注銷



配置完成用瀏覽器訪問(wèn)就會(huì)彈出這樣的認(rèn)證窗口

  • chrome瀏覽器不會(huì)顯示"Server require user and password"的內(nèi)容


配置

本文章的目錄結(jié)構(gòu)


配置賬戶密碼,生成密碼文件

獲取htpasswd工具狈茉,centos安裝httpd-tools夫椭,debain系安裝apache2-utils
[root@ykxz ~]# yum install -y httpd-tools
[root@ykxz ~]# apt-get install -y apache2-utils

官方給出的用法參考:
htpasswd [-cimBdpsDv] [-C cost] passwordfile username
htpasswd -b[cmBdpsDv] [-C cost] passwordfile username password

htpasswd -n[imBdps] [-C cost] username
htpasswd -nb[mBdps] [-C cost] username password

這里將basic auth認(rèn)證文件放在nginx.conf同級(jí)目錄cert下,密碼使用bcrypt加密(-B參數(shù))氯庆,將賬號(hào)和密碼保存到y(tǒng)ourhtpasswd文件蹭秋。不建議賬號(hào)設(shè)置為Admin,網(wǎng)絡(luò)攻擊常以Admin賬號(hào)試圖登入

  • 新建用戶ykxz

[root@ykxz ~]# htpasswd -Bbc /etc/nginx/cert/yourhtpasswd ykxz 123456

  • 添加用戶ykxz2

[root@ykxz ~]# htpasswd -Bb /etc/nginx/cert/yourhtpasswd ykxz2 123456

  • 刪除用戶ykxz2

[root@ykxz ~]# htpasswd -D /etc/nginx/cert/yourhtpasswd ykxz2



給需要的目錄添加basic auth認(rèn)證堤撵,在配置文件的location中添加

auth_basic "Server require user and password";
auth_basic_user_file cert/yourhtpasswd;



配置ssl
這里使用了已經(jīng)購(gòu)買的域名證書仁讨,也可以在Let's Encrypt申請(qǐng)免費(fèi)的ssl證書(需要三個(gè)月更新一次證書),沒(méi)有購(gòu)買域名自簽ipssl證書也是可以的乌奇。
這里將ssl證書文件.pem歼秽、.key放在了nginx.conf同級(jí)目錄cert下榨呆,在listen一行將“ssl”添加在端口7000后啟用ssl,此時(shí)的設(shè)置不允許http訪問(wèn)

listen 7000 ssl;

如果使用http訪問(wèn)則返回400錯(cuò)誤


http請(qǐng)求被發(fā)送到https端口

并進(jìn)行一些ssl設(shè)置

ssl_certificate cert/123456_your.domain.com.pem;
ssl_certificate_key cert/123456_your.domain.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;



這是我的配置文件參考丈挟,為頂層目錄添加了認(rèn)證,可直接復(fù)制志电,必須修改的地方為
listen 7000 ssl; ?nginx監(jiān)聽(tīng)的端口
server_name your.domain.com; ?修改為你的域名
alias file_server/; ?文件服務(wù)器頂層目錄曙咽,/不可以刪除

# vim: ft=conf
server {
    listen 7000 ssl;
    server_name your.domain.com;

    ssl_certificate cert/123456_your.domain.com.pem;
    ssl_certificate_key cert/123456_your.domain.com.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    charset  utf-8;

    location  / {
        auth_basic "Server require user and password";
        auth_basic_user_file auth/testpasswd;

        autoindex on;
        autoindex_exact_size off;
        autoindex_localtime on;

        alias fileServer/;
    }
    error_log    logs/error_your.domain.com:7000.log    error;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}



為多個(gè)目錄添加認(rèn)證
如果不僅認(rèn)證頂層目錄還要認(rèn)證子目錄,并采用不同的賬戶密碼挑辆,可以采用以下配置

location ^~ /subdirectory/ {
    auth_basic "Subdirectory require user and password";
    auth_basic_user_file cert/yourhtpasswd2;

    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;

    alias file_server/subdirectory/;
}

因?yàn)閍uth_basic不能寫在if里面通過(guò)判斷請(qǐng)求路徑添加認(rèn)證桐绒,所以要在server里面添加一個(gè)location夺脾,當(dāng)請(qǐng)求的uri匹配到這個(gè)location則認(rèn)證及開(kāi)啟目錄瀏覽

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茉继,隨后出現(xiàn)的幾起案子咧叭,更是在濱河造成了極大的恐慌,老刑警劉巖烁竭,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菲茬,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡派撕,警方通過(guò)查閱死者的電腦和手機(jī)婉弹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)终吼,“玉大人镀赌,你說(shuō)我怎么就攤上這事〖使颍” “怎么了商佛?”我有些...
    開(kāi)封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)姆打。 經(jīng)常有香客問(wèn)我良姆,道長(zhǎng),這世上最難降的妖魔是什么幔戏? 我笑而不...
    開(kāi)封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任玛追,我火速辦了婚禮,結(jié)果婚禮上闲延,老公的妹妹穿的比我還像新娘痊剖。我一直安慰自己,他們只是感情好垒玲,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布邢笙。 她就那樣靜靜地躺著,像睡著了一般侍匙。 火紅的嫁衣襯著肌膚如雪氮惯。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天想暗,我揣著相機(jī)與錄音妇汗,去河邊找鬼。 笑死说莫,一個(gè)胖子當(dāng)著我的面吹牛杨箭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播储狭,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼互婿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捣郊!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起慈参,我...
    開(kāi)封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤呛牲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后驮配,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體娘扩,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年壮锻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琐旁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡猜绣,死狀恐怖灰殴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掰邢,我是刑警寧澤牺陶,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站尸变,受9級(jí)特大地震影響义图,放射性物質(zhì)發(fā)生泄漏减俏。R本人自食惡果不足惜召烂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望娃承。 院中可真熱鬧奏夫,春花似錦、人聲如沸历筝。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)梳猪。三九已至麻削,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間春弥,已是汗流浹背呛哟。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匿沛,地道東北人扫责。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像逃呼,于是被迫代替她去往敵國(guó)和親鳖孤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子者娱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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

  • I/O模型: 阻塞型、非阻塞型苏揣、復(fù)用型黄鳍、信號(hào)驅(qū)動(dòng)型、異步 同步/異步:關(guān)注消息通知機(jī)制 消息通知:同步:等待對(duì)方返...
    Net夜風(fēng)閱讀 2,014評(píng)論 0 1
  • nginx在工作中已經(jīng)有好幾個(gè)環(huán)境在使用了腿准,每次都是重新去網(wǎng)上扒博客际起,各種編譯配置,今天自己也整理一份安裝文檔和n...
    AndyChin閱讀 2,305評(píng)論 0 4
  • Nginx簡(jiǎn)介 解決基于進(jìn)程模型產(chǎn)生的C10K問(wèn)題,請(qǐng)求時(shí)即使無(wú)狀態(tài)連接如web服務(wù)都無(wú)法達(dá)到并發(fā)響應(yīng)量級(jí)一萬(wàn)的現(xiàn)...
    魏鎮(zhèn)坪閱讀 2,009評(píng)論 0 9
  • 1.簡(jiǎn)介: ? Nginx:engine X 吐葱,2002年街望,開(kāi)源,商業(yè)版? http協(xié)議:web服務(wù)器(類似于ht...
    尛尛大尹閱讀 1,871評(píng)論 0 3
  • Nginx是一個(gè)輕量級(jí)的弟跑,高性能的Web服務(wù)器以及反向代理和郵箱(IMAP/POP3)代理服務(wù)器灾前。它運(yùn)行在UNIX...
    JaeGwen閱讀 1,833評(píng)論 0 20