最近由于项目需要,需要打开防火墙功能.
公司有
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 [email protected]:~ 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 [email protected]:~ 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.
网上搜索是缺少内核模块
[email protected]:~ 9:30:27 # lsmod |grep iptables [email protected]:~ 9:31:04 #
是没有输出的.
[email protected]:~ 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