0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過一些Linux的安全命令加固你的Linux系統(tǒng)?改善你的Linux安全

馬哥Linux運維 ? 來源:未知 ? 作者:易水寒 ? 2018-09-24 12:42 ? 次閱讀

本文中,我們將討論如何通過一些Linux的安全命令,加固你的Linux系統(tǒng)。

在最開始,我們需要問的一個問題是:Linux是已經(jīng)足夠被安全加固了嗎?答案當然是否定的。那些嫻熟的攻擊者所帶來的危險是與日俱增的。每天、甚至是每小時都有新的漏洞被發(fā)現(xiàn)。對這些漏洞的利用方法通常建立在它們被發(fā)現(xiàn)后的數(shù)小時之內。一些漏洞甚至直到有人將其利用到攻擊的主機上才被發(fā)現(xiàn)??梢?,安全應該是我們所有人需要關心的。因此,我想在本文中用一些實際的例子來展示如何增強系統(tǒng)的安全性。

沒有一個帖子或是一本書能夠回答Linux所有的安全問題或是涉及所有可能的威脅。因此,本文理所當然地也不可能包括所有,但是我們希望你一定會發(fā)現(xiàn)到其“用武之處”。

我們的主要議題包括:

控制臺安全密碼生命周期Sudo的通知SSH調優(yōu)使用Tripwire進行入侵檢測使用Firewalld回歸iptable限制編譯器不可修改文件用Aureport來管理SELinux使用sealert工具

一、控制臺安全

你可以通過限制能夠登錄的一組特定終端來限制root用戶的訪問。為了實現(xiàn)該目的,請編輯/etc/下安全文件的內容。該文件列出的是允許root用戶登錄的所有設備。

我建議你只允許root用戶去登錄到一個終端之上,且強制所有其他用戶都使用非root用戶的身份進行登錄。而如果確實需要root用戶權限的時候,請使用su命令來獲取。

二、密碼生命周期

密碼的生命周期就是允許你為密碼指定一個有效的時間周期。時間到期后,系統(tǒng)將強制要求用戶輸入一個新的密碼。這樣有效地確保了密碼的定期更換,以及密碼在被偷盜、破解或為人所知的情況下能夠迅速過期。

有兩種方法可以實現(xiàn)這個效果。第一種方法是通過命令行使用如下的改變命令:

$chage-M20likegeeks

我們使用- M選項為likegeeks用戶設置了有效期限為20天的密碼。

你也可以輸入不帶任何選項的chage命令,它會自動提示你選項:

$chagelikegeeks

第二種方法是在/etc/login.defs中為所有用戶設置默認值。你可以參照下面,按需改變其數(shù)值:

PASS_MAX_DAYS20PASS_MIN_DAYS0PASS_WARN_AGE5

三、Sudo的通知

Sudo命令雖然可以使得你的“生活”更為輕松,但是它們也會因為Linux的安全問題而毀了你的“生活”。

我們都知道,sudo命令允許非root用戶以root身份運行各種命令。你可以在/etc/sudoers文件中查到所有的sudo配置。

你可以禁止用戶去運行那些root才能運行的命令。

當sudo命令被使用的時侯,你可以通過在文件中添加如下一行語句,以配置其向外發(fā)送電子郵件。

mailtoyourname@yourdomain.com

當然你也可以用如下語句改變sudo的發(fā)郵件狀態(tài):

mail_alwayson

四、SSH調優(yōu)

只要說到Linux安全,我們必然會討論到SSH服務。SSH應該是你系統(tǒng)中重要的一種服務,它使你能夠輕松地連接到自己的系統(tǒng)。而且這可能是在出現(xiàn)各種狀況的時候,唯一能讓你的系統(tǒng)“幸存”的途徑。所以對SSH的調優(yōu)是非常重要的。

由于我們在本文所使用的是CentOS 7,那么其SSH的配置文件就存放在:

/etc/ssh/sshd_config

讓我們來深入了解一下吧。

攻擊者所使用的掃描器或自動工具一般嘗試運用默認端口22來連接SSH。因此通常情況下,你應該改變SSH的原有端口到另一個未使用的端口上,比如說5555。

Port5555

