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命令来使规则生效。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。