Linux主機安全筆記

      說明: Linux主機安全筆記部分內容參考網絡上各位大神所整理的資料,部分內容不斷增加、修改。當然本人對Linux系統不是很專業,大家將計看看。


一  BIOS安全(硬件上的安全)

  • 最基本最簡單的安全配置,保障計算機硬件配置等不被別人更改.給BIOS設置密碼,防止改變啓動順序從軟盤或 光盤啓動.防止特殊的啓動盤啓動用戶的系統,進入rescue或其他模式.改變或刪除當前配置等.每一個細心的網 管每個細節都不應該忽視!

  • 禁止使用contral+alt+delete重起機器編輯/etc/inittab文件,註釋掉下面一行.

        ca::ctrlaltdel:/sbin/shutdown-t3 -r now

        該成:(使用#)

        #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

 

二  帳號安全

       口令,系統的第一道防線,目前大多數數***都是截獲口令或猜測口令等口令***開始的. /etc 目錄下主要存放系統的配置文件.我們要對這個目錄下的好多文件進行修改.

  1. /etc/login.defs文件是login程序的配置文件.口令的長度和口令的有效期等可以在這裏設置.

[root@host01 ~]# vi /etc/login.defs

...

PASS_MAX_DAYS  9999  密碼被用最多天數

PASS_MIN_DAYS  0     密碼被用最少天數

PASS_MIN_LEN   5     系統默認密碼長度5,我們可以該成8或更多.

PASS_WARN_AGE  7     密碼有效期警告,超過7天將提示用戶更換新的密碼.

...

    wKioL1nGbHPQMsyyAAA-lGFrt4g454.png

  1. /etc/profile文件是環境變量設置文件.在此文件設置環境變量將對所有用戶生效.我們要在此文件設置自動 註銷帳戶的時間.及命令的歷史記錄數.

[root@host01~]# vi /etc/profile

...

HOSTNAME=`/bin/hostname`

HISTSIZE=1000這裏1000代表用戶操作命令的歷史記錄.應儘量小一些.設置成0也可以,呵呵.

tmout=600添加此行,如果系統用戶在600秒(10分鐘)內不做任何操作,將自動註銷這個用戶.

...

  wKiom1nGbN3RUCh7AAALUrHz8Ik911.png 

  1. /etc/passwd文件存放系統用戶名,用戶標識(UID),組標識(GID)等的地方.我們要在這裏找到並清除沒有設置 口令的用戶.同時還要清除一些特別帳號(因爲可能會存在潛在的危險).

[root@host01 ~]# vi /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

...

wh::500:501::/home/wh:/bin/bash

仔細觀察上面的一行(wh用戶),在第二項,兩個冒號中間什麼都沒有,而上面的的用戶(如root用戶)都是x. 這表 明此用戶沒有密碼.要不添加上,要不刪掉.

wKioL1nGbNWjuY1sAACEUEyBj2E161.png

  1. 特別帳號的處理 如果不啓動用sendmail,刪除如下用戶

[root@host01]# userdel adm

[root@host01]# userdel lp

[root@host01]# userdel sync

[root@host01]# userdel shudown

[root@host01]# userdel halt

[root@host01]# userdel mail

如果不用Xwindows服務器.可有刪除

[root@host01]# userdel news

[root@host01]# userdel uucp

[root@host01]# userdel operator

[root@host01]# userdel games

如果不允許匿名FTP帳號登陸,可刪除

[root@hosts01]# userdel gopher

[root@host01]# userdel ftp

  1. 不使用root用戶登錄系統

  • # useradd arcky.li

  • # vim /etc/passwd

  • # 改 :arcky.li:x:500:500::/home/arcky.li:/bin/bash

         # 爲: arcky.li:x:0:0::/home/arcky.li:/bin/bash    -->給arcky.li增加root權限,0:0爲root的uid以及gid即用戶組id與管理組id

  • # vim /etc/passed

  • # 改:root:x:0:0:root:/root:/bin/bash

         # 爲:root:x:0:0:root:/root:/sbin/nologin -->修改root不能登錄系統

  1. 利用lastb查看最後登錄系統的主機,檢查是否有非法用戶登錄並且檢查/var/log/btmp是否過大,如果過大說明有非法用戶登錄系統

  wKiom1nGbUKQg0ltAAAqTzfUZC4163.png

  1. fail2ban可以監視系統日誌,然後匹配日誌的錯誤信息執行相應的屏蔽的作用 yum install     fail2ban -y安裝


三  重要文件的安全設置.

首先要了解兩個命令

1.  chmod:改變文件的屬主

2.  chattr:改變文件屬性

我們要做的是把重要文件的屬主改成root並給相應的權限,還有就是改變文件的屬性讓它禁止被修改

我們來統計一下重要文件:(其實,只要你不想讓其他用戶更改的文件都可以這麼做,我這裏只是爲安全而選擇了

下面的文件.)

  • /etc/passwd,passwd-,passwd.OLD,group,group- 用戶,組的ID等信息文件.

  • /etc/shadow,shadow-,gshadow,gshadow- 用戶,組密碼加密文件.

  • /etc/xinetd.conf 網絡守護進程主配置文件

  • /etc/inittab  系統在啓動是會讀取這個文件裏的內容.

  • /etc/services 防止未經許可的刪除或添加服務

  • /etc/rc.d/rc.sysinit 系統啓動是需要讀取的文件,

  • /etc/rc.d/init.d/* 

以一個文件爲例,其它都一樣

[root@manager]# chmod 700 passwd

[root@manager]# chattr +i passwd

當chattr+i時就是禁止對文件進行修改,當我們要添加用戶時,就會有麻煩,因爲passwd文件禁止修改寫入.所以我們還要該掉它的屬性.chattr -i.

 

四  防止***系統安全設置

  1. 限制用戶使用系統資源,主要包括資源最大進程數,內存使用量等.這樣可以防止DOS類型***.

需要編輯文件

[root@manager /]# vi /etc/security/limits.conf

...

(這三行是添加的) 

*hard core 0    禁止創建core文件

*hard rss 5000  其他用戶(除root)最多使用5M內存

*hard nproc 20  最多進程數限制在20

  wKioL1nGbYKgOlPrAAAFVgf6sNk309.png

 

注:*表示所有登陸到linux的用戶.

#End of file

[root@manager /]# vi /etc/pam.d/login

...

在文件末尾加入下面一行

sessionrequired /lib/security/pam_limits.so

  1. 限制控制檯的訪問

[root@manager /]# vi /etc/securetty

...

我們註釋掉

tty1

#tty2

#tty3

只留下tty1,這時,root僅可在tty1終端登錄

  1. 禁止外來ping請求.

[root@manager /]# vi /etc/rc.d/rc.local

...

在最後加入一行

echo1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 

  wKioL1nGbayQRIoYAAAZdcPYXTY242.png

  1. 防止IP地址欺騙

[root@manger /]# vi /etc/host.conf

加入如下幾行

orderbind,hosts

multioff

nospoofon

  wKiom1nGbhniae5cAAAFpO-FbCk441.png

 5.  使用TCP_WRAPPER

在默認情況下linux系統允許所有請求,可用TCP_WRAPPER增強安全性,

在/etc/hosts.deny寫入"ALL:ALL"禁止所有請求

[root@manager /]# vi /etc/hosts.deny

#

#hosts.deny    This file describes the names of the hosts which are

#              *not* allowed to use the localINET services, as decided

#              by the '/usr/sbin/tcpd' server.

#

#The portmap line is redundant, but it is left to remind you that

#the new secure portmap uses hosts.deny and hosts.allow.  In particular

#you should know that NFS uses portmap!

  "ALL:ALL"

  wKioL1nGbf3hbdbTAAApdIg12JE684.png 

把允許訪問的客戶,或服務添加到/etc/hosts.allow,冒號左邊爲服務,冒號右邊爲授權的機器

[root@manager /]# vi /etc/hosts.allow

#

#hosts.allow   This file describes the names of the hosts which are

#              allowed to use the local INETservices, as decided

#              by the '/usr/sbin/tcpd' server.

#

vsftp:211.101.46.253   注:僅如許IP地址爲211.101.46.253的機器訪問FIP服務器

6.  刪減登錄信息

 [root@manager ~]# rm -f /etc/issue

 [root@manager ~]# rm -f /etc/issue.net

[root@manager ~]# touch /etc/issue

 [root@manager ~]# touch /etc/issue.net

 

五  確保開啓服務的安全性

我們先來看一下自己系統開啓了多少服務.

[root@manager~]# ps -eaf | wc -l

wKioL1nGcLCjlNNaAAAIaSPv8Gc015.png

我們可以通過當前的進程裏在來看一下都是什麼服務

[root@manager ~]# ps -aux

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root          1  0.0  0.0  19232  1504 ?        Ss   Sep20   0:01 /sbin/init

root          2  0.0  0.0      0     0 ?        S    Sep20   0:00 [kthreadd]

root          3  0.0  0.0      0     0 ?        S    Sep20   0:00 [migration/0]

root          4  0.0  0.0      0     0 ?        S    Sep20   0:00 [ksoftirqd/0]

root          5  0.0  0.0      0     0 ?        S    Sep20   0:00 [stopper/0]

root          6  0.0  0.0      0     0 ?        S    Sep20   0:40 [watchdog/0]

root          7  0.0  0.0      0     0 ?        S    Sep20   0:00 [migration/1]

wKioL1nGcRqih7iyAABrKm2zCWI693.png

  • 查看連接狀態,帶有LISTEN的代表正在開啓的端口,開啓的服務.  [root@manager~]# netstat -an 

wKiom1nGcgLAWRG9AAA_WYcN4dA950.png                         


 

  • 查看啓動服務

[root@manager~]# cd /etc/rc.d

[[email protected]]# ls

init.d rc  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d rc5.d  rc6.d  rc.local  rc.sysinit

如果你的系統是X(圖形化啓動的話)運行級別是5,那就是rc5.d,我的是rc3.d,運行級別是3.(多用戶模式)

是哪個模式就進入哪個目錄,看一下

[[email protected]]# cd rc3.d/

linux在開機時會讀取/etc/rc.d/rcX.d(根據X的運行級別)


服務進程說明,可以根據此列表來確認那些服務器是可關閉的進程:

  • amd: 自動安裝NFS(網絡文件系統)守侯進程

  • apmd:  高級電源管理

  • Arpwatch:記錄日誌並構建一個在LAN接口上看到的以太網地址和IP地址對數據庫

  • atd 運行用戶用At命令調度的任務。也在系統負荷比較低時     運行處理任務。

  • Autofs:自動安裝管理進程automount,與NFS相關,依賴於NISBootparamd:引導參數服務器,爲LAN上的無盤工作站提供引導所需的相關信息

  • crond:Linux下的計劃任務

  • Dhcpd:啓動一個DHCP(動態IP地址分配)服務器

  • Gated:網關路由守候進程,使用動態的OSPF路由選擇協議

  • gpm:  gpm爲文本模式下的Linux程序如mc(Midnight Commander)提供了鼠標的支持。它也支持控制檯鼠標的拷貝,粘貼操作以及彈出式菜單。

  • Httpd:WEB服務器

  • Inetd:支持多種網絡服務的核心守候程序

  • Innd:Usenet新聞服務器

  • keytable 該程序的功能是轉載您在/etc/sysconfig/keyboards裏說明的鍵盤映射表,該表可以通過kbdconfig工具進行選 擇。您應該使該程序處於激活狀態。

  • ldap LDAP代表Lightweight     Directory Access Protocol, 實現了目錄訪問協議的行業標準。

  • Linuxconf:允許使用本地WEB服務器作爲用戶接口來配置機器

  • Lpd:打印服務器

  • Mars-nwe:mars-nwe文件和用於Novell的打印服務器

  • mcserv Midnight Commander服務進程允許遠程機器上的用戶通過MidnightCommander文件管理器操作本機文件。服務進程用PAM來驗證用戶,需要給出“用戶名/口令”以通過驗證

  • named:DNS服務器

  • netfs:安裝NFS、Samba和NetWare網絡文件系統

  • network:激活已配置網絡接口的腳本程序

  • nfs:打開NFS服務

  • nscd:nscd(Name Switch Cache daemon)服務器,用於NIS的一個支持服務,它高速緩存用戶口令和組成成員關係

  • Pcmcia pcmcia主要用於支持筆記本電腦。

  • portmap:RPC     portmap管理器,與inetd類似,它管理基於RPC服務的連接

  • postgresql:一種SQL數據庫服務器random 保存和恢復系統的高質量隨機數生成器,這些隨機數是系統一些隨機行爲提供的

  • routed:路由守候進程,使用動態RIP路由選擇協議

  • rstatd:一個爲LAN上的其它機器收集和提供系統信息的守候程序

  • ruserd:遠程用戶定位服務,這是一個基於RPC的服務,它提供關於當前記錄到LAN上一個機器日誌中的用戶信息

  • rwalld:激活rpc.rwall服務進程,這是一項基於RPC的服務,允許用戶給每個註冊到LAN機器上的其他終端寫消息

  • rwhod:激活rwhod服務進程,它支持LAN的rwho和ruptime服務

  • sendmail:郵件服務器sendmail

  • smb:Samba文件共享/打印服務

  • snmpd:本地簡單網絡管理候進程

  • squid:激活代理服務器squid

  • syslog:一個讓系統引導時起動syslog和klogd系統日誌守候進程的腳本

  • Webmin webmin是基於web的集系統管理與網絡管理於一身的強大管理工具。利用webmin的強大功能,用戶可以通過web瀏覽器來方便地設置自己的服務器、dns、samba、nfs、本地/遠程文件系統以及許多其他的系統配置。

  • xfs:X Window字型服務器,爲本地和遠程X服務器提供字型集

  • xntpd:網絡時間服務器

  • ypbind:爲NIS(網絡信息系統)客戶機激活ypbind服務進程

  • yppasswdd:NIS口令服務器

  • ypserv:NIS主服務器

  • gpm:管鼠標的identd:AUTH服務,在提供用戶信息方面與finger類似

  •  

六  日誌的安全.

日誌的安全問題,也就是通過日誌來查看那些可疑的用戶登陸過機器。目前比較流行的ELK日誌分析系統,建議大家有空可以研究研究。Linux系統三個重要的日誌文件如下:

  • /var/log/wtmp 記錄每個用戶登陸和推出時間的永久記錄.

  • /var/run/utmp 記錄當前登陸到系統的每個用戶信息.

  • /var/log/lastlog 每個用戶最後一次登陸的信息(最新的信息)

wtmp和utmp都是二進制文件,它們要用命令來查看內容.

1.  命令who,查看utmp文件當前的每個用戶的信息,它默認輸出包括用戶名,終端類型,登陸時間及遠程主機.如下:

[root@manager]# who

root    pts/0        May  4 22:10 (192.168.0.5)

如果指明瞭文件,則回顯示自wtmp創建以來所有登陸的用戶信息.

[root@manager]# who /var/log/wtmp

root    tty1         May  4 20:44

root    pts/0        May  4 20:52(211.101.46.195)

2.  命令w,查看utmp文件並顯示當前系統中每個用戶和它所運行的進程信息.如:

[root@manager]# w

 23:00:48 up 54 min,  1 user,  load average: 0.00, 0.00,0.00

USER     TTY      FROM             LOGIN@   IDLE   JCPU  PCPU WHAT

root     pts/0    192.168.0.5     22:10    0.00s  0.03s  0.00s w

3.  users,顯示當前當前登陸的用戶數量.如,

[root@manager]# users

root root

這表明兩個root用戶在同時登陸這臺機器.

4.  last命令,用來顯示wtmp文件第一次 創建以來所有登陸過的用戶.如:

[root@manager]# last

root    pts/1        192.168.0.5     Fri May  4 23:01 - 23:02  (00:00)   

root    pts/0        192.168.0.5     Fri May  4 22:10   still logged in 

reboot  system boot  2.6.9-34.EL      Fri May  422:07          (00:59)   

root    pts/0        192.168.0.5     Fri May  4 21:38 - down   (00:27)   

reboot  system boot  2.6.9-34.EL      Fri May  421:36          (00:29)   

root    pts/1        192.168.0.5     Fri May  4 21:09 - down   (00:25)   

 

我們也可以指明用戶,[root@tp log]# last root

root    pts/1        192.168.0.5     Fri May  4 23:01 - 23:02  (00:00)   

root    pts/0        192.168.0.5     Fri May  4 22:10   still logged in 

wtmpbegins Tue May  1 08:13:04 2007

5.  命令ac,根據wtmp文件中每個用戶進入和退出時間.(以小時計算),不用參數代表全部

[root@manager]# ac

       total        2.88

[root@manager]# ac -d 代表每天總連接時間

Today  total        2.89

[root@manager]# ac -p 代表每個用戶總連接時間

       root                                2.89

       total        2.89

我們要養成經常查看日誌來觀察有無可疑用戶等問題的存在.


七、常見安全隱患以及解決方法

  • 竊聽:利用對數據加密方法

  • 篡改:利用哈西算法檢驗數據的完整性(MD5 SHA1)

 opensslenc -e -des3 -a -in /etc/passwd -out /home/passwd.des3    #加密

   openssl enc -d -des3 -a -in/home/passwd.des3 -out /home/passwd  #解密

   diff /home/passwd /etc/passwd  #對比兩個文件是否一致

 -e  encrypt 加密;後面可以加很多加密的算法,如-des3加密算法

     -d  decrypt解碼

     -a/-base64 base64 encode/decode, dependingon encryptyion flag。#base64編碼/解碼,這取決於加密的標誌。 

     -in    inputfile

     -out  outputfile

          MD5: Message-Digest Algorithm 5(信息摘要算法)。MD5算法的哈希值大小爲128。是一種不可逆的算法。不管輸入法數據長短,最終哈西出來的數據長度是一樣的。

          wKiom1nGbuaCun7mAAAOud0zVWM353.png

   MD5字符加密  

          SHA1: Secure Hash Algorithm(安全哈希算法)。SHA1算法哈希值大小爲160。是一種不可逆的算法。

   wKiom1nGbwPhwnbFAAAL2iJ8V10455.png

  • 僞裝(僞裝WIF):     利用身份認證確保是否被授權(用戶密碼、數據證書、CA證書)

  • 網絡中斷-->DDOS***:加大帶寬,加多服務器

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章