你也可以通過更新PermitRootLogin的值為no來限制root的登錄,例如:

PermitRootLoginno

并禁用無密碼的通道,且改用公鑰登錄的方式。

PasswordAuthenticationnoPermitEmptyPasswordsno

其實還有另外一種可能阻止攻擊的調整,但它要求SSH通過正向和反向DNS查詢遠程的主機名,這將在系統(tǒng)日志文件中生成一些適當?shù)木妗D阒恍鑶⒂肬seDNS的值便可實現(xiàn)。

UseDNSyes

此外,當GSSAPI服務器被要求驗證相關用戶的身份時,SSH會調用一個不常用的功能來實現(xiàn)GSSAPI的認證方式。為了避免這種情況可能會引起的某種麻煩,請按照如下將GSSAPIAuthentication設為no:

GSSAPIAuthenticationno

考慮到SSH通常會出現(xiàn)的超時問題,你可以通過正確地配置ServerAliveInterval、ServerAliveCountMax和TCPKeepAlive的值來進行管控。

例如下面的規(guī)則就意味著每隔60秒就產(chǎn)生一個數(shù)據(jù)包。

ServerAliveInterval15ServerAliveCountMax3TCPKeepAliveyes

通過調整這些值,你可以提供一個更長的連接。

ClientAliveInterval30ClientAliveCountMax5

你可以通過指定那些被允許用來使用SSH的用戶名,從而使得SSH服務更為安全。

AllowUsersuser1user2

或者指定允許的組:

AllowGroupgroup1group2

除此之外,你還可以為SSH啟用諸如Google Authenticator這樣的雙因素認證方式:

$yuminstallgoogle-authenticator

然后運行之,以驗證是否成功安裝:

$google-authenticator

你的移動手機上應該已經(jīng)安裝了Google authenticator的應用,那么請將下面一行添加到/etc/pam.d/sshd之中。

authrequiredpam_google_authenticator.so

最后的事情就是通過添加下面一行到/etc/ssh/sshd_config中,以通知SSH。

ChallengeResponseAuthenticationyes

然后重啟你的SSH:

$systemctlrestartsshd

之后,當你使用SSH登錄的時候,它將會詢問一個驗證碼。這便意味著你的SSH已經(jīng)能夠應對暴力破解的攻擊,且更為穩(wěn)固了。

五、使用Tripwire進行入侵檢測

Tripwire是Linux安全里的重要工具之一。這是一種基于主機的入侵檢測系統(tǒng)(HIDS)。它通過收集配置和文件系統(tǒng)的細節(jié),并使用這些信息來提供系統(tǒng)先前與當前狀態(tài)之間的參考點等方式進行工作。該過程監(jiān)測文件或目錄的屬性包括:進去哪些被添加或修改了、誰修改的、修改了什么、何時修改的。因此它就是你文件系統(tǒng)的“看門狗”。

你需要訪問EPEL存儲庫來獲取Tripwire。你可以按如下方法輕松地添加該庫:

wgethttp://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-9.noarch.rpm$rpm-ivhepel-release-7-9.noarch.rpm

一旦成功安裝了EPEL庫,你就可以安裝Tripwire了:

$sudoyuminstalltripwire

在使用Tripwire之前,你需要用如下命令來創(chuàng)建本地和網(wǎng)站密鑰:

$tripwire-setup-keyfiles

它會提示你輸入一個用于網(wǎng)站和本地密鑰文件的密碼。Tripwire也會建議你使用大寫字母、小寫字母、數(shù)字和標點符號的組合。

你可以通過更改如下文件來定制Tripwire:

/etc/tripwire/twpol.txt

因為每一行都有注釋,且描述也很到位,因此該文件還是比較容易閱讀和修改的。

你可以用如下的方式更新自己的Tripwire策略。

$tripwire--update-policy--secure-modelow/etc/tripwire/twpol.txt

Tripwire將通過參考你的更改,在屏幕上持續(xù)刷新顯示各個階段的步驟。當這些完成之后,你就應該能夠以如下方式初始化Tripwire數(shù)據(jù)庫了:

$tripwire--init

然后Tripwire將開始掃描系統(tǒng)。它所需要的時長取決于系統(tǒng)的總體規(guī)模。

