Linux防火墙之ipfilter(iptalbes)介绍使用

    上一篇介绍了tcpwraps的使用,这篇讲讲功能更强大的iptables的使用。

    ipfilter是内核的一个模块,要实现该模块的功能用的是iptables软件(2.6内核)。早期内核,2.2使用的是firewalladmin,2.4使用的是ipchains。

iptables涉及3张表,5个链。
    表:filter,nat,mangle
    链:INPUT,OUTPUT,FORWARD,POSTROUTING,PREROUTING。
    filter表用于过滤,涉及INPUT进入链,OUTPUT出去链,FORWARD转发链。
    nat表用于网络地址转换。源地址转换snat,让内网可以访问外网主机,要使用POSTROUTING链。目的地址转换 dnat,让外网可以访问内网主机,要使用PREROUTING。还涉及OUTPUT链。 
    
查看防火墙规则
    执行命令#iptables -L -n,不指定哪张表的话,默认查看filter表,-n表示禁止反向解析。
    执行命令#iptables -L -n --line-numbers,增加行号显示
    可以用-t来指定表,比如#iptables -t nat -L -n
    保存防火墙规则,执行命令#service iptables save

防火墙规则语法:
    iptables A|I|D INPUT|OUTPUT|FORWARD (n) -p tcp|udp|icmp (!) -s 192.168.30.0/24 -d --sport 1000 --dport 100:200 -j ACCEPT|DROP|REJECT
A:添加
I:插入
D:删除
n:用于指定插入/删除第几条。如果不指定的话,默认插入到第一条
p:指定协议
s:source源地址
!:表示除了
d:目的地址,一般用在FORWARD的时候
sport:源端口
dport:目的端口
100:200:表示100到200
j:表示匹配后的动作,ACCEPT允许,DROP丢弃,REJECT拒绝,会返回一个包。
    规则语法举例:
    iptables -A INPUT -p tcp -s 192.168.30.251 --dport 22 -j REJECT   //添加拒绝来自192.168.30.251的ssh连接
    iptables -D INPUT 6 //删除filter表INPUT链里的第六条
    iptables -I  INPUT 4 -p tcp -s 192.168.30.251 --dport 22 -j REJECT  //插入第四条
    iptables -I INPUT -p tcp -s 192.168.30.0/24 --dport 22 -j ACCEPT //允许来自192.168.30网段的ssh连接
    iptables -I INPUT 2 -p tcp -s 192.169.30.251 --dport 22 -j REJECT //拒绝192.168.30.251的ssh连接,但是由于上一条允许整个段的ssh连接,所以这时251照样可以ssh连上的!
     iptables -I INPUT 2 -p tcp  --dport 22 -j ACCEPT //不指定源地址,表示任意,即所有主机都可以ssh连接
    iptables -I INPUT 1 -p tcp ! -s 192.168.30.0/24 --dport 22 -j REJECT   //除了192.168.30网段,其他地址的ssh连接都拒绝
    iptables -I INPUT 1 -p tcp -m mac --mac=00:0c:29:6F:66:D4 --dport 22 -j REJECT // m:表示根据某种特性来匹配。即拒绝mac为00:0c:29:6F:66:D4的ssh连接。
    iptables -I INPUT 1 -p tcp -m mac --mac=00:0c:29:6F:66:D4 --dport 22 -j LOG //表示记录日志。

iptables规则匹配逻辑
    对同一个服务,在iptables中的规则是一条一条,从上往下匹配的。一旦匹配上后即不再往下匹配!如果所有的都没有匹配上,那么会执行默认策略。
    iptables -L -n --line-numbers查看,policy ACCEPT,表示的是默认允许。INPUT链中,默认规则第5条,是拒绝所有连接。 即防火墙默认是信内网不信外网,默认规则只对INPUT有限制,对OUTPUT没有限制。


    修改默认策略,可以执行#iptables -P INPUT DROP,默认策略是没有REJECT的,只能ACCEPT或者DROP。


    设置,实现自己不能主动出去,但别人可以连接进来。
    iptables -I OUTPUT 2 -p tcp -m state --state=ESTABLISHED --sport 22 -j ACCEPT  //根据状态了判断,ESTABLISHED状态,是已经建立了第一次握手后的对方访问。


常见的几种连接状态:

NEW:TCP第一次握手,是NEW
ESTABLISHED:TCP第二次握手
RELATED:用于FTP等会随机生成端口的情况
INVALID:表示除了以上三种状态,都是INVALID。这种连接为不知道的连接,应该要拒绝掉。

    命令行中敲的这些规则,只是临时生效,重启后就没了,要想永久生效,必须要保存到防火墙配置中,执行service iptables save


    执行#iptables -F命令,可以临时清空所有规则。

    如果是直接修改防火墙的配置文件,vi /etc/sysconfig/iptables,那么一定要重启防火墙,让其重新加载生效才行。

    执行命令#iptables-save >fw,备份规则。
    执行命令#iptables-restore < fw,恢复规则
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值