iptables 防火墙基本配置和使用
iptables
iptables 意味 ip 表,看起来和 路由表,ARP 表挺像的,都是在网络传输过程中做一些查找和转换。在 Linux 上一般默认的防火墙就是 iptables ,但是在 Cent OS 7 中,防火墙变为了 firewall ,还是比较习惯用 iptables,所以把 firewall 换回了 iptables。
禁用 firewall ,安装使用 iptables。
在接下来的操作中都是默认使用 root 权限,如果不是,请加上 sudo
iptables 常用命令
iptables 组成
四表五链
表:
- filter 用于过滤,访问控制、规则匹配
- nat 用于nat功能,端口映射,地址转发
- mangle 用于用于对特定数据包的修改
- raw 原生的数据,raw 中的数据包不会被系统跟踪
一般前两张表用的比较多
链:
- INPUT 匹配目的地址为本机的
- OUTPUT 匹配向外转发的
- FORWARD 匹配本机转发的
- PREROUTING 路由前,用于修改目的地址(DNAT)
- POSTROUTING 路由后,用于修改源地址(SNAT)
iptables 命令
iptables [-t 表名 ] 命令 链名 匹配 -j 操作
默认使用 filter 表
命令
-A(append)追加一条规则-I(insert)插入一条规则,因为 iptables 的规则是从前往后匹配,找到匹配即停止,所以drop或reject操作一般是放在最后,那么如果在这里操作之后再用-A就不起作用,此时即使用-I。-L(list)显示所有的链的规则,一般查看 iptables 所有规则常用iptables -vnL--line-number显示规则序号,一般用来删除某条规则时需要先查看其序号-D(delete)删除一条规则,例如iptables –D INPUT 3,删除filter表INPUT链第三条规则-F(flush)清空规则-P(policy)设置某链默认规则-v(verbose)详细模式-n(numeric)显示每一条规则的端口,默认显示的是服务-4(ipv4) 设定 IPv4 的规则,默认是 IPv4-6(ipv6) 设定 IPv6 的规则-V(version)版本号
匹配条件
-i(input)进入接口 如 eth0,wlan0-o(output)出去接口-s(source)来源地址,例如-s 192.168.1.0/24,可单IP-d(destination)目的地址-p(protocol)协议类型(tcp、udp、icmp)-m(match)完全匹配-m state匹配状态--sport来源端口,例如--sport 1000,匹配源端口1000,也可以1000:3000指定范围--dport目的端口--state状态 NEW(收到的第一个包),ESTABLISHED(建立连接的包),RELATED(连接稳定的包),INVALID(不正确的包),UNTRACKED(不被显示的包)--mac来源MAC地址匹配--limit包速率匹配--multiport多端口匹配,端口以逗号分隔
操作
ACCEPT允许数据包通过DROP阻止数据包通过REJECT拒绝数据包通过,并返回报错信息SNAT应用 nat 表的 POSTROUTING 链,进行源地址转换,可单个、一组IPDNAT应用 nat 表的 PREROUTING 链,进行目的地址转换,可单个、一组IPMASQUERADE动态源地址转换,动态IP时使用
默认 iptables 配置文件位置
/etc/sysconfig/iptables简单使用
关闭 iptables ,开启 iptables,查看 iptables 状态,重启 iptables
iptables 的规则都是立即生效的,但是并没有保存下来,重启就会失效,如果需要长久使用,需要保存 iptables 规则。
在 Cent OS 7 上的 iptables 保存规则是
iptables-save > /etc/sysconfig/iptables
查看现有规则,并清空所有规则
允许本地访问,lo 数据包,并允许 ICMP 协议的数据包(ping)和 正常本地向外连接
允许 22 (ssh) 和 80 (http) 端口的访问
防止 CC,DOS 攻击,限制每个 IP 的并发连接数
防止 DDOS 攻击,限制每个 IP 每秒并发连接数
除开放的端口外,其他端口都禁止访问
在公司内部局域网 10.10.155.0/24, 10.10.188.0/24 能够访问服务器上任何服务。外网可以访问公司 HTTP 服务和 VPN 服务。
端口转发
NAT( Network Address Translation,网络地址转换 ) ,用来解决 Ipv4 地址不足的问题,可以通过少量的 公有 IP 来代表多数 私有 IP,一般通过 端口转发 来实现,在学校,公司,研究机构等场景应用较为广泛。
NAT 按照寻址方式来分有动态地址转换,静态地址转换,按照转换格式来分有源地址转换,目的地址转换。
- 源地址转换 (Source NAT,SNAT) 用于局域网内的用户向外访问公网,当局域网内部用户访问外网时,网关将其 源地址 的私有 IP 改为公有 IP
- 目的地址转换 (Destination,DNAT) 用于公网用户访问局域网内服务,当公网用户想访问内网服务时,网关将内网服务从 私有 IP 映射到 公有 IP 上,即可进行访问。
在使用 iptables 做 NAT 之前,先要确定一下电脑是否已经开启路由转发
如果为 0 则未开启,将其改为 1 即可。这个只是暂时的更改,同样的在重启之后就恢复默认值,若是想永久更改可以在
/etc/sysctl.conf 或 /etc/rc.d/rc.local 中写入 echo "1" > /proc/sys/net/ipv4/ip_forwardSNAT
在 有线网卡 eth0 上使用 动态地址转换,所有通过这个网卡的局域网用户都可以访问外网,eth0 。
静态地址转换
DNAT
通过公网端口映射内网端口来实现公网访问内网。
或者根据外网网卡做映射
这里不用再配 SNAT ,因为系统会根据数据包的来源再返还回去。
还可以做流量劫持,比如你在路由器上,内网设备都通过
br-lan,把内网设备网站劫持到你的路由器配置页面。
对 HTTPS 的站无效。
端口转发
本地端口转发
将本机的 8080 端口的服务转发到 80 端口上,只对外有效,在本机内并不做这个转换。
负载均衡
端口转发实现负载均衡
默认 iptables 配置
cent OS 上 iptables 的默认配置
参考链接
Iptables小总结
→_→ iptables
初识 iptables
CentOS 7 安装 iptables 防火墙
通过iptables实现端口转发和内网共享上网
iptables学习笔记:端口转发之“内网访问外网”
→_→ iptables
初识 iptables
CentOS 7 安装 iptables 防火墙
通过iptables实现端口转发和内网共享上网
iptables学习笔记:端口转发之“内网访问外网”
评论
发表评论