一、Linux的防火墙
防火墙是日常应用中一个重要的维护内容,从防火墙开始我们才真正接触生产环境,网络安全越来越受重视,学好这部分内容是学好运维的重要一步。
一般情况下,桌面级环境中很少有人关注过防火墙,甚至杀毒软件都不装,对防火墙的操作当然不熟悉。真实生产环境中不可能不开防火墙。
linux的防火墙在centos6(含)前是netfilter,centos7开始使用新的firewalld,一般的我们从netfilter学起,firewalld是兼容netfilter的规则的。
二、netfilter学习环境搭建
因为centos7默认的防火墙是centos7,所以我们先要把firewalld停用,然后在换成centos6的netfiler,前期准备工作:关闭selinux、关闭centos7带的firewalld然后启动netfilter。
(一)关闭selinux功能
1、临时关闭
setenforce 0 关闭命令
getenforce 查看selinux状态命令
只要确认getenforce状态是Permissive就可以了。只是暂时关闭,系统重启后仍会开启,需要通过修改配置文件方式永久关闭。
2、永久关闭
永久关闭该功能需要修改selinux的配置文件
vi /etc/selinux/config
将SELINUX=enforcing改为disabled
注意不能改成下面那个SELINUXTYPE=disabled,否则系统会启动不了。
(二)关闭centos7的firewalld
systemctl stop firewalld #关闭firewalld功能
systemctl disable firewalld #停止firewalld开机启动
操作截图
这一步不像上面那步有操作过程提示,只要没报错就ok了。
(三)启动centos6或者5支持的netfilter防火墙
yum install iptables-services #安装netfilter功能,也就是常说的iptables,注意包名末尾是iptables和services复数形式,敲成iptables-service就没这个包
systemctl enable iptables #设置开机启动iptables服务
systemctl start iptables #开启iptables程序
iptables -nvL #查看iptables的默认规则
操作截图
1是设置开机启动,2是在当前bash下启动iptables,3是查看iptables的默认规则。
三、netfilter的表(table)与链条(chain)
netfilter使用5个表与5个链条控制网口传输过来的包的,哪些需要丢弃,哪些允许进来等等。
5个表分别是:
filter:主要用于过滤数据包,是系统预设的表。内含3个链:INPUT、OUTPUT、FOWARD,就是说数据包只要在这三个链中,你就可以用filter表中的规则来处理他。
nat:主要用于网络地址转换,内含3个链:PREROUTING、OUTPUT、POSTROUNTING。
mangle:主要用于给包做标记,然后根据标记处理包。内含全部五个链
raw:可以用来设定不被系统跟踪的数据包,这个表可以指定某些端口进来的数据不被跟踪。内含2个链:PREROUNTING和OUTPUT
security:在Centos6中没有,用于强制访问控制的网络规划,暂时先不研究。
5个链分别是:
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机。
OUTPUT:由本机产生,向外转发。
POSTROUTING:发送到网卡接口前
netfilter启动后,网络数据包在系统中的流向图:(转载至wiki)
四、iptables命令
iptables用于操控netfilter防火墙,他能直接添加、修改或者删除PREROUTING、INPUT、FORWARDING、OUTPUT、POSTROUTING5个链中的规则,达到过滤数据包的目的
iptables命令写法
iptables -t 表名 <-A/I/D/R> 链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作
选项含义
-t<表>:指定要操纵的表;
-A:向链规则中添加条目;
-D:从链规则中删除条目;
-I:向链规则中插入条目;
-R:替换链规则中的条目;
-L:显示链规则中已有的条目;
-F:清空防火墙规则;
-Z:清空链规则中包计数器与连接计数器;
-N:创建新的用户自定义规则链;
-P:定义链规则中的默认处置方式,如;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型,;
-s:指定要匹配的数据包源ip地址;
-j+动作:如何处理过滤出来的包,常见的有ACCEPT,;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
--dport
--sport
表名包括:
raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
nat:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。
链名包括:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。
动作包括:
ACCEPT:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录
五、iptables操作示例
1、显示、清空与保存操作现有的netfilter规则
iptables -nvL #显示现有规则,分表显示的
iptables -F #清空所有规则
iptables -Z #置零计数器,用于网络攻击分析
service iptables save #将规则保存到/etc/sysconfig/iptables文件中
systemctl restart iptables.service #重启iptables服务使指定的规则生效
iptables的默认规则保存在/etc/sysconfig/iptables文件下
2、链处理规则的增加、删除与修改
防火墙规则添加到链规则尾部
iptables -A INPUT
防火墙规则添加到链规则头部
删除防火墙某一条规则
修改防火墙默认链处理规则
3、
原文地址:http://blog.51cto.com/11934539/2065176