常用的幾個安全策略
1)禁止系統響應任何從外部/內部來的ping請求攻擊者一般首先通過ping命令檢測此主機或者IP是否處於活動狀態
如果能夠ping通 某個主機或者IP,那麽攻擊者就認為此系統處於活動狀態,繼而進行攻擊或破壞。如果沒有人能ping通機器並收到響應,那麽就可以大大增強服務器的安全性,
linux下可以執行如下設置,禁止ping請求:
[root@localhost ~]# echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_all
默認情況下"icmp_echo_ignore_all"的值為"0",表示響應ping操作。
可以加上面的一行命令到/etc/rc.d/rc.local文件中,以使每次系統重啟後自動運行。
2)禁止Control-Alt-Delete組合鍵重啟系統
在linux的默認設置下,同時按下Control-Alt-Delete鍵,系統將自動重啟,這是很不安全的,因此要禁止Control-Alt-Delete組合鍵重啟系統,查看/etc/inittab文件:
[root@localhost ~]# cat /etc/inittab
.......
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
.......
[root@localhost ~]# cat /etc/init/control-alt-delete.conf
# control-alt-delete - emergency keypress handling
#
# This task is run whenever the Control-Alt-Delete key combination is
# pressed. Usually used to shut down the machine.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file control-alt-delete.override and put your changes there.
start on control-alt-delete
exec /sbin/shutdown -r now "Control-Alt-Delete pressed"
可以將/etc/init/control-alt-delete.conf文件刪除或移走或更名。
[root@localhost ~]# mv /etc/init/control-alt-delete.conf /etc/init/control-alt-delete.conf.bak
或者將/etc/init/control-alt-delete.conf文件裏的內容註釋掉!
3)限制Shell記錄歷史命令大小
默認情況下,bash shell會在文件$HOME/.bash_history中存放多達1000條命令記錄(根據系統不同,默認記錄條數不同)。系統中每個用戶的主目錄下都有一個這樣的文件。
這麽多的歷史命令記錄,肯定是不安全的,因此必須限制該文件的大小。
可以編輯/etc/profile文件,修改其中的選項如下:
[root@localhost ~]# vim /etc/profile
.......
HISTSIZE=1000
.......
默認Shell記錄歷史命令的條數是1000,可以修改為100條,即HISTSIZE=1000,表示在文件$HOME/.bash_history中記錄最近的30條歷史命令。
如果將"HISTSIZE"設置為0,則表示不記錄歷史命令,那麽也就不能用鍵盤的上下鍵查找歷史命令了。
4)設定tcp_wrappers防火墻
Tcp_Wrappers是一個用來分析TCP/IP封包的軟件,類似的IP封包軟件還有iptables,linux默認都安裝了此軟件,作為一個安全的系統,Linux本身有兩層安全防火墻,通過IP
過濾機制的iptables實現第一層防護,iptables防火墻通過直觀地監視系統的運行狀況,阻擋網絡中的一些惡意攻擊,保護整個系統正常運行,免遭攻擊和破壞。
如果通過了iptables的第一層防護,那麽下一層防護就是tcp_wrappers了,通過Tcp_Wrappers可以實現對系統中提供的某些服務的開放與關閉、允許和禁止,從而更有效地保
證系統安全運行。
4.1)Tcp_Wrappers的使用很簡單,僅僅兩個配置文件:/etc/hosts.allow和/etc/hosts.deny查看系統是否安裝了Tcp_Wrappers:
[root@localhost ~]# rpm -q tcp_wrappers
tcp_wrappers-7.6-58.el6.x86_64
如果有上面的類似輸出,表示系統已經安裝了tcp_wrappers模塊。如果沒有顯示,可能是沒有安裝,可以從linux系統安裝盤找到對應RPM包進行安裝。
4.2)tcp_wrappers防火墻的局限性
系統中的某個服務是否可以使用tcp_wrappers防火墻,取決於該服務是否應用了libwrapped庫文件,如果應用了就可以使用tcp_wrappers防火墻,系統中默認的一些服務如:
sshd、portmap、sendmail、xinetd、vsftpd、tcpd等都可以使用tcp_wrappers防火墻。
4.3)tcp_wrappers設定的規則(使用例子可以參考:http://www.cnblogs.com/kevingrace/p/6245859.html)
tcp_wrappers防火墻的實現是通過/etc/hosts.allow和/etc/hosts.deny兩個文件來完成的,首先看一下設定的格式:
service:host(s) [:action]
service:代表服務名,例如sshd、vsftpd、sendmail等。
host(s):主機名或者IP地址,可以有多個,例如192.168.60.0、www.ixdba.netl action:動作, 符合條件後所采取的動作。
幾個關鍵字:
ALL:所有服務或者所有IP。
ALL EXCEPT:所有的服務或者所有IP除去指定的。
例如:ALL:ALL EXCEPT 192.168.60.132
表示除了192.168.60.132這臺機器,任何機器執行所有服務時或被允許或被拒絕。
了解了設定語法後,下面就可以對服務進行訪問限定。
例如:互聯網上一臺linux服務器,實現的目標是:僅僅允許222.90.66.4、61.185.224.66以及域名softpark.com通過SSH服務遠程登錄到系統,設置如下:
首先設定允許登錄的計算機,即配置/etc/hosts.allow文件,設置很簡單,只要修改/etc/hosts.allow(如果沒有此文件,請自行建立)這個文件即可。
只需將下面規則加入/etc/hosts.allow即可。
sshd: 222.90.66.4 61.185.224.66 softpark.com
接著設置不允許登錄的機器,也就是配置/etc/hosts.deny文件了。
一般情況下,linux會首先判斷/etc/hosts.allow這個文件,如果遠程登錄的計算機滿足文件/etc/hosts.allow設定的話,就不會去使用/etc/hosts.deny文件了,相反,如果
不滿足hosts.allow文件設定的規則的話,就會去使用hosts.deny文件了,如果滿足hosts.deny的規則,此主機就被限制為不可訪問linux服務器,如果也不滿足hosts.deny的
設定,此主機默認是可以訪問linux服務器的,因此,當設定好/etc/hosts.allow文件訪問規則之後,只需設置/etc/hosts.deny為"所有計算機都不能登錄狀態"即可。
sshd:ALL
這樣,一個簡單的tcp_wrappers防火墻就設置完畢了。
5)網絡安全選項的設定
編輯 "/etc/sysctl.conf" 檔案,並加入下面幾行,
[root@localhost ~]# vim /etc/sysctl.conf
# Enable ignoring broadcasts request(讓系統對廣播沒有反應)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Disables IP source routing(取消 IP source routing)
net.ipv4.conf.all.accept_source_route = 0
# Enable TCP SYN Cookie Protection(開啟 TCP SYN Cookie 保護)
net.ipv4.tcp_syncookies = 1
# Disable ICMP Redirect Acceptance(取消 ICMP 接受 Redirect)
net.ipv4.conf.all.accept_redirects = 0
# Enable bad error message Protection(開啟錯誤訊息保護)
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Enable IP spoofing protection, turn on Source Address Verification(開啟 IP 欺騙保護)
net.ipv4.conf.all.rp_filter = 1
# Log Spoofed Packets, Source Routed Packets, Redirect Packets(記錄Spoofed Packets, Source Routed Packets, Redirect Packets)
net.ipv4.conf.all.log_martians = 1
最後重新啟動network
[root@localhost ~]# /etc/rc.d/init.d/network restart
或者sysctl –p 生效
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
常用的幾個安全策略