linux root密碼破解方案 系統安全加固

【①】 RedHat/CentOS/Fedora 系統密碼破解


1.在grub選項菜單按E進入編輯模式

2.編輯kernel 那行最後加上S (或者Single)

3.按B,啓動到single-user mode

4.進入後執行下列命令

passwd root

【輸入兩次新密碼】


     或者修改密碼數據庫文件:

mount -t proc proc /proc

mount -o remount,rw /

passwd

【輸入兩次新密碼】



【②】Debian linux 系統密碼破解


1.在grub選項菜單'Debian GNU/Linux,...(recovery mode)',按e進入編輯模式

2.編輯kernel那行最後面的 ro single 改成 rw single init=/bin/bash,按b執行重啓

3.進入後執行下列命令

root@(none)#mount -a

root@(none)#passwd root

root@(none)#reboot


【③】 Freebsd 系統密碼破解


1.開機進入引導菜單

2.選擇每項(按4)進入單用戶模式

3.進入之後輸入一列命令

root@#mount -a

root@#fsck -y

root@#passwd(修改密碼命令)

root@#root(要破解密碼的用戶名)

Enter new unix password:

root@#init 6 (重啓)


【④】 Solaris 系統密碼破解


1.在grub選項菜中選擇solaris failasfe 項

2.系統提示Do you wish to have it mounted read-write on /a ?[y,n,?] 選擇y

3.就進入單用戶模式

4.輸入下列命令:passwd

root@#init 6 (重啓)


【⑤】 NetBsd 系統密碼破解


1.開機:當出現提示符號並開始倒數五秒時, 鍵入以下指令:

> boot -s (進入單用戶模式命令)

2.在以下的提示符號中

Enter pathname of shell or RETURN for sh:

按下 Enter。

3.鍵入以下指令:

# mount -a

# fsck -y

4.使用 passwd 更改 root 的密碼。

5.使用 exit 指令進入多人模式。


【⑥】 SUSE 系統密碼破解


1.重新啓動機器,在出現grub引導界面後,在啓動linux的選項里加上init=/bin/bash,通過給內核傳遞init=/bin/bash參數使得OS在運行login程序之前運行bash,出現命令行。

2.稍等片刻出現(none)#:命令行。

3.這時輸入mount -n / -o remount,rw 表示將根文件系統重新mount爲可讀寫,有了讀寫權限後就可以通過passwd命令修改密碼了。

4.這時輸入passwd命令就可以重置密碼了

5.修改完成後記得用mount -n / -o remount,ro將根文件系統置爲原來的狀態









通過以下方式加強系統帳號安全




  1.配置BIOS:禁用從CD/DVD、外部設備、軟驅啓動。

啓用BIOS密碼,設置GRUB密碼保護Linux服務器,同時啓用GRUB的密碼保護,這樣可以限制對系統的物理訪問。

  2. 磁盤分區


  使用不同的分區很重要,對於可能得災難,這可以保證更高的數據安全性。通過劃分不同的分區,數據可以進行分組並隔離開來。當意外發生時,只有出問題的分區的數據纔會被破壞,其他分區的數據可以保留下來。你最好有以下的分區,並且第三方程序最好安裝在單獨的文件系統/opt下。

/ /boot /usr /var /home /tmp /opt

  3. 最小包安裝,最少漏洞


  你真的需要安裝所有的服務麼?建議不要安裝無用的包,避免由這些包帶來的漏洞。這將最小化風險,因爲一個服務的漏洞可能會危害到其他的服務。找到並去除或者停止不用的服務,把系統漏洞減少到最小。使用‘chkconfig‘命令列出運行級別3的運行所有服務。


# /sbin/chkconfig --list |grep '3:on'

  當你發現一個不需要的服務在運行時,使用下面的命令停止這個服務。


# chkconfig serviceName off

  使用RPM包管理器,例如YUM或者apt-get 工具來列出所有安裝的包,並且利用下的命令來卸載他們。


