天天看點

Linux安全設定

伺服器的安全 (防範于未然 比入侵後再修補漏洞要好的多 一旦遭到入侵以後 當你發現你的水準在黑客的水準之下

話 最好重裝系統 并且更新你軟體的版本為最新的) 注明 : 如果沒有查出被入侵的原因 和對方使用什麼漏洞以及路徑

重裝系統也是于事無補

需要注意的地方:

1.使用 複雜的密碼( 都是廢話 但是卻是 非常關鍵的 很多資料都談到了 我也不必再重複)

使用 chage -M 60 使用者名

來設定 60 天為密碼的最長有效期

并且要設定 一個驗證子產品 pam_cracklib.so

這個子產品 是用來檢查 密碼強度 它會調用 cracklib 來測試密碼是否會被破解 

它會檢查 你的密碼

1是不是和原來的密碼一樣 或者隻是變換了大小寫 

2檢查密碼是否太短 

3 密碼是否和原來的相像

隻要 把 /etc/pam.d/passwd

檔案中的 添加 passwor required pam_cracklib.so retry=3 minlength=12 difok=5

retry=3 就是給使用者3次機會設定密碼 并且長度至少為12 至少要有5個字元和舊密碼不同

password required pam_cracklib.so retry=3 minlen=12 difok=3

password required pam_unix.so use_authtok nullok md5

2.屏棄 不安全的連接配接方式 : telnet 以及 ftp 都是不安全的連接配接方式 ( 盡量采用 ssh 和sftp 等等

有加密的通訊方式 防止通訊資料被人嗅探或者截獲)

3. 對敏感檔案的權限設定 必須非常謹慎:

日志檔案 首先建立一個使用者組: groupadd logs

        進入日志目錄: /var/log

        把所有的檔案都歸進 logs使用者組 chgrp -R logs .

          把所有目錄的權限都 設定為   rwxr-x--- 就是750 

        所有的檔案設定為     rw-r----- 就是640

