iptables
Posted xgmxm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables相关的知识,希望对你有一定的参考价值。
iptables介绍
netfilter --> iptables 防火墙名字是netfilter iptables是命令 1.filter(过滤包,用的最多的,) 内建三个链: 1.INPUT作用于进入本机的包 2.OUTPUT作用于本机送出的包 3.FORWARD作用于那些跟本机无关的包 2.nat (主要用处是网络地址转换) 3.mangle (用于给数据包打标记,然后根据标记去操作哪些包。这个表几乎不怎么用。)例1: iptables -t filter -A INPUT -s 192.168.1.128 -p icmp -j DROP #限制192.168.1.128ip ping (-t filter指定哪个表,默认就是filter表,如例2) 例2: iptables -A INPUT -s 192.168.1.128 -p icmp -j DROP
iptables命令的管理控制选项
-A 在指定链的末尾添加(append)一条新的规则 -D 删除(delete)指定链中的某一条规则,可以按规则序号和内容删除 -I 在指定链中插入(insert)一条新的规则,默认在第一行添加 -R 修改、替换(replace)指定链中的某一条规则,可以按规则序号和内容替换 -L 列出(list)指定链中所有的规则进行查看 -E 重命名用户定义的链,不改变链本身 -F 清空(flush) -N 新建(new-chain)一条用户自己定义的规则链 -X 删除指定表中用户自定义的规则链(delete-chain) -P 设置指定链的默认策略(policy) -Z 将所有表的所有链的字节和数据包计数器清零 -n 使用数字形式(numeric)显示输出结果 -v 查看规则表详细信息(verbose)的信息 -V 查看版本(version) -h 获取帮助(help)
iptables命令详解
例:iptables -A INPUT -s 10.72.11.12 -p tcp --sport 1234 -d 10.72.137.159 --dport 80 -j DROP -t filter 注解:-t 后跟表名 不用这个参数默认是filter -A 增加一条规则 -I 表未插入一条规则 -D 表示删除一条规则 后面的INPUT是链名称,还可以是OUTPUT,FORWORD -s 后跟源地址 -p 协议(tcp,udp,icmp) (指定协议,可以不指定端口) --sport/--dport 后跟源端口/目标端口 (指定端口必须,指定协议) 目标端口及服务器端口 -d 后跟目的ip(主要针对内网或者外网) -j 后跟动作 (DROP 把包选择 REJECT 拒绝包 ACCEPT 允许包)
iptables防火墙规则的清空、保存与恢复、清空流量计数器、更改预设策略
iptables -F #清空规则 iptables-save > /etc/sysconfig/iptables #备份规则 iptables-restore < /etc/sysconfig/iptables #恢复规则 iptables -Z #把包(pkts)以及流量计数器(bytes)置零(这个很有用) iptables -P INPUT DROP #更改预设策略 如果在远程连接服务器,千万别随便敲这条命令,敲完就段线。(相当于启用白名单) Chain INPUT (policy DROP 3 packets, 349 bytes)
查看规则
[[email protected] ~ 17:27:50&&14]#iptables -nvL Chain INPUT (policy ACCEPT 61 packets, 4080 bytes) #红色字体是INPUT表的默认规则, iptables -P INPUT DROP(更改默认规则) pkts bytes target prot opt in out source destination 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 36 packets, 4984 bytes) pkts bytes target prot opt in out source destination [[email protected] ~ 17:27:26&&13]#iptables -nvL --line-numbers #显示规则序号,删除规则号根据num Chain INPUT (policy ACCEPT 23 packets, 1556 bytes) num pkts bytes target prot opt in out source destination 1 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 14 packets, 2104 bytes) num pkts bytes target prot opt in out source destination
添加规则
iptables -I INPUT -s 2.2.2.2 -p tcp --dport 80 - j DROP 把来自2.2.2.2并且是tcp协议到本机的80端口的数据包丢掉。--dport/--sport 必须要和-p选项一起使用,否则会出错。(-I在最前面) iptables -A INPUT -s 2.2.2.2 -p tcp --dport 22 - j DROP 把来自2.2.2.2并且是tcp协议到本机的80端口的数据包丢掉。--dport/--sport 必须要和-p选项一起使用,否则会出错。(-A追加) iptables -I INPUT -p icmp --icmp-type 8 -j DROP #注解:--icmp-type 这个选项跟 -p icmp一起使用的,后面指定类型编号。8指的是在本机ping通其他机器 ,而其他机器不能ping通本机。(这个有必要记一下) iptables -I INPUT -s 124.115.0.0/16 -j DROP #封IP段的命令 iptables -t nat -A PREROUTING -p tcp --dport 7979 -j REDIRECT --to-ports 8080 #端口映射(需要开启echo ‘1‘ > /proc/sys/net/ipv4/ip_forward)
删除规则
iptables -D INPUT 1 #根据规则号删除规则
以上是关于iptables的主要内容,如果未能解决你的问题,请参考以下文章