Linux 下 iptables 一些常用的配置

iptables是Linux上常用的防火牆軟件,一般VPS系統裡面默認都有集成。不過最新的Centos 已經換成了

firewall

1、安裝iptables防火牆

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

yum install iptables-server

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

5、查看已添加的iptables規則

iptables -L -n

v:顯示詳細信息,包括每條規則的匹配包數量和匹配字節數

x:在 v 的基礎上,禁止自動單位換算(K、M) vps偵探

n:只顯示IP地址和端口號,不將ip解析為域名

6、刪除已添加的iptables規則

將所有iptables以序號標記顯示,執行:

iptables -L -n –line-numbers

比如要刪除INPUT裡序號為8的規則,執行:

iptables -D INPUT 8

7、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

8、附上基礎規則:

*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

9、可以使用一下方法直接載入:

a) 複製上面的規則粘貼到這裡,保存本文件

sudo vim /etc/iptables.test.rules

b) 把本規則加載,使之生效,注意,iptables不需要重啟,加載一次規則就成了

sudo iptables-restore < /etc/iptables.test.rules

c) 查看最新的配置,應該所有的設置都生效了.

sudo iptables -L -n

d) 保存生效的配置,讓系統重啟的時候自動加載有效配置(iptables提供了保存當前運行的規則功能)

iptables-save > /etc/iptables.rules

e) 讀取原來的防火牆規則

iptables-restore < /etc/sysconfig/iptables.bak

還在學習中的 friewall

firewalld 防火牆 【iptables的添加,參照上面的】

firewall-cmd –permanent –zone=public –add-service=http

firewall-cmd –permanent –zone=public –add-service=https

firewall-cmd –reload


分享到:


相關文章: