Latest News

Home » Linux主機伺服器 » CentOS 5.5 系統安全配置

CentOS 5.5 系統安全配置

CentOS 5.5 系統安全配置

    1、註釋掉不需要的使用者和使用者組
    2、給下面的檔案加上不可變更屬性,從而防止非授權使用者獲得權限
    3、修改/etc/inittab檔案,將」ca::ctrlaltdel:/sbin/shutdown-t3-rnow」一行註釋掉。
    4、限制su指令
    5、防止攻擊
    6、限制不同檔案的權限

1、註釋掉不需要的使用者和使用者組

    vi /etc/passwd

    #adm
    #lp
    #sync
    #shutdown
    #halt
    #news
    #uucp
    #operator
    #games
    #gopher
    #ftp

    vi /etc/group

    #adm
    #lp
    #news
    #uucp
    #games
    #dip

2、給下面的檔案加上不可變更屬性,從而防止非授權使用者獲得權限

    #chattr +i /etc/passwd
    #chattr +i /etc/shadow
    #chattr +i /etc/group
    #chattr +i /etc/gshadow

權限修改之後,就無法加入刪除使用者了。要取消之前的修改,

    #lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow

lsattr 只是顯示檔案的屬性

    #chattr -i /etc/passwd
    #chattr -i /etc/shadow
    #chattr -i /etc/group
    #chattr -i /etc/gshadow

再次檢視
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow
————- /etc/passwd
————- /etc/shadow
————- /etc/group
————- /etc/gshadow
修改完之後,再執行

    chattr +i /etc/passwd
    chattr +i/etc/shadow
    chattr +i /etc/group
    chattr +i/etc/gshadow

禁止Ctrl+Alt+Delete重新啟動機器指令
3、修改/etc/inittab檔案,將」ca::ctrlaltdel:/sbin/shutdown-t3-rnow」一行註釋掉。

然後重新設定/etc/rc.d/init.d/目錄下所有檔案的許可權限,運行如下指令:

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

這樣便僅有root可以讀、寫或執行上述所有腳本檔案。
4、限制su指令

當不想任何人能夠su作為root,可以編輯/etc/pam.d/su檔案,增加如下兩行:

    auth sufficient /lib/security/pam_rootok.sodebug
    auth required /lib/security/pam_wheel.sogroup=isd

這時,僅isd組的使用者可以su作為root。此後,如果希望使用者admin能夠su作為root,可以運行如下指令:

    #usermod -G 10 admin

5、防止攻擊

1)阻止ping, 抵禦SYN:
如果沒人能ping通系統,安全性自然增加了,為此,我們可以在/etc/rc.d/rc.local檔案中增加如下一行

    echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all

SYN攻擊是利用TCP/IP協定3次握手的原理,傳送大量的建立連線的網路包,但不實際建立連線,最終導致被攻擊伺服器的網路佇列被佔滿,無法被標準使用者訪問。
Linux內核提供了若干SYN關聯的配置,用指令:

    sysctl -a | grep syn

看到:
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
tcp_max_syn_backlog是SYN佇列的長度,tcp_syncookies是一個開關,是否開啟SYN Cookie功能,該功能可以防止部分SYN攻擊。tcp_synack_retries和tcp_syn_retries定義SYN的重試次數。
加大SYN佇列長度可以容納更多等待連線的網路連線數,開啟SYN Cookie功能可以阻止部分SYN攻擊,降低重試次數也有一定效果。
調整上述設定的方法是:
vi /etc/rc.d/rc.local ,將下面的指令法加入進去

    sysctl -w net.ipv4.tcp_max_syn_backlog=2048 #增加SYN佇列長度到2048
    sysctl -w net.ipv4.tcp_syncookies=1 #開啟SYN COOKIE功能
    sysctl -w net.ipv4.tcp_synack_retries=3 #降低重試次數
    sysctl -w net.ipv4.tcp_syn_retries=3

