LINUX下的iptables

LINUX下的iptables

iptables有三種鏈
1:INPUT (進來的鏈)
2:OUTPUT(出去的鏈)
3:FORWARD(轉發的鏈)
iptables -A INPUT -p icmp -j DROP

-A(添加一個鏈) -p 協議 -j(添加動作) 說明添加一個進來的鏈。協議是icmp動作拒絕。

iptables -L -n (用樹形結構來看一下iptables的設置)

iptables -F (清空iptables的設置) 後面也可以加上INPUT 或者是OUTPUT

iptables --help | more (察看iptables的幫助)

iptables -L -n --line-numbres(察看iptables規則的編號)

iptables -A INPUT -p tcp -d 192.168.0.123 --dport 21 -j DROP
這句話是拒絕到本機的21端口。可以分析到目的地址是本機的192.168.0.123
目的端口是本機的21的端口 -d(目的地址) --dport(目的端口)。


下面我們來做一個實驗來講一下具體的配置。

例:假如我們服務器想配置一個WEB服務器。我們爲了日後的維護。還要把SSHD打開

1:首先把所有規則DROP

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
P爲大寫

2 iptables -A INPUT -p tcp -d 192.168.0.123 --dport 22 -j ACCEPT
因爲想要別人連我們的22 目的地址爲本機的192.168.0.123 目的端口 22

3 iptables -A OUTPUT -p tcp -s 192.168.0.123 --sport 22 -j ACCEPT
我們還要給返回數據包那麼源地址是本機的192.168.0.123 源端口22

4 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
外面通過INPUT鏈來訪問本機的80端口,本機是目的地址 放開本機的IP和80端口

5 iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
本機還要返回數據包 ,通過OUTPUT鏈出去。源地址爲本機 源端口爲本機的80

6 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
還要把DNS放開,不然在DNS解析的時候會出現超時。做爲客戶端我們OUTPUT鏈出去
目的端口爲udp的53 這裏能解析服務器了。

7 iptables -A INPUT -p udp --sport 53 -j ACCEPT

對方接到包的時候返回包的時候INPUT的鏈進來 源地址端口爲UDP 53

8 如果本機既是客戶機又是服務器的時候。要加上
iptables -A INPUT -p udp --dport 53 -j ACCEPT
做爲服務器能夠解析INPUT進來的包 目的地址爲53
iptables -A OUTPUT -P udp --sport 53 -j ACCEPT
做爲服務器OUTPUT出去的包要經過源地址的 udp 53 端口

9 iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
  iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
這樣做可以讓本機的迴環設備可以使用

10 iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j
   ACCEPT
 
爲了安全我們在OUTPUT鏈中設置爲只有連過的包我們還通過。
-m(添加)與本機22端口 匹配的條件的出去

我們把iptables -A OUTPUT -p tcp -s 192.168.0.123 --sport 22 -j ACCEPT
這個不安全的包刪除掉。
iptables -D OUTPUT 1

11 iptables -A OUTPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

同樣把iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT 刪除掉
iptables -D OUTPUT 2

12 如果做爲22的客戶端

iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -P tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

13 service iptables save(保存設置)

----------------------------------------------------------------------

我們想要局域網上網
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT (局域網去訪問互聯網)
iptables -A FORWARD -d 192.168.0.0/24 -j ACCEPT (互聯網訪問局域網)
還要把/proc/sys/net/ipv4/ip_forward的值改爲1
也可以編輯一下/etc/sysctl.conf配置文件,在ipv4這一行把0改成1

SNAT :

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-soure 192.168.0.1

DNAT:

iptables -t nat -A PREROUTING -d 10.0.0.254 -p tcp --dport 80 -j DNAT--to-destination 192.168.0.1

我們用編腳本的方法來做一個

在BIN下面
1 touch adsl(adsl是文本文件)
chmod a+x adsl(其他人給予可執行權限)

vi adsl

#!/bin/bash
adsl-stop
adsl-start
echo "1" > /proc/sys/net/ipv4/ip_forward
route add default ppp0
/sbin/iptables -F (清空防火牆)
/sbin/iptables -t nat -F (清空NAT)
/sbin/depmod -a (加載所有的模塊)
/sbin/modprobe ip_tables (加載IP表)
/sbin/modprobe iptable_nat (加載iptable_nat)
/sbin/modprobe ip_nat_ftp (支持FTP)
/sbin/modprobe ipt_LOG(記錄日誌)
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE (IP僞裝代動局域網上網)

放在cd /etc/rc.d/
vi rc.local
加入 /bin/adsl

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章