開發
web
應用的時候,常常須要配置服務器。我在阮一峯老師的 Linux服務器的初步配置流程 的基礎上,整理了這篇筆記。節約之後配置服務器的時間。html
root
帳戶默認沒有密碼 安全起見 先初始化一個linux
passwd
? 使用
Linux
服務器的時候,儘可能不要使用root
帳號,處理平常操做,咱們新建一個管理員帳號。web
首先,添加一個用戶組(這裏我自定義的 admin)。算法
addgroup admin
而後,添加一個新用戶(假定爲 www)。shell
useradd -d /home/www -s /bin/bash -m www
上面命令中,參數 d
指定用戶的主目錄,參數 s
指定用戶的 shell
,參數 m
表示若是該目錄不存在,則建立該目錄。數據庫
接着,設置新用戶的密碼。安全
passwd www
將新用戶(www)添加到用戶組(admin)。bash
usermod -a -G admin www
接着,爲新用戶設定sudo權限。服務器
sudo vi /etc/sudoers
找到下面這一行。網絡
root ALL=(ALL:ALL) ALL
在這一行的下面,再添加一行。
root ALL=(ALL:ALL) ALL www ALL=(ALL) NOPASSWD: ALL
上面的 NOPASSWD
表示,切換 sudo 的時候,不須要輸入密碼。若是出於安全考慮,也能夠強制要求輸入密碼。
root ALL=(ALL:ALL) ALL www ALL=(ALL:ALL) ALL
最後,先退出 root
用戶登陸,再用新用戶的身份登陸。
把本身電腦的 ssh
公鑰,保存到服務器的 ~/.ssh/authorized_keys
文件中
直接使用下面的命令
ssh-copy-id -i ~/.ssh/id_rsa.pub root@123.456.78
而後,進入服務器,編輯SSH配置文件/etc/ssh/sshd_config。
sudo cp /etc/ssh/sshd_config ~ (備份,復原時使用) sudo vi /etc/ssh/sshd_config
在配置文件中,將 SSH 的默認端口 22 改掉。假設使用 25000
Port 25000
而後,檢查幾個設置是否設成下面這樣,確保去除前面的#號。
選項 | 含義 |
---|---|
Protocol 2 | ssh 協議使用新版的 |
PermitRootLogin no | 不容許 root 登陸 |
PermitEmptyPasswords no | 不容許空密碼登陸 |
PasswordAuthentication no | 使用密碼受權登陸 |
RSAAuthentication yes | 使用RSA算法進行安全驗證 |
PubkeyAuthentication yes | 容許公鑰認證 |
UseDNS no | 禁用DNS反向解析 會加快速度 |
SyslogFacility AUTHPRIV | 記錄用戶登陸信息 |
上面主要是禁止 root
用戶登陸,以及禁止用密碼方式登陸。
保存後,退出文件編輯。
接着,改變authorized_keys文件的權限。
sudo chmod 600 ~/.ssh/authorized_keys && chmod 700 ~/.ssh/
重啓 SSHD
sudo service ssh restart
或者
sudo /etc/init.d/ssh restart
檢查服務器的區域設置。
locale
若是結果不是 en_US.UTF-8
,建議都設成它。
sudo locale-gen en_US en_US.UTF-8 en_CA.UTF-8 sudo dpkg-reconfigure locales
而後,更新軟件
sudo apt-get update sudo apt-get upgrade
最後,再根據須要,作一些安全設置,好比搭建防火牆,關閉 HTTP
、HTTPs
、SSH
之外的端口,詳細可參考這篇 《Securing a Linux Server》。
阿里雲服務器能夠在控制檯設置安全組規則。
簡單點,給你們舉個栗子?,我部署了一個 MongoDB
的數據庫,我怕別人黑我數據庫,我就能夠在安全組的規則裏設置 公網入方向
拒絕訪問 MongoDB
使用的端口 27017
。只容許本地 locahost
訪問,禁止公網訪問。
下面是教科書版具體解釋
阿里雲產品介紹 請看這裏 安全組
安全組是一種虛擬防火牆,具有狀態檢測包過濾功能。安全組用於設置單臺或多臺雲服務器的網絡訪問控制,它是重要的網絡安全隔離手段,用於在雲端劃分安全域。
安全組是一個邏輯上的分組,這個分組是由同一個地域(Region)內具備相同安全保護需求並相互信任的實例組成。每一個實例至少屬於一個安全組,在建立的時候就須要指定。同一安全組內的實例之間網絡互通,不一樣安全組的實例之間默認內網不通。能夠受權兩個安全組之間互訪。