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 目錄下主要存放系統的配置文件.我們要對這個目錄下的好多文件進行修改.
/etc/login.defs文件是login程序的配置文件.口令的長度和口令的有效期等可以在這裏設置.
[[email protected] ~]# vi /etc/login.defs
...
PASS_MAX_DAYS 9999 密碼被用最多天數
PASS_MIN_DAYS 0 密碼被用最少天數
PASS_MIN_LEN 5 系統默認密碼長度5,我們可以該成8或更多.
PASS_WARN_AGE 7 密碼有效期警告,超過7天將提示用戶更換新的密碼.
...
/etc/profile文件是環境變量設置文件.在此文件設置環境變量將對所有用戶生效.我們要在此文件設置自動 註銷帳戶的時間.及命令的歷史記錄數.
[[email protected]~]# vi /etc/profile
...
HOSTNAME=`/bin/hostname`
HISTSIZE=1000這裏1000代表用戶操作命令的歷史記錄.應盡量小一些.設置成0也可以,呵呵.
tmout=600添加此行,如果系統用戶在600秒(10分鐘)內不做任何操作,將自動註銷這個用戶.
...
/etc/passwd文件存放系統用戶名,用戶標識(UID),組標識(GID)等的地方.我們要在這裏找到並清除沒有設置 口令的用戶.同時還要清除一些特別帳號(因為可能會存在潛在的危險).
[[email protected] ~]# 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. 這表 明此用戶沒有密碼.要不添加上,要不刪掉.
特別帳號的處理 如果不啟動用sendmail,刪除如下用戶
[[email protected]]# userdel adm
[[email protected]]# userdel lp
[[email protected]]# userdel sync
[[email protected]]# userdel shudown
[[email protected]]# userdel halt
[[email protected]]# userdel mail
如果不用Xwindows服務器.可有刪除
[[email protected]]# userdel news
[[email protected]]# userdel uucp
[[email protected]]# userdel operator
[[email protected]]# userdel games
如果不允許匿名FTP帳號登陸,可刪除
[[email protected]]# userdel gopher
[[email protected]]# userdel ftp
不使用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不能登錄系統
利用lastb查看最後登錄系統的主機,檢查是否有非法用戶登錄並且檢查/var/log/btmp是否過大,如果過大說明有非法用戶登錄系統
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/*
以一個文件為例,其它都一樣
[[email protected]]# chmod 700 passwd
[[email protected]]# chattr +i passwd
當chattr+i時就是禁止對文件進行修改,當我們要添加用戶時,就會有麻煩,因為passwd文件禁止修改寫入.所以我們還要該掉它的屬性.chattr -i.
四 防止攻擊系統安全設置
限制用戶使用系統資源,主要包括資源最大進程數,內存使用量等.這樣可以防止DOS類型攻擊.
需要編輯文件
[[email protected] /]# vi /etc/security/limits.conf
...
(這三行是添加的)
*hard core 0 禁止創建core文件
*hard rss 5000 其他用戶(除root)最多使用5M內存
*hard nproc 20 最多進程數限制在20
註:*表示所有登陸到linux的用戶.
#End of file
[[email protected] /]# vi /etc/pam.d/login
...
在文件末尾加入下面一行
sessionrequired /lib/security/pam_limits.so
限制控制臺的訪問
[[email protected] /]# vi /etc/securetty
...
我們註釋掉
tty1
#tty2
#tty3
只留下tty1,這時,root僅可在tty1終端登錄
禁止外來ping請求.
[[email protected] /]# vi /etc/rc.d/rc.local
...
在最後加入一行
echo1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
防止IP地址欺騙
[[email protected] /]# vi /etc/host.conf
加入如下幾行
orderbind,hosts
multioff
nospoofon
5. 使用TCP_WRAPPER
在默認情況下linux系統允許所有請求,可用TCP_WRAPPER增強安全性,
在/etc/hosts.deny寫入"ALL:ALL"禁止所有請求
[[email protected] /]# 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"
把允許訪問的客戶,或服務添加到/etc/hosts.allow,冒號左邊為服務,冒號右邊為授權的機器
[[email protected] /]# 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. 刪減登錄信息
[[email protected] ~]# rm -f /etc/issue
[[email protected] ~]# rm -f /etc/issue.net
[[email protected] ~]# touch /etc/issue
[[email protected] ~]# touch /etc/issue.net
五 確保開啟服務的安全性
我們先來看一下自己系統開啟了多少服務.
[[email protected]~]# ps -eaf | wc -l
我們可以通過當前的進程裏在來看一下都是什麽服務
[[email protected] ~]# 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]
查看連接狀態,帶有LISTEN的代表正在開啟的端口,開啟的服務. [[email protected]~]# netstat -an
查看啟動服務
[[email protected]~]# 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文件當前的每個用戶的信息,它默認輸出包括用戶名,終端類型,登陸時間及遠程主機.如下:
[[email protected]]# who
root pts/0 May 4 22:10 (192.168.0.5)
如果指明了文件,則回顯示自wtmp創建以來所有登陸的用戶信息.
[[email protected]]# who /var/log/wtmp
root tty1 May 4 20:44
root pts/0 May 4 20:52(211.101.46.195)
2. 命令w,查看utmp文件並顯示當前系統中每個用戶和它所運行的進程信息.如:
[[email protected]]# w
23:00:48 up 54 min, 1 user, load average: 0.00, 0.00,0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root pts/0 192.168.0.5 22:10 0.00s 0.03s 0.00s w
3. users,顯示當前當前登陸的用戶數量.如,
[[email protected]]# users
root root
這表明兩個root用戶在同時登陸這臺機器.
4. last命令,用來顯示wtmp文件第一次 創建以來所有登陸過的用戶.如:
[[email protected]]# 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)
我們也可以指明用戶,[[email protected] 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文件中每個用戶進入和退出時間.(以小時計算),不用參數代表全部
[[email protected]]# ac
total 2.88
[[email protected]]# ac -d 代表每天總連接時間
Today total 2.89
[[email protected]]# 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位。是一種不可逆的算法。不管輸入法數據長短,最終哈西出來的數據長度是一樣的。
MD5字符加密
SHA1: Secure Hash Algorithm(安全哈希算法)。SHA1算法哈希值大小為160位。是一種不可逆的算法。
偽裝(偽裝WIF): 利用身份認證確保是否被授權(用戶密碼、數據證書、CA證書)
網絡中斷-->DDOS攻擊:加大帶寬,加多服務器
本文出自 “無心傷害” 博客,請務必保留此出處http://arckyli.blog.51cto.com/13756/1968076
Linux主機安全筆記