介绍
很多时候我们都叫他防火墙但是其实iptables不算是真正的防火墙,我们其实可以把它理解为一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的安全框架中,而这个安全框架才是真正的防火墙,这个框架名字叫netfilter。
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间,而iptables其实是一个命令行工具,位于用户空间,我们用这个工具去操作真正的框架。
iptables功能非常强大且免费,这里只记录限制IP的功能
对于iptables原理讲解我推荐下面这位博主的博客有兴趣可以去看看,博主讲的很通俗易懂
限制IP
(1)查看iptables规则
规则其实就是网络管理员预定义的条件,规则一般定义为“如果数据包头符合这样的条件,就这样处理这个数据包”
[root@RK356X:/]# 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
Chain blacklist (0 references)
target prot opt source destination
Chain icmppacket (0 references)
target prot opt source destination
Chain whitelist (0 references)
target prot opt source destination
现在这个规则表是空的还没有添加规则
(2)插入禁止访问的规则
[root@RK356X:/]# iptables -I INPUT -p tcp --dport 23 -j DROP
这句话的意思是禁止端口号为23的所有ip以tcp的方式访问
(3)对特定ip解除限制
[root@RK356X:/]# iptables -I INPUT -s 172.16.81.24 -p tcp --dport 23 -j ACCEPT
注意:如果是使用网络连接开发板的在输入命令的时候千万不能将这两个命令分开输入,不然在输入第一个限制访问的命令之后你自己的主机就不能访问开发板了,需要将两个命令合在一起输入可以用;或者是&& 连接两个命令
$ iptables -I INPUT -p tcp --dport 23 -j DROP && iptables -I INPUT -s 172.16.81.24 -p tcp --dport 23 -j ACCEPT
(4)查看规则
[root@RK356X:/]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 172.16.81.24 anywhere tcp dpt:telnet
DROP tcp -- anywhere anywhere tcp dpt:telnet
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain blacklist (0 references)
target prot opt source destination
Chain icmppacket (0 references)
target prot opt source destination
Chain whitelist (0 references)
target prot opt source destination
iptables的规则执行顺序是从上往下的,上面的例子的意思就是先ACCEPT 172.16.81.24 对23端口的访问,再拒绝其他ip对23端口的访问
(5)保存防火墙配置(否则重启失效)
$ service iptables save
(6)清除规则
# 清除所有规则
$ iptables -F