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服務器上

 

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

(0)
kangkang
上一篇 2017-06-24 15:37
下一篇 2017-06-24 17:15

相關推薦

  • n28 第二周作業

    n28 第二周作業

    Linux干貨 2017-12-09
  • N-22-南京-修 第四周博客作業

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost xujie]# cp -a /etc/skel /home/tuser1 [root@localhost home]# chmod -R 700 tuser1 之前 [root@localho…

    Linux干貨 2016-09-15
  • linux 計劃任務

    Linux之 計劃任務 介紹 相信每個人都有使用鬧鐘的習慣,我們設定鬧鐘的種類有很多。比如說,只提醒一次、工作日提醒、休息日提醒等。在設定鬧鐘之后,每天的設定時間都會按時的提醒你去做什么事情,以免自己忘記一些重要的會議等事情。像這樣在每天特定的時間安排做一些事情。這樣一種事情我們就稱之為例行任務計劃。 其實在個系統平臺上都有類似的例行性任務計劃功能,那如何去…

    Linux干貨 2017-09-04
  • 在Centos系統上安裝EPEL擴展源以及安裝htop工具

        Htop是一個強大的進程管理前端工具,但這是一個擴展工具,一般在Centos系統源中并沒有,所有我們需要到fedora-epel源中下載。         EPEL即Extra Packages for Enterprise Lin…

    Linux干貨 2016-02-14
  • 鏈接分析算法之:主題敏感PageRank

      前面的討論提到。PageRank忽略了主題相關性,導致結果的相關性和主題性降低,對于不同的用戶,甚至有很大的差別。例如,當搜索“蘋果”時,一個數碼愛好者可能是想要看 iphone 的信息,一個果農可能是想看蘋果的價格走勢和種植技巧,而一個小朋友可能在找蘋果的簡筆畫。理想情況下,應該為每個用戶維護一套專用向量,但面對海量用戶這種方法顯然不可行。所…

    Linux干貨 2016-02-17
  • 學習試題演練

    1.寫一個腳本實現:提示用戶給出自己的選擇隨后顯示對應的信息。 區分大小寫: if [[ "$option" =~ [Dd][Ii][Ss][Kk] ]];then 2.根據id號來判斷用戶類型,若沒有則提示沒有此用戶 0:管理員 1-999:系統用戶 1000+:登陸用戶 不得不提下: bash -n usertype.sh 前期擅用是…

    Linux干貨 2016-08-21
欧美性久久久久