咱们从事IT的部分人员中,常常会与Linux系统打交道,而Linux中有一个很是重要的包过滤工具,它就是防火墙。大多数人员可能对这块知识不甚了解,亦或是只知道其中一些简单的配置。本节博主将为你们简单的讲述防火墙相关的知识,帮助小白们快速的配置Linux防火墙技术iptables。centos
Iptables也叫netfilter是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用很是灵活,能够对流入、流出、流经服务器的数据包进行精细的控制。安全
1、iptables中的“四表五链”及“堵通策略”服务器
A.“四表”是指,iptables的功能——filter, nat, mangle, raw.网络
filter, 控制数据包是否容许进出及转发(INPUT、OUTPUT、FORWARD),能够控制的链路有input, forward, outputapp
nat, 控制数据包中地址转换,能够控制的链路有prerouting, input, output, postroutingssh
mangle,修改数据包中的原数据,能够控制的链路有prerouting, input, forward, output, postroutingtcp
raw,控制nat表中链接追踪机制的启用情况,能够控制的链路有prerouting, output工具
注:在centos7中,还有security表,不过这里不做介绍post
B.“五链”是指内核中控制网络的NetFilter定义的五个规则链,分别为centos7
PREROUTING, 路由前
INPUT, 数据包流入口
FORWARD, 转发关卡
OUTPUT, 数据包出口
POSTROUTING, 路由后
C.“堵通策略”是指对数据包所作的操做,通常有两种操做——“通(ACCEPT)”、“堵(DROP)”,还有一种操做很常见REJECT(此种配置有可能会暴露服务器的存在).
谈谈REJECT和DROP之间的区别,Jack写了一封信,向Rose示爱。Rose若是不肯意接受,她能够不回应Jack,这个时候Ming不肯定Rose是否接到了信;Rose也能够一样写一封信,在信中明确地拒绝Jack。前一种操做就如同执行了DROP操做,然后一种操做就如同REJECT操做。
2、经常使用iptables防火墙配置
#查看帮助 iptables -h man iptables 列出iptables规则 iptables -L -n 列出iptables规则并显示规则编号 iptables -L -n --line-numbers 列出iptables nat表规则(默认是filter表) iptables -L -n -t nat 清除默认规则(注意默认是filter表,若是对nat表操做要加-t nat) #清除全部规则 iptables -F 查看iptables状态 service iptables status 开启/关闭iptables service iptables start service iptables stop 查看iptables是否开机启动 chkconfig iptables --list 设置iptables开机启动/不启动 chkconfig iptables on chkconfig iptables off #重启iptables发现规则依然存在,由于没有保存 service iptables restart #保存配置 service iptables save /etc/rc.d/init.d/iptables save #禁止ssh登录(若果服务器在机房,必定要当心) iptables -A INPUT -p tcp --dport 22 -j DROP #删除规则 iptables -D INPUT -p tcp --dport 22 -j DROP -A, --append chain 追加到规则的最后一条 -D, --delete chain [rulenum] Delete rule rulenum (1 = first) from chain -I, --insert chain [rulenum] Insert in chain as rulenum (default 1=first) 添加到规则的第一条 -p, --proto proto protocol: by number or name, eg. 'tcp',经常使用协议有tcp、udp、icmp、all -j, --jump target 常见的行为有ACCEPT、DROP和REJECT三种,但通常不用REJECT,会带来安全隐患 注意:INPUT和DROP这样的关键字须要大写 #禁止192.168.33.0网段从eth0网卡接入 iptables -A INPUT -p tcp -i eth0 -s 192.168.33.0 -j DROP iptables -A INPUT -p tcp --dport 22 -i eth0 -s 192.168.33.61 -j ACCEPT #禁止ip地址非192.168.10.10的全部类型数据接入 iptables -A INPUT ! -s 192.168.10.10 -j DROP #禁止ip地址非192.168.10.10的ping请求 iptables -I INPUT -p icmp --icmp-type 8 -s 192.168.50.100 -j DROP #扩展匹配:1.隐式扩展 2.显示扩展 #隐式扩展 -p tcp --sport PORT 源端口 --dport PORT 目标端口 #显示扩展:使用额外的匹配规则 -m EXTENSTION --SUB-OPT -p tcp --dport 22 与 -p tcp -m tcp --dport 22功能相同 state:状态扩展,接口ip_contrack追踪会话状态 NEW:新的链接请求 ESTABLISHED:已创建的链接请求 INVALID:非法链接 RELATED:相关联的链接 #匹配端口范围 iptables -I INPUT -p tcp --dport 22:80 -j DROP #匹配多个端口 iptables -I INPUT -p tcp -m multiport --dport 22,80,3306 -j ACCEPT #不容许源端口为80的数据流出 iptables -I OUTPUT -p tcp --sport 80 -j DROP