# yum -y remove package-name

# sudo apt-get remove package-name

5 chkconfig Command Examples

20 Practical Examples of RPM Commands

20 Linux YUM Commands for Linux Package Management

25 APT-GET and APT-CACHE Commands to Manage Package Management


  4. 檢查網絡監聽端口


  在網絡命令 ‘netstat‘ 的幫助下,你將能夠看到所有開啓的端口,以及相關的程序。使用我上面提到的 ‘chkconfig‘ 命令關閉系統中不想要的網絡服務。


# netstat -tulpn

Linux 網絡管理中的 20 條 Netstat 命令

  5. 使用 SSH(Secure Shell)


  Telnet 和 rlogin 協議只能用於純文本,不能使用加密的格式,這或將導致安全漏洞的產生。SSH 是一種在客戶端與服務器端通訊時使用加密技術的安全協議。


  除非必要,永遠都不要直接登錄 root 賬戶。使用 “sudo” 執行命令。sudo 由 /etc/sudoers 文件制定,同時也可以使用 “visudo” 工具編輯,它將通過 VI 編輯器打開配置文件。


  同時,建議將默認的 SSH 22 端口號改爲其他更高的端口號。打開主要的 SSH 配置文件並做如下修改,以限制用戶訪問。


# vi /etc/ssh/sshd_config

  關閉 root 用戶登錄


PermitRootLogin no

  特定用戶通過


AllowUsers username

  使用第二版 SSH 協議


Protocol 2

SSH 服務器安全維護五條最佳實踐


  6. 保證系統是最新的


  得一直保證系統包含了最新版本的補丁、安全修復和可用內核。


# yum updates # yum check-update

  7. 鎖定 Cron任務


Cron有它自己內建的特性,這特性允許定義哪些人能哪些人不能跑任務。這是通過兩個文件/etc/cron.allow 和 /etc/cron.deny 控制的。要鎖定在用Cron的用戶時可以簡單的將其名字寫到corn.deny裏,而要允許用戶跑cron時將其名字加到cron.allow即可。如果你要禁止所有用戶使用corn,那麼可以將“ALL”作爲一行加到cron.deny裏。


# echo ALL >>/etc/cron.deny

11 個linux Cron調度實例


  8.  禁止USB探測


很多情況下我們想去限制用戶使用USB,來保障系統安全和數據的泄露。建立一個文件‘/etc/modprobe.d/no-usb‘並且利用下面的命令來禁止探測USB存儲。


install usb-storage /bin/true

  9.打開SELinux


  SELinux(安全增強linux)是linux內核提供的一個強制的訪問控制安全機制。禁用SELinux意味着系統丟掉了安全機制。要去除SELinux之前仔細考慮下,如果你的系統需要發佈到網絡,並且要在公網訪問,你就要更加註意一下。


  SELinux 提供了三個基本的操作模式,他們是:


強制執行:這是默認是模式,用來啓用和強制執行SELinux安全措略。

許可模式:這種模式下SELinux不會強制執行安全措略,只有警告和日誌記錄。這種模式在SELinux相關問題的故障排除時候非常有用。

關閉模式:SELinux被關閉。

  你可以使用命令行‘system-config-selinux‘, ‘getenforce‘ or ‘sestatus‘來瀏覽當前的SEliux的狀態。


# sestatus

  如果是關閉模式,通過下面的命令開啓SELinux


# setenforce enforcing

  你也可以通過配置文件‘/etc/selinux/config‘來進行SELinux的開關操作。


  10. 移除KDE或GNOME桌面


  沒必要在專用的LAMP服務器上運行X Window桌面比如KDE和GNOME。可以移掉或關閉它們,以提高系統安全性和性能。打開/etc/inittab然後將run level改成3就可以關閉這些桌面。如果你將它徹底的從系統中移走,可以用下面這個命令:


