天天看點

LINUX 系統基準安全配置步驟

1. 調整核心參數:

   1)cp /etc/sysctl.conf /etc/sysctl.conf.zf

   2) 拷貝下面的内容到 /etc/sysctl.conf

       net.ipv4.ip_forward = 0          # 問問他們是不是 LVS,如果是的話,要設定為1

       net.ipv4.tcp_syncookies = 1

       net.ipv4.conf.all.accept_source_route = 0

       net.ipv4.conf.all.accept_redirects = 0

       net.ipv4.conf.all.rp_filter = 1   # 問問他們是不是 LVS 後端伺服器,如果是,要設定為0 

       net.ipv4.icmp_echo_ignore_broadcasts = 1

       net.ipv4.icmp_ignore_bogus_error_responses = 1

       net.ipv4.conf.all.log_martians = 1

       kernel.sysrq = 0

       kernel.core_uses_pid = 1

   3) sysctl -p

2.關閉不需要的服務

   1)touch /root/zf.sh

   2) 拷貝下面的腳本到該檔案(注意要先了解下面列出的這些服務項目,然後在實際操作的

       時候,記得咨詢相關伺服器的維護人員 到底需要開放哪些服務,再對下面的服務項 

      目作相應的修改)

#!/bin/bash

#

export LANG=C

temp_file=/tmp/config_security.temp

chkconfig --list | grep :on \

  | grep -v sshd | grep -v network | grep -v syslog | grep -v crond | grep -v anacron \

    | grep -v iptables | grep -v readahead | grep -v irqbalance | grep -v lvm2-monitor \

      | grep -v arptables_jf | grep -v sendmail | grep -v readahead_early | grep -v snmpd \

        | grep -v apache2 | grep -v resin | grep -v mysql \

           | grep -v portmap  | grep -v nfslock | grep -v netfs \           # nfs client needs this line

             | grep -v nfs | grep -v sysstat  \                                         # nfs server needs this line

                | awk '{ print $1 }' > $temp_file

while read serv

do

  chkconfig $serv off

  /etc/init.d/$serv stop

done < $temp_file

rm -f $temp_file

   3) sh /root/zf.sh

3.開啟history的時間記錄

  1) 拷貝下面的代碼到 /etc/profile 的最後位置

      HISTSIZE=100000

      HISTTIMEFORMAT="%F %R "

      export HISTSIZE HISTTIMEFORMAT

  2)執行 history 指令驗證先前執行的指令的時間也顯示出來了

4. 配置安全的SSH(禁止 root 直接登入,非标準端口(62222),隻支援 SSH protocol 2)

   1)touch /etc/ssh/sshd_config_secure

   2) 把檔案 sshd_config_secure 的内容拷貝到 /etc/ssh/sshd_config_secure

   3) 把下面的代碼加入到 /etc/syslog.conf 檔案的末尾

       # save logs of secure sshd to sshd_secure

      local6.*  /var/log/sshd_secure

      并重新開機日志守護程序: /etc/init.d/syslog restart

   4) 用 visudo 指令打開 /etc/sudoers 檔案,并把下面的代碼加入到 /etc/sudoers 檔案的末尾

       Defaults log_year, syslog=local6

   5) /usr/sbin/sshd -f /etc/ssh/sshd_config_secure

   6) 執行指令 netstat -lnp | grep :62222 驗證我們自己配置的 SSH 已經在正常運作了

