Linux經常使用安全設置

1、使用DDos deflate簡單防落CC和DDOS***
html

方法1、使用netstat命令nginx

一、查看VPS當前連接確認是否受到***:數據庫

# netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

IP前面的數字,即爲鏈接數,若是說正常網站,幾十到一百都屬於正常鏈接,但出現幾百,或上千的就能夠墾定這個IP與你的VPS之間可能存在可疑鏈接現象。centos

二、可使用iptables直接BAN了這個IP的永久訪問:瀏覽器

# iptables -A INPUT -s 12.34.56.78 -j DROP

方法2、使用軟件DDos deflate來自動檢測並直接BAN掉安全

一、首先咱們要確認一下iptables服務狀態,默認CENTOS就安裝的,不看也行。網絡

service iptables status

二、安裝DDos deflat:app

# wget http://www.inetbase.com/scripts/ddos/install.sh 
# chmod +x install.sh && ./install.sh

安裝後須要修改/usr/local/ddos/ddos.conf,主要是APF_BAN=1要設置成0,由於要使用iptables來封某些可疑鏈接,注意EMAIL_TO="root",這樣BAN哪一個IP會有郵件提示:ssh

##### Paths of the script and other files 
PROGDIR="/usr/local/ddos" 
PROG="/usr/local/ddos/ddos.sh" 
IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"  #IP地址白名單 
CRON="/etc/cron.d/ddos.cron"    #定時執行程序 
APF="/etc/apf/apf" 
IPT="/sbin/iptables" 
 
FREQ=1   /#檢查時間間隔,默認1分鐘
NO_OF_CONNECTIONS=150     #最大鏈接數,超過這個數IP就會被屏蔽,通常默認便可  
APF_BAN=1        #使用APF仍是iptables。推薦使用iptables,將APF_BAN的值改成0便可。 
##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script) 
##### KILL=1 (Recommended setting) 
KILL=1   #是否屏蔽IP,默認便可 
EMAIL_TO="root"   #當IP被屏蔽時給指定郵箱發送郵件,推薦使用,換成本身的郵箱便可  
BAN_PERIOD=600    #禁用IP時間,默認600秒,可根據狀況調整


2、使用iftop查看詳細網絡情況socket

一、安裝iftop軟件:

yum -y install flex byacc  libpcap ncurses ncurses-devel libpcap-devel 
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz 
tar zxvf iftop-0.17.tar.gz 
cd iftop-0.17 
./configure 
make && make install

安裝後,使用iftop運行,查看網絡狀況。

  • TX,發送流量;RX,接收流量;TOTAL,總流量;Cumm,運行iftop期間流量;peak,流量峯值;rates,分別表明2秒、10秒、40秒的平均流量。

  • 快捷鍵:h幫助,n切換顯示IP主機名,s是否顯示本機信息,d是否顯示遠端信息,N切換端口服務名稱,b切換是否時數流量圖形條。

實例:

  • 默認是監控第一塊網卡的流量:           iftop

  • 監控eth1:                                      iftop -i eth1

  • 直接顯示IP, 不進行DNS反解析 :        iftop -n

  • 直接顯示鏈接埠編號, 不顯示服務名稱:  iftop -N

  • 顯示某個網段進出封包流量:              iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0

iftop界面含義

  • 第一行:帶寬顯示

  • 中間部分:外部鏈接列表,即記錄了哪些ip正在和本機的網絡鏈接

  • 中間部分右邊:實時參數分別是該訪問ip鏈接到本機2秒,10秒和40秒的平均流量

  • =>表明發送數據,<= 表明接收數據

  • 底部三行:表示發送,接收和所有的流量

  • 底部三行第二列:爲你運行iftop到目前流量

  • 底部三行第三列:爲高峯值

  • 底部三行第四列:爲平均值


3、經常使用netstat命令:

1.查看全部80端口的鏈接數

netstat -nat|grep -i "80"|wc -l

2.對鏈接的IP按鏈接數量進行排序

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

3.查看TCP鏈接狀態

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn 
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}' 
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}' 
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}' 
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn 
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c

4.查看80端口鏈接數最多的20個IP

netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20 
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20

5.用tcpdump嗅探80端口的訪問看看誰最高

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

6.查找較多time_wait鏈接

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20

7.找查較多的SYN鏈接

netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more


4、Nginx簡單的一些防CC的辦法

觀看生成的.log日誌文件,判斷來路,直接301百度:

if ($http_referer ~* mi5.gov ) {
  rewrite ^(.*)$ http://www.baidu.com/ permanent;
}

觀看生成的.log日誌文件,判斷瀏覽器特徵碼,直接301百度:

if ($http_user_agent ~* firefox4.0 ) {
  rewrite ^(.*)$ http://www.baidu.com/ permanent;
}

根據特徵碼,直接查找.log文件,並iptables封死相應IP:

cat com.log | grep 'Mozilla/5.0' | awk '{print "iptables -I INPUT -p tcp --dport 80 -s ", $1, "-j DROP"}'| sort -n | uniq | sh

nginx處理靜態的能力是無與倫比的,若是隻是簡單的判斷分發,就能夠解決掉不少***。


5、禁用 rpcbind 111端口

騰訊雲上centos7裝好之後,除了監聽22端口(sshd的服務)外,還監聽了111端口,並且監聽的是0.0.0.0,擔憂存在安全風險,因而想禁用掉。

起111端口的進程是systemd,在網上查了下,實際用的是rpcbind。大部分服務是不依賴於rpcbind的,只有NFS須要用到這個服務,因此能夠禁掉。

如下是禁掉該rpcbind服務的命令:

# 中止進程
$ systemctl stop rpcbind.socket
$ systemctl stop rpcbind

# 禁止隨開機啓動
$ systemctl disable rpcbind.socket 
$ systemctl disable rpcbind

附:rpcbind的說明from man rpcbind

  1. rpcbind工具能夠將RPC程序號碼和通用地址互相轉換。要讓某主機能向遠程主機的服務發起RPC調用,
    則該主機上的rpcbind必須處於已運行狀態。

  2. 當RPC服務啓動後,它會告訴rpcbind它監聽在哪一個地址上,還會告訴它爲服務準備好提供的PRC程序
    號碼。當客戶端要向某個給定的程序號碼發起RPC調用時,它首先會聯繫服務端的rpcbind以肯定RPC
    請求應該發送到哪一個地址上。

  3. rpcbind工具應該在全部RPC管理的服務(rpc service)啓動以前啓動。通常來講,標準的rpc服務由端
    口監視器來啓動,所以rpcbind必須在端口監視器被調用以前已經啓動完成。

  4. 當rpcbind工具已經啓動後,它會檢查特定的name-to-address的轉換調用功能是否正確執行。若是失
    敗,則網絡配置數據庫會被認爲過時,因爲RPC管理的服務在這種狀況下沒法正確運行,rpcbind會輸
    出這些信息並終止。

  5. rpcbind工具只能由super-user啓動。

相關文章
相關標籤/搜索