做好這兩點,避免伺服器成為肉雞(傀儡)

閱讀原文:

http://1024.services/archives/20190216.html?

1024.services

在公網中每時每刻都有人通過密碼字典暴力破解試圖登陸你的伺服器,不信請看該日誌文件大小du -sh `ls /var/log | grep btmp`,該文件存儲了ssh失敗登陸的記錄。文件越大/增長越快,說明你的伺服器處於被別人暴力破解的危險中!為了避免這種危險,必須做好兩點:1. 修改SSH默認埠,2. 使用強口令密碼,不想看胡扯的請直接跳到後面。

整個網路空間中其實存在著很多弱口令伺服器,假設弱口令伺服器的用戶名都為root、密碼都為123456、SSH登陸埠都為默認的22。我有一台伺服器在不停的用密碼字典登陸這些弱口令機器,成功登陸的機器作為肉雞(傀儡)繼續登陸別的機器,假設一台伺服器以2台/天的速度進行登陸,那麼第一天我就有三台機器(包括自己的那台),第二天就是6+3=3^2=9台,第三天就是18+9=3^3=27台,第N天就是3^N台。

看到沒有,肉雞/傀儡伺服器是以指數級別在增加的!

為什麼有人不停登陸別人的機器,獲得肉雞?如果我手上有來自全世界的肉雞,並且數量很多,那玩兒法可就多了:

  1. 看不慣哪個網站?操縱這些傀儡機器不停的請求該網站,讓別人沒法用,服務癱瘓,這就是傳說中的DDoS攻擊(分散式拒絕服務攻擊)。
  2. 想賺點小錢,偷偷挖礦是你不二的選擇,這麼多肉雞,雖然每一台計算能力不怎麼樣,但是聯合起來也不容小。這種肉雞俗稱挖掘雞(笑
  3. 肉雞做代理?這個話題我就不深說了,大陸敏感話題... ...
  4. 窺探肉雞主人數據... 滿足窺探欲
  5. 這麼多肉雞代表你有這麼多IP,有大量IP能幹什麼?這又是另外一個龐大的話題了... ...

以上純屬瞎扯,如有不對,你打我啊!

基礎知識

  • /var/log/wtmp 用於記錄登錄成功的用戶的信息,是一個二進位文件,只能通過 last 命令來查看

root pts/0 100.87.41.98 Sat Feb 16 01:28 still logged in
root pts/2 100.87.41.98 Fri Feb 15 11:38 - down (01:35)
root pts/1 100.87.41.98 Fri Feb 15 11:38 - down (01:35)
root pts/0 100.87.41.98 Fri Feb 15 11:38 - down (01:35)

查看嘗試惡意登陸的前十個IP:

sudo lastb | awk { print $3} | awk {++S[$NF]} END {for(a in S) print a, S[a]} | sort -rk2 |head

查看惡意IP嘗試登陸次數:

lastb | awk { print $3} | sort | uniq -c | sort -n

當然,如果你要清理這個日誌,刪除在創建之

rm -rf /var/log/btmp
touch /var/log/btmp

  • /var/log/btmp 用於記錄登錄失敗的用戶的信息,是一個二進位文件,只能通過 lastb 命令來查看

ejabberd ssh:notty 123.207.233.84 Sat Feb 16 02:08 - 02:08 (00:00)
rsync ssh:notty 157.230.102.166 Sat Feb 16 02:08 - 02:08 (00:00)
ejabberd ssh:notty 123.207.233.84 Sat Feb 16 02:08 - 02:08 (00:00)
rsync ssh:notty 157.230.102.166 Sat Feb 16 02:08 - 02:08 (00:00)

  • /var/log/lastlog 用於記錄用戶的歷史登錄情況,是一個二進位文件,只能通過 lastlog 命令來查看

Username Port From Latest
root pts/0 100.87.41.98 Sat Feb 16 01:28:34 +0000 2019
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**

  • /var/run/utmp 用於記錄當前登錄的用戶的信息,是一個二進位文件,只能通過 who 命令來查看

root pts/0 2019-02-16 01:28 (100.87.41.98)

修改SSH默認埠

環境:CentOS 7

步驟:新增SSH埠-->>重啟sshd服務-->>添加防火牆規則-->>嘗試新埠登陸-->>關閉原先的22埠

1:新增SSH埠(列:1000)

vi /etc/ssh/sshd_config
# 找到Port 22這行,將前面的注釋去掉,再加一行Port 1000,如下,這樣做的目的是防止新埠登陸不上,老埠也不能用!
Port 22
Port 1024
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

2:重啟sshd服務

如果是CentOS 7使用systemctl restart sshd,查看埠是否生效可以用systemctl status sshd

如果是CentOS 7以前的系統,使用/etc/init.d/sshd restart或者service sshd restart

重啟以後可以本地測試一下埠通沒通,telnet 127.0.0.1 1000

3:添加防火牆規則

如果是iptables防火牆,執行下面命令添加規則

# iptables配置文件位置/etc/sysconfig/iptables
# 添加1000埠規則
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 1000 -j ACCEPT
# 保存規則
service iptables save
# 重啟服務
service iptables restart

如果防火牆是Firewall,參照下面步驟(未經測試)

# 首先檢測防火牆是否已經啟用,啟用返回值runing,反之,為not running
firewall-cmd --state

#若沒有啟用,需要啟用
systemctl start firewalld
systemctl enable firewalld

# 若已經啟用,則進行下一步
# 查看防火牆的默認、活躍區域(zones)
#看兩條命令的返回值是否含有public,有則為正確。
firewall-cmd --get-default-zone
firewall-cmd --get-active-zones

# 埠永久開放
# 為了防止出錯,22埠一同開放
# 與臨時開放的區別在於多了permanent
firewall-cmd --permanent --zone=public --add-port=22/tcp
firewall-cmd --permanent --zone=public --add-port=1000/tcp

# 防火牆重載
firewall-cmd --reload

# 查看已暴露埠
firewall-cmd --permanent --list-port
firewall-cmd --zone=public --list-all

4:嘗試新埠登陸

嘗試用1000埠進行登陸,看是否成功!

5:關閉原先的22埠

參考上面的操作,首先在ssh的配置文件去掉22埠,重啟sshd服務,然後在防火牆配置裡面去除22埠,重啟防火牆!這裡不再贅述。

修改弱口令為強口令

如果你忘記了密碼或者現在登陸不上伺服器,你可以參考這篇文章:1024.services/archives/

# 輸入修改密碼命令
passwd

#此時系統提示
Changing password for user root.
New password:

# 輸入兩次密碼並回車,注意輸入密碼時不會顯示的
Retype new password:
passwd: all authentication tokens updated successfully.

推薦:

  • 密碼生成器:suijimimashengcheng.51240.com
  • shell隨機密碼生成函數:

# 生成隨機密碼 ($1 位數)
# echo $(getRandomPwd 10)
# echo $(getRandomPwd)
getRandomPwd(){
num=32
if [ $# == 1 ];then
num=$1
fi
echo "$(date +%s)$(shuf -i 10000-65536 -n 1)" | sha256sum | base64 | head -c $num ; echo
}

擴展

雖然上面修改埠和口令能夠大大提升安全性,但是在某些情況下不能修改埠或口令,此時可以推薦 DenyHosts或者fail2ban,它可以禁止大量嘗試登陸的IP。

或者可以用最簡單的辦法,查看嘗試惡意登陸的前十個IP然後用防火牆禁止它,這裡只提供思路,具體操作谷歌百度。

參考

serverfault.com/questio

blog.chinaunix.net/uid-

cnblogs.com/pzk7788/p/1

ktanx.com/blog/p/336

zhuanlan.zhihu.com/p/35


推薦閱讀:

TAG:Linux | 網路安全 | SSH項目 |