简述iptables
一、简述iptables
1.由软件包iptables提供,当然还有iptables-services的服务
2.了解iptables前,我们需要知道netfilter中五个勾子函数和报文流向
1)netfilter里有五个勾子函数:INPUT、OUTPUT、PREROUTING、POSTROUTING、FORWARD
2)三种报文流向:
- 流入本机:PREROUTING-->INPUT-->用户进程
- 流出本机:用户进程-->OUTPUT-->POSTROUTING
- 转发:PREROUTING-->FORWARD-->POSTROUTING
3.iptables的组成
1)五个table和五个chain及一些规则
2)chain分为内置和自定义链
3)五个table:filter、nat、mangle、raw、security
filter:默认表,过滤规则表,根据预定义的规则过滤符合条件的数据包,
nat:地址转换表
mangle:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制(MAC)网络规则,由Linux安全模块(如SELinux)实现
4.iptables格式
查看man帮助:
[root@centos7 ~]# man 8 iptables
格式:
iptables [-t table] {-A|-C|-D} chain rule-specification
添加一条规则:
[root@centos7 ~]# iptables -t filter -A INPUT -s 10.0.0.19 -j DROP
-t:table
-A:增加规则
-s:源(source)地址
-j:规则
查看table的规则
[root@centos7 ~]# iptables -t filter -vnL
5.扩展模块
1)查看扩展模块说明
man iptables-extensions
2)主要说明state扩展
state 扩展模块,可以根据”连接追踪机制“去检查连接的状态,较耗资源
conntrack机制:追踪本机上的请求和响应之间的关系
状态类型:
NEW:新发出请求;连接追踪信息库中不存在此连接的相关信息条目,因此,将其识别为第一次发
出的请求
ESTABLISHED:NEW状态之后,连接追踪信息库中为其建立的条目失效之前期间内所进行的通信
状态
RELATED:新发起的但与已有连接相关联的连接,如:ftp协议中的数据连接与命令连接之间的关
系
INVALID:无效的连接,如flag标记不正确
UNTRACKED:未进行追踪的连接,如:raw表中关闭追踪
3)已经追踪到的并记录下来的连接信息库
cat /proc/net/nf_conntrack
4)查看连接跟踪有多少条目
cat /proc/sys/net/netfilter/nf_conntrack_countcat /proc/sys/net/netfilter/nf_conntrack_count
5)连接过多的解决方法两个:
加大nf_conntrack_max 值
vi /etc/sysctl.conf net.nf_conntrack_max = 393216 net.netfilter.nf_conntrack_max = 393216
降低 nf_conntrack timeout时间
vi /etc/sysctl.conf net.netfilter.nf_conntrack_tcp_timeout_established = 300 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120 iptables -t nat -L -n
6)范例:不允许远程主机 10.0.0.19 连接本机,但本机可以连接10.0.0.19
iptables -t filter -A INPUT -d 10.0.0.20 -s 10.0.0.19 -m state --state NEW -p tcp -j DROP
6.规则优化最佳实践
1)安全放行所有入站和出站的状态为ESTABLISHED状态连接,建议放在第一条,效率更高
2)谨慎放行入站的新请求
3)有特殊目的限制访问功能,要在放行规则之前加以拒绝
4)同类规则(访问同一应用,比如:http ),匹配范围小的放在前面,用于特殊处理
5)不同类的规则(访问不同应用,一个是http,另一个是mysql ),匹配范围大的放在前面,效率更高
6)应该将那些可由一条规则能够描述的多个规则合并为一条,减少规则数量,提高检查效率
7)设置默认策略,建议白名单(只放行特定连接)
iptables -P,不建议,容易出现“自杀现象”
规则的最后定义规则做为默认策略,推荐使用,放在最后一条
7.iptables规则保存
使用iptables命令定义的规则,手动删除之前,其生效期限为kernel存活期限
持久保存规则:
CentOS 7,8 iptables-save > /PATH/TO/SOME_RULES_FILE CentOS 6 #将规则覆盖保存至/etc/sysconfig/iptables文件中 service iptables save
加载规则
CentOS 7,8 重新载入预存规则文件中规则:
iptables-restore < /PATH/FROM/SOME_RULES_FILE
可以将加载规则的命令写入到/etc/rc.d/rc.local中,开机自动执行,也可以写在脚本中,当然也可以安装iptables-services服务,启动这个服务它会自动加载/etc/sysconfig/iptables的内容到规则。
写于2022-4-5-19:33 weilan