实验环境:Centos7.4
实验目的:掌握linux的常用命令-IPtables命令的用法
实验步骤:
写下这个题目的时候,我内心是拒绝的,iptables这个命令好讲,但是要把他讲明白,还真是不容易,东西多且杂,没有一点功底很难讲好,而我也只是将自己日常学习记录了下来,个人愚见,贻笑大方。有哪里说错了还请批评指正。
先来点简单的,上图,且看iptables的命令有哪些?
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型] 参数
一、COMMAND:
-A 顺序添加,添加一条新规则
-I 插入,插入一条新规则 -I 后面加一数字表示插入到哪行
-R 修改, 删除一条新规则 -D 后面加一数字表示删除哪行
-D 删除,删除一条新规则 -D 后面加一数字表示删除哪行
-N 新建一个链
-X 删除一个自定义链,删除之前要保证次链是空的,而且没有被引用
-L 查看
-E 重命名链
-F 清空链中的所有规则
-Z 清除链中使用的规则
-P 设置默认规则
二、MATCH:
隐含匹配:
-p tcp udp icmp
--sport指定源端口
--dport指定目标端
-s 源地址
-d 目的地址
-i 数据包进入的网卡
-o 数据包出口的网卡
扩展匹配:
-m state --state 匹配状态的
-m mutiport --source-port 端口匹配 ,指定一组端口
-m limit --limit 3/minute 每三分种一次
-m limit --limit-burst 5 只匹配5个数据包
-m string --string --algo bm|kmp --string"xxxx" 匹配字符串
-mtime--timestart 8:00 --timestop 12:00 表示从哪个时间到哪个时间段
-mtime--days 表示那天
-m mac --mac-source xx:xx:xx:xx:xx:xx 匹配源MAC地址
-m layer7 --l7proto qq 表示匹配腾讯qq的 当然也支持很多协议,这个默认是没有的,需要我们给内核打补丁并重新编译内核及iptables才可以使用 -m layer7 这个显示扩展匹配
三、TARGET\JUMP:
-j
DROP 直接丢掉
ACCEPT 允许通过
REJECT 丢掉,但是回复信息
LOG --log-prefix"说明信息,自己随便定义" ,记录日志
SNAT 源地址转换
DNAT 目标地址转换
REDIRECT 重定向
MASQUERAED 地址伪装
举25个例子,例子均来源于网络内容
1. 删除已有规则
在开始创建iptables规则之前,你也许需要删除已有规则。
命令如下,两个命令均可以实现清除操作。
2.设置链的默认策略
链的默认政策设置为”ACCEPT”(接受),若要将INPUT,FORWARD,OUTPUT链设置成”DROP”(拒绝),命令如下:
当INPUT链和OUTPUT链都设置成DROP时,对于每一个防火墙规则,都应该定义两个规则。例如:一个传入另一个传出。
3. 阻止指定IP地址
例:丢弃来自IP地址x.x.x.x的包
注:当你在log里发现来自某ip地址的异常记录,可以通过此命令暂时阻止该地址的访问以做更深入分析
例:阻止来自IP地址x.x.x.x eth0 tcp的包
4. 允许所有SSH的连接请求
例:允许所有来自外部的SSH连接请求,即只允许进入eth0接口,并且目标端口为22的数据包
5. 仅允许来自指定网络的SSH连接请求
例:仅允许来自于192.168.100.0/24域的用户的ssh连接请求
6.允许http和https的连接请求
例:允许所有来自web - http的连接请求
例:允许所有来自web - https的连接请求
7. 使用multiport 将多个规则结合在一起
允许多个端口从外界连入,除了为每个端口都写一条独立的规则外,我们可以用multiport将其组合成一条规则。如下所示: 例:允许所有ssh,http,https的流量访问
8. 允许从本地发起的SSH
请注意,这与允许ssh连入的规则略有不同。本例在OUTPUT链上允许NEW和ESTABLISHED状态。在INPUT链上,只允许ESTABLISHED状态。ssh连入的规则与之相反。
9. 仅允许从本地发起到一个指定的网络域的SSH请求
例:仅允许从内部连接到网域192.168.100.0/24
10. 允许从本地发起的HTTPS连接请求
如果你想允许用户访问互联网,请执行
注:对于HTTP web流量的外联请求,只需要将上述命令中的端口从443改成80即可
本文先放这些例子,下篇文章继续。
领取专属 10元无门槛券
私享最新 技术干货