# yum groupremove "X Window System"

  11. 關閉IPv6


  如果不用IPv6協議,那就應該關閉掉它,因爲大部分的應用和策略都不會用到IPv6,而且當前它不是服務器必需的。可以在網絡配置文件中加入如下幾行來關掉它。


# vi /etc/sysconfig/network

NETWORKING_IPV6=no IPV6INIT=no

  12. 限制用戶使用舊密碼


  如果你不希望用戶繼續使用老密碼,這一條很有用。老的密碼文件位於 /etc/security/opasswd。你可以使用 PAM 模塊實現。


  RHEL / CentOS / Fedora 中打開 ‘/etc/pam.d/system-auth‘ 文件。


# vi /etc/pam.d/system-auth

  Ubuntu/Debian/Linux Mint 中打開 ‘/etc/pam.d/common-password‘ 文件。


# vi /etc/pam.d/common-password

  在 ‘auth‘ 塊中添加下面一行。


auth sufficient pam_unix.so likeauth nullok

  在 ‘password‘ 塊添加下面一行,禁止用戶重新使用其過去最後用過的 5個密碼。


password sufficient pam_unix.so nullok use_authtok md5 shadow remember=5

  服務器只記錄最後的 5 個密碼。如果你試圖使用曾用的最後 5個老密碼中的任意一個,你將看到如下的錯誤提示。


Password has been already used. Choose another.

  13. 如何檢查用戶密碼過期?


  在 Linux 中,用戶的密碼以加密的形式保存在 ‘/etc/shadow‘ 文件中。要檢查用戶的密碼是否過期,你需要使用 ‘chage‘ 命令。它將顯示密碼的最後修改日期及密碼期限的細節信息。這些細節就是系統決定用戶是否必須修改其密碼的依據。


  要查看任一存在用戶的老化信息,如 過期日 和 時長,使用如下命令。


#chage -l username

  要修改任一用戶的密碼老化,使用如下命令。


#chage -M 60 username #chage -M 60 -m 7 -W 7 userName

  參數


-M 設置天數最大數字

-m 設定天數最小數字

-W 設定想要的天數

  14. 手動鎖定或解鎖用戶賬號


  鎖定和解鎖功能是非常有用的,你可以鎖定一個賬號一週或一個月,而不是將這個賬號從系統中剔除。可以用下面這個命令鎖定一個特定用戶。


# passwd -l accountName

  提示:這個被鎖定的用戶僅對root用戶仍然可見。這個鎖定是通過將加密過的密碼替換成(!)來實現的。如果有個想用這個賬號來進入系統,他會得到類似下面這個錯誤的提示。


# su - accountName This account is currently not available.

  解鎖一個被鎖定的賬號時,用下面這個命令。這命令會將被替換成(!)的密碼改回來。


# passwd -u accountName

  15. 增強密碼


  有相當數量的用戶使用很弱智的密碼,他們的密碼都可以通過字典***或者暴力***攻破。‘pam_cracklib‘模塊存於在PAM 中,它可以強制用戶設置複雜的密碼。通過編輯器打開下面的文件。


# vi /etc/pam.d/system-auth

  在文件中增加一行,使用認證參數(lcredit, ucredit, dcredit  或者 ocredit 對應小寫字母、大寫字母,數字和其他字符)


/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

  16. 啓用Iptable(防火牆)


  高度推薦啓用linux防火牆來禁止非法程序訪問。使用iptable的規則來過濾入站、出站和轉發的包。我們可以針對來源和目的地址進行特定udp/tcp端口的准許和拒絕訪問。


Basic IPTables Guide and Tips

  17. 禁止Ctrl+Alt+Delete重啓


  在大多數的linux發行版中,按下‘CTRL-ALT-DELETE’將會讓你的系統重啓。只說生產服務器上這是不是一個很好的做法,這可能導致誤操作。


  這個配置是在‘ /etc/inittab‘文件,如果你打開這個文件,你可以看到下面類似的段落。默認的行已經被註釋掉了。我們必須註釋掉他。這個特定按鍵會讓系統重啓。


