#a. iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过 iptables这个代理,将用户的安全设定执行到对应的“安全框架中,这个安全框架”才是真正的防火墙,这个框架的名字叫 netfilter。 netfilter才是防火墙真正的安全框架( framework), netfilter位于内核空间。 iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。 netfilter/ iptables(下文中简称为 iptables)组成 Linux平台下的包过滤防火墙,与大多数的 Linux软件一样,这个包过滤防火墙是免费的,它可以代替品贵的商业防火墙解决方案完成封包过滤、封包重定向和网络地址转换(NAT)等功能
b. iptables中有5张表filter表: iptables中使用最穴泛的表,作用是进行过滤,也是由 filter表来决定一个数据包是否继续发往目的地址或者被拒绝nat表:用于网络地址转换,可以改变数据包的源地址或者目的地址mangle表:用于修改IP的头部信息,如修改TTLraw表:为 iptables提供了一种不经过状态追踪的机制,在大流量对外业务的服务器上使用这个表可以避免状态追踪带来的性能问题security表:提供在数据包中加入 SELINUX特性的功能。在实际应用中, security一般不常用
c. Centos7默认的防火墙不是 iptables,而是 firewall。通过如下命令检查是否安装 iptables,和安装 iptables 输入:service iptables status 上述命令的执行后能看到提示 iptables.service could not found,说明并没有安装,通过如下命令来停用并禁用 firewalld
#查看 iptables现有规则 iptables -L -n #先允许所有,不然有可能会杯具 iptables -P INPUT ACCEPT #清空所有默认规则 iptables -F #清空所有自定义规则 iptables -X #所有计数器归0 iptables -Z #允许来自于lo接口的数据包(本地访问) iptables -A INPUT -i lo -j ACCEPT 开放22端口 iptables-a INPUT -p tcp --dport 22 -J ACCEPT #开放21端口(FTP) iptables -A INPUT -p tcp --dport 21 -j ACCEPT #开放80端口(HTP iptables -A INPUT -p tcp --dport 80 -J ACCEPT #开放443端口(HTPS) iptables-A INPUT -p tcp --dport 443 -j ACCEPT #允许ping iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT #允许接受本机请求之后的返回数据 RELATED,是为FTP设置的 iptables -A INPUT -m state --state RELATED, ESTABLISHED -j ACCEPT #其他入站一律丢弃 iptables -P INPUT DROP #所有出站一律绿灯 iptables -P OUTPUT ACCEPT 所有转发一律丢弃 iptables -P FORWARD DROP #如果要添加内网ip信任(接受其所有TCP请求) iptables -A INPUT -p tcp-s 45 96. 174.68-j ACCEPT #过滤所有非以上规则的请求 iptables -P INPUT DROP #要封停一个IP,使用下面这条命令: iptables -I INPUT -s ”ip地址” -j DROP #要解封一个IP,使用下面这条命令 iptables -D INPUT -s “ip地址” -j DROP
e.Iptables 修改规则,Iptables 的规则修改除使用命令直接修改外也可以通过配置文件进行修改使用(/etc/sysconfig/iptables,在配置文件中所有命令不用加前置命令 iptables ),尽量采用脚本命令的模式
#清除所有规则 iptables -F #允许某些调用 localhost 的应用访问 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 1270.0.1 -d 127.0.0.1 -j ACCEPT #允许从其他地方ping iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT #允许从其他主机、网络设备发送MU调整报文 #在某些情况下,如:通过 ipsec vpn时,MTU需要动态减少 iptables -A INPUT -p icmp --icmp-type fragmentation-needesded -j ACCEPT #允许访问80、443端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT #仅允许某来源的IP通过TCP访问某端口,如内网1P10.0.1.17访问22端口iptables -A INPUT -p tcp -s 10. 0. 1.17 --dport 22 -j ACCEPT #仅允许某来源的IP通过UDP访问某端口,如内网IP10.0.1.17访问161端口iptables -A INPUT -p udp -s 10.0 1. 17 --dport 161 -j ACCEPT #禁止非开放白名单流量进入 iptables -A INPUT -j DROP #允许本机响应规则编号为01-08的数据包发出 iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT #禁止本机主动发出外部连接,可以有效地防止类似“反弹shel1”的攻击iptables -A OUTPUT -j DROP #禁止本机转发数据包 iptables -A FORWARD -j DROP
#注册iptables服务 systemctl enable iptables.service #开启服务 systemctl start iptables.service #查看状态 systemctl status iptables.service #重启防火墙 /etc/init.d/iptables restart systemctl restart iptables.service