欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

LINUX中IPTABLES防火墙的基本使用教程

程序员文章站 2024-02-01 07:57:58
前言 对于有公网ip的生产环境vps,仅仅开放需要的端口,即采用acl来控制ip和端口(access control list). 这里可以使用linux防火墙netf...

前言

对于有公网ip的生产环境vps,仅仅开放需要的端口,即采用acl来控制ip和端口(access control list).

这里可以使用linux防火墙netfilter的用户态工具

iptables有4种表:raw–>mangle(修改报文原数据)–>nat(定义地址转换)–>filter(定义允许或者不允许的规则)

每个表可以配置多个链:

* 对于filter来讲一般只能做在3个链上:input ,forward ,output

* 对于nat来讲一般也只能做在3个链上:prerouting ,output ,postrouting

* 对于mangle是5个链都可以做:prerouting,input,forward,output,postrouting

filter表的三个链详解:

* input链: 过滤所有目标地址是本地的数据包

* forward链: 过滤所有路过本机的数据包

* output链: 过滤所有由本机产生的数据包

举一反三学习:

【例】:过滤所有的访问:
iptables -t filter -a input -s 0.0.0.0/0.0.0.0 -d x.x.x.x -j drop

【例】:对ssh的22端口开放
iptables -i input -s 0.0.0.0/0.0.0.0 -d x.x.x.x -p tcp --dport 22 -j accept

【例】:开放80端口
iptables -a input -s 0.0.0.0/0.0.0.0 -d x.x.x.x -p tcp --dport 80 -j accept


【例】:来自124的数据禁止通过174 ip
iptables -a output -p tcp -s 45.32.102.124 -d 157.240.22.174 -j reject 

【例】打印当前生效的iptables规则(-n显示ip地址)
iptables -l -n 

linux中iptables防火墙指定端口范围

iptables -i input -p tcp --dport 700:800 -j drop 
iptables -i input -s 11.129.35.45 -p tcp --dport 700:800 -j accept

一、 700:800 表示700到800之间的所有端口

二、 :800 表示800及以下所有端口

三、 700: 表示700以及以上所有端口

这个例子作用是,700-800端口,仅仅对 11.129.35.45 ip开放,白名单机制。

snat、dnat的iptables用途:

源地址转换(snat): iptables -t nat -a -s 私ip -j snat –to-source 公ip

目的地址转换(dnat): iptables -t nat -a -prerouting -d 公ip -j dnat –to-destination 私ip

iptables命令详解

iptables常用的命令选项有:

-p:设置默认策略的(设定默认门是关着的还是开着的)如:iptables -p input (drop|accept)
-f: flash,清空规则链的(注意每个链的管理权限)
-n:new 支持用户新建一个链,比如:iptables -n inbound_tcp_web 表示附在tcp表上用于检查web的。
-x:用于删除用户自定义的空链
-z:清空链
-a:追加
-i num : 插入,把当前规则插入为第几条
-r num:replays替换/修改第几条规则
-d num:删除,明确指定删除第几条规则
-l:查看规则详细信息,比如"iptables -l -n -v"
-s 表示源地址ip
-d 表示目标地址ip
drop 表示丢弃(拒绝)
accept 表示接受
-p 表示适用协议,如tcp

其他更多例子:

【例】添加iptables规则禁止用户访问域名为www.sexy.com的网站。

iptables -i forward -d www.sexy.com -j drop

【例】添加iptables规则禁止用户访问ip地址为20.20.20.20的网站。

iptables -i forward -d 20.20.20.20 -j drop

【例】添加iptables规则禁止ip地址为192.168.1.x的客户机上网。

iptables -i forward -s 192.168.1.x -j drop

【例】添加iptables规则禁止192.168.1.0子网里所有的客户机上网。

iptables -i forward -s 192.168.1.0/24 -j drop

【例】禁止192.168.1.0子网里所有的客户机使用ftp协议下载。

iptables -i forward -s 192.168.1.0/24 -p tcp –dport 21 -j drop

【例】强制所有的客户机访问192.168.1.x这台web服务器。

iptables -t nat -i prerouting -i eth0 -p tcp –dport 80 -j dnat –to-destination 192.168.1.x:80

【例】禁止使用icmp协议。

iptables -i input -i ppp0 -p icmp -j drop

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。