千家信息网

iptables防火墙

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,iptables防火墙linux中防火墙分三张表,分别是filter,nat,mangle。filter表是用来做基于IP地址过滤的,nat表是用来进行网络地址转换,mangle表是用来给某些应用程序
千家信息网最后更新 2024年09月22日iptables防火墙

iptables防火墙

linux中防火墙分三张表,分别是filter,nat,mangle。filter表是用来做基于IP地址过滤的,nat表是用来进行网络地址转换,mangle表是用来给某些应用程序(http和https)打标记。

filter表分为INPUT链,OUTPUT链,FORWARD链。INPUT链是指目标地址是自己,OUTPUT链是指源地址是自己,FORWARD链只是提供转发功能(在linux内核中需打开转发功能)。

nat表分为POSTROUTING链,PREROUTING链,POSTROUTING链是指先路由然后再NAT,PREROUTING链是指先NAT然后再路由。

mangle表是用来给相应协议打标记用的。分为POSTROUTING链,PREROUTING链。

实例:

一 包过滤型防火墙

1.设置防火墙的默认规则

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

2.iptables的分层设计

iptables -N NET1 为防火墙新建一条链,链名NET1。

iptables -A INPUT -s 192.168.1.0/24 -j NET1 跳转到NET1链.

iptables -A NET1 -s 192.168.1.254 -j DROP 设置更详细的规则。

3. 删除一个链

iptables -D INPUT 删除INPUT链(与NET1链有关)

iptables -X NET1 删除NET1链

iptables -F NET1 清空链规则

-F是清空指定某个 chains 内所有的 rule 设定。比方 iptables -F -t filter,那就是把 filter table 内所有的INPUT/OUTPUT/FORWARD chain 设定的规则都清空。

-X是删除使用者自订 table 项目,一般使用 iptables -N xxx 新增自订 chain 后,可以使用 iptables -X xxx 删除之。

-D是删除某个链。

二 状态检测型防火墙
NEW 新建连接
  ESTABLISH 连接已经建立

RELATED 由某个连接派生的子连接(如ftp派生的子连接)

iptables -A INPUT -m state --state RELATED,ESTABLISH -j ACCEPT

iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT (25端口允许)

iptables -A INPUT -m state --state NEW -j DROP 其他端口都拒绝。

三 基于应用代理防火墙

在Linux 上,可以用iptables 直接将对Web 端口80 的请求直接转发到Squid 端口3128,由Squid 接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令:

iptables -t nat -A PREROUTING -s 192.168.0.0/32 -p tcp --dport 80 -j REDIRECT --to-ports 3128

所有设置完成后,关键且重要的任务是访问控制。Squid 支持的管理方式很多,使用起来也非常简单(这也是有人宁愿使用不做任何缓存的 Squid,也不愿意单独使用iptables 的原因)。

四 NAT地址转换

iptables -t nat -A POSTROUTING -s 1922.168.1.0/24 -o eth2 -j SNAT --to-source 1.1.1.1

iptables -t nat -A PREROUTING -d 2.2.2.2 -p tcp --dport 80 -i eth2 -j DNAT --to-destination 192.168.0.1:80

iptables -t nat -A POSTROUTING -s 1922.168.1.0/24 -o eth2 -j MASQUERADE(用于IP地址不固定)

iptables -F -t nat 清空nat表的规则

五 保存iptables规则

service iptables save

规则保存在/etc/sysconfig/iptables

注意:如果把/etc/sysconfig/iptables文件进行分发之后,每台系统都要执行/sbin/service iptables restart命令来使规则生效。

0