【基礎知識】Linux系統的安全與優化

天府雲創發表於2018-01-18

引言:

我們必須明白:最小的許可權+最少的服務=最大的安全

    很久沒有寫過文章了,最近收到不少朋友來信,提及了有關優化配置和一些新的安全問題,在此我想和大家淺顯討論一下這些問題,有什麼不準確和有更好的方式,請給我來信共同討論提高。

    在網上看到不少有關linux優化方面的好文章,在此我也不贅述這些文章了,我只想從我自己的體會來談談這方面的問題。

所以,無論是配置任何伺服器,我們都必須把不用的服務關閉、把系統許可權設定到最小話,這樣才能保證伺服器最大的安全。下面是CentOS伺服器安全設定,供大家參考。

前提條件:安裝linux作業系統的時候選擇最小化版本。本文以centos6為例,其他linux發行版僅供參考。

一、註釋掉系統不需要的使用者和使用者組
注意:不建議直接刪除,當你需要某個使用者時,自己重新新增會很麻煩。

  cp  /etc/passwd  /etc/passwdbak  #修改之前先備份
  vi /etc/passwd  #編輯使用者,在前面加上#註釋掉此行 
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin    #註釋掉ftp匿名賬號
cp /etc/group  /etc/groupbak  #修改之前先備份
  vi /etc/group  #編輯使用者組,在前面加上#註釋掉此行
#adm:x:4:root,adm,daemon
#lp:x:7:daemon,lp
#uucp:x:14:uucp
#games:x:20:
#dip:x:40:
二、關閉系統不需要的服務
service acpid stop  chkconfig acpid off  #停止服務,取消開機啟動  #電源進階設定,常用在 Laptop 上
service autofs stop  chkconfig autofs off  #停用自動掛載檔桉系統與週邊裝置
service bluetooth stop  chkconfig  bluetooth  off  #停用Bluetooth藍芽
service cpuspeed stop  chkconfig  cpuspeed  off  #停用控制CPU速度主要用來省電
service cups stop  chkconfig cups off    #停用 Common UNIX Printing System 使系統支援印表機
service ip6tables stop  chkconfig ip6tables off  #禁止IPv6
####################################################################################################
  如果要恢復某一個服務,可以執行下面操作
  service acpid start  chkconfig acpid on  
