iptables練習

iptables實戰

1.開啟防火墻

systemctl start firewalld

2.清空所有的默認規則,定義自己的規則

iptables -F

查看此時的iptables
iptables -nL

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 
略...... 

3.我們準備建立自己的規則

(1) 放行ssh (端口:22)

iptables -t filter -A INPUT  -s 0/0  -d 192.168.42.153  -p tcp --dport 22 -j ACCEPT 或者
iptables -A INPUT -d 192.168.42.153 -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT  -s 192.168.42.153  -d 0/0   -p tcp   --sport 22  -j ACCEPT 或者
iptables -A  OUTPUT -s  192.168.42.153  -p tcp  --sport  22 -j ACCEPT

(2)修改默認規則鏈(關閉所有端口)

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

(3)放行web(80)端口 httpd nginx

iptables -I INPUT -d 192.168.42.153 -p tcp --dport 80 -j ACCEPT 或者
iptables -t filter -I INPUT -d 192.168.42.153 -p tcp --dport 80 -j ACCEPT

iptables -I OUTPUT -s 192.168.42.153 -p tcp --sport 80 -j ACCEPT 或者
iptables -t filter -I OUTPUT -s 192.168.42.153  -d 0/0 -p tcp --sport 80 -j ACCEPT

(4)修改默認規則鏈后,我們發現ping不通自己,也ping不通別的主機

iptables -t filter -I INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo  -j ACCEPT 
iptables -t filter -I OUTPUT -s 127.0.0.1 -d 127.0.0.1 -o lo  -j ACCEPT

(5)允許自己ping別的主機

iptables -t filter -I OUTPUT -s 192.168.42.153 -d 0/0  -p icmp --icmp-type 8 -j ACCEPT
iptables -t filter -I INPUT -s 0/0 -d 192.168.42.153 -p icmp --icmp-type 0 -j ACCEPT

(6)允許任何人來ping本機

iptables -t filter -I INPUT -s 0/0 -d 192.168.42.153 -p icmp --icmp-type 8 -j ACCEPT
iptables -t filter -I OUTPUT -s 192.168.42.153 -d 0/0  -p icmp --icmp-type 0 -j ACCEPT

(7)同時開發多個端口(多端口匹配)

iptables -I INPUT -s 0/0 -d 192.168.42.153 -p tcp -m multiport --dports 22,80,3306 -j ACCEPT
iptables -I INPUT -d 0/0 -s 192.168.42.153 -p tcp -m multiport --sports 22,80,3306 -j ACCEPT

(8)iptables -vnL –line-numbers #顯示數字