2)防止IP欺騙
編輯host.conf檔案並增加如下幾行來防止IP欺騙攻擊。

    order hosts,bind #名稱解釋順序
    multi on #容許主機擁有多個IP位址
    nospoof on #禁止IP位址欺騙

3)防止DoS攻擊
對系統所有的使用者設定資源限制可以防止DoS類型攻擊,如最大程式數和記憶體使用數量等。
例如,可以在/etc/security/limits.conf中加入如下幾行:

    * hard core 0
    * hard rss 5000
    * hard nproc 20

然後必須編輯/etc/pam.d/login檔案檢查下面一行是否存在。
session required /lib/security/pam_limits.so
4)修改sshd_config檔案
首先修改配置檔 vi /etc/ssh/sshd_config
a 修改SSH連接埠
找到#Port 22一段,這裡是標識預設使用22連接埠,修改為如下:

    Port 22
    Port 50000

然後儲存離開
執行/etc/init.d/sshd restart
這樣SSH連接埠將同時工作與22和50000上。
現在編輯防火牆配置:vi /etc/sysconfig/iptables
啟用50000連接埠。
執行/etc/init.d/iptables restart
現在請使用ssh工具連線50000連接埠,來測試是否完成。
如果連線完成了,則再次編輯sshd_config的設定,將裡邊的Port22刪除,即可。
b 只使用SSH v2
將#Protocol 2,1改為 Protocol 2
c 限制使用者的SSH訪問
假設我們只要root,vivek和jerry使用者能通過SSH使用系統,向sshd_config配置檔中加入:

    AllowUsers root vivek jerry

d 配置閒置逾時離開時間間隔
使用者可以通過ssh登入到伺服器,你可以設定一個閒置逾時時間間隔避免出現孤兒ssh會話,開啟sshd_config配置檔,確保有如下的配置項:

    ClientAliveInterval 300
    ClientAliveCountMax 0

上面的例子設定的閒置逾時時間間隔是300秒,即5分鐘,過了這個時間後,閒置使用者將被自動踢出出去(可以理解為離開登入/註銷)。
e 禁用.rhosts檔案
不要讀取使用者的~/.rhosts和~/.shosts檔案,使用下面的設定更新sshd_config配置檔:
IgnoreRhosts yes
SSH可以模擬過時的rsh指令的行為,rsh被公認為是不安全的遠端訪問協定,因此必須得禁用掉。
6、限制不同檔案的權限

    [root@localhost ~]# chmod 700 /usr/bin/
    [root@localhost ~]# chmod 750 /usr/bin/*++*
    [root@localhost ~]# chmod 750 /usr/bin/c++*
    [root@localhost ~]# chmod 750 /usr/bin/ld
    [root@localhost ~]# chmod 750 /usr/bin/as
    [root@localhost ~]# locate sqlaccess
    /opt/lampp/bin/mysqlaccess
    [root@localhost ~]# chmod 755 /opt/lampp/bin/mysqlaccess
    [root@localhost ~]# chattr +a .bash_history
    [root@localhost ~]# chattr +i .bash_history
    [root@localhost ~]# chmod 700 /bin/ping
    [root@localhost ~]# chmod 700 /usr/bin/finger
    [root@localhost ~]# chmod 700 /usr/bin/who
    [root@localhost ~]# chmod 700 /usr/bin/w
    [root@localhost ~]# chmod 700 /usr/bin/locate
    [root@localhost ~]# chmod 700 /usr/bin/whereis
    [root@localhost ~]# chmod 700 /usr/bin/vim
    [root@localhost ~]# chmod 700 /usr/bin/make
    [root@localhost ~]# chmod 700 /bin/netstat
    [root@localhost ~]# chmod 700 /usr/bin/tail
    [root@localhost ~]# chmod 700 /usr/bin/less
    [root@localhost ~]# chmod 700 /usr/bin/head
    [root@localhost ~]# chmod 700 /bin/cat
    [root@localhost ~]# chmod 700 /bin/uname
    [root@localhost ~]# chmod 500 /bin/ps
    [root@localhost ~]# chmod 500 /usr/sbin/lsof

About

發佈留言