linux安全运维(一)
1.刪除特殊的用戶和用戶組:
? linux提供了各種不同角色的系統賬號,在系統安裝完成后,默認會安裝很多不必要的用戶和用戶組,如果不需要某些用戶或用戶組,應立即刪除他們,因為賬號越多,系統就越不安全,從而很可能被×××利用,威脅服務器安全。
? linux系統中可以刪除的默認用戶和用戶組大致如下:
? ? □可刪除的用戶:adm lp sync shutdown halt?uucp operator games gopher等
? ? ■可刪除的用戶組:adm lp uucp games dip等
? 命令:
? ? 刪除系統不必要的用戶命令:
? ? ??[root@test1 ~]# userdel adm
? ? 刪除系統不必要的用戶組命令:
? ? ??[root@test1 ~]# groupdel adm
? 有些時候,某些用戶僅僅作業進程調用或者用戶組調用,不需要登錄功能,此時可以禁用這些用戶登錄系統的功能,例如要禁止nobody用戶的登錄功能,可以執行如下命令:
? ??[root@test1 ~]# usermod -s /sbin/nologin nobody
? 其實要刪除那些用戶和用戶組,并沒有固定要求,可以根據服務器的用途來決定,如果服務器是用于Web應用的,那么系統默認的apache用戶和用戶組就無需刪除;而如果服務器是用于數據庫應用的,那么建議刪除系統的默認的apache用戶和用戶組。
2.關閉系統不需要的服務
? 在安裝完成后,Linux綁定了很多沒用的服務,這些服務默認都是自動啟動的。對于服務器來說,運行的服務越多,系統就越不安全,運行的服務越少,系統安全性就越高,因此關閉一下不需要的服務,對系統安全有很大的幫助。
? 具體關閉哪些服務,要根據服務器的用途而定,一般情況下,只要系統本身用不到的服務都認為是不必要的服務,例如某臺Linux服務器用于WWW應用,那么除了httpd服務和系統運行是必需的服務外,其他服務都可以關閉。下面這些服務一般情況下是不需要的,可以選擇關閉:
? ?auditd ip6tables kdump mdmonitor netconsole netfs nfs nfslock postfix quota_nld rdisc restorecond rpcsvcgssd saslauthd udev-post winbind
? 關閉服務自動啟動的方法很簡單,可以通過chkconfig命令實現。例如:
? ??[root@test1 ~]# chkconfig --level 345 nfs off
? 建議啟動服務如下表:
| 服務名稱 | 服務內容 |
| acpid | 用于電源管理,對于筆記本電腦和臺式電腦很重要,建議開啟 |
| apmd | 高級電源能源管理服務,可以監控電池性能 |
| kudzu | 檢測硬件是否變化的服務,建議開啟 |
| crond | 為Linux下自動安排的進程提供運行服務,建議開啟 |
| iptables | Linux內置的防火墻軟件,為了系統安全,必須開啟 |
| network | 網絡服務,必須啟動 |
| sshd | 遠程登錄服務,啟動 |
| syslog | 記錄系統日志服務,建議啟動 |
3.合理使用su、sudo命令
? su命令是一個切換用戶工具,經常用于將普通用戶切換到超級用戶下,當然也可以從超級用戶切換到普通用戶。為了保證服務器的安全,幾乎所有服務器都禁止了超級用戶直接登錄系統,而是通過普通用戶登錄系統,然后再通過su命令切換到超級用戶下,執行一些需要超級權限的工作。通過su命令能夠為系統管理帶來一定的方便,但是也存在不安全的因素,例如系統有10個普通用戶,每個用戶都需要執行一些有超級權限的操作,就必須把超級用戶的密碼交給這10個普通用戶,如果這10個用戶都有超級權限,通過超級權限可以做任何事,那么在一定程度上對系統的安全造成威脅。因此在很多人都需要參與的系統管理中,使用su命令并不是最好的選擇,超級用戶密碼應該掌握在少數人手中,此時sudo命令就派上用場了。
? sudo命令允許系統管理員分配給普通用戶一些合理的“權力”,并且不需要普通用戶知道超級用戶密碼,就能讓他們執行一些只有超級用戶或其他特許用戶才能完成的任務,比如系統服務重啟、編輯系統配置文件等,通過這種方式不但能減少超級用戶登錄次數和管理時間,而且提高了系統安全性。因此,sudo命令相對于權限無限制性的su命令來說,還是比較安全的,這使得sudo也稱為受限制的su,另外sudo也是需要事先進行授權認證的,所以也稱為授權認證的su。
? sudo執行命令的流程是:將當前用戶切換到超級用戶下,或切換到指定的用戶下,然后以超級用戶或其指定切換到的用戶身份執行命令,執行完成后,直接退回到當前用戶,而這一切的完成要通過sudo的配置文件/etc/sudoers來進行授權。
? 例如,普通用戶是無法訪問/etc/shadow文件的:
? ? [yan@test1 ~]$ more /etc/shadow
? ? /etc/shadow: 權限不夠
? 如果要讓普通用戶yan可訪問這個文件,可以在/etc/sudoers添加如下內容:
? ??yan ALL = /bin/more /etc/shadow
? 這樣,通過如下方式yan用戶就可訪問/etc/shadow文件:
? ??[yan@test1 ~]$ sudo more /etc/shadow
? ??[sudo] password for yan:
? 執行這個命令后,需要輸入yan用戶的密碼,然后就可訪問文件內容了。在這里sudo使用時間戳文件來完成類似“檢票”的系統功能,當用戶輸入密碼后就獲得了一張默認存活期為5分鐘的“入場券”(默認值可以在編譯的時候改變)。超時以后,用戶必須重新輸入密碼才能查看文件內容。
? 如果每次都需要輸入密碼,那么某些自動調用超級權限的程序就會出現問題,此時可以通過下面的設置讓普通用戶無需輸入密碼即可執行具有超級權限的程序。例如,要讓一個普通用戶user02具有超級用戶的所有權限,而有不想輸入超級用戶的密碼,只需在/etc/sudoers添加如下內容即可:
? ??user02 ALL=(ALL) NOPASSWD: ALL
? 這樣user02用戶登錄系統后,就可以通過執行如下命令切換到超級用戶:??
? ? ? ? ??[user02@test1 ~]$ sudo su -
? ? [root@test1 ~]# pwd
???/root
? 設計sudo的宗旨是:賦予用戶盡可能少的權限但允許他們完成自己的工作,這種設計兼顧了安全性和易用性,因此,強烈推薦通過sudo來管理系統賬號的安全,只允許普通用戶登錄系統,如果這些用戶需要特殊的權限,就通過配置/etc/sudoers來完成,這也是多用戶系統下賬號安全管理的基本方式。
4.刪減系統登錄歡迎信息
? 雖然系統的一些歡迎信息或版本信息能給系統管理者帶來一定的方便,但是這些信息有時候可能被×××利用,從而成為×××服務器的幫兇,為了保證系統的安全,可以修改或刪除某些系統文件,這樣的文件有4個,分別是/etc/issue、/etc/issue.net、/etc/redhat-release、/etc/motd。
??/etc/issue和/etc/issue.net文件都記錄了操作系統的名稱和版本號,當用戶通過本地終端或本地虛擬控制臺等登錄系統時,就會顯示/etc/issue的文件內容,當用戶通過ssh或telnet等遠程登錄系統時,在登錄后就會顯示/etc/issue.net的文件內容。在默認情況下/etc/issue.net文件的內容是不會在ssh登錄后顯示的,要顯示這個信息可以修改/etc/ssh/sshd_config文件,在此文件中添加如下內容即可:
? Banner /etc/issue.net
? 其實,這些登錄提示很明顯泄露了系統信息,為了安全起見,建議將此文件中的內容刪除或修改。
? /etc/redhat-release文件也記錄了操作系統的名稱和版本號,為了安全起見,可以將此文件中的內容刪除。
? /etc/motd文件是系統的公告信息。每次用戶登錄后,/etc/motd文件的內容就會顯示在用戶的終端。
5.禁止Control-Alt-Delete鍵盤關閉命令
? 在linux的默認設置下,同時按下Control-Alt-Delete組合鍵,系統將自動重啟,這個策略是很不安全的,因此要禁止Control-Alt-Delete組合鍵重啟系統。禁止的方法很簡單,在Centos6.x以下的系統,只需修改/etc/init/control-alt-delete.conf文件即可,操作如下:
? ?exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
? 在這行之前加上“#”進行注釋掉即可。
6.合理使用shell歷史命令記錄功能
? 在linux下可通過history命令查看用戶所有的歷史操作記錄,同時shell命令操作記錄默認保存在用戶目錄下的.bash_history文件中,通過這個文件可以查詢shell命令的執行歷史,有助于運維人員進行系統審計和問題排查,同時,在服務器遭受××××××后,也可以通過這個命令或文件查詢×××登錄服務器所執行的歷史命令操作。但是有時候×××在***服務器后為了毀滅痕跡,可能會刪除.bash_history文件,這就需要合理保護或備份.bash_history文件。下面介紹下history日志文件的安全配置方法。
? 默認的history命令只能查看用戶歷史操作記錄,并不能區分每個用戶操作命令的時間,這點對于排查問題十分不便,不過可以通過下面的方法(加入四行內容)讓history命令自動記錄所有shell命令的執行時間,編輯/etc/bashrc文件:? ??
????????????#history
????????????HISTFILESIZE=4000
????????????HISTSIZE=4000
????????????HISTTIMEFORMAT='%F %T '
????????????export HISTTIMEFORMAT
? 其中,HISTFILESIZE定義了在.bash_history文件中保存命令的記錄總數,默認值是1000,這里設置為4000;HISTSIZE定義了history命令輸出的記錄總數;HISTTIMEFORMAT定義時間顯示格式,這里的格式與date命令后的“+"%F%T"”是一致的;HISTTIMEFORMAT作為history的時間變量將值傳遞給history命令。
? 這樣設置后,執行history命令,就會顯示每條歷史命令的詳細執行時間,例如:
????????????? ? 4? 2018-07-27 13:22:53 cd /etc/sysconfig/network-scripts/
????????????? ? 5? 2018-07-27 13:22:53 ls
????????????? ? 6? 2018-07-27 13:22:53 vim ifcfg-eth0
????????????? ? 7? 2018-07-27 13:22:53 vi ifcfg-eth0
????????????? ? 8? 2018-07-27 13:22:53 ls
? 下面介紹一種方法,可以實現詳細記錄登錄過系統的用戶、IP地址、shell命令以及詳細的操作時間等。將下面這段代碼添加到/etc/profile文件中,即可實現上述功能:
????????????????USER_IP=`who -u am i 2>/dev/null|awk '{print $NF}'|sed -e 's/[()]//g'`
????????????????HISTDIR=/usr/share/.history
????????????????if [ -z $USER_IP ];then
????????????????? ? USER_IP='hostname'
????????????????fi
????????????????if [ ! -d $HISTDIR ];then
????????????????? ? mkdir -p $HISTDIR
????????????????? ? chmod 777 $HISTDIR
????????????????fi
????????????????if [ ! -d $HISTDIR/${LOGNAME} ];then
????????????????? ? mkdir -p $HISTDIR/${LOGNAME}
????????????????? ? chmod 300 $HISTDIR/${LOGNAME}
????????????????fi
????????????????export HISTSIZE=4000
????????????????DT=`date +%Y%m%d_%H%M%S`
????????????????export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
????????????????export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
????????????????chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null
?7.啟動tcp_wrappers防火墻
?? tcp_wrappers是一個用來分析TCP/IP封包的軟件,類似的IP封包軟件還有iptables。Linux默認安裝了tcp_wrappers。作為一個安全的系統,Linux本身有兩層安全防火墻,通過IP過濾機制的iptables實現第一層防護。iptables防火墻通過直觀地監視系統的運行狀況,阻擋網絡中的一些惡意×××,保護整個系統正常運行,免遭×××和破壞。如果通過了第一層防護,那么下一層防護就是tcp_wrappers了。通過tcp_wrappers可以實現對系統中提供的某些服務的開發與關閉、允許與禁止,從而更有效地保證系統安全運行。
? tcp_wrappers的使用很簡單,僅僅有兩個配置文件:/etc/hosts.allow和/etc/hosts.deny。
? 查看系統是否安裝了tcp_wrappers:
????????????[root@test1 ~]# rpm -q tcp_wrappers
????????????tcp_wrappers-7.6-58.el6.x86_64
? tcp_wrappers防火墻的局限性
? ? Linux系統中的某個服務是否可以使用tcp_wrappers防火墻,取決于該服務是否應用了libwrapped庫文件,如果應用了就可以使用tcp_wrappers防火墻。系統中默認的一些服務,如:sshd、portmap、sendmail、xinetd、vsftpd、tcpd等都可以使用tcp_wrappers防火墻。
? tcp_wrappers設定的規則
? ? tcp_wrappers防火墻的實現是通過/etc/hosts.allow和/etc/hosts.deny兩個文件來完成的,首先看一下設定的格式:
? ? service:host(s) [:action]
? ? 主要參數含義如下:
? ? ??□service:代表服務名,例如sshd、vsftpd、sendmail等。
? ? ??■host(s):主機名或者IP地址,可以有多個,例如192.168.12.0、www.ixdba.net。
? ? ??□action:動作,符合條件后采取的動作。
? ? ? ? ??□ALL:所有服務或者所有IP。
? ? ? ? ??■ALL EXCEPT:從所有的服務或者所有IP中除去指定的。
? ? ? ? ? 例如:ALL:ALL EXCEPT 10.0.0.36
? ? ? ? ?
??? ?????? ??
????????????????
??
轉載于:https://blog.51cto.com/6284444/2150147
總結
以上是生活随笔為你收集整理的linux安全运维(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解析yylAdmin系统的安装使用
- 下一篇: linux 其他常用命令