Linux

CentOS Linux 防火牆 firewalld 阻擋惡意攻擊來源 IP 位址設定教學與範例

介紹如何在 CentOS Linux 中判斷惡意攻擊來源 IP 位址,並設定防火牆阻擋網路攻擊封包。

判斷惡意攻擊來源 IP 位址

若要找出目前正在攻擊系統的來源 IP 位址,最簡單的方式就是以 netstat 查看目前的網路連線。

直接查看與網頁伺服器建立連線的 IPv4 位址以及對應的連線數:

# 列出與網頁伺服器建立連線的 IPv4 與連線數
sudo netstat -ntp4 | grep nginx | grep ESTABLISHED |\
  awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
      1 61.222.86.175
      1 61.92.74.245
      1 64.233.173.32
      1 64.233.173.39
      1 66.249.68.74
      1 66.249.68.78
      1 66.249.79.170
      2 114.38.179.83
      2 123.192.110.155
      2 125.59.80.216
      9 110.43.54.236

正常來說每個 IP 位址與網頁伺服器的連線數都不會超過 2,如果一個 IP 位址長時間都佔用 3 條以上的連線,就非常可疑。以這個例子來說,110.43.54.236 這一個 IP 位址就佔用了 9 條連線,如果持續幾分鐘都是這樣,就可以視為攻擊行為了。

列出 SYN_RECV 狀態的連線:

# 列出 SYN_RECV 狀態的連線
sudo netstat -ntp | grep SYN_RECV | sort -u

通常這種連線都在 5 條以下,出現太多的話就表示可能有問題。

找出有嫌疑的 IP 位址之後,再去檢查網頁伺服器或相關服務的 log 記錄檔,看看是不是有惡意攻擊行為,若發現確實是網路攻擊,則可用防火牆阻擋掉該 IP 的所有封包。

阻擋特定來源 IP 位址

決定要阻擋的來源 IP 位址之後,就可以使用 firewall-cmd 指令搭配 --add-rich-rule 參數,新增一條防火牆規則,將來自於指定 IP 位址的所有流量擋掉:

# 惡意攻擊來源 IP 位址
IP_ADDR="110.43.54.236"

# 阻擋特定來源 IP 位址
sudo firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='${IP_ADDR}' reject"

上面的指令會將新的防火牆規則寫進設定檔中,接著還要載入設定檔才會生效:

# 重新載入防火牆規則
sudo firewall-cmd --reload

最後列出當前的防火牆規則,確認新的阻擋 IP 規則有被納入其中:

# 列出目前防火牆規則
sudo firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client http https ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
	rule family="ipv4" source address="110.43.54.236" reject

解除阻擋特定來源 IP 位址

若要解除阻擋特定來源 IP 位址,可以使用 firewall-cmd 搭配 --remove-rich-rule 參數,並指定要移除的防火牆規則:

# 要解除阻擋的來源 IP 位址
IP_ADDR="110.43.54.236"

# 解除阻擋特定來源 IP 位址
sudo firewall-cmd --permanent --remove-rich-rule="rule family='ipv4' source address='${IP_ADDR}' reject"

移除阻擋 IP 位址的防火牆規則之後,同樣需要重新載入設定檔,並檢查當前設定值:

# 重新載入防火牆規則
sudo firewall-cmd --reload

# 列出目前防火牆規則
sudo firewall-cmd --list-all

參考資料:TecmintMagentoG. T. Wang凍仁的筆記

Share
Published by
Office Guide
Tags: 資訊安全

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago