CentOS 7 配置白名單
在一些網絡安全要求比較高的場景下(比如:客戶現場部署的環境,客戶要求部署服務的機器均需經過安全掃描和漏洞檢測),為了保證機器上的服務不會被惡意攻擊,
我們可以通過一些手段進行控制(比如,MySQL數據庫的訪問權限控制,我們可以通過SQL命令對可訪問機器進行控制)。
更為便捷的方式,可以通過 Linux 系統自帶的防火牆功能,通過針對特定的 IP 和 port 添加白名單的方式,進行安全訪問控制,杜絕外部惡意訪問和攻擊。
在配置白名單前,需要保證 CentOS 7的機器上有 iptables文件。
iptables服務的安裝,可以參考:https://www.cnblogs.com/miracle-luna/p/13714709.html
如果想實現如下效果:
1)允許 10.105.211.10,10.105.211.11,10.105.211.12 這三台機器訪問該機器的 UDP端口 111和123 ,TCP端口 3306,
2)允許其他機器訪問該機器的除了TCP端口 8080和 8082 以外的其他端口。
方式1(常規配置):
iptables 文件配置如下:
# sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # 配置白名單中的源IP(10.105.211.10,10.105.211.11,10.105.211.12) -N whitelist -A whitelist -s 10.105.211.10 -j ACCEPT -A whitelist -s 10.105.211.11 -j ACCEPT -A whitelist -s 10.105.211.12 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # 白名單中的機器允許訪問 UDP端口 111和123 -A INPUT -m state --state NEW -p udp --dport 111 -j whitelist -A INPUT -m state --state NEW -p udp --dport 123 -j whitelist # 白名單中的機器允許訪問 TCP端口 3306 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j whitelist # 其他機器允許訪問 除了TCP端口 8080和 8082 以外的其他端口(此時的!表示取反) -A INPUT -p tcp ! --dport 8080 -j ACCEPT -A INPUT -p tcp ! --dport 8082 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
(說明:! 是表示取反,注意 ! 兩側是有空格的,否則,會報錯)
方式2(簡潔配置):
# sample configuration for iptables service # you can edit this manually or use system-config-firewall # please do not ask us to add additional ports/services to this default configuration *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # 配置白名單中的源IP(10.105.211.10,10.105.211.11,10.105.211.12) -N whitelist -A whitelist -s 10.105.211.10,10.105.211.11,10.105.211.12 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # 白名單中的機器允許訪問 UDP端口 111和123 -A INPUT -m state --state NEW -p udp -m multiport --dport 111, 123 -j whitelist # 白名單中的機器允許訪問 TCP端口 3306 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j whitelist # 其他機器允許訪問 除了TCP端口 8080和 8082 以外的其他端口(此時的!表示取反) -A INPUT -p tcp -m multiport ! --dport 8080,8082 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
(說明:-m multiport 表示同時對多個端口操作;另外,多個IP或者多個端口之間,使用英文的逗號隔開,且中間不能有空格,否則,啟動 iptables 服務會報錯)
iptables 文件配置完,執行如下步驟:
1、保存 iptables 配置,命令如下:
service iptables save
2、重載 iptables 文件
systemctl reload iptables
或者
service iptables reload
3、重啟 iptables 服務,命令如下:
systemctl restart iptables
或者
service iptables restart
4、查看 iptables 服務狀態(服務狀態為綠色的 active,表示 iptables 文件配置成功,服務正常):
systemctl status iptables
或者
service iptables status