# Trap CTRL-ALT-DELETE #ca::ctrlaltdel:/sbin/shutdown -t3 -r now

  18. 檢查空密碼帳號


  任何空密碼的賬戶意味這可以讓Web上任何無授權的用戶訪問,這是linux服務器的一個安全威脅。所以,確定所有的用戶擁有一個複雜的密碼並且不存在特權用戶。空密碼帳號是安全風險,可以被輕易的攻克。可以利用下面的命令來檢查是否有空密碼賬戶存在。


# cat /etc/shadow | awk -F: '($2==""){print $1}'

  19. 登錄前顯示SSH提示


  在ssh認證時候,使用一個法律和安全警示是很好的建議。關於SSH警示可以看下面的文章。


Display SSH Warning Message to Users


  20. 監視用戶行爲


  如果你有很多的用戶,去收集每一個用戶的行爲和和他們的進程消耗的信息非常重要。可以隨後和一些性能優化和安全問題處理時進行用戶分析。但是如果監視和蒐集用戶行爲信息呢 ?


  有兩個很有用的工具‘psacct‘ 和 ‘acct‘可以用來監視系統中用戶的行爲和進程。這些工具在系統後臺執行並且不斷記錄系統中每一個用戶的行爲和各個服務比如Apache, MySQL, SSH, FTP, 等的資源消耗。對這些工具更多的安裝配置和使用信息,請訪問下面的網址:


Monitor User Activity with psacct or acct Commands


  21. 定期查看日誌


  將日誌移動到專用的日誌服務器裏,這可避免***者輕易的改動本地日誌。下面是常見linux的默認日誌文件及其用處:


/var/log/message – 記錄系統日誌或當前活動日誌。

/var/log/auth.log – 身份認證日誌。

/var/log/kern.log – 內核日誌。

/var/log/cron.log – Crond 日誌 (cron 任務).

/var/log/maillog – 郵件服務器日誌。

/var/log/boot.log – 系統啓動日誌。

/var/log/mysqld.log – MySQL數據庫服務器日誌。

/var/log/secure – 認證日誌。

/var/log/utmp or /var/log/wtmp :登錄日誌。

/var/log/yum.log: Yum 日誌。

  22. 重要文件備份


  在生產環境裏,爲了災難恢復,有必要將重要文件備份並保存在安全的遠程磁帶保險庫、遠程站點或異地硬盤。


  23. NIC 綁定


  有兩種類型的NIC綁定模式,需要在綁定接口用得到。


mode=0 – 循環賽模式

mode=1 – 激活和備份模式

  NIC綁定可以幫助我們避免單點失敗。在NIC綁定中,我們把兩個或者更多的網卡綁定到一起,提供一個虛擬的接口,這個接口設置ip地址,並且和其他服務器會話。這樣在一個NIC卡down掉或者由於其他原因不能使用的時候,我們的網絡將能保持可用。


  相關閱讀 : Create NIC Channel Bonding in Linux


  24. 保持 /boot 只讀


  linux內核和他的相關的文件都保存在/boot目下,默認情況下是可以讀寫的。把它設爲了只讀可以減少一些由於非法修改重要boot文件而導致的風險。


# vi /etc/fstab

  在文件最後增加下面的行,並且保存


LABEL=/boot /boot ext2 defaults,ro 1 2

  如果你今後需要升級內核的話,你需要修回到讀寫模式。


  25.不鳥ICMP和Broadcast請求


  在/etc/sysctl.conf中添加下面幾行,屏蔽掉ping和broadcast請求。


Ignore ICMP request: net.ipv4.icmp_echo_ignore_all = 1 Ignore Broadcast request: net.ipv4.icmp_echo_ignore_broadcasts = 1

  運行下面這一行加載修改或更新


#sysctl -p



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