任何對文件系統(tǒng)更改將被認為是一種系統(tǒng)的入侵,因此管理員會被通知到,而且他需要使用受信任的文件予以系統(tǒng)恢復。正是出于這個原因,Tripwire必須去驗證任何的系統(tǒng)更改。你可以通過如下命令來驗證你的現(xiàn)有的策略文件:

$tripwire--check

關于Tripwire,我的最后一點建議是:請額外去加固twpol.txt和twcfg.txt文件的安全。

更多有關Tripwire的選項和設置,你可以通過man tripwire查閱到。

六、使用Firewalld

Firewalld替代了iptables,并且通過在不停止當前連接的情況下啟用各種配置的更改,從而改善了Linux的安全管理。

Firewalld作為守護進程形式運行著。它允許各種規(guī)則被即時地添加和更改,而且它使用各種網(wǎng)絡區(qū)域來為任何以及所有與網(wǎng)絡相關的連接定義一種信任級別。

要想知道Firewalld的當前運行狀態(tài),你可以輸入如下命令:

$firewall-cmd--state

你可以用如下命令羅列出預定義的區(qū)域:

$firewall-cmd--get-zones

其值也可以如下方式進行更新:

$firewall-cmd--set-default-zone=

你可以用以下命令獲取任何特定區(qū)域的所有相關信息:

$firewall-cmd--zone=--list-all

你也能列出所有支持的服務:

$firewall-cmd--get-services

而且你可以添加或刪除額外的服務。

$firewall-cmd--zone=--add-service=$firewall-cmd--zone=--remove-service=

你能通過如下命令列出任何特定區(qū)域中所有開放的端口:

$firewall-cmd--zone=--list-ports

你可用如下方式管理TCP/UDP端口的增加與刪除:

$firewall-cmd--zone=--add-port=$firewall-cmd--zone=--remove-port=

你可以如下命令添加或刪除端口的轉發(fā):

$firewall-cmd--zone=--add-forward-port=$firewall-cmd--zone=--remove-forward-port=

Firewalld是非常全面的。其中Firewalld最棒的地方當數(shù):你可以在不需要停止或重新啟動防火墻服務的情況下,管理該防火墻的體系結構。而這正是運用IPtables所無法實現(xiàn)的。

七、回歸iptable

有一些人仍然還是喜歡IP tables 勝過Firewalld。那么如果你正好處于這種想舍去Firewalld而回歸IP tables的話,請首先禁用Firewalld:

$systemctldisablefirewalld$systemctlstopfirewalld

然后來安裝IP tables:

$yuminstalliptables-services$touch/etc/sysconfig/iptables$touch/etc/sysconfig/ip6tables

現(xiàn)在你就可以啟動IP tables的服務了:

$systemctlstartiptables$systemctlstartip6tables$systemctlenableiptables$systemctlenableip6tables

為了能讓內核采用新的配置,你必須重新啟動系統(tǒng)。

八、限制編譯器

如果你的系統(tǒng)被黑掉了,那么攻擊者會對系統(tǒng)使用的是哪種編譯器很感興趣。為什么呢?因為他們可以去下載一個簡單的C文件(POC),并且在你的系統(tǒng)上進行編譯,從而在幾秒鐘之內就成為了root用戶。如果編譯器是開啟的話,他們還可以在你的系統(tǒng)上做一些嚴重的破壞。

首先,你需要檢查單個的數(shù)據(jù)包以確定其包含有哪些二進制文件。然后你需要限制這些二進制文件的權限。

$rpm-q--filesbypkggcc|grep'bin'

現(xiàn)在我們需要創(chuàng)建一個可以訪問二進制文件的編譯器的組名稱了:

$groupaddcompilerGroup

然后,你可以賦予這個組能夠改變任何二進制文件的所有權:

$chownroot:compilerGroup/usr/bin/gcc

最后重要的是:僅編譯器組才有改變該二進制文件的權限:

$chmod0750/usr/bin/gcc

至此,任何試圖使用gcc的用戶將會看到權限被拒絕的信息了。

