linux有两个防火墙机制,一个是selinux,一个是netfilter。

       selinux这种机制的限制太多,配置也特别繁琐,所以很少有人去应用它,我们一般都要把selinux关闭,以免引起不必要的麻烦。selinux可以用命令:setenforce 0临时关闭或者修改配置文件vim /etc/selinux/config将SELINUX=enforcing改为SELINUX=disabled永久关闭。

       下面主要讲netfilter防火墙:大家习惯叫它iptables,iptables是linux上特有的防火墙机制,功能非常强大。

       iptables有表table,table下有链chain,chain下有规则。

       table有filter,nat 和mangle三种表,最常用的就是filter表,我们可以用命令:iptables -t filter -nvL查看filter表:filter表有INPUT,FORWARD和OUTPUT三个链,INPUT链作用于进入本机的包,OUTPUT作用于本机送出的包,FORWARD链作用于和本机无关的包。我们可以用命令:iptables -t filter -I INPUT或者iptables -t filter -A INPUT来添加INPUT的规则:

       -I 表示插入规则会在INPUT下所有规则的最上面即最先生效;

       -A表示添加规则会在INPUT下所有规则的最下面即最后生效。

例如我们可以用下面的命令过滤掉ip为220.115.241.20的终端进入服务器的包:

       iptables -t filter -I INPUT -p tcp --dport 80 -s 220.115.241.20 -j REJECT

我们也可以用-D删除这条规则:

       iptables -t filter -D INPUT -p tcp --dport 80 -s 220.115.241.20 -j REJECT

下面是一些命令使用:

       iptables -F  //临时清除所有规则

       iptables -Z  //可以将规则匹配的包的数量和大小置为0

       service iptables stop  //可以临时清空所有规则

       service iptables start  //重新加载配置文件/etc/sysconfig/iptables里面的规则

       service iptables save  //可以将规则写入配置文件/etc/sysconfig/iptables重启规则依然生效

       iptables-save > 1.ipt  //将规则重定向1.ipt文件也就是备份

       iptables-restore < 1.ipt //规则备份还原

       iptables -I INPUT -p tcp -s 192.168.1.101 -j DROP //主机和虚拟机会断开连接,且主机无法通过终端登录虚拟机(192.168.1.101为主机内网ip)

       iptables -I INPUT -p icmp -s 192.168.1.101 -j DROP //主机和虚拟机互相ping不通

       iptables -I INPUT -p icmp --icmp-type 0 -j DROP  //只有物理机可以ping通虚机
       iptables -I INPUT -p icmp --icmp-type 8 -j DROP //只有虚机可以ping通物理机