最近由於項目需要,需要打開防火牆功能. 公司有 arm linux 3.0x86 linux 3.2x86 linux 2.4 的三個嵌入式.都需要打開防火牆功能. 執行“whereis iptables”命令,如果結果不為空,則說明防火牆軟體已安裝 輸入iptables -L 命令查看配置 此處為 ...
最近由於項目需要,需要打開防火牆功能.
公司有
arm linux 3.0
x86 linux 3.2
x86 linux 2.4
的三個嵌入式.都需要打開防火牆功能.
執行“whereis iptables”命令,如果結果不為空,則說明防火牆軟體已安裝
# whereis iptables
iptables: /sbin/iptables /usr/share/iptables /usr/share/man/man8/iptables.8.gz
root@wheezy-armel:~ 9:26:57
輸入iptables -L 命令查看配置
# iptables -L
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
root@wheezy-armel:~ 9:27:32
#
此處為空表示 沒有配置防火牆.
此處可參考:
#知識:
# http://blog.chinaunix.net/uid-9950859-id-98279.html
# http://blog.slogra.com/post-232.html
# http://www.cnblogs.com/bangerlee/archive/2013/02/27/2935422.html
# http://blog.chinaunix.net/uid-26495963-id-3279216.html
保存本文件,然後把本規則載入,使之生效,註意,iptables不需要重啟,載入一次規則就成了
sudo iptables-restore < /etc/iptables.test.rules
然後再查看最新的配置,應該所有的設置都生效了.
sudo iptables -L
第四步:保存生效的配置,讓系統重啟的時候自動載入有效配置
iptables提供了保存當前運行的規則功能
iptables-save > /etc/iptables.up.rules
結果執行時報錯.
# iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7
iptables: No chain/target/match by that name.
網上搜索是缺少內核模塊
root@wheezy-armel:~ 9:30:27
# lsmod |grep iptables
root@wheezy-armel:~ 9:31:04
#
是沒有輸出的.
root@wheezy-armel:~ 9:31:04
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables: No chain/target/match by that name.
後面發現是 有了-m state RELATED,ESTABLISHED 之類的就報錯.
就是對tcp 的連接狀態:
NEW ESTABLISHED RELATED INVALID 貌似都不能處理 . iptables -t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP
當然你如果想拒絕的更徹底:
iptables -t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT
如果用DROP可以成功,用REJECT會報錯.
最後改成了:
常用的ACTION:
DROP:悄悄丟棄
一般我們多用DROP來隱藏我們的身份,以及隱藏我們的鏈表
REJECT:明示拒絕
ACCEPT:接受
custom_chain:轉向一個自定義的鏈
DNAT
SNAT
MASQUERADE:源地址偽裝
REDIRECT:重定向:主要用於實現埠重定向
MARK:打防火牆標記的
RETURN:返回
在自定義鏈執行完畢後使用返回,來返回原規則鏈。
簡單說就是只能用低級功能,不能用高級功能.
最後修改後的命令文件是
# Generated by iptables-save v1.4.14 on Tue May 6 14:54:02 2014
#知識:
# http://blog.chinaunix.net/uid-9950859-id-98279.html
# http://blog.slogra.com/post-232.html
# http://www.cnblogs.com/bangerlee/archive/2013/02/27/2935422.html
# http://blog.chinaunix.net/uid-26495963-id-3279216.html
#1.PREROUTING (路由前)
#2.INPUT (數據包流入口)
##3.FORWARD (轉發管卡)
#4.OUTPUT(數據包出口)
#5.POSTROUTING(路由後)
*filter
:INPUT ACCEPT [1:40]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
#允許本地迴環介面(即運行本機訪問本機)
#-A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#允許本地迴環介面(即運行本機訪問本機)
-A INPUT -i lo -j ACCEPT
#允許所有本機向外的訪問
-A OUTPUT -j ACCEPT
# arm linux 3.0不可用...
#-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
#-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allows xxxx port 允許訪問 xxxx的埠
#xxx或xxx可能有多個埠,請在這兒添加.
#這兒是tcp
-A INPUT -p tcp -m tcp --dport 1234 -j ACCEPT
#這兒是udp
#-A INPUT -p udp -m udp --dport 1234 -j ACCEPT
# Allows Mysql port 允許訪問 mysql 的埠
#-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp --dport 3306 -j ACCEPT
# Allows SSH port
#***如果不允許這個,你就先去一邊哭會吧.
#***如果不允許這個,你就先去一邊哭會吧.
-A INPUT -p tcp --dport 22 -j ACCEPT
#-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
# 允許 ping 這個和禁用ping ,2選1.
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#禁用ping
#-A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
#記錄日誌功能,arm linux 3.0不可用...
#-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7
# arm linux 3.0不可用...
#-A INPUT -j REJECT --reject-with icmp-port-unreachable
# arm linux 3.0不可用...
#-A FORWARD -j REJECT --reject-with icmp-port-unreachable
#拒絕 未定義規則.(註意:如果22埠未加入允許規則,SSH鏈接會直接斷開。) REJECT
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT
# Completed on Tue May 6 14:54:02 2014
# Generated by iptables-save v1.4.14 on Tue May 6 14:54:09 2014