【基礎知識】Linux系統的安全與優化
引言:
我們必須明白:最小的許可權+最少的服務=最大的安全
很久沒有寫過文章了,最近收到不少朋友來信,提及了有關優化配置和一些新的安全問題,在此我想和大家淺顯討論一下這些問題,有什麼不準確和有更好的方式,請給我來信共同討論提高。
在網上看到不少有關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基本的系統安全
- 2物理安全和登入安全
- 3賬號安全問題禁用root登入和sudo
- 4系統安全記錄檔案
- 5防止攻擊
- 4可插播認證模組PAM
- 5基於PAM的口令安全和口令策略
- 6基於PAM的訪問控制
- 5基於PAM的口令安全和口令策略
- 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
相關文章
- Linux基礎優化與安全歸納總結Linux優化
- Linux基本知識與基礎命令Linux
- linux基礎知識Linux
- linux系統基礎的優化以及常用命令Linux優化
- Linux基礎知識(Ubuntu)LinuxUbuntu
- 推薦系統基礎知識(二)
- MySQL資料庫基礎知識及優化MySql資料庫優化
- 網路安全基礎知識
- linux基礎知識大綱Linux
- linux 基礎知識彙總Linux
- java基礎知識-序列化/反序列化-gson基礎知識Java
- Kafka訊息系統基礎知識索引Kafka索引
- 計算機系統結構的基礎知識計算機
- NOI Linux 基礎知識與程式設計環境Linux程式設計
- linux基礎知識整理(備忘)Linux
- Linux shell基礎知識_8(下)Linux
- 網站安全相關的基礎知識網站
- IO基礎知識與概念
- 程式猿必備的Linux基礎知識Linux
- 超全面的Linux基礎知識的梳理Linux
- C# 基礎知識系列- 17 小工具優化C#優化
- 『學了就忘』Linux基礎 — 16、Linux系統與Windows系統的不同LinuxWindows
- linux系統基礎Linux
- Python知識體系-Python2基礎知識Python
- UI自動化基礎知識UI
- Linux 系統優化Linux優化
- 系統架構基礎知識入門指南-下架構
- 系統架構基礎知識入門指南-上架構
- 【python系統學習16】編碼基礎知識Python
- [作業系統]程式基礎知識記錄(上)作業系統
- 【知識分享】Linux作業系統的Web伺服器優點Linux作業系統Web伺服器
- Linux系統配置(系統優化)Linux優化
- 嵌入式系統基礎知識:瞭解嵌入式系統
- 無線網路安全——1、WiFi安全基礎知識WiFi
- CTF | Web安全 Part1:基礎知識Web
- 基礎知識
- Linux 檔案系統與日誌分析的相關知識Linux
- LUA的基礎知識
- Linux磁碟管理基礎知識全彙總Linux