在日常運維中,我們通常使用防火墻iptables跟firewalld的方式來實現(xiàn)訪問控制,但在實際環(huán)境中,開啟防火墻可能會對業(yè)務(wù)造成影響,所以以下整理了三種限制登錄Linux服務(wù)器的幾種方式。分別是修改TCP Wrappers服務(wù)訪問控制、修改sshd_config配置文件、防火墻策略iptables跟firewalld。以上三種方式可以針對安全廠商做的漏洞白盒掃描,使用這三種方式,限制IP訪問,就沒辦法掃描了,實現(xiàn)某種程度的漏洞規(guī)避。
一、通過修改TCP Wrappers服務(wù)訪問控制來實現(xiàn)限制登錄Linux
TCP Wrappers說明:
TCP_Wrappers工作在第四層(傳輸層)的安全工具,對有狀態(tài)連接的特定服務(wù)進行安全檢測并實現(xiàn)訪問控制,對包含有l(wèi)ibwrap.so庫文件的程序就可以受TCP_Wrappers的安全控制??梢钥刂普l可以訪問,常見的程序有rpcbind、mountd、vsftpd、sshd、telnet
Tcp_wrappers是紅帽RHEL7系統(tǒng)中默認已經(jīng)啟用的一款流量監(jiān)控程序、它能夠根據(jù)來訪主機地址與本機目標服務(wù)程序做允許或拒絕操作。換句話說,Linux系統(tǒng)中其實有兩個層面的防火墻,第一種是基于TCP/IP協(xié)議的流量過濾防護工具,而Tcp_wrappers服務(wù)則是能夠?qū)ο到y(tǒng)服務(wù)進行允許和禁止的防火墻,從而在更高層面保護了Linux系統(tǒng)的安全運行。
1.這里以sshd服務(wù)為例,配置完成后,只允許配置允許的IP才能ssh連接本機服務(wù)器,其他IP拒絕
vi /etc/hosts.allow #先編輯hosts.allow配置文件
sshd:192.168.2.128 #添加允許的IP遠程登錄本機服務(wù)器,如果有多個不同網(wǎng)段的IP,可以以逗號隔開連續(xù)寫
或
sshd:192.168.2. #添加允許的2.0網(wǎng)段的IP遠程登錄本機服務(wù)器

vi /etc/hosts.deny #編輯hosts.deny配置文件
sshd:ALL #拒絕所有所有IP遠程登錄本機服務(wù)器

不用重啟,以上配置,配置完成后立即生效
測試:

以下這張是沒配置TCP Wrappers服務(wù)訪問控制前的ssh登錄是可以登錄的

配置了TCP Wrappers服務(wù)訪問控制之后就無法登錄了

注意!!!
TCP Wrappers服務(wù)訪問控制策略的配置只限openssh6.7以前的版本,openssh 6.7以后版本不再支持TCP Wrappers。openssh6.7以后的版本配置TCP Wrappers服務(wù)訪問控制策略是不生效的。
判斷服務(wù)是否支持tcp_wrapper
判斷某一個基于tcp協(xié)議的服務(wù)是否支持tcp_wrapper,要先判斷它是否支持libwrap庫
一般支持tcp_wrapper的服務(wù)有ssh、ftp、nfs、telnet等服務(wù)。也不一定全部都支持。只有查詢到服務(wù)支持libwrap庫,才可以被tcp_wrapper控制,才可以配置tcp_wrapper,否則配置了也不會生效。
ldd查詢服務(wù)是否支持libwrap,什么都沒顯示的話就是不支持
ldd `which sshd` |grep libwrap
ldd `which vsftpd` |grep libwrap
支持的libwrap的截圖

strings命令查看服務(wù)是否支持libwrap,什么都沒顯示的話就是不支持
strings `which sshd` |grep libwrap
strings `which vsftpd` |grep libwrap
支持libwrap的截圖


二、修改sshd_config配置文件來實現(xiàn)限制登錄Linux
vi /etc/ssh/sshd_config
ALLowUsers *@192.168.2.128 #添加允許登錄的IP,*代表任意用戶
#DenyUsers *@192.168.2.1 #拒絕登錄的IP,與ALLowUsers二選一進行配置就可以了,*代表任意用戶

systemctl restart sshd #重啟sshd服務(wù)

測試結(jié)果:


