Linux環境下非root用戶通過防火牆nat將端口轉發到8080端口


背景

  linux環境雖然安全,但是一些應用的bug將導致操作系統淪陷,比如臭名昭著的Struct2的RCE漏洞,導致很多服務器曾經失守。

究其原因大多是開發人員不了解linux不會操作,默認使用了root賬戶啟動。因為電信審核備案原因,絕大部分網站都是開啟80/443端口。

而Linux開啟1024以下端口都需要root權限,所以導致linux管理亂象,大面積服務器面對程序RCE時淪陷。本文linux環境為Ubuntu 16.04 x64

 

解決辦法

  使用低權限/受限制權限的賬戶啟動應用,在防火牆上將該端口nat/映射到80/443端口。比如筆者的java web應用(SpringBoot項目),

在服務器上使用ubuntu低權限賬戶登錄,開啟了8080端口。現在想映射到80端口。操作如下(以下需要root權限才能完成):

1、修改/etc/sysctl.conf文件

root@ubuntu:/home/ubuntu# echo net.ipv6.ip_forward=1 >> /etc/sysctl.conf

打開文件確認 vim /etc/sysctl.conf,按下shift +G跳轉到文件尾部,看到以下內容說明設置成功

 

 

 2、在防火牆上將80端口nat到8080端口

iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

3、保存配置

sudo iptables-save
sudo sh -c "iptables-save > /etc/iptables.rules"

 

4、開機自動啟

配置的規則系統默認重啟后就失效,因此做開機啟動時加載iptables的配置也有必要。
在/etc/network/interfaces的末尾添加如下一行(shift+G跳轉到最后一行): 

pre-up iptables-restore < /etc/iptables.rules

 

如果想在關機的時候自動保存修改過的iptables規則,可添加如下行

post-down iptables-save > /etc/iptables.up.rules

 

參考來源:https://blog.csdn.net/gobitan/article/details/50696641

 

操作成后,筆者訪問 虛擬機80端口如下

 

 查看服務器端口

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM