Linux防火牆iptables基本使用方法

iptables是Linux上常用的防火牆軟件,一般VPS系統裡面默認都有集成。

1、安裝iptables防火牆

如果沒有安裝iptables需要先安裝,CentOS執行:
yum install iptables

Debian/Ubuntu執行:
apt-get install iptables
2、清除已有iptables規則
iptables -F
iptables -X
iptables -Z
3、開放指定的端口
#允許本地回環接口(即運行本機訪問本機)
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
#如果有其他端口的話,規則也類似,稍微修改上述語句就行
#禁止其他未允許的規則訪問(注意:如果22端口未加入允許規則,SSH鏈接會直接斷開。)
1).用DROP方法
iptables -A INPUT -p tcp -j DROP
2).用REJECT方法
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
4、屏蔽IP
#如果只是想屏蔽IP的話“3、開放指定的端口”可以直接跳過。
#屏蔽單個IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整個段即從123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即從123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即從123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
4、查看已添加的iptables規則
iptables -L -n

v:顯示詳細信息,包括每條規則的匹配包數量和匹配字節數
x:在 v 的基礎上,禁止自動單位換算(K、M) vps偵探
n:只顯示IP地址和端口號,不將ip解析為域名

5、刪除已添加的iptables規則

將所有iptables以序號標記顯示,執行:
iptables -L -n –line-numbers

比如要刪除INPUT裡序號為8的規則,執行:
iptables -D INPUT 8
6、iptables的開機啟動及規則保存

CentOS上可能會存在安裝好iptables後,iptables並不開機自啟動,可以執行一下:
chkconfig –level 345 iptables on

將其加入開機啟動。

CentOS上可以執行:service iptables save保存規則。

Debian/Ubuntu上iptables是不會保存規則的。

需要按如下步驟進行,讓網卡關閉是保存iptables規則,啟動時加載iptables規則。
如果當前用戶不是root,即使使用了sudo,也會提示你沒有權限,無法保存,所以執行本命令,你必須使用root用戶.
可以使用sudo -i快速轉到root,使用完成,請及時使用su username切換到普通帳戶.
為了重啟服務器後,規則自動加載,我們創建如下文件:
sudo vim /etc/network/if-pre-up.d/iptables#!/bin/bash
iptables-save > /etc/iptables.rules

添加執行權限。
chmod +x /etc/network/if-pre-up.d/iptables

附上基礎規則:
*filter
:INPUT ACCEPT [106:85568]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [188:168166]
:RH-Firewall-1-INPUT – [0:0]
#允許本地回環接口(即運行本機訪問本機)
-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#允許已建立的或相關連的通行
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
#允許所有本機向外的訪問
-A OUTPUT -j ACCEPT
#允許PPTP撥號到外網
-A INPUT -p tcp -m tcp –dport 1723 -j ACCEPT
#僅特定主機訪問Rsync數據同步服務
-A INPUT -s 8.8.8.8/32 -p tcp -m tcp –dport 873 -j ACCEPT
#僅特定主機訪問WDCP管理系統
-A INPUT -s 6.6.6.6/32 -p tcp -m tcp –dport 8080 -j ACCEPT
#允許訪問SSH
-A INPUT -p tcp -m tcp –dport 1622 -j ACCEPT
#允許訪問FTP
-A INPUT -p tcp -m tcp –dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 20 -j ACCEPT
#允許訪問網站服務
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
#禁止所有未經允許的連接
-A INPUT -p tcp -j DROP
#注意:如果22端口未加入允許規則,SSH鏈接會直接斷開。
#-A INPUT -j REJECT
#-A FORWARD -j REJECT
COMMIT

可以使用以下方法直接載入:
1、複製上面的規則粘貼到這裡,保存本文件
sudo vim /etc/iptables.test.rules
2、把本規則加載,使之生效,注意,iptables不需要重啟,加載一次規則就成了
sudo iptables-restore < /etc/iptables.test.rules 3、查看最新的配置,應該所有的設置都生效了. sudo iptables -L -n 4、保存生效的配置,讓系統重啟的時候自動加載有效配置(iptables提供了保存當前運行的規則功能) iptables-save > /etc/iptables.rules

======
轉載自open-open.com

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *