魏蓝

以梦为马

导航

简述iptables

一、简述iptables

1.由软件包iptables提供,当然还有iptables-services的服务

 

2.了解iptables前,我们需要知道netfilter中五个勾子函数和报文流向

1)netfilter里有五个勾子函数:INPUT、OUTPUT、PREROUTING、POSTROUTING、FORWARD

2)三种报文流向:

  1. 流入本机:PREROUTING-->INPUT-->用户进程
  2. 流出本机:用户进程-->OUTPUT-->POSTROUTING
  3. 转发: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

posted on 2022-04-05 19:34  魏蓝  阅读(106)  评论(0编辑  收藏  举报