我知道有些人可能會說,如果攻擊者發(fā)現(xiàn)編譯器被關閉了的話,他會去下載編譯器本身。這就是另外一個故事了,我們會在未來的文章中涉及到的。

九、不可修改文件

不可修改文件是Linux系統(tǒng)中一種最為強大的安全特性。任何用戶(即使是root用戶),無論他們的文件權限是怎樣的,都無法對不可修改文件進行寫入、刪除、重命名甚至是創(chuàng)建硬鏈接等操作。這真是太棒了!

它們是保護配置文件或防止你的文件被修改的理想選擇。請使用chattr命令來將任何文件變得不修改:

$chattr+i/myscript

你也可以如下方法去除其不可修改屬性:

$chattr-i/myscript

/sbin 和/usr/lib兩個目錄內容能被設置為不可改變,以防止攻擊者替換關鍵的二進制文件或庫文件成為惡意軟件版本。我將其他有關使用不可改變文件的例子,留給你去想象。

十、用Aureport來管理SELinux

通常情況下,如果你使用的是主機控制面板,或者當有一個或多個特定的應用程序可能會碰到一些問題的時候,他們是不會運行在SELinux已啟用的模式下的,也就是說你會發(fā)現(xiàn)SELinux是禁用掉的。

但是禁用SELinux確實會將系統(tǒng)暴露于風險之中。我的觀點是:由于SELinux有一定的復雜性,對于我們這些仍想獲益于安全性的人來說,完全可以通過運行aureport的選項來使得工作輕松些。

aureport工具被設計為創(chuàng)建一些基于列特征的報告,以顯示在審計日志文件中所記錄的那些事件。

$aureport--avc

你也可以運用同樣的工具來創(chuàng)建一個可執(zhí)行文件的列表:

$aureport-x

你也可以使用aureport來產(chǎn)生一個認證的全量報告:

$aureport-au-i

或者你還可以列出那些認證失敗的事件:

$aureport-au--summary-i--failed

或者你也需要一個認證成功的事件的摘要:

$aureport-au--summary-i--success

可見,當你使用一個運行著SELinux的系統(tǒng)來進行系統(tǒng)的故障診斷的時侯,你作為系統(tǒng)管理員首要考慮的應該就是使用aureport的各種好處了。

十一、使用Sealert工具

除了aureport工具你也可以使用一個很好的Linux安全工具—sealert。你可以用以下的命令來進行安裝:

$yuminstallsetools

那么現(xiàn)在我們就有了一個工具,它將積極地從/var/log/audit/audit.log這一日志文件中返回各種警告,并將其轉換得更為“人性化”且可讀。

這個稱為sealert的工具,其目的是能報告出任何與SELinux有關聯(lián)的問題。你可以這樣來使用它:

$sealert-a/var/log/audit/audit.log

關于所生成的報告,其最好之處是:在每個被發(fā)現(xiàn)的問題的警報末尾,系統(tǒng)都會給出如何去解決該問題的相關解釋。

在這篇文章中,我們討論了一些可以幫助你加固Linux系統(tǒng)的安全技巧。當然,對于各種運行的服務而言,仍有許多值得加固的Linux安全技巧有待發(fā)掘。我希望你能從本文中找到對你有用和有趣的內容。

《Linux云計算及運維架構師高薪實戰(zhàn)班》2018年09月17日即將開課中,120天沖擊Linux運維年薪30萬,改變速約~~~~

*聲明:推送內容及圖片來源于網(wǎng)絡,部分內容會有所改動,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯(lián)系我們刪除或授權事宜。

- END -

更多Linux好文請點擊【閱讀原文】哦

↓↓↓

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11171

    瀏覽量

    208475
  • 控制臺
    +關注

    關注

    0

    文章

    85

    瀏覽量

    10319
  • SSH
    SSH
    +關注

    關注

    0

    文章

    181

    瀏覽量

    16261