5. 配置 sudo

   1)詢問該伺服器的相關維護人員和開放人員以确定需要建立哪幾個組,每個組需要建立

        哪幾個使用者

   2)然後在伺服器上建立這些組和使用者,一定要注意的是保證在所有伺服器上的相同的組

        名稱有相同的組ID(GID), 相同的使用者名稱有相同的使用者ID(UID),例如我們在xx的服

        務器上建立如下規範的組和使用者:

      ------------------------------------------------------------------------------------------------------------------

      組名稱    組ID(GID)     組描述                                   該組内的使用者   該使用者的使用者ID(UID)

       sa            6000                system  admin                       xxxx.xxx               60001

                                                                                             xxxx.xxx               60002

       isa           6001                information security admin     xxxx.xxx               60011

                                                                                             xxxx.xxx               60002

      相關指令如下:

  建組: groupadd -g 6000 sa    # -g 參數指定建立的組的組ID(GID),如果不指定的話,

                                                    # 系統會自動選擇一個GID,

               groupadd -g 6001 isa   # 那樣的話就沒法保證在所有的伺服器上相同的組名稱

                                                    #  有相同的組ID了,UID 也是如此

  建使用者:useradd -u 60001 -g 6000 xxxx.xxx       # 指定 xxxx.xxx 的 UID 為 60001, GID 為

                                                                               #  6000(sa 組)

    useradd -u 60011 -g 6001 xxxx.xxx    # 指定 xxxx.xxx 的 UID 為 60011, GID 為 6001(isa 組)

    useradd -u 60002 -g 6000 -G 6001 xxxx.xxx  # 指定 xxxx.xxx 的 UID 為 60002, 主 GID 為

                                                                           # 6000(sa 組),附加 GID 為6001(isa 組)

                                                                           # -u 指定 UID, -g 指定主組ID, -G 指定附件組ID,

                                                                           #  格式為:

                                                                           # useradd -u <UID> -g <GID> -G<GID1,GID2,...>

                                                                           # <username>

   3)用 visudo 指令打開 /etc/sudoers, 并在其末尾添加如下形式的條目:

        %<組名稱>   ALL =       [NOPASSWD:]ALL              # [NOPASSWD:] 表示該部分是可選

                                                                                             # 的, 例如,我們在xx的伺服器上的配

                                                                                             # 置是這樣的:

       %sa             ALL =  NOPASSWD:ALL

       %isa            ALL =  NOPASSWD:ALL

   4)驗證:

      a. 為你自己的帳号設定密碼,然後用自己的帳号嘗試登入(注意 SSH 的端口是  

          62222);

      b. 登入成功後,執行下面的指令驗證 sudo 配置是否成功:sudo cat /etc/shadow

         如果你能夠打開 /etc/shadow 人家,表示 sudo 配置 OK 了,

      c. 接着檢視 /var/log/sshd_secure 驗證我們自己的 SSH 的日志記錄是否OK,如果你在該文

         件中看到了我們剛才的登入及 sudo, 說明日志配置 OK 了。

6. 配置公鑰

   1)檢視伺服器上是否有 /root/.ssh/authorized_keys 檔案,如果沒有,建立它(如果

         連/root/.ssh目錄都沒有,先建立該目錄)

   2)cd /root/.ssh 

   3) 用 rz 指令 上傳 authorized_keys (自己生成的所有伺服器統一使用的公鑰檔案)檔案

7. 生成并儲存目前系統的 md5 hash 以在必要的時候檢查系統的完整性

   1)執行下面的指令将系統的重要系統檔案的 MD5 hash 儲存到 md5.log

     find /bin /boot /etc /lib /lib64 /sbin /sys/module \

        /usr/bin /usr/include /usr/lib /usr/lib64 /usr/libexec /usr/sbin /usr/src \

          -type f -exec md5sum {} \; >> md5.log 

   2)執行指令 sz md5.log 将該檔案儲存到本機,然後把伺服器上的該檔案副本删除,并把

         本地的該檔案副本改名為 <ip的第四段>-md5-<目前的日期>.log 的形式

        (例如:211.151.xx.xxx --> xxx-md5-20070712.log)

8. 如果系統還沒有防火牆(/etc/sysconfig/iptables 檔案不存在),那麼執行 

    cat /etc/sysconfig/iptables 指令建立該檔案,把 iptables.txt 檔案的内容拷貝

    到 /etc/sysconfig/iptables 裡,執行指令 dos2unix /etc/sysconfig/iptables

    轉換格式,然後執行指令 /etc/init.d/iptables start 啟用防火牆.

   上面的步驟隻配置了最基本的防火牆規則,進一步的調整需要和系統維護人員和開放人

   員協商

9. 待續。。。

本文轉自zkjian517 51CTO部落格,原文連結:http://blog.51cto.com/zoukejian/56467