一、Iptables
iptables其实就是我们经常说的防火墙。通过防火墙我们都能做一些什么呢?
通过防火墙我们可以过滤一些非法请求,比如恶意攻击你的网站的包。它还可以限制哪些端口的数据包可以接收,比如我们可以控制只有22端口,80端口能对外提供服务。除此之外,还可以做端口映射,等等。接下来,我们来具体学一下iptables相关的知识。
二、iptables和netfilter的关系
iptables其实是操作防火墙的工具,真正实现防火墙功能的其实是netfilter。
三、selinux
selinux也是防火墙。但是这个东西比较霸道,会影响很多服务,所以一般我们把它禁用掉。
临时禁掉:
setenforce 0
查看当前selinux状态:
[root@ruanwenwu-0002 ~]# getenforce Disabled
如果需要永久停掉,需要修改selinux配置文件,然后重启:
vim /etc/sysconfig/selinux
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled #改这里 # SELINUXTYPE= can take one of three two values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
四、开启iptables服务
centos7默认开启的是firewalld防火墙,如果要开启netfilter防火墙的话,需要先关闭firewalld服务。
停止firewalld服务:
systemctl stop firewalld
停止自动启动:
systemctl disable firewalld
如果你的系统不是centos7可以忽略上面的两条命令。
关闭后,就可以启动netfilter服务了。如果没有安装的话,需要先安装。
安装iptables:
yum -y install iptables-services
加入启动:
systemctl enable iptables
启动服务:
systemctl start iptables
五、认识iptables的五个表和规则链
最常用的是filter表和nat表。默认情况下,我们运行iptables -nvL命令默认查看的是filter表。nat表的优先级比filter的优先级要高。
规则链:
1.INPUT——进来的数据包应用此规则链中的策略
2.OUTPUT——外出的数据包应用此规则链中的策略
3.FORWARD——转发数据包时应用此规则链中的策略
4.PREROUTING——对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)
5.POSTROUTING——对数据包作路由选择后应用此链中的规则
(所有的数据包出来的时侯都先由这个链处理)
六、iptables传包的过程
① 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
② 如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
③ 如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUTING链输出。