原文標題:如何用幾個簡單的命令改善你的Linux安全

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    介紹一些實用的Linux命令

    作為名軟件開發(fā)人員,掌握 Linux 命令是必不可少的技能。即使使用 Windows 或 macOS,總會遇到需要使用
    發(fā)表于 08-01 16:12 ?332次閱讀
    介紹<b class='flag-5'>一些</b>實用的<b class='flag-5'>Linux</b><b class='flag-5'>命令</b>

    分享給你一些實用的Linux技巧

    并不需要知道所有的這些東西,但是如果還在很沉重地在使用Linux的話,這些東西都值得看。(注:如果你想知道下面涉及到的命令的更多的用
    發(fā)表于 08-21 17:13

    分享給你一些實用的Linux技巧

    并不需要知道所有的這些東西,但是如果還在很沉重地在使用Linux的話,這些東西都值得看。(注:如果你想知道下面涉及到的命令的更多的用
    發(fā)表于 08-29 09:43

    介紹學習Linux一些建議

    、從基礎開始: 常常有些朋友在Linux論壇問一些問題,不過,其中大多數(shù)的問題都是很基礎的。例如:為什么我使用命令的時候,
    發(fā)表于 08-18 02:17

    Linux與用戶有關的命令

    Linux與用戶有關的命令 Linux與用戶有關的命令  passwd命令  出于系統(tǒng)安全考慮
    發(fā)表于 01-18 12:46 ?758次閱讀

    Linux關機命令詳解

    Linux關機命令詳解 在linux一些常用的關機/重啟命令有shutdown、halt、reboot、及init,它們都 可以達到重啟
    發(fā)表于 01-18 12:52 ?3604次閱讀

    linux web 安全加固理論

    linux web 安全加固理論
    發(fā)表于 09-07 15:13 ?17次下載
    <b class='flag-5'>linux</b> web <b class='flag-5'>安全</b><b class='flag-5'>加固</b>理論

    Linux必學的系統(tǒng)安全命令

    新的挑戰(zhàn)。本文將重點介紹Linux系統(tǒng)安全命令。 雖然Linux和Windows NT/2000系統(tǒng)一樣是
    發(fā)表于 11-02 15:09 ?0次下載

    通過幾個簡單的命令Linux固若金湯

    在這篇文章中,我們討論了一些可以幫助你加固Linux系統(tǒng)安全技巧。當然,對于各種運行的服務而言,仍有許多值得
    的頭像 發(fā)表于 11-19 14:46 ?4210次閱讀
    <b class='flag-5'>通過</b>幾個簡單的<b class='flag-5'>命令</b>讓<b class='flag-5'>你</b>的<b class='flag-5'>Linux</b>固若金湯

    學習linux內核的一些建議

    學習linux內核,這個可不像學門語言,c或者java個月或者3月就能精通掌握。學習linux內核是需要
    發(fā)表于 05-07 15:20 ?585次閱讀
    學習<b class='flag-5'>linux</b>內核的<b class='flag-5'>一些</b>建議

    分享一些流行危險的Linux命令

    Linux擁有的工具使能夠控制和修改操作系統(tǒng)的每個方面。但如果不熟悉這些
    的頭像 發(fā)表于 12-14 17:26 ?1008次閱讀

    分享一些Linux服務器的安全小貼士

    今天浩道跟大家分享一些Linux服務器的安全小貼士,讓維護linux服務器安全上有
    發(fā)表于 01-29 11:27 ?288次閱讀

    Linux history命令的使用技巧

    使用 Linux 命令行工作,需要了解且使用 history 的一些常用的特性,不管是 Linux 初學者,還是系統(tǒng)專家。
    的頭像 發(fā)表于 02-03 16:30 ?2691次閱讀
    <b class='flag-5'>Linux</b> history<b class='flag-5'>命令</b>的使用技巧

    一些高效linux命令技巧總結

    今天浩道跟大家分享硬核干貨,關于linux運維中那些高效的運維命令??梢哉f掌握以下這些技巧,將收到事半功倍的效果!
    的頭像 發(fā)表于 02-12 17:00 ?817次閱讀

    linux的常用命令

    ,最上層根目錄是“/”,在這個根目錄/下創(chuàng)建其他目錄。Linux切皆文件 2.2 Linux目錄介紹 第行 (1)/bin:存放經(jīng)常使用的命令
    的頭像 發(fā)表于 11-24 16:04 ?529次閱讀
    <b class='flag-5'>linux</b>的常用<b class='flag-5'>命令</b>