一、Linux服務器的優化設置
序號 | 基礎優化配置內容 | 說明 |
1 | 最小化安裝系統 | 【僅安裝需要的,按需安裝、不用不裝】,必須安裝的有基本開發環境、基本網絡包、基本應用包。 |
2 | ssh登錄策略優化???????? | Linux服務器上的ssh服務端配置文件是【/etc/ssh/sshd_config】,在修改該文件前,必須備份此文件,以防配置出錯或誤刪。備份命令是【cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bak】 《1》修改SSH的默認連接22端口(將端口修改在1萬以上的端口號,可有效避免掃描和攻擊)【Port 22222】。; 《2》不使用DNS解析客戶端主機名,可提高SSH的連接速度【UseDNS no】。 《3》關閉GSSAPI驗證,可提高ssh連接速度【GSSAPIAuthentication no】。 《4》禁止root賬號登陸【PermitRootLogin no】。 《5》限制身份驗證的最大嘗試次數【MaxAuthTries 3】。 《6》顯示最后一次登錄的日期和時間【PrintLastLog yes】。 《7》禁用空密碼【PermitEmptyPasswords no】。 《8》禁用基于受信任主機的無密碼登錄【IgnoreRhosts yes】。 《9》禁用基于已知主機的訪問(即每次連接都需要用戶和密碼)【IgnoreUserKnownHosts yes】。 《10》設置所有普通用戶可使用密碼【PasswordAuthentication yes】(如禁用則改為no) |
3 | 禁用SELinux | SELinux的配置文件路徑是【/etc/selinux/config】;SELinux有三種狀態: 《1》enforcing 開啟狀態; 《2》permissive 提醒的狀態; 《3》disabled 關閉禁用狀態; |
4 | 更換yum源為國內源 | 阿里巴巴開源鏡像站-OPSX鏡像站-阿里云開發者社區 華為開源鏡像站_軟件開發服務_華為云 騰訊軟件源 Linux系統的常用操作命令——文件遠程傳輸、文件編輯、軟件安裝的四種方式 |
5 | 自動更新服務器時間 | 一、在Centos7版本設置NTP服務器 二、在Centos8及其更高版本設置NTP服務器 |
6 | 重要文件加鎖 | Linux中需要加鎖的四個重要文件進行加鎖 |
7 | 系統資源參數優化 | |
二、Linux系統安全與網絡安全策略
????????常見的攻擊類型有:口令暴力破解攻擊、拒絕服務攻擊(DDOS)、應用程序漏洞攻擊(掛馬、SQL注入)。
?2.1、Linux系統登錄安全——復雜密碼+普通用戶SSH遠程登錄
Linux系統必學的基礎操作命令——快速上手Linux(下)https://coffeemilk.blog.csdn.net/article/details/149037758
????????在使用useradd創建用戶后,再使用passwd命令設置用戶密碼時,需要設置復雜密碼(即:密碼數目大于等于8,且至少有字母數字混合)【為了保證能夠創建復雜的密碼我們需要對Linux系統中配置密碼復雜度的配置文件進行配置】。
注意:在對密碼復雜度配置文件、密碼有效期配置文件修改前需要先備份一下!!!
#備份密碼復雜度配置文件
cp -p /etc/security/pwquality.conf /etc/security/pwquality.conf.bak#備份密碼有效期配置文件
cp -p /etc/login.defs //etc/login.defs.bak
Linux系統中的密碼復雜度配置文件是【/etc/security/pwquality.conf】 | ||
序號 | 密碼復雜度配置內容 | 說明 |
1 | minclass=3 | 用戶密碼必須包含大寫字母、小寫字母、數字、特殊字符中的任意3類 【建議設置為3或4】 |
2 | minlen = 8 | 用戶密碼長度(這里表示密碼長度至少為8位) 【建議設置8及其以上的位數】 |
Linux系統中的密碼有效期配置文件是【/etc/login.defs】 | ||
1 | PASS_MAX_DAYS? ?90 | 用戶密碼的最長有效期(這里表示用戶密碼最長的有效期是90天,用戶每隔90天就必須更改一次密碼) 【建議設置為90】 |
2 | PASS_MIN_DAYS? ?7 | 用戶密碼修改的最小間隔(這里表示用戶密碼每7天才能修改一次) 【建議設置為7】 |
3 | PASS_WARN_AGE ? 7 | 用戶密碼過期提前警告天數(這里表示用戶密碼過期前7天開始警告用戶) 【建議設置為7】 |
用戶登錄系統的日志文件是【/var/log/secure】 |
?2.2、Linux系統登錄安全——密鑰認證方式遠程SSH登錄
? 2.2.1、設置root用戶只能以密鑰方式遠程登錄操作步驟
#1-將sshd的配置文件【/etc/ssh/sshd_config】端口設置為22222、設置root用戶必須使用密鑰登錄不能用密碼登錄
Port 22222
PermitRootLogin prohibit-password
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys#2-還需要將sshd的另外一個文件【/etc/ssh/sshd_config.d/01-permitrootlogin.conf】允許root登錄的配置注釋(如下的配置表示可以讓root用戶使用密碼登錄且會覆蓋/etc/ssh/sshd_config中的配置)
PermitRootLogin yes#3-在Linux服務器上生成公私鑰文件(生成一對4096位的RSA密碼且帶注釋coffeemilk@192.168.1.9和密碼短語ck)
ssh-keygen -t rsa -b 4096 -C "coffeemilk@192.168.1.9" -N "ck"#4-進入生成的公私鑰路徑查看
cd /root/.ssh#5-復制一份公鑰并重命名為【authorized_keys】
cp -p id_rsa.pub authorized_keys#6-給復制的公鑰【authorized_keys】修改權限為只有創建者可讀寫,其他人都沒有任何權限
chmod 600 authorized_keys#7-將生成的私鑰【id_rsa】下載到本機(注意:若沒有sz命令需要先安裝lrzsz命令)
yum install lrzsz -y
sz id_rsa#8-刪除生成的初始公私鑰密鑰對(只在服務器上保留公鑰【authorized_keys】)
rm -rf id*#9-重啟sshd服務
systemctl restart sshd
序號 | keygen常用選項 | 說明 |
1 | -b | 指定密鑰的位大小(如:2048、3072、4096、...) |
2 | -t | 指定密鑰的類型(優先使用ed25519、否則就是rsa);共有如下四種: 《1》dsa 不安全,已經不再使用; 《2》rsa 目前兼容性最好,且使用廣泛,默認生成的就是2048位的rsa密鑰對;建議生成rsa時設置最好是大于等于3072位。 《3》ecdsa 政治與技術原因不推薦使用。 《4》ed25519 目前最安全,加解密速度最快的密鑰類型,且key的長度比rsa小很多,優先推薦使用;唯一的缺點就是舊版本的ssh可能不支持。 |
3 | -C | 給密鑰添加一個注釋說明信息(通常用于判斷密鑰的用途或所屬用戶) |
4 | -f | 指定生成的密鑰文件的文件名稱 |
5 | -N | 為密鑰設置密碼短語,提高密鑰的安全性 |
6 | -p | 更改私鑰的密碼短語 |
7 | -q | 安靜模式,不輸出任何信息 |
8 | -m | 指定私鑰導出格式 |
9 | -i | 讀取未加密的ssh-v2兼容的私鑰/公鑰文件,然后在標準輸出設備上顯示openssh兼容的私鑰/公鑰 |
| ||
注意事項: 《1》密鑰安全性:密鑰對的安全性非常高,但如果你的私鑰泄露到其他人手中,其他人就可以作為你的身份登錄到任何使用該密鑰的系統(請保護好你的私鑰,并為其設置一個強密碼短語)。 《2》權限:確保【/root/.ssh】目錄的權限是(只有所有者擁有讀寫執行700權限)、該目錄下的私鑰和公鑰權限都是(只有所有者擁有讀寫權限600);且私鑰下載到本地后,服務器上的私鑰必須刪除。 《3》密鑰類型和長度:建議優先使用ed25519密鑰類型(因為它更短更安全);否則就選擇支持和使用最廣泛的rsa密鑰類型(但是密rsa密鑰的長度必須大于等于3072,最好是4096)。 《4》密鑰備份:備份好你的密鑰對,并做好備注說明。 《5》定期更換密鑰對:定期更換密鑰對可以提高安全性(特別是自己的SSH密鑰對可能被泄露的情況下,應該立即生成新的密鑰對,并更新所有使用該舊密鑰對的服務器)。 |
? 2.2.2、設置普通用戶只能以密鑰方式遠程登錄操作步驟
????????《1》如果需要給普通用戶設置密鑰對登錄則切換到普通用戶(或直接使用普通用戶登錄到服務器)執行【ssh-keygen】命令生成密鑰,并把公鑰名稱修改為【authorized_keys】且該公鑰的權限設置為只有所有者可讀寫600【chmod 600 authorized_keys?】,然后將生成的私鑰下載到本地保存,私鑰在本地保存后必須將服務器上的私鑰刪除;
#1-切換到普通用戶(比如切換到coffeemilk用戶)
su - coffeemilk#2-生成一個類型為ed25519類型的密鑰
ssh-keygen -t ed25519 -C "ck@192.168.1.9"#3-進入普通用戶密鑰對的路徑(每個用戶的路徑是/home目錄下的用戶名稱文件夾下)
cd /home/coffeemilk/.ssh/#4-修改公鑰名稱為【authorized_keys】
mv id_ed25519.pub authorized_keys#5-將公鑰文件【authorized_keys】的權限修改為只有所有者具備讀寫權限600
chmod 600 authorized_keys #6-將私鑰文件【id_ed25519】下載到本機保存(注意:若沒有sz命令需要先安裝lrzsz命令)
yum install lrzsz -y
sz id_ed25519#7-私鑰文件保存到本地后刪除服務器上生成的私鑰文件【id_ed25519】
rm -rf id_ed25519
????????《2》若需要強制讓所有用戶都使用密鑰登錄不能使用密碼登錄,則使用root用戶登錄服務器修改sshd的配置文件(/etc/ssh/sshd_config)將【PasswordAuthentication內容的值設置為no】且保存。注意:在任何時候修改sshd配置文件的時候都需要先對該文件備份!!!
#1-使用root用戶修改sshd的配置文件(將PasswordAuthentication設置為no)
vi /etc/ssh/sshd_config#2-修改完成保存后退出查看sshd的配置文件信息
cat /etc/ssh/sshd_config#3-確認修改的sshd配置無誤后重啟sshd服務
systemctl restart sshd
????????《3》在服務器上重啟sshd服務【systemctl restart sshd】。
?2.3、Linux網絡安全——端口與服務安全
????????在Linux系統中,一共定義了65536個可用的端口,這些端口又分為兩個部分,以1024作為分割點:
????????《1》【只有root用戶才能啟用的端口】(0-1023端口都需要以root身份才能啟用)如:20、21端口是預留給ftp服務的;23端口是預留給telnet服務的;25端口是預留給mail服務的;80、443端口是預留給www服務的。
????????《2》【客戶端可使用的端口】(1024-65535端口可供客戶端使用)這些端口都是軟件隨機分配的,這些大于等于1024的端口啟用不受root用戶控制;如:mysql服務默認使用3306端口這個端口就由mysql用戶啟用、sqlserver數據庫默認監聽端口是1433這個端口就由sqlserver用戶啟用、redis默認使用6379端口這個端口就由redis用戶啟用。
????????Linux中關于端口的默認使用與服務對應的列表文件是【/etc/services】。
#查看Linux中默認的端口與服務對應列表
more /etc/services#查看Linux中指定的端口對應的服務列表
cat /etc/services | grep 3306
cat /etc/services | grep 1433
cat /etc/services | grep 6379
????????注意:Linux系統中的端口啟用后,一般不用給外部放開訪問(特別是涉及到數據庫的端口);而常見開放給外部訪問的端口有(【25對應的mail服務端口】、【80、443對應的www服務端口】)開放端口給外部訪問是可以通過Linux自帶的防火墻或者硬件防火墻操作。
三、Linux系統自身的常用安全策略
類型 | 操作 | 說明 |
軟件安全 | yum update glibc | 定期對Linux服務器上的軟件升級 |
yum update openssl | ||
禁止ping操作 | 注意:Linux系統設置禁用ping操作后該服務器就無法ping通了。 | |
云主機開啟 安全組 | 安全組是云主機的網絡安全防護工具,建議開啟,只開啟必要的端口和服務(如:80、443端口,但是如22這類敏感端口建議設置白名單防護) (云主機的安全主默認是關閉的) |
最后就是對于各個應用或網站需要重點排查SQL注入漏洞和日志審查防止被掛馬。