chmod -R 700 /etc/rc.d/init.d/*  

這表示隻有root才允許讀、寫、執行該目錄下的script檔案。

hosts.deny hosts.allow

{控制台通路安全 

1、取消普通使用者的控制台通路權限,你應該取消普通使用者的控制台通路權限。 

比如shutdown、reboot、halt等指令。 

  # rm -f /etc/security/console.apps/ 

  是你要登出的程式名。 

2、不允許從不同的控制台進行root登陸 

  "/etc/securetty"檔案允許你定義root使用者可以從那個TTY裝置登陸。你可以編輯"/etc/securetty"檔案,再不需要登陸的TTY裝置前添加“#”标志,來禁止從該TTY裝置進行root登陸。 

  在/etc/inittab檔案中有如下一段話: 

  # Run gettys in standard runlevels 

  1:2345:respawn:/sbin/mingetty tty1 

  2:2345:respawn:/sbin/mingetty tty2 

  #3:2345:respawn:/sbin/mingetty tty3 

  #4:2345:respawn:/sbin/mingetty tty4 

  #5:2345:respawn:/sbin/mingetty tty5 

  #6:2345:respawn:/sbin/mingetty tty6 

  系統預設的可以使用6個控制台,即Alt+F1,Alt+F2...,這裡在3,4,5,6前面加上“#”,注釋該句話,這樣現在隻有兩個控制台可供使用,最好保留兩個。然後重新啟動init程序,改動即可生效!}

修改 /etc/ssh/sshd_config 

裡的 

PermitRootLogin yes 修改為 no

這樣就能防止 root 直接遠端登陸

如果 不希望 用密碼驗證來登陸 可以選擇 基于密鑰的登陸方式

将以下配置做一下簡單的修改:

#AuthorizedKeysFile   .ssh/authorized_keys 将#注釋去掉

該選項用于設定使用者公鑰檔案存儲位置,系統預設位置在使用者目錄下的.ssh/authorized_keys

#PasswordAuthentication yes 将#去掉,并将yes改成no

系統預設使用基于密碼的驗證方式,這樣就禁止了使用基于密碼驗證方式,而改成了基于密鑰的驗證方式,進而提高了系統的安全性

2.      密鑰制作具體的過程

(1) 添加遠端登陸使用者

# adduser remoter

# passwd remoter   //為reomter設定密碼,我在我把密碼設為fire

# su –l remoter 

$ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/remoter/.ssh/id_rsa): 密鑰儲存的路徑

Created directory '/home/remoter/.ssh'.

Enter passphrase (empty for no passphrase):   輸入密鑰密碼,在此我設為fire

Enter same passphrase again:

Your identification has been saved in /home/remoter/.ssh/id_rsa. 私鑰密碼儲存徑

Your public key has been saved in /home/remoter/.ssh/id_rsa.pub. 公鑰密碼儲存路徑

The key fingerprint is:

ff:50:a6:95:5d:1a:39:96:14:f7:e6:7f:91:ea:6f:b4 reomter@linuxhero 密碼指紋

(2)重命名公鑰

$ ls –al 可以看到在/home/reomter/目錄下有一個.ssh檔案,進入該目錄,

$ cd .ssh

$ mv id_rsa.pub authorized_keys   将其重命名與以下修改的配置檔案一至,注意不要拼寫錯

(3)将私鑰下載下傳到本地。

可以利用remoter相應的FTP使用者名和密碼登陸,将id_rsa下載下傳到本地.

再使用puttygen.exe處理使用者私鑰。運作”puttygen.exe”點選”load”選取開始下載下傳的id_rsa,

系統要求輸入私鑰密碼輸入,如圖所示,

在這裡我輸入的私鑰密碼為fire.

輸入密碼後,單擊确定再點點save private key按鈕,将密鑰儲存為id.ppk.

(4)基于密鑰的遠端登陸

運作putty.exe , 選擇“Session",在"HostName(orIP address)"輸入IP:192.168.0.20,port:22

再選擇"Connection",選“SSH”->"Auth"->"Browse"選取開始轉換過來的密鑰,單擊"Open

輸入使用者名:reomter,密碼為fire,是私鑰密碼,而不是系統用使用者密碼.

3.      SSH服務配置檔案的詳細介紹

#Port 22           指定的SSHD使用的端口,為了安全你還可以在此修改預設端口

#Protocol 2,1         指定優先使用的SSH協定

#ListenAddress 0.0.0.0   使用的IP位址(IPV4格式)

#ListenAddress ::       使用的IP位址 (IPV6格式)

# HostKey for protocol version 1         使用SSH1協定的密鑰

#HostKey /etc/ssh/ssh_host_key         SSH1密鑰的儲存路徑

# HostKeys for protocol version 2         使用SSH2協定的密鑰

#HostKey /etc/ssh/ssh_host_rsa_key       SSH2協定rsa密鑰儲存路徑

#HostKey /etc/ssh/ssh_host_dsa_key       SSH2協定dsa密鑰的儲存路徑

# Lifetime and size of ephemeral version 1 server key   SSH1伺服器密鑰的生命周期

#KeyRegenerationInterval 3600               密鑰重建周期,機關為秒

#ServerKeyBits 768                     伺服器密鑰的長度

# Logging                           日志

#obsoletes QuietMode and FascistLogging

#SyslogFacility AUTH                     日志方式

SyslogFacility AUTHPRIV                   日志方式

#LogLevel INFO                       日志等級

# Authentication:

#LoginGraceTime 120                   登陸延時

#PermitRootLogin yes                   禁止root使用者登陸

#StrictModes yes                     嚴格模式

#RSAAuthentication yes                 RSA驗證

#PubkeyAuthentication yes                 公鑰驗證

#AuthorizedKeysFile   .ssh/authorized_keys     密鑰存放路徑

# rhosts authentication should not be used         禁止rhosts驗證模式

#RhostsAuthentication no                 rhosts驗證模式

# Don't read the user's ~/.rhosts and ~/.shosts files   不讀取使用者的~/.rhosts and ~/.shosts 檔案

#IgnoreRhosts yes                     忽略Rhosts

# To disable tunneled clear text passwords, change to no here!

#PasswordAuthentication yes               基于密碼的驗證模式

#PermitEmptyPasswords no                 允許空密碼

4.對一些關鍵的 切換指令 比如 su mount ..等等 要嚴加控制 其使用權限 (su 需要指定專門的使用者才可以使用 防止}

暴力破解 mount 防止 有人通過遠端挂載 一些 目錄 上面suid 和sgid 的 程式 用于入侵或者攻擊)

禁止任何人通過su指令改變為root使用者 

su(Substitute User替代使用者)指令允許你成為系統中其他已存在的使用者。如果你不希望任何人通過su指令改變為root使用者或對某些使用者限制使用su指令,你可以在su配置檔案(在"/etc/pam.d/"目錄下)的開頭添加下面兩行: 

編輯su檔案(vi /etc/pam.d/su),在開頭添加下面兩行: 

auth sufficient /lib/security/pam_rootok.so debug  

auth required /lib/security/Pam_wheel.so group=wheel  

這表明隻有"wheel"組的成員可以使用su指令成為root使用者。你可以把使用者添加到"wheel"組,以使它可以使用su指令成為root使用者。

還可以把su 指令歸進 專門的使用者組和使用者 同樣達到這樣的效果

防止 有人通過遠端挂載 一些 目錄 上面suid 和sgid 的 程式 用于入侵或者攻擊

修改/etc/fstab

隻給分區必須的權限

像這樣LABEL=/bakups /bakups ext3 nosuid,noexec 1 2

noexec表示不能在這個分區運作程式,nosuid不能使用nosuid的程式,根據情況自行設定其他分區,一般來說/tmp,/usr都要nosuid

5.經常的更新 和更新軟體的版本 ( 但是注意 盲目的更新軟體版本 很可能會造成新的軟體 運作不正常)

redhat 有可以從 redhat network 獲得 更新的功能 使用 up2date 就可以更新系統的各類服務的資料包

6.sudo 的設定 ( 這個工具是授權 非root使用者 運作root 使用者的一些指令)

7.suid 和sgid 位的設定 ( 這個的危害 恐怕是非常嚴重的 )

suid 位和sgid 位的設定 chmod u+s 檔案 和chmod g+s 檔案

查找 suid 位的檔案的指令: 

# find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \;

禁止其中不必要的程式:

----# chmod a-s program_name

umask 指令

8.各種服務配置檔案的設定 (解除安裝 自己沒有開設的服務的資料包 不要保留 )

9.為了防止dns欺騙 要對的設定 進行修改 必須 讓伺服器 進行反相解析 并且要 設定為 先從 外部dns伺服器上

獲得資料 不要 設定為 直接讀取自己機子的緩存資訊

修改"/etc/host.conf"檔案 

"/etc/host.conf"說明了如何解析位址。編輯"/etc/host.conf"檔案(vi /etc/host.conf),加入下面這行: 

# Lookup names via DNS first then fall back to /etc/hosts.  

order bind,hosts  

# We have machines with multiple IP addresses.  

multi on  

# Check for IP address spoofing.  

nospoof on  

第一項設定首先通過DNS解析IP位址,然後通過hosts檔案解析。第二項設定檢測是否"/etc/hosts"檔案中的

主機是否擁有多個IP位址(比如有多個以太口網卡)。第三項設定說明要注意對本機未經許可的電子欺騙。

10.最好可以使用 vpn 來替代 利用外部網絡直接連接配接 遠端伺服器

11. hosts.deny hosts.allow 檔案 阻擋 非授權使用者通路系統服務

第一步: 

編輯hosts.deny檔案(vi /etc/hosts.deny),加入下面這行 

# Deny access to everyone.  

ALL: ALL@ALL, PARANOID 

這表明除非該位址包好在允許通路的主機清單中,否則阻塞所有的服務和位址。 

第二步: 

編輯hosts.allow檔案(vi /etc/hosts.allow),加入允許通路的主機清單,比如: 

ftp: 202.54.15.99 foo.com 

202.54.15.99和 foo.com是允許通路ftp服務的ip位址和主機名稱。

tcpdchk程式是tepd wrapper設定檢查程式。它用來檢查你的tcp  

wrapper設定,并報告發現的潛在的和真實的問題。設定完後,運作下面這個指令: 

[Root@kapil /]# tcpdchk 

12.iptables 防火牆設定 (這裡需要嚴格設定 并且要設定 關鍵檔案的權限 同時在這裡 在保證安全的前提下

盡量少的 規則可以提高效率和處理速度 對出口資料同樣要嚴格控制 防止反相連接配接 或者成為别人dos 攻擊的發源

地 !)

#輸對外連結允許源位址是xxx.xxx.xxx.xxx的資料輸出,也可以指定網卡例: –i eth0 (防止成為别人dos 攻擊的發源

iptables -A OUTPUT -s xxx.xxx.xxx.xxx -j ACCEPT

#限制ping包每一秒鐘一個,10個後開始

iptables -A INPUT -p icmp -d xxx.xxx.xxx.xxx -m limit --limit 1/s --limit-burst 10 -j ACCEPT

#限制IP碎片,每秒鐘隻允許100個碎片,防止DoS攻擊

iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT

需要的人可以到下面的位址看 動畫 

http://www.fineacer.com/Soft_Show.asp?SoftID=231

http://www.fineacer.com/Soft_Show.asp?SoftID=254

13.at 計劃任務的 檢查 (包括at.deny at.allow 檔案的檢查) 這裡強調一下 很多服務都有這樣地字尾名為 deny allow

檔案 設定不當 就會給人以可乘之機 是以前面說的 對服務設定地了較 同樣非常重要)

14.cron 設定 檢查 定期運作的 清單裡 有什麼不妥當的 shell

15.系統在分區過程中 最好能夠 把一些目錄分開 如果有多的硬碟 最好把/home 和 應用程式的目錄分在各自單獨的

硬碟上 并且做好 使用者的磁盤配額 來防止 入侵後對系統進行 惡意的寫資料 破壞硬碟的資料 最大限度上保證

資料的安全 

----經常檢查磁盤空間對維護Linux的檔案系統非常必要。而Linux中對磁盤空間維護使用最多的指令就是df和du了。

----df指令主要檢查檔案系統的使用情況,通常的用法是:

----#df -k

----Filesystem 1k-blocks Used Available Use% Mounted on

----/dev/hda3 1967156 1797786 67688 96% /

----du指令檢查檔案、目錄和子目錄占用磁盤空間的情況,通常帶-s選項使用,隻顯示需檢查目錄占用磁盤空間的總計, 

而不會顯示下面的子目錄占用磁盤的情況。

----% du -s /usr/X11R6/*

----34490 /usr/X11R6/bin

----1 /usr/X11R6/doc

----3354 /usr/X11R6/include

16.做好 raid 磁盤列陣 來防止硬碟的損壞 (安全不僅僅 指的是 系統的安全還 包括資料的安全和通訊的安全)

目前 raid的方案分為7個級别

其中 0, 1, 5 三個級别經常用到

17.檔案的檔案完整性檢查 工具 tripwire 用來檢查檔案的 完整性 ( 是以強烈建議 linux 系統的管理者

在工作過程中 做好工作筆記 記錄在對系統設定修改中 更改的設定) 完整性檢查的資料不要儲存到這台

主機的硬碟上 最好使用移動媒體(cdrom 或者移動硬碟)

18.檢查一些容易被黑客替換的指令檔案 ls mount netstat lsof top .....   并且要備份一套 完整的沒有做過修改的

系統檢查檔案的 備份 (防止 這些檢查工具被 木馬話或者被替換 )

19.最好 使用 chattr 指令 給寫檔案加上 一些屬性 比如 +i 這樣可以防止任意更改檔案 給日志檔案加上 +a的

屬性 這個屬性是隻許添加 不許更改的屬性 

反正修改 grub 的内容

chattr +i /etc/grub 

防止未經許可的删除或添加服務: 

[root@kapil /]# chattr +i /etc/services

需要注意的目錄 /bin /sbin /usr/bin 和/lib 這些目錄都是不經常變動的 

(雖然不能阻止 獲得root 使用者的黑客修改參數 但是對 防範腳本攻擊卻非常有效 可以避免

軟體本身有漏洞 造成被人修改 至少可以延緩 别人的攻擊速度 對方停留在系統的時間越長 留下的日志也就越多

還有專門的工具 可以增強這個功能 設定後甚至于root 使用者都無權修改)

20.備份檔案 這樣可以在出現問題的時候快速恢複資料

21.syslogd 日志 最好設定一個遠端日志伺服器來儲存日志 (這樣在黑客攻破主機後 為了擦除 日志記錄 就必須攻擊

日志伺服器 并且日志伺服器上有可能隻有開啟日志的服務 進而為入侵增加了難度 争取了 大量的時間)

在這裡 還要說明一點 一旦root 使用者被攻破 黑客很容易從syslog-ng的配置檔案中 發現日志檔案發送的目标

(就是遠端的日志伺服器位址) 黑客可能無法攻破日志主機但是 很有可能發動 dos 攻擊導緻日志主機崩潰無法記錄

黑客在後面 所做的操作 這樣會對通過日志檔案找出他攻擊的方法 造成很大的難度 

是以 為了能夠欺騙 黑客 可以 設定日志發送到内部網絡中的假的或者不存在的目标 同時在網絡中 設定一個秘密

的日志主機 通過一種軟體 passlogd 把秘密的日志伺服器的網卡設定成為混和模式 來記錄網絡中傳送的所有日志

(passlogd 是一種日志嗅探工具)

如果是使用交換機 可以在交換機上設定對這個秘密日志伺服器的某一個端口轉發所有的資料包

是以建議: 同時設定2個日志伺服器 一個秘密 一個為公開 這樣 可以對黑客的攻擊日志伺服器 起到很好的作用

由于日志檔案是以明文傳輸的 容易被人截獲 是以需要以加密的方式來傳遞日志資訊 可以使用stunnel 來加密資料

(stunnel 在安全焦點有下載下傳) 但是由于加密了 就會導緻passlogd 嗅探工具失效 是以這需要自己平衡

22.logsentry 日志監視工具 這個是用來在發現 監視工具中設定的一些敏感的 日志可以 

盡快 發到 管理者手上

23.protsentry 端口監視工具 這個可以設定一些端口 來防止黑客對系統的踩點(掃描) 這工具還可以設定 一些

被掃描後 運作什麼腳本的功能 是以功能強大 如果可以設定的好 可以非常有效的防止 黑客對系統的掃描

24. 删除所有的特殊賬戶 

你應該删除所有不用的預設使用者群組賬戶(比如lp, sync, shutdown, halt, news, uucp, operator, games, gopher等)。 

删除使用者: 

[root@kapil /]# userdel LP  

删除組: 

[root@kapil /]# groupdel LP  

修改/etc/profile 檔案

上面強調的都是從 網絡上攻擊的防範方法:

其實實體的安全同樣重要 要是人家 拿走了你的硬碟 恐怕你的設定再安全也是 于事無補

25.同時對 bios 設定和 給grub 加密 還有 對自己離開主機是 鎖定 系統都是非常必要的 ( 可以防止 别人通過

實體接觸來攻破系統)

Bios Security 

一定要給Bios設定密碼,以防通過在Bios中改變啟動順序,而可以從軟碟啟動。這樣可以阻止别人試圖

用特殊的啟動盤啟動你的系統,還可以阻止别人進入Bios改動其中的設定(比如允許通過軟碟啟動等)。

26.上面的做的再好 沒有管理者的責任心 敬業精神 警惕心 和上進心 (每天需要對日志 和關鍵資訊的 查閱 應該是管理

員的必修課 同時需要不斷的學習 增強自己的技術水準) 再強的硬體和環境 都是一堆擺設 隻會 成為黑客談論的

笑柄   說白了 安全在于人為 不要怪罪于軟體和硬體 本身 !!

                    -------------------------引用黑客常說的一句話; 沒有入侵不了的系統

我加上一句 :但是事在人為 肯定會有打敗不了的管理者

繼續閱讀