服務器的安全組都已經開了?
有一定網絡基礎的朋友們都知道,服務器一旦接入公網就會面臨各種各樣的網絡攻擊,而攻擊者想要入侵你的服務器就得先知道服務器的IP地址和開放的端口,然而公網上的服務器那么多,攻擊者總不可能一個個去試,所以就會通過一些掃描軟件來掃整個IP段的端口開放情況,看哪些IP地址對應的服務器是在線的,進而進一步去攻擊這些服務器。
也正是如此,現在的云服務器一般都提供了安全組功能,而服務器本身也提供有防火墻功能,默認情況下我們需要將開放的端口在安全組及防火墻規則里開放。但有時候,我們明明在安全組和防火墻規則里開放了某些端口,然而使用端口掃描工具卻發現這些端口依舊是關閉的,這是為什么呢?
端口掃描的原理及方式所謂“端口掃描”其實就是通過專門的軟件來對一段或指定端口進行掃描,端口掃描軟件會提供一個掃描結果能知道這臺服務器上哪些端口是開放的。
1、原理
端口掃描的原理很簡單,就是一個客戶端主機向對方服務器的某個端口提出建立連接的請求,如果對方服務器應答了,就表示對方服務器的這個端口是開放的,這樣就知道對方服務器上開放了哪些服務。
2、常見掃描方式
TCP Connect() 掃描TCP SYN 掃描TCP FIN 掃描端口掃描顯示端口關閉的原因如果你在服務器安全組及防火墻中已經將某個端口設為開放狀態了,使用端口掃描軟件掃端口時依舊提示端口關閉,那可能原因有以下幾種:
1、端口對應服務未啟動
比如HTTP Web服務的端口是80,如果你的服務器上沒有安裝HTTP服務(如:IIS、Nginx、Tomcat、Apache),那80端口自然也不會開啟監聽。
2、防火墻規則中限制了SYN、FIN等報文
通過上面說到的現在市面上端口掃描軟件的掃描方式,如果在防火墻中做了限制SYN、FIN等報文,那即使你的服務器上的端口已經開啟監聽了、安全組及防火墻中也開放了此端口,端口掃描軟件依舊是掃不到此端口的。
比如Linux服務器,一旦我們在iptables中設置了以下規則,端口掃描軟件就會失效。
-A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j REJECT
-A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j REJECT
-A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j REJECT