三、防火墻規(guī)則限制
firewalld
#firewalld防火墻默認是關(guān)閉的,需要設(shè)置開啟自啟,否則關(guān)閉服務(wù)器后,firewalld也會關(guān)閉
systemctl enable firewalld #開啟防火墻
systemctl restart firewalld #重啟防火墻
systemctl status firewalld #查看防火墻狀態(tài)

#添加允許規(guī)則,放行指定IP訪問服務(wù)器22端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.2.128/32" port protocol="tcp" port="22" accept"
#重載防火墻規(guī)則使其生效
firewall-cmd --reload
#查看防火墻規(guī)則
firewall-cmd --list-all


#添加拒絕規(guī)則,拒絕指定IP訪問服務(wù)器22端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.2.1/32" port protocol="tcp" port="22" drop"
#重載防火墻規(guī)則使其生效
firewall-cmd --reload
#查看防火墻規(guī)則
firewall-cmd --list-all


測試結(jié)果:


#刪除防火墻規(guī)則
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.2.128/32" port protocol="tcp" port="22" accept"
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.2.1/32" port protocol="tcp" port="22" drop"
firewall-cmd --reload
firewall-cmd --list-all

iptables
CentOS7默認的防火墻不是iptables,而是firewall
#先停止firewalld服務(wù)
systemctl stop firewalld
#禁用firewalld服務(wù)
systemctl mask firewalld
#如果沒有安裝iptables服務(wù),需要先安裝iptables-services
yum install -y iptables-services
#開啟iptables,設(shè)置開機自啟
systemctl enable iptables
#啟動iptables
systemctl restart iptables
#查看iptables的狀態(tài)
systemctl status iptables


#添加允許規(guī)則,放行指定的IP訪問本機22端口
iptables -A INPUT -s 192.168.2.128 -p tcp --dport 22 -j ACCEPT
#添加允許規(guī)則,允許本機訪問22端口
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 22 -j ACCEPT
#添加拒絕規(guī)則,拒絕其他所有IP訪問本機22端口
iptables -A INPUT -p tcp --dport 22 -j REJECT

#保存iptables規(guī)則
service iptables save
#查看iptables規(guī)則
iptables -L -n

在iptables的INPUT鏈中默認有兩條規(guī)則
允許所有IP訪問服務(wù)器22端口(下圖中的第四條規(guī)則)
拒絕其他所有訪問(下圖中的第五條規(guī)則)
以上配置完Iptables后會發(fā)現(xiàn)不生效,那是因為,iptables的防火墻規(guī)則默認是從上到下開始匹配生效的,因為寫入的那3條規(guī)則是在,允許所有IP訪問服務(wù)器22端口(第4條防火墻規(guī)則)和拒絕其他所有訪問(第5條防火墻規(guī)則)的后面,先匹配的這兩條,所以就不生效。
解決的辦法有兩個,1是將這第4、5條防火墻規(guī)則刪掉,2是將寫入的3條防火墻規(guī)則插入到4、5條防火墻規(guī)則的前面就可以生效了。
iptables -L -nvx --line-numbers #查看iptables規(guī)則,并顯示規(guī)則編號

刪除4、5條防火墻規(guī)則
iptables -D INPUT 4 #刪除INPUT中的第4條防火墻規(guī)則
iptables -L -nvx --line-numbers #查看iptables規(guī)則
iptables -D INPUT 4 #再次刪除INPUT中的第4條防火墻規(guī)則(原來的第5條防火墻規(guī)則)
iptables -L -nvx --line-numbers #再次查看iptables規(guī)則,這時候原來的第4、5條防火墻規(guī)則已經(jīng)刪除了


測試結(jié)果:


恢復(fù)iptables防火墻規(guī)則
#如果想把刪除的Iptables規(guī)則恢復(fù),如上面刪除的4、5條防火墻規(guī)則,先停用iptables然后再重啟防火墻規(guī)則,就可以恢復(fù)了
systemctl stop iptables
systemctl status iptables
systemctl restart iptables
systemctl status iptables
iptables -L -nvx --line-number

這個時候,配置的規(guī)則就又失效了。文章來源:http://www.zghlxwxcb.cn/news/detail-582398.html

刪除iptables規(guī)則文章來源地址http://www.zghlxwxcb.cn/news/detail-582398.html
iptables -D INPUT 6
iptables -D INPUT 7
iptables -D INPUT 6
iptables -L -nvx --line-numbers


到了這里,關(guān)于限制登錄Linux服務(wù)器的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!