優化:
可刪除用戶:adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher. :userdel games
可刪除組:adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers. :groupdel games
不需要用戶登錄的用戶,比如www供apache使用的用戶可以關閉其登錄功能 :usermod -s /sbin/nologin www
刪除多余的登錄歡迎信息:/etc/issue,/etc/issue.net,/etc/redhat-release,/etc/motd. #如果需要用戶登錄完之后顯示/etc/issue.net信息的話在 /etc/ssh/sshd_config 加入
Banner /etc/issue.net
其他包含系統信息的文件:/etc/redhat-release, #/etc/motd 該文件會顯示在用戶終端,可以寫一些通知例如:歡迎登錄。
關閉快捷鍵重啟:vim /etc/init/control-alt-delete.conf #exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
關閉多余的服務:
一般情況下不需要的服務:
anacron,auditd,autofs,avahi-daemon,avahi-dnsconfd,bluetooth,cpuspeed,firsboot,gpm,haldaemon,hidd,
ip6tables,ipsec,isdn,lpd,mcstrans,messagebus,netfs,nfs,nfslock,nscd,pcscd portmap,readahead_early,restorecond,
rpcgssd,rpcidmapd,rstatd,sendmail,setroubleshoot,yppasswdd ypsery. :chkconfig --level 345 anacron off
系統必須運行的服務:
服務名稱 | 服務內容 |
acpid | 電源管理 |
apmd | 高級電源管理,可監控電池性能 |
kudzu | 檢測硬件變化 |
crond | 為linux下自動安排的進程提供運行服務 |
atd | 計划任務功能相識 |
keytables | 裝載鏡像鍵盤 |
iptables | 內置的防火牆 |
xinetd | 支持多種網絡服務的核心守護進程 |
xfs | x windows 必須的服務 |
network | 啟動網絡服務 |
sshd | 遠程安全登錄 |
syslog | 記錄系統日志服務 |
關閉口令登錄,使用key登錄 :vim /etc/ssh/sshd_config #PasswordAuthentication no
重啟sshd : /etc/rc.d/init.d/sshd restart
系統安全
用戶權限:vim /etc/sudoers
讓普通用戶可以執行提權的命令:username ALL=(ALL)NOPASSWD:ALL #該用戶可以提權sudo su -
讓普通用戶只可以執行某條特權命令:user01 ALL=/bin/more /etc/shadow , user01 ALL=NOPASSWD: /etc/init.d/httpd restart
簡單防火牆配置 : /etc/hosts.allow /etc/host.deny #先匹配hosts.allow如有匹配則結束,沒有則繼續匹配。常用服務(sshd,vsftpd,sendmail)
例子:vim /etc/hosts.allow #sshd: 1.1.1.1 vim /etc/host.deny #sshd:ALL #拒絕除1.1.1.1外的sshd服務連接。
文件系統安全
:chattr -R +i #鎖定該文件的權限 lsattr [-adlRvV] 查詢文件屬性。
文件權限檢查和修改:
找出全部用戶有寫權限的文件和目錄:find / -type f -perm -2 -o -perm -20 | xargs ls -al :find / -type f -perm -2 -o -perm -20 | xargs ls -ld
找出含有‘s’位的程序:find / -type f -perm -4000 -o -pperm -2000 -print | xargs ls -al #有S位可提權,盡可能降低。
找出所有含sudi和sgid的文件:find / -user root -perm -2000 -print -exec md5sum {} \; find / -user root -perm -4000 -print -exec md5sum {} \;
#可把該結果保存在一個文件里面,日后可用來對比權限查看服務器文件有沒有被篡改
find / -nouser -o -nogroup #找出可以屬主的文件,避免黑客利用。
tmp臨時目錄的權限控制:創建一個新的目錄給予權限控制之后掛載到tmp下。
1 dd -f=/dev/zero of =/dev/tmpfs bs=1M count=1000 2 mke2fs -j /dev/tmpfs 3 cp -av /tmp /tmp.old 4 mount -o loop,noexec,nosuid,rw /dev/tmpfs /tmp 5 chmod 1777 /tmp 6 mv -f /tmp.old/* /tmp/ 7 rm -rf /tmp.old
vim /etc/fstab
/dev/tmpfs /tmp ext3 loop,nosuid,noexec,rw 0 0 #如果tmp目錄直接是掛載目錄的話直接添加:loop,nosuid,noexec。 在/tmp 下寫一個shell腳本,運行測試。
/dev/shm #共享內存設備,掛載屬性修改 :tmpfs /dev/shm tmpfs defaults,nosuid,noexec,rw 0 0.
Hacker攻防
chkrootkit后門rootkit檢測工具,www.chkrootkit.org #用法 /usr/local/chkrootkit/chkrootkit
備份好chkrootkit入侵檢測需要用到的系統命令:
mkdir /usr/share/.commands cp `which --skip-alias awk cut echo find egrep id head ls netstat ps strings sed uname` /usr/share/.commands /usr /local/chkrootkit/chkrootkit -p /usr/share/.commands/
RKHunter : /usr/local/bin/rkhunter -c #rootkit入侵檢測工具2 #09 3 * * * /usr/local/bin/rkhunter --check --cronjob #每天運行
服務器被攻擊后的處理思路
1.切斷網絡。 利用ROOT登陸輸入:w #查看登陸過的用戶。passwd -l username #鎖定用戶 : ps -aux | grep pts/1 && kill -9 id #踢掉非法用戶
2.last 查看登陸日志.
3.其他系統日志 /var/log/messages #運行狀態 /var/log/secure #登陸狀態 .bash_history #歷史命令
4.pidof httpd #找出該進程的所有進程ID # ls -al /proc/ID/exe #查看該進程的EXE文件信息 # ls -al /proc/ID/fd #該進程的完整執行信息。Linux下/proc目錄簡介
檢查文件系統的完整性:rpm -Va #輸出的結果中如果有M標記,那么該文件有可能已經給修改。
被入侵過后的實戰分析
服務器流量跑滿,ps,netstat --antp,top 查看無80端口的任何連接。 md5sum /bin/ps 查看幾個命令的MD5是否一致。
more /var/log/secure |grep Accepted # 查看當天登陸成功的用戶 #利用替換后的ps -antp 查找可疑進程。 #/mnt/bin/ls -al /proc/22785/exe #查找路勁
分析服務器上跑的業務,查看apache 日志 根據對應的黑客IP 找到WEB訪問記錄,得知黑客通過apache插件漏洞在服務器上創建文件。
找出問題,將重要數據備份,重新安裝系統,修補漏洞。