LINUX中IPTABLES防火墙使用
对于有公网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
LINUX中IPTABLES防火墙使用的更多相关文章
- Linux中iptables防火墙指定端口范围
我需要700至800之间的端口都能tcp访问 代码如下 复制代码 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7 ...
- 9.Linux之iptables防火墙
Linux之iptables防火墙 目录 Linux之iptables防火墙 iptables防火墙概述 netfilter和iptables之间的关系 netfilter iptables ipta ...
- linux中iptables的用法
iptables基本操作笔记 一.基本操作 #启动防火墙 service iptables start #停止防火墙 service iptables stop #重启防火墙 service ipta ...
- Linux中的防火墙(Netfilter、Iptables、Firewalld)
目录 Netfilter Iptables iptables做本地端口转发 Firewalld Netfilter Netfilter是Linux 2.4内核引入的全新的包过滤引擎,位于Linux内核 ...
- linux中的防火墙netfilter iptables
目录 一.Linux防火墙基础 1.1 ptables的表.链结构 1.2 数据包控制的匹配流程 二.编写防火墙规则 1.iptables的安装 2.1 基本语法.控制类型 一般在生产环境中设置网络型 ...
- linux 的iptables防火墙
.a文件就是*.o文件的集合, 是object文件的归档文件, 所以, 用nm -A ???.a看到的 symbolic符合名称都是 相应的, 包含的 .o文件.... linux 2.4内核中 ...
- (转载)Linux下IPTABLES防火墙的设定
(转载)http://www.jefflei.com/post/1760.html 1.iptables防火墙启动和停止 启动iptables防火墙时命令行输入 #service iptables s ...
- linux中iptables配置文件及命令详解详解
iptables配置文件 直接改iptables配置就可以了:vim /etc/sysconfig/iptables. 1.关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放. 下 ...
- linux中iptables配置文件及命令详解
转自:https://www.cnblogs.com/itxiongwei/p/5871075.html iptables配置文件 直接改iptables配置就可以了:vim /etc/sysconf ...
随机推荐
- swift的泛型貌似还差点意思
protocol Container { typealias ItemType mutating func append(item: ItemType) mutating func removelas ...
- 天池历届大赛答辩PPT及视频
1.阿里移动推荐算法: 答辩视频:https://space.dingtalk.com/c/gQHOEnXdXw 2.资金流入流出预测: 答辩视频:https://space.dingtalk.com ...
- 洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm
题目描述 The farm has many hills upon which Farmer John would like to place guards to ensure the safety ...
- poj3662Telephone Lines——二分+最短路
题目:http://poj.org/problem?id=3662 二分答案找出符合条件的最小长度: 假设了每个长度后,以这个为标准对每条边赋值,0为小于等于,1为大于,然后按这个值来跑最短路,在看看 ...
- 了解protected 以及公用、私有和受保护的继承
protected成员 可以认为protected访问标号是private 和public 的混合: 1.像private成员一样,protected成员不能被类的用户访问. 2.像public成员一 ...
- 【机器学习】文本分类——朴素贝叶斯Bayes
朴素贝叶斯主要用于文本分类.文本分类常见三大算法:KNN.朴素贝叶斯.支持向量机SVM. 一.贝叶斯定理 贝叶斯公式思想:利用已知值来估计未知概率.已知某条件概率,如何得到两个事件交换后的概率,也就是 ...
- 使用MeshLab的技巧总结(自己原创总结)
1.放大点的显示,Alt+wheel,即按住Alt键后使用鼠标滑轮改变点的显示大小.
- Trigonometric Function - Base
虽然三角函数是初中知识,比较简单,却也因为是初中知识,距现在比较久,难免忘掉一些,所以复习一下. 三角函数英文单词 正弦:sine 余弦:cosine 正切:tangent 余切:contangent ...
- JAVA企业级开发-JavaScript(02)
一.JavaScript介绍 Javascript语言诞生主要是完成页面的数据验证.因此它运行在客户端,需要运行浏览器来解析执行JavaScript代码. 特点: 交互性(它可以做的就是信息的动态交互 ...
- 求斐波那契数列第n位的几种实现方式及性能对比(c#语言)
在每一种编程语言里,斐波那契数列的计算方式都是一个经典的话题.它可能有很多种计算方式,例如:递归.迭代.数学公式.哪种算法最容易理解,哪种算法是性能最好的呢? 这里给大家分享一下我对它的研究和总结:下 ...