iptables  -vnL INPUT  --line-numbers 
Chain INPUT (policy DROP 1 packets, 229 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        8   576 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.42.153       icmptype 8
2       12  1008 ACCEPT     icmp --  *      *       0.0.0.0/0            192.168.42.153       icmptype 0
3       16  1226 ACCEPT     all  --  lo     *       127.0.0.1            127.0.0.1           
4       88  7565 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.42.153       tcp dpt:80
5     2135  163K ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.42.153       tcp dpt:22

(9) 源地址,目的地址范圍匹配

iptables -I INPUT -d 192.168.42.153 -p tcp --dport 23 -m iprange --src-range 192.168.42.150-192.168.42.158 -j ACCEPT

iptables -I OUTPUT -s 192.168.42.153 -p tcp --dport 23 -m iprange --dst-range  192.168.42.150-192.168.42.158 -j ACCEPT

(10)禁止包含”old”字符的頁面出來

iptables -I OUTPUT -s 192.168.42.153 -d 0/0 -p tcp --sport 80 -m string --algo bm --string "old" -j DROP

(11)基于時間限定,9點到19點,禁止訪問80端口

iptables -I INPUT -s 0/0  -d 192.168.42.153 -p tcp --dport 80  -m time --timestart 09:00:00 --timestop 19:00:00 --kerneltz  -j DROP

(12)周一到周五9點到19點禁止訪問80端口

iptables -I INPUT  -d 192.168.42.153 -p tcp --dport 80  -m time --timestart 09:00:00 --timestop 19:00:00 --kerneltz --weekdays 1,2,3,4,5  -j DROP

(13)端口大于2個并發連接(禁止)

iptables -I INPUT -s 0/0 -d 192.168.42.153 -p tcp  --dport 22 -m connlimit --connlimit-above 2 -j DROP

(14)端口同一個客戶端小于3個并發連接

iptables -I INPUT -s 0/0 -d 192.168.42.153 -p tcp  --dport 22 -m connlimit ! --connlimit-above 3 -j DROP

4.新建自定義鏈 ,開放80

iptables -F
iptables -A INPUT -d 192.168.42.153 -p tcp --dport 22 -j ACCEPT
iptables -A  OUTPUT -s  192.168.42.153  -p tcp  --sport  22 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -N webinput
iptables -N weboutput
iptables -I webinput -d 192.168.42.153 -p tcp --dport 80 -j ACCEPT 
iptables -I weboutput -s 192.168.42.153 -p tcp --sport 80 -j ACCEPT
iptables -A INPUT -p tcp -j webinput 
iptables -A OUTPUT -p tcp -j weboutput

“`

5.NAT:(工作在網絡和傳輸層) 過載技術

Basic NAT:靜態NAT
    一個內部主機,分配一個外網地址
NAPT:動態NAT,網絡地址端口轉換;net會話表
    源地址轉換:SNAT 用于內網主機訪問互聯網
    目標地址轉換:DNAT 讓互聯網上主機訪問本地內網上的某服務器上的服務(發布)


6.iptables基于SNAT和DNAT這兩個目標(target)實現地址轉換技術

-j SNT --to-source SIP
    規則添加:POSTROUTING鏈
-j MASQUERADE  動態獲取(外網地址是動態的)
-j DNAT --to-destination DIP{:PORT}
    支持端口映射

iptables練習

iptables練習



7.源地址轉換示例

iptables練習

// 此時 filter 表上的 FORWARD 鏈 要打開(會經過此表中的此鏈)
[root@nat ~]# iptables -t nat -F
[root@nat ~]# iptables -t nat -L -n
[root@nat ~]# iptables -t nat -A POSTROUTING -s 10.1.249.158 -j SNAT --to-source 192.168.2.3
[root@nat ~]# iptables -t nat -L -n
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  10.1.249.158         0.0.0.0/0           to:192.168.2.3 

內部主機訪問外部主機
[root@nei ~]# curl http://192.168.2.4/index.html
hello 
查看外部主機中web的訪問日志
[root@wai ~]# tail /var/log/httpd/access_log
192.168.2.3 - - [13/Oct/2016:21:40:58 +0800]
192.168.2.3 - - [13/Oct/2016:21:40:59 +0800]
//主機,我們的內部主機IP為10.1.249.158
//而httpd的訪問日志為192.168.2.3的訪問
//說明成功實現了源地址轉換


8.目標地址轉換示例(對80端口的轉換)

iptables練習

[root@luyou ~]# iptables -t filter -F 
[root@luyou ~]# iptables -t nat -F
[root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.4
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.1.249.125        tcp dpt:80 to:192.168.2.4

[root@luyou ~]# netstat -tln | grep "\<80\>"  此時本機上并沒有開放80端口
[root@wai ~]# curl http://10.1.249.125
hello  --> 此時我們訪問為 luyou 主機上的80端口  由上面可知,此服務器上并沒有開放80,而是將請求送往 后端服務器


9.目標地址和端口轉換示例(對22端口的轉換)

[root@luyou ~]# iptables -t filter -F  FORWARD
[root@luyou ~]# iptables -t nat -A PREROUTING -d 10.1.249.125 -p tcp --dport 22022 -j DNAT --to-destination 192.168.2.4:22
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            10.1.249.125        tcp dpt:22022 to:192.168.2.4:22 
[root@wai ~]# ssh -p 22022 10.1.249.125  --> 連接 luyou 設備的22022端口
[root@nei ~]# --> 連接到 nei  內網的主機上來
[root@luyou ~]# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 42 packets, 4633 bytes)
 pkts bytes target     prot opt in     out     source               destination         --> 有報文成功匹配到
    1    60 DNAT       tcp  --  *      *       0.0.0.0/0            10.1.249.125        tcp dpt:22022 to:192.168.2.4:22 

//此時我們請求luyou這臺NAT服務器的22022端口的ssh服務,此時我們nat路由器的ssh服務并沒有監聽在22022端口,
//而是將目標IP和目標端口都進行了轉換了,使我們連接到了內網的ssh服務器上

 

原創文章,作者:renjin,如若轉載,請注明出處:http://www.www58058.com/78787

(0)
renjinrenjin
上一篇 2015-03-13 19:05
下一篇 2015-03-16 09:52

相關推薦

  • 初涉Linux基本要點概括(1)

    計算機,這里通常指可以儲存程序的計算機,根據馮諾依曼體系,計算機組成部件包括控制單元(Control Unit)、算術邏輯單元(Arithmetic Logic Unit)、內存(Memory)、輸入設備(Input)、輸出設備(Output)。計算機通過輸入的數據和指令,可以完成各種復雜的運算任務,小到文字處理、游戲、影音、大到衛星定位,火箭發射,人工智能…

    Linux干貨 2016-09-26
  • 網絡基礎

    什么是計算機網絡? 是指將地理位置不同的具有獨立功能的多臺計算機及外部設備,借助于某種網絡介質連接起來,實現資源共享和信息傳遞的計算機系統 計算機網絡的特點? 1、能實現數據信息的快速傳輸和集中處理 2、可共享計算機系統資源 3、提高了計算機的可靠性及可用性 4、能均衡負載互相協作 常見的網絡應用程序 Web 瀏覽器(Chrome、IE、Firef…

    Linux干貨 2016-09-09
  • 正則表達式及grep使用

    正則表達式分為:“基本正則表達式 BRE”跟“擴展正則表達式 ERE” 基本正則表達式:     (1)字符匹配               "."任意單個字符 &nbs…

    Linux干貨 2016-07-10
  • 網絡知識及寫腳本,一個又一個

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器是屬于物理層的設備,可以理解為一根網線中間串接出了多個接口,這么多接口共享這一根網線的帶寬, 因此這些接口上的設備在使得網絡時就會出現沖突,或者‘道路’擠占的情況。(所有的設備在一個廣播域,沖突域中),集線器現在很少使用了。 交換機、網橋都是數據鏈路層的設備,網橋的出現就是…

    2017-02-10
  • Shell腳本編程 流程控制—選擇

    流程控制可根據不同的情況做不同的處理,而且可重復執行指定的程序區域,在shell bash中流程控制可分為兩大類: "選擇"和"循環" 1.選擇:if、case、select 2.循環:for、while、until、select 命令結束狀態返回值: 在shell中命令執行狀態返回值分兩種,成功和失敗,0表示成功,非…

    Linux干貨 2016-08-24
  • 計算機組成原理

                                 計算機組成原理 Linux 操作系統是UNIX 操作系統的一種克隆系統。它誕生于1991 年的10 月5 日(這是第一次正式向外公布的時間)。以后借助于…

    Linux干貨 2016-10-27
欧美性久久久久