溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

openssh 加固

發(fā)布時間:2020-07-09 05:13:35 來源:網(wǎng)絡(luò) 閱讀:916 作者:紫色葡萄 欄目:安全技術(shù)

很多場合,我們不得不在公網(wǎng)開啟ssh 22端口,以CentOS6為例,下面的幾個辦法可以加固ssh連接


1、限制密碼嘗試次數(shù)(denyhosts)

yum install denyhosts --enablerepo=epel
chkconfig denyhosts on
/etc/init.d/denyhosts start


2、除掉密碼認(rèn)證,采用ssh密鑰登陸

修改/etc/ssh/sshd_config

PasswordAuthentication no


3、禁止root登陸

修改 /etc/ssh/sshd_config

PermitRootLogin no


4、限制連接頻率

/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name ssh --rsource
/sbin/iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent ! --rcheck --seconds 60 --hitcount 2 --name ssh --rsource -j ACCEPT


也可以利用iptables recent模塊搞另類一點的策略,默認(rèn)關(guān)閉ssh端口,用ping來解鎖。

iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -j LOG --log-prefix "SSHOPEN: "
#記錄日志,前綴SSHOPEN:

iptables -A INPUT -p icmp --icmp-type 8 -m length --length 78 -m recent --set --name sshopen --rsource -j ACCEPT
#linux默認(rèn)ping包一般為56字節(jié),加上IP頭20字節(jié),ICMP頭部8字節(jié),共84字節(jié)。我們這里指定78字節(jié),回頭用特定大小的ping包來解鎖。

iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck --seconds 15 --name sshopen --rsource -j ACCEPT
#符合sshopen的IP才會放行22端口

ping -s 50 host #Linux下解鎖
ping -l 50 host #Windows下解鎖


5、限制IP來源

這個稍微復(fù)雜一點點,采用geoip數(shù)據(jù)庫來識別IP來源,比如只允許中國的IP訪問


寫個腳本

#!/bin/bash
# UPPERCASE space-separated country codes to ACCEPT
ALLOW_COUNTRIES="CN"

if [ $# -ne 1 ]; then
  echo "Usage:  `basename $0` <ip>" 1>&2
  exit 0 # return true in case of config issue
fi

COUNTRY=`/usr/bin/geoiplookup $1 | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1`

[[ $COUNTRY = "IP Address not found" || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE="ALLOW" || RESPONSE="DENY"

if [ $RESPONSE = "ALLOW" ]then
  exit 0
else
  logger "$RESPONSE sshd connection from $1 ($COUNTRY)"
  exit 1
fi


利用tcp_wrapper調(diào)用那個腳本

chmod 775 /usr/bin/sshfilter.sh
echo "sshd: ALL" >>/etc/hosts.deny
echo "sshd: 10.0.0.0/8" >>/etc/hosts.allow
echo "sshd: ALL: aclexec /usr/bin/sshfilter.sh %a" >>/etc/hosts.allow


6、設(shè)置超時

ssh session 超時應(yīng)該屬于安全范疇,可以防止人離開后,終端被他人利用。

這里設(shè)置為1800秒(30分鐘)


方法一、利用環(huán)境變量TMOUT

echo "export TMOUT=1800" >/etc/profile.d/timeout.sh
source /etc/profile.d/timeout.sh

方法二、修改sshd_config

ClientAliveInterval 60
ClientAliveCountMax 30



參考文章

http://www.axllent.org/docs/view/ssh-geoip/

http://www.haiyun.me/archives/iptables-recent.html

http://www.cnblogs.com/fhefh/archive/2011/10/19/2217954.html



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI