linux 是開源的作業系統,這樣帶來的好處是可以免費擷取和使用。也可以定制自己的linux系統。由于開源也導緻了系統安全的問題,
linux也會收到一些系統底層的攻擊。
一般的攻擊手段:
1.密碼暴力破解。用來破解使用者密碼。(主要針對系統密碼,一般可以修改密碼難度加入防範多次錯誤連接配接機制)
2.拒絕服務攻擊。Dos (DDos)原理是:利用合理的服務請求來占用過多的伺服器資源。向目标伺服器發起大量請求,由于伺服器短時間内無法接受太多請求,造成系統資源耗盡,服務挂起,嚴重造成伺服器癱瘓。
3.應用程式漏洞攻擊。常見的SQL注入漏洞攻擊,網頁權限漏洞。已知系統程式的漏洞。
防範攻擊政策
1.網絡傳輸安全。
網絡傳輸由網絡安全裝置構成。一般由硬體防火牆,網絡入侵監測(IDC Intrusion Detection System),路由器,交換機。通過給這些裝置合理的配置,防範危險。
2.作業系統安全
經常進行的系統安全設定:系統核心定期更新,系統自帶軟體更新,配置防火牆IPtables防範政策。
SYN攻擊屬于DDoS攻擊的一種,它利用TCP協定缺陷,通過發送大量的半連接配接請求,耗費CPU和記憶體資源。SYN攻擊除了能影響主機外,還可以危害路由器、防火牆等網絡系統,事實上SYN攻擊并不管目标是什麼系統,隻要這些系統打開TCP服務就可以實施
Linux syn攻擊是一種黑客攻擊,如何處理和減少這種攻擊是系統管理者比較重要的工作.
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攻擊,降低重試次數也有一定效果。
調整上述設定的方法是:
增加SYN隊列長度到2048:
sysctl -w net.ipv4.tcp_max_syn_backlog=2048
打開SYN COOKIE功能:
sysctl -w net.ipv4.tcp_syncookies=1
降低重試次數:
sysctl -w net.ipv4.tcp_synack_retries=3 sysctl -w net.ipv4.tcp_syn_retries=3
為了系統重新開機動時保持上述配置,可将上述指令加入到/etc/rc.d/rc.local檔案中。
防止同步包洪水(Sync Flood)
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
也有人寫作
#iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
--limit 1/s 限制syn并發數每秒1次,可以根據自己的需要修改
防止各種端口掃描
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
Ping洪水攻擊(Ping of Death)
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
這些是處理linux sync攻擊的思路。
3.應用軟體安全
伺服器上運作的軟體程式本身進行安全政策配置和優化。常見www服務的apache安全設定。ftp服務通路授權控制等。
Linux作業系統安全政策
1.軟體的更新
系統軟體一般用yum update (yum工具自動更新。要有網絡)
2.端口和服務。
端口。其實一個有效的連接配接的建立,就是用戶端的端口和伺服器的端口建立連接配接的過程。端口在系統中有自己的一套劃分規律。
linux 可以通過檢視 more /etc/services
linux 下,共有655536個可用端口,這些端口以 1024為分割點,分别是;
‘隻有root使用者才能啟動的端口’和‘用戶端的端口’
1. 隻有root才能開啟的端口
0-1023 端口,主要用于系統一些常見的通信服務中。常見的:ftp 21; telnet 23;mail 25; wwww 80;
2. 用戶端的端口
1024及以上的端口主要給用戶端軟體使用,這些端口由軟體随機配置設定。比如 msyql 3306;tomcat 8080 8009;
oneproxy 4041(管理); php-fpm 9000;當然這些是預設的都可以在配置檔案修改的。
一般檢視這些的指令組合: netstat -anltup
3.服務和端口是一個一一對應的關系。互相依賴,互相襯托的。服務開啟,端口也就啟動了。
真正影響安全的是服務,而非端口。
4.關閉不必要的服務。一般系統需要的服務有syslog(記錄日志功能),sshd(遠端連接配接伺服器系統)network(激活網絡接口的腳本,
使用網絡必須的)xinetd(支援多種網絡服務的核心守護程序。包括telnet .vsftpd) iptables(内置的防火牆軟體)
atd(特定時間的指定事物服務)crond(自動安排程序提供運作服務)
這些是必須開啟支撐linux工作。此外,還有些和業務相關的可以開啟外,其它的建議關閉。
密碼登入安全:
密碼設定安全:一般8位以上的。數字,字母和特殊字元。定期更換密碼等。可以加入防止密碼探測機制(一個帳号幾次失敗後。拒絕通路)
此外,還可以設定密鑰認證登入(限于secureCRT等遠端登入程式)可以不通過密碼登入。
在 secureCRT上 工具=建立密鑰
上傳密鑰到linux,導入密鑰
# ssh-keygen -i -f Identity.pub >>/root/.ssh/authorized_keys
然後修改登入方式為公鑰登入找到生成密鑰的路徑選中。
進入linux:修改 ssh2的配置檔案:
Port 22 #這個是ssh連接配接的預設端口可以改變
Protocol 2 #使用ssh2
PubkeyAuthentication yes #啟動 pubkey 認證
AuthorizedKeysFile .ssh/authorized_keys #publickey 檔案路徑
PasswordAuthentication no #不使用密碼認證
# service sshd restart #重新開機服務使新配置的ssh生效。
其它設定:
1.禁止外部ping 測試:
# echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_all
将忽略ping響應政策開啟。
2.删除系統預設的不必要的服務和賬戶
/etc/passwd /etc/group
這2個目錄存放賬戶群組的資訊:
可以删除的有 adm lp sync shutdown halt new uucp operator ames gopher 等。
此外 預設shell為 /sbin/nologin 的為不可登入賬戶
3.限制 shell記錄曆史條數
編輯 /etc/profile 修改 HISTSIZE 參數。
這裡還有個小技巧 : 在指令行下輸入 HISTCONTROL=ignorespace 然後在輸入指令的時候前面多個空格則history不記錄。
4.關閉 selinux
臨時關閉 : setenforce 0
永久關閉: vi /etc/selinux/conf (centos 6 下)
SELINUX=disabled 重新開機啟動系統。
本文轉自 swallow_zys 51CTO部落格,原文連結:http://blog.51cto.com/12042068/1897484,如需轉載請自行聯系原作者