近期服務(wù)器頻繁有被暴力破解,大致分析了一下入侵行為,整理了常用的安全策略:
最小的權(quán)限+最少的服務(wù)=最大的安全
1. 修改ssh默認(rèn)連接22端口 和 添加防火墻firewalld 通過端口
步驟:
1) 修改ssh的默認(rèn)端口22:
vi /etc/ssh/sshd_config
![](/d/20211016/65c85ae2b737f0663b15f47e2e978fd4.gif)
2)讓防火墻通過這個(gè)端口
firewall-cmd --state【firewalld是否運(yùn)行】
firewall-cmd --permanent --list-port【查看端口列表】
firewall-cmd --permanent --zone=public --add-port=48489/tcp【添加端口】
firewall-cmd --permanent --remove-port=48489/tcp【刪除端口】
3)重啟SSH服務(wù),并退出當(dāng)前連接的SSH端口
service sshd restart
4)然后通過putty ssh連接軟件鏈接一下,使用默認(rèn)22號(hào)端口無(wú)法進(jìn)入SSH,達(dá)到目的,就OK了~
2. 禁止root帳號(hào)直接登錄
Linux的默認(rèn)管理員名即是root,只需要知道ROOT密碼即可直接登錄SSH。禁止Root從SSH直接登錄可以提高服務(wù)器安全性。經(jīng)過以下操作后即可實(shí)現(xiàn)。
1)新建帳戶和設(shè)置帳戶密碼
useradd ityangs
passwd ityangs
2)不允許root直接登陸
vi /etc/ssh/sshd_config
查找“#PermitRootLogin yes”,將前面的“#”去掉,短尾“Yes”改為“No”,并保存文件。
![](/d/20211016/a7e4dbdccb4bcced3d4e3b2b1fdf1dd9.gif)
systemctl restart sshd.service【重啟ssh,另一種方法重啟】
3)下次登陸
先使用新建賬號(hào)“ityangs”以普通用戶登陸。
若要獲得ROOT權(quán)限,在SSH中執(zhí)行以下命令
su root
執(zhí)行以上命令并輸入root密碼后即可獲得root權(quán)限。
4)WinSCP下su切換到root的技巧(禁止root遠(yuǎn)程ssh登錄時(shí))
限制了root用戶的遠(yuǎn)程登錄,但是重要的數(shù)據(jù)文件都是700。更可悲的是,WinSCP完全失去了用武之地。因?yàn)閞oot賬戶無(wú)法登陸,而像是FTP,SFTP,SCP這些協(xié)議都不支持在登錄以后切換用戶。
SCP協(xié)議在登錄的時(shí)候可以指定shell,一般默認(rèn)的也就是推薦的是/bin/bash,但是我們可以修改它來(lái)玩花樣,比如改成sudo su -
但是新問題又來(lái)了,sudo需要輸入密碼,但是WinSCP在登錄的時(shí)候并沒有交互過程。但是天無(wú)絕人只要在root權(quán)限之路,只要在root權(quán)限下visudo,添加如下一行即可取消sudu時(shí)的密碼:
yourusername ALL=NOPASSWD: ALL
為了可以在非putty的環(huán)境下sudo,我們還需要注釋掉下面一行:
Defaults requiretty
然后保存,即可在登錄到WinSCP的時(shí)候享受root的快感啦!
步驟:
普通用戶ssh到服務(wù)器,切換到root權(quán)限
visudo,然后添加 yourusername ALL=NOPASSWD: ALL 這一行,注釋掉Defaults requiretty
[root@iZ252wo3Z ~]# visudo
ityangs ALL=NOPASSWD: ALL
#Defaults requiretty 【沒有可不用管】
修改WinSCP的文件協(xié)議為SCP
![](/d/20211016/e93ede1cbd4e06fb833a9e81022d32e0.gif)
修改環(huán)境-SCP/Shell下的shell為sudo su-
![](/d/20211016/deb66cc9d44494c899548e4700f18516.gif)
登錄WinSCP即可。
3. 安裝DenyHosts【攔截獲取攻擊的IP,生成黑名單,防止再次攻擊】
DenyHosts(項(xiàng)目主頁(yè):http://denyhosts.sourceforge.net/)是運(yùn)行于Linux上的一款預(yù)防SSH暴力破解的軟件,可以從http://sourceforge.net/projects/denyhosts/files/進(jìn)行下載,然后將下載回來(lái)的DenyHosts-2.6.tar.gz源碼包上傳到Linux系統(tǒng)中。
下面是安裝過程
****************************************************************
tar zxvf DenyHosts-2.6.tar.gz #解壓源碼包
cd DenyHosts-2.6 #進(jìn)入安裝解壓目錄
python setup.py install #安裝DenyHosts
cd /usr/share/denyhosts/ #默認(rèn)安裝路徑
cp denyhosts.cfg-dist denyhosts.cfg #denyhosts.cfg為配置文件
cp daemon-control-dist daemon-control #daemon-control為啟動(dòng)程序
chown root daemon-control #添加root權(quán)限
chmod 700 daemon-control #修改為可執(zhí)行文件
ln -s /usr/share/denyhosts/daemon-control /etc/init.d #對(duì)daemon-control進(jìn)行軟連接,方便管理
安裝到這一步就完成了。
/etc/init.d/daemon-control start #啟動(dòng)denyhosts
chkconfig daemon-control on #將denghosts設(shè)成開機(jī)啟動(dòng)
******************************************************************
vi /usr/share/denyhosts/denyhosts.cfg #編輯配置文件,另外關(guān)于配置文件一些參數(shù),通過grep -v "^#" denyhosts.cfg查看
SECURE_LOG = /var/log/secure #ssh 日志文件,redhat系列根據(jù)/var/log/secure文件來(lái)判斷;Mandrake、FreeBSD根據(jù) /var/log/auth.log來(lái)判斷
#SUSE則是用/var/log/messages來(lái)判斷,這些在配置文件里面都有很詳細(xì)的解釋。
HOSTS_DENY = /etc/hosts.deny #控制用戶登陸的文件
PURGE_DENY = 30m #過多久后清除已經(jīng)禁止的,設(shè)置為30分鐘;
# ‘m' = minutes
# ‘h' = hours
# ‘d' = days
# ‘w' = weeks
# ‘y' = years
BLOCK_SERVICE = sshd #禁止的服務(wù)名,當(dāng)然DenyHost不僅僅用于SSH服務(wù)
DENY_THRESHOLD_INVALID = 1 #允許無(wú)效用戶失敗的次數(shù)
DENY_THRESHOLD_VALID = 3 #允許普通用戶登陸失敗的次數(shù)
DENY_THRESHOLD_ROOT = 3 #允許root登陸失敗的次數(shù)
DAEMON_LOG = /var/log/denyhosts #DenyHosts日志文件存放的路徑,默認(rèn)
更改DenyHosts的默認(rèn)配置之后,重啟DenyHosts服務(wù)即可生效:
/etc/init.d/daemon-control restart #重啟denyhosts
好了這篇文章就介紹到這了,需要的朋友可以參考一下。