体育平台

Linux防火墻iptables簡明教程

体育平台,新手教程前幾天体育平台再次遭受到個別別有用心的攻擊者的攻擊,順便給自己充個電,復習了一下linux下常見的防火墻iptables的一些內容,但是無奈網上的很多教程都較為繁瑣,本著簡明化學習的目的,微魔為大家剔除了許多冗余的內容,提取出盡量多的精華部分成文,和大家共同學習,本文涉及的內容包括如下,

Linux防火墻iptables簡明教程

  1. 安裝iptables
  2. 查看現有的iptables規則
  3. 刪除某iptables規則
  4. 清除現有iptables規則
  5. 創建規則
  6. 設置開機啟動
  7. 保存iptables規則
  8. iptables在手動防CC攻擊中的簡單應用

1.安裝iptables

很多Linux已經默認安裝iptables,可使用后文的查看命令測試是否安裝

CentOS/RedHat下執行:

yum install iptables

Debian/Ubuntu下執行:

apt-get install iptables

2.查看現有的iptables規則

命令后面的line-number為顯示行號(將規則一則一則輸出,并顯示行號),可選,方便后文的刪除指令。

iptables -L -n --line-numbers

3.刪除某iptables規則

例如,刪除第12行的規則,行號可由之前的命令查看

iptables -D INPUT 12

4.清除現有iptables規則

iptables -F
iptables -X
iptables -Z

5.創建規則

a).開放端口

命令iptables -A INPUT -j REJECT將屏蔽其他未授權的端口,因此請務必開放22端口以保障SSH連接正常~

#允許本機訪問
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 允許已建立的或相關連的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允許所有本機向外的訪問
iptables -A OUTPUT -j ACCEPT
# 允許訪問22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允許訪問80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允許FTP服務的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#如果有其他端口的話,規則也類似,稍微修改上述語句就行
#禁止其他未允許的規則訪問
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

b).屏蔽ip

iptables -I INPUT -s 123.123.123.123 -j DROP

可通過更換上述ip為ip段來達到屏蔽ip段的目的~

若需屏蔽整個ip段(123.0.0.1到123.255.255.254)則換為123.0.0.0/8
若需屏蔽ip段123.123.0.1到123.123.255.254,則換為124.123.0.0/16
若需屏蔽ip段123.123.123.1到123.123.123.254則換為123.123.123.0/24

6.設置開機啟動

一般在安裝iptables完成后,開機啟動會自動設置成功,但在個別CentOS系統上,貌似還有些問題,可以使用如下命令手動設置

chkconfig --level 345 iptables on

7.保存iptables規則

CentOS下

service iptables save

Ubuntu下

iptables-save > /etc/iptables-rules

編輯/etc/network/interfaces,追加如下內容

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

Debian下如果保存不成功(重啟后失效),可以參考《Debian下保存iptables防火墻規則

8.iptables在手動防CC攻擊中的簡單應用

關于獲取攻擊者ip的方法,可以通過很多方法獲取,如查看網站日志等,本文不再贅述。

a).建立要屏蔽的ip/ip段文件,名為ip.txt

#屏蔽的ip
123.4.5.6
#屏蔽的ip段(編寫方法,同前文)
123.4.5.6/24

b).建立block_ip.sh腳本文件

#!/bin/sh
# Filename: block_ip.sh
# Purpose:  blocks all IP address/network found in a text file
#               The text file must have one IP address or network per line
#################################################################

# Change the following path/filename to match yours
IP_LIST_FILE=/path/to/ip.txt

#################################################################
# Don't change anything below unless you are a smarty pant!
#################################################################
IPTABLES_BIN=/sbin/iptables

# Get the IP address/network from the file and ignore any line starting with # (comments)
BAD_IP_ADDR_LIST=$(grep -Ev "^#" $IP_LIST_FILE)

# Now loop through the IP address/network list and ban them using iptabels
for i in $BAD_IP_ADDR_LIST
do

echo -n "Blocking $i ...";
$IPTABLES_BIN -A    INPUT -s $i -j DROP
$IPTABLES_BIN -A OUTPUT -d $i -j DROP

echo "DONE.";
done
##################################################################
# END OF SCRIPT - NOTHING TO SEE HERE - THAT'S ALL FOLKS!
##################################################################

c).運行腳本

sh /path/to/block_ip.sh

d).查看iptables規則是否生效/正確,這一步的命令,之前有提到哦,開動腦筋,實在忘了,點擊此處~

本文的撰寫參考了多篇優秀的網絡資源文章,但由于多為轉載,原作無從查證,如原作者認為文中出現了您的原創內容,歡迎與我聯絡增加原始出處鏈接,謝謝!

猜你 喜歡

關于作者: 微魔

小微魔,大智慧!

多條評論

  1. Pingback:
  2. Pingback:
  3. Pingback:
  4. Pingback:
  5. Pingback:

發表評論