Iptables详解

表链的结构示意图

操作默认表, 即filter时 ,可以不适用-t filter指定表名.

  • 查看设置情况
# 查看默认表中的配置规则即filter
iptables -L

# 查看filter表中INPUT链的规则
iptables -t filter -L INPUT

# 带行号的查询
iptables -nvL --line-number
    -L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数
    -n 不对ip地址进行查,加上这个参数显示速度会快很多
    -v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
    –line-number 显示规则的序列号,这个参数在删除或修改规则时会用到

  • 常用命令
[]中括号,代表可选项.写不写都可以.

iptables命令格式
    iptables [-t 表,默认filter] -命令 匹配 操作
        命令
            -A 添加到最后
            -I 添加(插入)到第几条
            -D 删除
            -R 修改
        
        操作
            ACCEPT          接收数据包
            DROP             丢弃数据包
            LOG               日志功能
            REDIRECT        将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
            SNAT             源地址转换
            DNAT             目的地址转换
            MASQUERADE       IP伪装



# 清除预设表filter中的所有规则链的规则
iptables -F

# 清除预设表filter中使用者自定链中的规则
iptables -X

# 保存刚才的操作
iptables save

# 关闭6379端口, 进入链
iptables [-t filter] -A INPUT -p tcp --dport 6379 -j DROP

# 开启80端口, 进入链
iptables [-t filter]  -A INPUT -p tcp --dport -80 -j ACCEPT

# 同时决绝一段连续端口,进入链
iptables -A INPUT -p tcp -m multiport --dport 5901:5903 -j DROP

# 将第4条修改为,全部允许进入链(包括所有协议)
iptables -R  INPUT 4 -j ACCEPT

# 将允许80端口进入,插入到进入链第2条
iptables -I INPUT 3 -p tcp --dport 80 -j ACCEPT

# 指定删除进入链第几条规则(查看第几条可以通过iptables -L --line-number查看, 列表中自上而下排第几就是第几条)
iptales -D INPUT 2



注释:
    同一个端口, 两条规则先DROP再ACCEPT, 后面ACCEPT不生效.
    一般, 作为我自己配置的时候,是:拒绝所有逐个允许.
        如:
            # 添加拒绝所有规则在进入链前,当然先要添加一个, 允许一下.22端口..不然XXX.
            iptables -A INPUT -p tcp --dport 22 -j ACCEPT
            iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
            iptalbes -A INPUT DROP
            iptables -A OUTPUT ACCEPT
            iptables -A FORWARD DROP
            
  • 保存配置
虽然IPTables的命令执行后会立即生效,但这个生效过程其实是临时的,系统在重启之后便会丢失。因此,我们还需要将这些配置添加到配置文件当中,以保证系统在下次重启后会自动载入我们的IPTables防火墙规则。

sudo apt-get update
sudo apt-get install iptables-persistent

该命令脚本下载执行后会询问我们是否对IPTables配置进行保存,如果确定的话选择“是”即可。保存后下次重启系统也不会造成配置丢失了。
  • 详解&案例
iptables基础
      ①规则(rules):网络管理员预定义的条件
      ②链(chains): 是数据包传播的路径
      ③表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能
      ④filter表是系统默认的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
      ⑤nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
      ⑥mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT
      
语法:
    iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [--sport 源端口号] [-d 目的IP|目标子网] [--dport 目标端口号] [-j动作]
    参数:
        -A 增加
        -I 插入
        -D 删除
        -R 替换


(1) 链 
		INPUT 	-> 对进入服务器的数据包进行检测
		OUTPUT	-> 对出去的数据包进行检测

	(2) filter(过滤) 表:
		
		这个表中存储了INPUT和OUTPUT连上的规则
	
	(3) 防火墙的配置原则

		<1> 允许所有,逐个拒绝
		<2> 拒绝所有,逐个允许

	(4) 防火墙软件 iptables

		# yum -y install iptables 默认安装了

		# chkconfig --list | grep 'iptables'

	(5) 过滤数据的分类

		<1> IP 源IP 目标IP
		<2> port 源端口 目标端口 
		<3> 协议 
			tcp 	web
			udp	dns
			icmp	ping
		<4> mac地址 网卡地址

	(6) 规则

		写规则
			<1> 修改默认策略

			iptables -t 表名 -P 链 默认操作
		
				t 指定操作的表
				P 修改默认策略

			iptables -t filter -P INPUT DROP

			iptables -t filter -P OUTPUT DROP
			
			<2> IP

			iptables -t filter -A INPUT -s 源IP -d 目标IP -j DROP
			iptables -t filter -A OUTPUT -s 源IP -d 目标IP -j DROP
				-t 指定操作的表
				-A 表示添加一条自定义的规则
				-s 指定源IP地址
				-d 指定目标IP地址
				-j 表示匹配到之后的操作
					DROP
					ACCEPT
			<3> 端口 和 协议

			iptables -t filter -A INPUT  -s 源IP -d 目标IP -p 协议类型 --dport 目标端口 -j DROP
-t 表示操作的表
-A 表示添加一条自定义的规则
-s 表示源IP地址
-d 表示目标IP地址
-p 指定协议类型 web tcp
					--dport 目标端口
					--sport 源端口
				-j 表示匹配之后的操作
					DROP
					ACCEPT

			iptables -t filter -A INPUT -s 192.168.140.250 -d 192.168.140.249 -p tcp --dport 22 -j DROP
			向服务器提交数据是用DPORT

			iptables -t filter -A INPUT -s 源IP -d 目标IP -p icmp -j DROP
			<3> mac

			iptables -t filter -A INPUT -m mac --mac-source 00-21-CC-5D-CF-6B -j DROP
				-m 指定使用什么模块 此处为指定mac模块
				--mac-source 源MAC地址

			iptables -t filter -A OUTPUT -m mac --mac-destion 00-21-CC-5D-CF-6B -j DROP 

			删除规则

			iptables -F 表示删除所有的规则

			iptables -t filter -D INPUT 4


		查询规则

			iptables -L -v -n
					-L 查询
					-v 详细
					-n 数字化显示 网络协议


		# service iptables save -> /etc/sysconfig/iptables
		
		所有步骤完成之后记得保存
		
  • 其他使用方法
# 保存配置文件到指定位置
iptables-save  > /etc/tables

# 读取配置文件
iptables-restore < /etc/tables

转载于:https://my.oschina.net/chinaliuhan/blog/3065337

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值