linux防火墙iptables
Posted 遙遙背影暖暖流星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux防火墙iptables相关的知识,希望对你有一定的参考价值。
iptables 的功能与应用
一、Linux防火墙简介
yum -y install iptables-services.x86_64 #安装
必须先关闭firewalld防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
安装iptables防火墙
[root@localhost ~]# yum -y install iptables-services.x86_64 #安装
[root@localhost ~]# systemctl start iptables.service
[root@localhost ~]# systemctl enable iptables.service //设置iptables开机启动
1、规则链的简介
规则的作用:对数据包进行过滤或者处理
链的作用: 容纳各种防火墙规则
链的分类依据:处理数据包的不同时机2、
2、默认的五种规则链:
(1)INPUT: 处理入站数据包
(2)OUTPUT: 处理出站数据包
(3)FORWARD: 处理转发数据包
(4)POSTROUTING链: 在进行路由选择后处理数据包
(5)PREROUTING链: 在进行路由选择前处理数据包
注意,这里是大写的字母(-A跟链名新增)
3、规则表的简单介绍
规则表的作用: 容纳各种规则链
表的划分依据:防火墙规则的作用相似
4、默认的四种规则表
(1)raw表: 确定是否对该数据包进行状态跟踪
(2)mangle表: 为数据包设置标记
(3)nat表: 修改数据包中的源、目标lP地址或端口
(4)filter表: 确定是否放行该数据包(过滤)
-t 跟表明,不写默认为filter,最常使用
5、基本语法
注意事项:
(1)不指定表名时,默认指filter表
(2)不指定链名时,默认指表内的所有链
(3)除非设置链的默认策略,否则必须指定匹配条件
(4)选项、链名、控制类型使用大写字母,其余均为小写
(5)当前命令行修改的内容的需要保存在配置文件中才能永久保存
iptables-save > /etc/sysconfig/iptables //iptables-save可以看修改的规则,配置文件etc/sysconfig/iptables,
6、选项
管理选项
管理选项 用法示例
-A 在指定链末尾追加一条iptables -A INPUT
-I 在指定链中插入一条新的,未指定序号默认作为第一条iptables -I INPUT
-P指定默认规则iptables -POUTPUT ACCEPT
-D 删除iptables -t nat -D INPUT
-R 修改、替换某一条规则iptables -t nat -R INPUT
-L 查看iptables -t nat -L
-n 所有字段以数字形式显示(比如!任意ip地址是e.0.0.e而i不是anywhere,比如显示协议端口号而不是服务名)iptables -L -n,iptables -nL,iptables -vnL
-v 查看时显示更详细信息,常跟-L一起使用
–line-number 规则带编号 iptables -t nat -L -n --line-number /iptables -t nat -L --line-number
-F 清除链中所有规则 iptables -F
-X 清空自定义链的规则,不影响其他链iptables -X
-Z 清空链的计数器(匹配到的数据包的大小和总和) iptables -Z
-S 查看链的所有规则或者某个链的规则/某个具体规则后面跟编号 iptables -t nat -S、iptables -t nat -S POSTROUTING 1
控制选项(需大写)
ACCEPT 允许数据包通过
REJECT 拒绝数据包通过,必要时会给数据包发送端一个响应信息
DROP 直接丢弃数据包,不给任何回应
LOG 在/var/log/messages文件中记录日志信息,然后将数据包给下一条规则,它本身不处理数据包
-j +控制选项
添加新的规则
-A :在末尾追加一条规则
-I :在链的开头添加规则
7、顺序问题
1.规则表之间的顺序
raw→mangle→nat→filter
2.规则链之间的顺序
入站:PREROUTING→INPUT
出站: OUTPUT>POSTROUTING
转发:PREROUTING→FORWARD→POSTROUTING
3.规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理
每个表内从上到下执行
[root@localhost ~]# iptables -A INPUT -p icmp -s 192.168.100.6 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp -s 192.168.100.6 -J DROP
[root@localhost ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 67 packets, 4264 bytes)
num pkts bytes target prot opt in out source destination
1 6 504 ACCEPT icmp -- * * 192.168.100.6 0.0.0.0/0
#同时有拒绝和同意通过时 ,看谁在前面
2 2 168 DROP icmp -- * * 192.168.100.6 0.0.0.0/0
二,操作部分
1,查看
iptables -vnL #常用搭配-vnL
iptables -vnL --line-number #查看规则时并标序号
[root@localhost ~]# iptables -vnL
Chain INPUT (policy ACCEPT 856 packets, 349K bytes)
pkts bytes target prot opt in out source destination
2 168 DROP icmp -- * * 192.168.100.6 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 all -- * * 192.168.150.0/24 192.168.160.0/24
Chain OUTPUT (policy ACCEPT 673 packets, 143K bytes)
pkts bytes target prot opt in out source destination
0 0 icmp -- * * 192.168.200.0/24 0.0.0.0/0
[root@localhost ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 889 packets, 351K bytes)
num pkts bytes target prot opt in out source destination
1 2 168 DROP icmp -- * * 192.168.100.6 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 all -- * * 192.168.150.0/24 192.168.160.0/24
Chain OUTPUT (policy ACCEPT 703 packets, 145K bytes)
num pkts bytes target prot opt in out source destination
1 0 0 icmp -- * * 192.168.200.0/24 0.0.0.0/0
2、删除规则
iptables -D [表名] [序号]
iptables -D INPUT 1 #删除INPUT表中的序号为1的规则
//如果不加表明会删除所有的表,只有表没有序号则会删除整个表
iptables -t filter -F #清空所有规则
iptables -t filter -X #清空自定义的链
iptables -t filter -Z #清除计数器
#一般清除把三条全执行一次,保证不会有遗留
3,添加规则
-A 将规则追加到最后
-I 将该规则插入到最前面
-R 修改
-p 指定协议名,如tcp,udp,icmp,all等
-s 跟来源ip
-d 跟目标ip
-i 指定进站网卡
-o 指定出站网卡
! 表示非的意思
–sport 指定源端口
–dport 指定目标端口
-m multiport --sport (或者–dport ) 指定多个源端口或者目标端口,连续用:隔开,如20:80
-m mac --mac-source MAK地址 匹配mak地址
-m stare --state 使用连接状态的形式
常用连接状态
NEW:想要新建立联机的封包状态
ESTABLISHED:已经联机成功的联机状态
RELATED:表示这个封包是与我们主机发送出去的封包有关,可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定INVALID:无效的封包,例如I数据破损的封包状态
–icmp-type 匹配ICMP的类型
icmp类型:
Echo-Request:代码为8
Echo-Reply:代码为0
-m iprange --dst-range IP范围 #匹配多个ip地址
iptables -A INPUT -p icmp -j REJECT //不允许任何主机ping本主机
iptables -A INTPUT -p icmp -s 192.168.100.5 -j REJECT //不允许该ip的主机ping本主机
iptables -A OUTPUT -p icmp -d 192.168.100.6 -j DROP //不允许本主机ping该ip的主机
iptable -I OUTPUT ! -p icmp -j DROP .// 丢弃icmp外的所有进站的数据包,并该规则置顶为序列1
iptables -t filter -A INPUT -j REJECT //所有进站的包全部拒绝
修改-R
[root@localhost ~]# iptables -I INPUT -p icmp -s 192.168.100.8 -j REJECT #先限制
[root@localhost ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 12 packets, 768 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 REJECT icmp -- * * 192.168.100.8 0.0.0.0/0 reject-w
[root@localhost ~]# iptables -R INPUT 1 -j ACCEPT #将第一条改为 ACCEPT ,不常用,实际删除在重新添加更好
[root@localhost ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
1 10 640 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
iptables -A OUTPUT -p tcp -d 192.168.100.211 -j CROP
#禁止了对该ip的主机的tcp协议出站数据包
iptables -A FORWARDT -p tcp -s 192.168.100.6 -d 192.168.100.10 -j DROP
#禁止来自0.6的ip转发到0.10
iptables -A INPUT -i ens33 -j DROP #禁止了该网卡进来的所有数据包
iptables -A OUTPUT -o ens33 -j DROP #禁止了该网卡出去的所有数据包(似乎用的比较少)
iptables -A INPUT -i ens33 -s 192.168.100.10 -j DROP #禁止了来该ip的数据包从该网卡进入
iptables -A INPUT ! -p icmp -j DROP #禁止了非icmp的所有数据包
iptables -A INPUT -p tcp --dport 80 -s 192.168.254.100 -j DROP
#禁掉了来自该ip,以tcp80端口为目标端口的(端口时也要指定协议 -p)
iptables -A INPUT -p tcp -m multiport --dport 80,20,100 -s 192.168.254.100 -j DROP
#指定多个不连续端口
iptables -A INPUT -p tcp -m multiport --dport 20:100 -s 192.168.254.100 -j DROP
#指定多个连续端口,如20到80
iptables -A OUTPUT -p icmp -m iprange --dst-range 192.168.100.2-192.168.100.102 -j DROP
#指定多个连续的ip地址 --dst-range
[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type echo-request -s 192.168.245.211 -j DROP
#不允许请求包通过
[root@localhost ~]# iptables -vnL --line-number
Chain INPUT (policy ACCEPT 19 packets, 1240 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 DROP icmp -- * * 192.168.245.211 0.0.0.0/0 icmptype 8
iptables -A INPUT -p icmp -m mac --mac-source 00:0c:26:f5:ac:58 -j DROP
#指定mak地址
iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许响应请求连续放行
iptables -save #查看已修改的配置
iptables -save > /etc/sysconfig/iptables #保存至配置文件,则关机重启依旧存在
以上是关于linux防火墙iptables的主要内容,如果未能解决你的问题,请参考以下文章
Linux系统/etc/sysconfig目录下没有iptables文件