linux下CentOS的系統安全配置詳細教程

來源:互聯網
上載者:User

本文以CentOS 5.4為例進行說明,對於5.x版本應該都是適用的,其他版本的話主要是命令的路徑不同,思路是一致的。

第一步、賬戶安全管理
1. 修改密碼長度

 代碼如下 複製代碼
#vi /etc/login.defs
PASS_MIN_LEN 18

2. 建立一個普通使用者帳號並設定密碼,這樣所有的操作都使用該普通帳號進行

 代碼如下 複製代碼
#useradd ru
#passwd ru

3. Linux預設提供了很多帳號,帳號越多,系統就越容易受到攻擊,所以應該禁止所有預設的被作業系統本身啟動的並且不必要的帳號。
可以使用 vi /etc/passwd 查看系統帳號,使用 vi /etc/group 查看系統的使用者組。

 代碼如下 複製代碼

#userdel adm
#userdel lp
#userdel sync
#userdel shutdown
#userdel halt
#userdel news
#userdel uucp
#userdel operator
#userdel games
#userdel gopher
#userdel ftp
 
#groupdel adm
#groupdel lp
#groupdel news
#groupdel uucp
#groupdel games
#groupdel dip
#groupdel pppusers

4. 使用chattr命令將下面的檔案加上不可更改屬性,從而防止非授權使用者獲得許可權。

 代碼如下 複製代碼
#chattr +i /etc/passwd
#chattr +i /etc/shadow
#chattr +i /etc/group
#chattr +i /etc/gshadow

這樣操作之後也無法建立帳號和修改密碼,後面可以使用chattr -i命令恢複之後再進行操作。

5. 禁止Ctrl+Alt+Delete重啟命令
修改 /etc/inittab 檔案,將下面一行注釋掉

 代碼如下 複製代碼
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

然後重新設定 /etc/rc.d/init.d/ 目錄下所有檔案的許可許可權,僅root帳號可以讀、寫和執行其中的所有指令檔:

 代碼如下 複製代碼
#chmod -R 700 /etc/rc.d/init.d/*

6. 限制su命令
限制只有特定使用者組的使用者才能使用su命令作為root許可權,可以編輯 /etc/pam.d/su 檔案,修改或增加下面的內容

 代碼如下 複製代碼
# 這一行預設是有的
auth sufficient pam_rootok.so
# 確認wheel使用者組是存在的
auth required pam_wheel.so group=wheel

這樣設定之後只有wheel使用者組的使用者可以使用su切換為root。如果系統使用者ru能夠su切換為root,可以運行如下命令:

 代碼如下 複製代碼
#usermod -G10 ru

這裡注意,使用 su - 命令可以切換為root使用者並將root的環境變數資訊進行切換,而 su 命令僅僅是切換角色但還是原來使用者的環境變數。

第二步、SSH安全配置
SSH作為系統登入的入口,其安全性好比城樓的城門,重要性不言而喻。
首先查看系統中是否安裝了SSH:

#chkconfig --list |grep sshd

如果出現內容則說明安裝了sshd服務,否則使用 yum install ssh 命令進行安裝。

接下來先備份原來的設定檔

 代碼如下 複製代碼

#cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

然後修改 /etc/ssh/sshd_config 檔案:

# 修改SSH的連接埠,預設為22
Port 5028
# 將#protocol 2,1改為
protocol 2
# 不允許root使用者直接登入
PermitRootLogin no
# 不允許空密碼登入
PermitEmptyPasswords no
# 不適用DNS
UseDns no

最後使用 service sshd restart 重啟SSH服務

第三步、關閉系統中不需要的服務和連接埠
1. 系統中少開一個服務就少一個危險,以下僅列出需要啟動的服務,未列出的服務一律關閉,如果沒有下面的服務則直接忽略:

 代碼如下 複製代碼

#setup
acpid
anacron
cpuspeed
crond
iptables
irqbalance \僅當伺服器CPU為S.M.P架構或支援雙核心、HT技術時,才需開啟,否則關閉。
microcode_ctl
network
random
sendmail
sshd
syslog
yum-updatesd