三、禁止非root使用者執行/etc/rc.d/init.d/下的系統命令
chmod -R 700 /etc/rc.d/init.d/*
chmod -R 777 /etc/rc.d/init.d/*    #恢復預設設定

四、給下面的檔案加上不可更改屬性,從而防止非授權使用者獲得許可權
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
chattr +i /etc/services    #給系統服務埠列表檔案加鎖,防止未經許可的刪除或新增服務
lsattr  /etc/passwd  /etc/shadow  /etc/group  /etc/gshadow  /etc/services  #顯示檔案的屬性
  注意:執行以上許可權修改之後,就無法新增刪除使用者了。
如果再要新增刪除使用者,需要先取消上面的設定,等使用者新增刪除完成之後,再執行上面的操作
chattr -i /etc/passwd    #取消許可權鎖定設定
  chattr -i /etc/shadow
  chattr -i /etc/group
  chattr -i /etc/gshadow
  chattr -i /etc/services  #取消系統服務埠列表檔案加鎖
現在可以進行新增刪除使用者了,操作完之後再鎖定目錄檔案
五、限制不同檔案的許可權
chattr +a .bash_history          #避免刪除.bash_history或者重定向到/dev/null
chattr +i .bash_history
chmod 700 /usr/bin                恢復  chmod 555 /usr/bin
chmod 700 /bin/ping              恢復  chmod 4755 /bin/ping
chmod 700 /usr/bin/vim        恢復  chmod 755 /usr/bin/vim
chmod 700 /bin/netstat          恢復  chmod 755 /bin/netstat
chmod 700 /usr/bin/tail          恢復  chmod 755 /usr/bin/tail
chmod 700 /usr/bin/less        恢復  chmod 755 /usr/bin/less
chmod 700 /usr/bin/head      恢復  chmod 755 /usr/bin/head
chmod 700 /bin/cat                恢復  chmod 755 /bin/cat
chmod 700 /bin/uname          恢復  chmod 755 /bin/uname
chmod 500 /bin/ps                恢復  chmod 755 /bin/ps
六、禁止使用Ctrl+Alt+Del快捷鍵重啟伺服器
cp /etc/inittab  /etc/inittabbak
vi /etc/inittab    #註釋掉下面這一行
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now
七、使用yum update更新系統時不升級核心,只更新軟體包

由於系統與硬體的相容性問題,有可能升級核心後導致伺服器不能正常啟動,這是非常可怕的,沒有特別的需要,建議不要隨意升級核心。
cp /etc/yum.conf    /etc/yum.confbak
1、修改yum的配置檔案 vi /etc/yum.conf  在[main]的最後新增 exclude=kernel*
2、直接在yum的命令後面加上如下的引數:
yum --exclude=kernel* update
檢視系統版本  cat /etc/issue
檢視核心版本  uname -a
八、關閉Centos自動更新
chkconfig --list yum-updatesd  #顯示當前系統狀態
yum-updatesd    0:關閉  1:關閉  2:啟用  3:啟用  4:啟用  5:啟用  6:關閉
service yum-updatesd stop      #關閉  開啟引數為start
停止 yum-updatesd:                                        [確定]
service yum-updatesd status  #檢視是否關閉
yum-updatesd 已停
chkconfig --level 35 yum-updatesd off  #禁止開啟啟動(系統模式為3、5)
chkconfig yum-updatesd off  #禁止開啟啟動(所有啟動模式全部禁止)
chkconfig --list yum-updatesd  #顯示當前系統狀態
yum-updatesd    0:關閉  1:關閉  2:啟用  3:關閉  4:啟用  5:關閉  6:關閉
九、關閉多餘的虛擬控制檯
我們知道從控制檯切換到 X 視窗,一般採用 Alt-F7 ,為什麼呢?因為系統預設定義了 6 個虛擬控制檯,
所以 X 就成了第7個。實際上,很多人一般不會需要這麼多虛擬控制檯的,修改/etc/inittab ,註釋掉那些你不需要的。
cp  /etc/inittab  /etc/inittabbak
vi /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

十、刪除MySQL歷史記錄
使用者登陸資料庫後執行的SQL命令也會被MySQL記錄在使用者目錄的.mysql_history檔案裡。
如果資料庫使用者用SQL語句修改了資料庫密碼,也會因.mysql_history檔案而洩漏。
所以我們在shell登陸及備份的時候不要在-p後直接加密碼,而是在提示後再輸入資料庫密碼。
另外這兩個檔案我們也應該不讓它記錄我們的操作,以防萬一。
cd
cp .bash_history  .bash_historybak  #備份
cp .mysql_history .mysql_historybak
rm .bash_history .mysql_history
ln -s /dev/null .bash_history
ln -s /dev/null .mysql_history

十一、修改history命令記錄
cp /etc/profile  /etc/profilebak
vi /etc/profile
找到 HISTSIZE=1000 改為 HISTSIZE=50

十二、隱藏伺服器系統資訊
在預設情況下,當你登陸到linux系統,它會告訴你該linux發行版的名稱、版本、核心版本、伺服器的名稱。
為了不讓這些預設的資訊洩露出來,我們要進行下面的操作,讓它只顯示一個"login:"提示符。
刪除/etc/issue和/etc/issue.net這兩個檔案,或者把這2個檔案改名,效果是一樣的。
mv  /etc/issue /etc/issuebak
mv  /etc/issue.net  /etc/issue.netbak

十三、優化Linux核心引數
cp /etc/sysctl.conf  /etc/sysctl.confbak
vi /etc/sysctl.conf    #在檔案末尾新增以下內容
net.ipv4.ip_forward = 1 #修改為1
net.core.somaxconn = 262144
net.core.netdev_max_backlog = 262144
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.netfilter.ip_conntrack_max = 131072
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
net.ipv4.route.gc_timeout = 20
net.ipv4.ip_conntrack_max = 819200
net.ipv4.ip_local_port_range = 10024  65535
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_wmem = 8192 131072 16777216
net.ipv4.tcp_rmem = 32768 131072 16777216
net.ipv4.tcp_mem = 94500000 915000000 927000000
/sbin/sysctl -p  #使配置立即生效

十四、CentOS 系統優化
cp  /etc/profile  /etc/profilebak2
vi /etc/profile      #在檔案末尾新增以下內容
ulimit -c unlimited
ulimit -s unlimited
ulimit -SHn 65535
ulimit -S -c 0
export LC_ALL=C
source  /etc/profile    #使配置立即生效
ulimit -a    #顯示當前的各種使用者程式限制
十五、伺服器禁止ping
cp  /etc/rc.d/rc.local  /etc/rc.d/rc.localbak
vi  /etc/rc.d/rc.local        #在檔案末尾增加下面這一行
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
引數0表示允許  1表示禁止

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

order bind,hosts 

 multi off 
 nospoof on

  對系統所有的使用者設定資源限制可以防止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 
   上面的命令禁止除錯檔案,限制程式數為50並且限制記憶體使用為5MB

iptables  
iptables -A INPUT -p all -m state --state INVALID -j DROP  
iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP  
iptables -A INPUT -p icmp --icmp-type 0 -m length --length :100 -m limit --limit 6/s --limit-burst 10 -j ACCEPT  
iptables -A INPUT -p icmp --icmp-type 8 -m length --length :100 -m limit --limit 6/s --limit-burst 10 -j ACCEPT  
iptables -A INPUT -p icmp --icmp-type 11 -m length --length :100 -m limit --limit 6/s --limit-burst 10 -j ACCEPT  
iptables -A INPUT -p icmp -j DROP  
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 80 -j ACCEPT  
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 1433 -j ACCEPT  
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 3389 -j ACCEPT  
iptables -A INPUT -p tcp --syn -m state --state NEW --dport 5022 -j ACCEPT  
iptables -A INPUT -p udp --dport 3389 -j ACCEPT  
iptables -A INPUT -p tcp -m multiport --dport 80,1433,3389,5022 -j DROP  
  
  
netfilter  
net.ipv4.tcp_fastopen = 1  
net.ipv4.tcp_thin_linear_timeouts= 0  
net.ipv4.tcp_thin_dupack= 0  
net.ipv4.ip_local_port_range = 1024 65000  
net.ipv4.ip_conntrack_max = 655360  
net.ipv4.icmp_echo_ignore_broadcasts = 1  
net.ipv4.icmp_ignore_bogus_error_responses = 1  
net.ipv4.tcp_syncookies = 1  
net.ipv4.conf.all.log_martians = 1  
net.ipv4.conf.default.log_martians = 1  
net.ipv4.conf.all.accept_source_route = 0  
net.ipv4.conf.default.accept_source_route = 0  
net.ipv4.conf.all.rp_filter = 1  
net.ipv4.conf.default.rp_filter = 1  
net.ipv4.conf.all.accept_redirects = 0  
net.ipv4.conf.default.accept_redirects = 0  
net.ipv4.conf.all.secure_redirects = 0  
net.ipv4.conf.default.secure_redirects = 0  
net.ipv4.ip_forward = 0  
net.ipv4.conf.all.send_redirects = 0  
net.ipv4.conf.default.send_redirects = 0  
kernel.exec-shield = 1  
kernel.randomize_va_space = 1  

十六、伺服器內網隔離(有些業務需要直接ssh免金鑰直連除外)

儘量把伺服器都放在後端前面加個總分代理或者負載訪問,這樣基本不會暴露在外網

十七、有條件的可以採用VPN、跳板機或者運維審計系統,提高許可權操作意識

十八、安全無小事,最終都是定位在人的誤操作或者對資料的管理上

疑人不用,用人不疑,加強人員的分工分塊協作。

最後補充幾點雖然不是安全範疇但對安全特別重要:

1、伺服器各種日誌的留存(系統日誌、操作日誌、訪問日誌以及訊息等)至少留存6個月以上(以便出問題溯源)

2、必要的情況可以購買一些安全軟體雖然linux本身安全體系有但對於技術能力不夠的系統管理人員還是有必要的,例如安全狗、360主機衛士、懸鏡、雲鎖、安慧網盾、雲盾和安騎士等

3、對於一個專案團隊,儘量不給root使用者許可權盡量不給,開發人員可以分配臨時賬號或者實現web線上化管理進行上傳程式碼部署除錯等

4、多去逛一些安全部落格論壇和及時關注最新系統和軟體的漏洞資訊,尤其是linux上基本上全是開源的,時刻關注安全漏洞及時修復才是每個系統人員的應盡的義務

5、Linux管理人員必須會IPtables hostdeny selinux、Nmap、Snort、Nesseu和honeynet 這些開源的安全軟體規則

6、硬體資產優化,例如BIOS、TCP/IOS、IPMI遠端卡、閘道器交換路由裝置和儲存裝置進行統一管理

7、有軟體也有硬體,從核心優化編譯到防火牆、Proxy、LDAP、SSL、資料庫還有FTP、WEB、Sendmail。

8、sshd服務安全配置和優化這個一般都是很多企業的首位策略(金鑰登陸)

Port 56100 #ssh服務埠號,我們可以改成高階口,一般埠掃描工具不會掃描高階口的。
AddressFamily any #ssh服務的協議族,可以用ipv4 ipv6或者直接使用any。
Protocol 2 #ssh服務協議版本,預設為1,建議使用2,1有漏洞。
KeyRegenerationInterval 3600 # 在SSH-1協議下,短命的伺服器金鑰將以此指令設定的時間為週期(秒),不斷重新生成。這個機制可以儘量減小金鑰丟失或者黑客攻擊造成的損失。
ServerKeyBits 2048 #  指定臨時伺服器金鑰的長度。1024存在認證漏洞,安全最低2048位。
LogLevel ERROR #日誌級別,可以使用 QUIET, FATAL, ERROR, INFO(預設), VERBOSE, DEBUG, DEBUG1, DEBUG2, DEBUG3。
LoginGraceTime 30 #限制使用者必須在指定的時限內認證成功,建議設定低,增加暴力破解難度,單位為秒。
MaxAuthTries 3 #最多登入嘗試次數,建議設定低一些,加大暴力破解難度。
RSAAuthentication yes #使用純 RSA公鑰認證。
PubkeyAuthentication yes #使用公鑰認證,推薦使用安全高效!
AuthorizedKeysFile      .ssh/authorized_keys #使用者公鑰檔案儲存路徑,預設為使用者的home目錄下.ssh隱藏資料夾中的authorized_keys,建議更換到其他目錄,防止丟失或者被惡意登陸者在預設的這個路徑中找到篡改。
PermitEmptyPasswords no #不允許空密碼登入,這個太危險啦。
GSSAPIAuthentication no #不基於 GSSAPI 的使用者認證,關閉,優化效能。
UsePAM no #使用PAM認證,如果不用LDAP之類的登陸,建議關閉,優化效能。
X11Forwarding no #如果沒有使用x11轉發最好關閉掉,優化效能。
PrintMotd no #登入列印公告資訊,可以修改或者關閉,修改/etc/motd來震懾惡意登陸者,預設會顯示一些系統資訊,關閉掉,減少惡意登陸者獲取的資訊量,防止被惡意利用。
PrintLastLog no #不列印最後登陸資訊,減少惡意登陸者獲取的資訊量,防止被惡意利用。
TCPKeepAlive yes #保持長連線,加快連線速度,優化效能。
PidFile /var/run/sshd.pid #ssh服務的pid檔案。
Banner none #不顯示系統banner資訊,如果開啟會在每次登陸時顯示系統資訊,減少惡意登陸者獲取的資訊量,防止被惡意利用。
PermitRootLogin no #禁止root使用者登陸,降低遠端登陸的使用者許可權。
PasswordAuthentication no #允許使用者名稱密碼登陸,no,禁止使用使用者名稱和密碼登陸,使用公鑰登陸,防止針對使用者名稱和密碼的暴力破解。

至此,CentOS Linux伺服器安全設定基本完成,以上設定經過筆者實戰測試(CentOS-5.5-x86_64)完全可用,更多的安全設定以及伺服器優化,還請大家自行測試。


【作者總結補充內容】

關於優化

基本原則:

  • 最小的許可權+最小的服務=最大的安全
  • 操作之前先備份;
  • 為避免配置錯誤無法登入主機,請始終保持有一個終端已用root登入並不退出,在另一個終端中做配置修改。這樣即使改錯,也不至於因系統無法登入導致永遠無法登入或恢復配置。

說起優化,其實最好的優化就是提升硬體的配置,例如提高cpu的運算能力,提高記憶體的容量,個人認為如果你考慮升級硬體的話,建議優先提高記憶體的容量,因為一般伺服器應用,對記憶體的消耗使用要求是最高的。當然這都是題外話了。

這裡我們首要討論的,是在同等硬體配置下(同一臺伺服器,不提升硬體的情況下)對你的系統進行優化。

作為系統管理員,我認為,首先我們要明確一個觀點:在伺服器上作任何操作,升級和修改任何配置檔案或軟體,都必須首要考慮安全性,不是越新的東西就越好,這也是為什麼linux管理感覺上和windows有所不同的地方,windows首先推薦大家去使用它的最新版本軟體和作業系統,其實我個人認為這是一種商業行為,作為從系統管理上來講,這是很不好的,使用新的軟體和系統可能帶來新的問題,有些甚至是致命的。

因此,作為管理,我們還是應該考慮穩定的長期使用的軟體版本來作為我們的版本,具體的好處我就不多說了。相信作為管理員的你應該知道的。

其實個人使用的linux最直接的一個優化就是升級核心,自己編譯的核心是根據自己的系統編譯而來,將得到最大的效能和最小的核心。

但是,伺服器就不太一樣了,當然我們也希望每一臺伺服器都是自己手工編譯的核心,高效而精巧。但是實際和願望是有差距的,試想一下,如果你管理100來臺linux主機,而每一臺也許配置都不一樣,那編譯核心的一個過程將是一個浩大工程,而且從實際考慮,工作量大得難以想象。我想你也不會願意做這種事情吧。因此,個人建議,採用官方釋出的核心升級包是很好的選擇。

首先,我們對新安裝的系統,將做一系列升級,包括軟體和核心,這是很重要的步驟。

在升級好所有軟體後,基本的防火牆和配置都做好以後,我們開始優化一些細節配置,如果你是老系統,那麼在作本問題及的一些操作和優化你係統之前,務必被備份所有資料到其他介質。

1、虛擬記憶體優化

首先檢視虛擬記憶體的使用情況,使用命令

# free

檢視當前系統的記憶體使用情況。

一般來說,linux的實體記憶體幾乎是完全used。這個和windows非常大的區別,它的記憶體管理機制將系統記憶體充分利用,並非windows無論多大的記憶體都要去使用一些虛擬記憶體一樣。這點需要注意。

Linux下面虛擬記憶體的預設配置通過命令

# cat /proc/sys/vm/freepages

可以檢視,顯示的三個數字是當前系統的:最小記憶體空白頁、最低記憶體空白頁和最高記憶體空白。

注意,這裡系統使用虛擬記憶體的原則是:如果空白頁數目低於最高空白頁設定,則使用磁碟交換空間。當達到最低空白頁設定時,使用記憶體交換(注:這個是我檢視一些資料得來的,具體應用時還需要自己觀察一下,不過這個不影響我們配置新的虛擬記憶體引數)。

記憶體一般以每頁4k位元組分配。最小記憶體空白頁設定是系統中記憶體數量的2倍;最低記憶體空白頁設定是記憶體數量的4倍;最高記憶體空白頁設定是系統記憶體的6倍。這些值在系統啟動時決定。

一般來講在配置系統分配的虛擬記憶體配置上,我個人認為增大最高記憶體空白頁是一種比較好的配置方式,以1G的記憶體配置為例:

可將原來的配置比例修改為:

2048 4096 6444

通過命令

# echo "2048 4096 6444" > /proc/sys/vm/freepages

因為增加了最高空白頁配置,那麼可以使記憶體更有效的利用。

2、硬碟優化

如果你是scsi硬碟或者是ide陣列,可以跳過這一節,這節介紹的引數調整隻針對使用ide硬碟的伺服器。

我們通過hdparm程式來設定IDE硬碟,

使用DMA和32位傳輸可以大幅提升系統效能。使用命令如下:

# /sbin/hdparm -c 1 /dev/hda

此命令將第一個IDE硬碟的PCI匯流排指定為32位,使用 -c 0引數來禁用32位傳輸。

在硬碟上使用DMA,使用命令:

# /sbin/hdparm -d 1 /dev/hda

關閉DMA可以使用 -d 0的引數。

更改完成後,可以使用hdparm來檢查修改後的結果,使用命令:

# /sbin/hdparm -t /dev/had

為了確保設定的結果不變,使用命令:# /sbin/hdparm -k 1 /dev/hda

Hdparm命令的一些常用的其他引數功能

-g 顯示硬碟的磁軌,磁頭,磁區等引數。

-i 顯示硬碟的硬體規格資訊,這些資訊是在開機時由硬碟本身所提供。

-I 直接讀取硬碟所提供的硬體規格資訊。

-p 設定硬碟的PIO模式。

-Tt 評估硬碟的讀取效率和硬碟快取的讀取效率。

-u <0或1> 在硬碟存取時,允許其他中斷要求同時執行。

-v 顯示硬碟的相關設定。

3、其他優化

關閉不需要的服務,關於系統自動啟動的服務,網上有很多資料,在此我就不贅述了;

關於安全

1、安全檢查

作為一個系統管理員來說,定期對系統作一次全面的安全檢查很重要的,最近遇到一些朋友來信說出現了一些莫名其妙的問題,例如最大的一個問題就是明顯感覺網路服務緩慢,這極有可能是被攻擊的現象。

實踐證明,無論是那種系統,預設安裝都是不安全的,實際不管你用windows也好,linux,bsd或其他什麼系統,預設安裝的都有很多漏洞,那怎麼才能成為安全的系統呢,這正是我們系統管理人員需要做的事情。配置配置再配置。

任何系統,只要細心的配置,堵住已知的漏洞,可以說這個系統是安全的,其實並非很多朋友說的那樣,安裝了系統,配置了防火牆,安裝了防毒軟體,那麼就安全了,其實如果對系統不作任何安全設定,那就等於向黑客敞開一扇紙做的大門,數十分鐘就能完全控制!

這並非駭人聽聞。

作為linux系統,同樣存在很多漏洞,黑可能利用這些漏洞控制你的整個系統,要防止這些問題,我們需要做以下步驟:

1、 升級系統中所有軟體包的最新版本;

2、 設定較為強壯的防火牆;

3、 定期檢查關鍵記錄檔案,配置防毒軟體

4、 多關心一下發布安全資訊警告的網站,掌握一些最新的病毒和黑客程式的特點,這些都利於系統的正常運作。

這篇文章主要以優化為主,為了配合這一主題,安全部分我們只討論一下日常的一些維護工作。

除了上面列出的4條是管理員必修之課外,對一些linux系統細節的維護也很重要。

包括:

1、 配置日誌輪訓工具,定期下載備份日誌,是個非常好的習慣,這樣不但能減少日誌的消耗的磁碟空間,提高系統效率,更能及時發現問題,linux下有些很好的系統日誌分析器,能直接提取日誌中的特殊專案,省去了閱讀日誌的煩惱;

2、 使用命令lsof –i ,netstat –a ,ps –e等命令,定期檢查系統服務埠監聽等情況,也可製作一個定期執行的指令碼,將這些命令定期執行後發到郵箱中;

3、 定期檢查root使用者的history列表,last列表,vipw使用者列表是否正常;

4、 定期備份檔案,用tar命令就能很好的備份了,當然需要下載這些備份並轉移介質;

5、IPtables hostdeny selinux、Nmap、Snort、Nesseu和honeynet 

如一點發現有任何特別的沒見過的情況或埠,那麼要引起足夠的重視,切勿因小失大。

以上是我對linux系統安全和優化的一些淺顯認識,希望大家都能安全高效的使用linux為你的工作生活帶來方便。

【參考文章】

CentOS6安全加固及效能優化 - http://blog.csdn.net/knight_zhen/article/details/46444451 (有些引數寫的很詳細)

Linux系統安全基礎知識 - guisu程式人生。 逆水行舟,不進則退。http://blog.csdn.net/hguisu/article/details/8751432 (高手寫的,不過有些優化需要根據公司自身的需求制定計劃的不用全部照搬)

目錄(?)[-]

  1. 1基本的系統安全
    1. 1 安全的磁碟佈局
    2. 2 提高檔案系統的安全性
    3. 去除非必要的特殊許可權
    4. 檢查重要的檔案許可權
    5. 避免安裝不必要的軟體包
    6. 軟體包的更新
    7. 關閉不必要的服務
    8. 關閉IPv6的核心功能
  2. 2物理安全和登入安全
    1. 一配置GRUB的口令
    2. 二為單使用者模式啟用認證
    3. 三禁用重啟熱鍵
    4. 四為單使用者模式啟用認證
    5. 五禁用啟動時的互動熱鍵
    6. 六設定螢幕鎖定
    7. 七為BASH設定超時自動登出帳號
  3. 3賬號安全問題禁用root登入和sudo
    1. 一sudo簡介
    2. 二與sudo相關的檔案
    3. 三sudo的執行過程 
    4. 四快速配置sudo
    5. 五限制su命令
    6. 六修改ssh服務的登入許可權
    7. 七修改ssh服務的sshd 埠
  4. 4系統安全記錄檔案
  5. 5防止攻擊
  6. 4可插播認證模組PAM
  7. 5基於PAM的口令安全和口令策略
  8. 6基於PAM的訪問控制
  9. 5基於PAM的口令安全和口令策略
  10. 4可插播認證模組PAM

【推薦書籍】

1、Red Hat Linux安全與優化(Kabir Mohammed J.) PDF掃描版[22MB] 電子書 下載http://www.jb51.net/books/186592.html

2、Linux安全與優化概要_百度文庫 https://wenku.baidu.com/view/116e200cf12d2af90242e696.html


相關文章