2. 使用iptables防火牆只開啟指定的連接埠
首先建立如下的sh檔案:

下載: closeports.sh#!/bin/bash
iptables -F INPUT
iptables -P INPUT DROP

 代碼如下 複製代碼
# 開啟80連接埠
/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 開啟SSH連接埠,這一點很重要,否則無法使用SSH了,注意將5028修改為你的SSH連接埠
/sbin/iptables -A INPUT -p tcp --dport 5028 -j ACCEPT

然後儲存為closeports.sh檔案,使用下面的命令執行該檔案:

 代碼如下 複製代碼
#chmod +x closeports.sh
#./closeports.sh

詳細的iptables配置資訊存放在 /etc/sysconfig/iptables 檔案中。

第四步、防止攻擊
1. 阻止ping
將 /proc/sys/net/ipv4/icmp_echo_ignore_all 檔案的內容修改為1,不過這樣的話如果伺服器重啟之後就會恢複為0了。
可以將下面的內容加入到 /etc/rc.d/rc.local 檔案中:

 代碼如下 複製代碼
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

2. 防止IP欺騙攻擊
編輯 /etc/host.conf 檔案,在下面增加如下幾行:

 代碼如下 複製代碼
#vi /etc/host.conf
order bind,hosts
multi off
nospoof on

3. 防止DoS攻擊
對系統所有的使用者佈建資源限制可以防止DoS類型攻擊。如最大進程數和記憶體使用量數量等。對 /etc/security/limits.conf 檔案添加如下內容:

 代碼如下 複製代碼
# 禁止調試檔案
* hard core 0
# 限制記憶體使用量為5MB
* hard rss 5000
# 限制進程數為20
* hard nproc 20

接下來必須編輯 /etc/pam.d/login 檔案確認下面一行是否存在,如果不存在的話添加上:

 代碼如下 複製代碼
session required /lib/security/pam_limits.so

對於DDos攻擊可以使用DDoS deflate指令碼,詳細介紹見下面的參考資料。

第五步、系統配置及效能調優
1. 修改系統預設字元集
如果使用英文安裝系統之後,如果系統中有中文會顯示亂碼,這個時候需要修改系統預設的字元集:

 代碼如下 複製代碼
#vi /etc/sysconfig/i18n
LANG="zh_CN.UTF-8"
 
#source /etc/sysconfig/i18n

將系統的編碼修改為zh_CN.UTF-8,後面一句命令是讓修改立即生效。

2. 使用ntp服務補救伺服器時間
首先檢查系統中是否安裝了ntp服務:

#chkconfig --list |grep ntp

如果沒有安裝的話使用yum進行安裝並更新時間

 代碼如下 複製代碼
#yum install ntp
#ntpdate time.windows.com

也可以將更新命令加入到cron中進行自動更新時間:

 代碼如下 複製代碼
#crontab -e
* */12 * * * ntpdate time.windows.com
 
#service crond restart

以上操作是每隔12小時自動更新一次時間,可以通過 crontab -l 命令進行查看。

3. 加大伺服器檔案描述符
當系統服務開啟後,訪問量變大,會使用到更多的檔案描述符。使用 ulimit –n 命令顯示當前的檔案描述符數(需要使用 su – 命令切換到root帳號)。可以使用如下方法加大檔案描述符數:

 代碼如下 複製代碼
#vi /etc/security/limits.conf
*   -   nofile  65536   #在文本的最後一行添加

重新登入之後,可以使用 ulimit –n 命令再次查看檔案描述符會看的已經發生了變化。

4. 調整核心參數

 代碼如下 複製代碼
#cp /etc/sysctl.conf /etc/sysctl.conf.bak
#vi /etc/sysctl.conf
 
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000    65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_max=25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established=180
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait=120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait=60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait=120

最後,使用 sysctl –p 命令讓上述設定立即生效。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.