Iptables防火墙、filter表控制、nat表典型应用(SNAT、DNAT、地址伪装)非常详细!!

关闭firewalld启动iptables服务

关闭firewalld服务器

systemctl stop firewalld.service 
systemctl disable firewalld.service

下载iptables-server

yum -y install iptables-services

启动服务和设置自启:

systemctl restart iptables.service 
 systemctl enable iptables.service

iptables框架结构图:

熟悉iptables框架:

1)iptables的4个表(区分大小写):

iptables默认有4个表,nat表(地址转换表)、filter表(数据过滤表)、raw表(状态跟踪表)、mangle表(包标记表)。

2)iptables的5个链(区分大小写):

INPUT链 (入站规则)

OUTPUT链 (出站规则)

FORWARD链 (转发规则)

PREROUTING链 (路由前规则)

POSTROUTING链 (路由后规则)

目标操作:

// ACCEPT: 允许通过/放行

// DROP: 直接丢弃,不给出任何回应

// REJECT: 拒绝通过,必要时会给出提示

// LOG: 记录日志,然后传给下一条规则

注意事项与规律:

//可以不指定表,默认为filter表

//可以不指定链,默认为对应表的所有链

//如果没有找到匹配条件,则执行防火墙默认规则

//选项/链名/目标操作用大写字母,其余都小写

规则链内的匹配规则:

-顺序比对,匹配即停止(LOG除外)

-诺无任何匹配,则按改链的默认策略处理

iptables用法解析:

 

指令组成:

Iptables  [-t表名]  选项  [链名]  [条件]  [-j 目标操作]

 iptables  -L

//查看当前表的结构链,默认fiter表

iptables -t nat -L

//指定查看nat表的结构链

iptables -L --line-number

//给表中规则链加编号

 iptables -nL --line-number

//数字显示源和目标地址(也就是IP)

 iptables -F

//清除表中所有数据

iptables -t nat -F

 //清空所有表中数据

iptables-save  > /etc/sysconfig/iptables

//清空后的表,要存在配置文件中,这样才永久有效,不然只是临时有效

iptables -t filter -P INPUT DROP

//设置 filter表中的INPUT链默认规则为DROP拒绝

iptables防火墙可以根据很多很灵活的规则进行过滤行为,具体常用的过滤条件

iptables -t filter -A INPUT  -p tcp --dport 22 -j ACCEPT

//追加规则至fiter表中的INPUT链的末尾,允许任何人使用tcp协议访问本机

iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT

//插入网页服务规则 tcp 端口80 到表中的INPUT开头

iptables -t filter -A INPUT -p icmp -j ACCEPT

//添加规则至filter表中的INPUT链,允许任何人使用ICMP协议访问本机          //  icmp (ping之类的)

iptables-save > /etc/sysconfig/iptables

//添加完规则一定要保存到文件里

iptables  -t filter  -D INPUT 3 

//删除filter 表中 INPUT链中的第三条规则

iptables  -t filter  -A INPUT -p icmp  --icmp-type  echo-reply  -j ACCEPT

//添加允许 协议是 iCMP  类型是 echo-reply  规则到 filter表中的 INPUT 链中

 

网络型防火墙

基本匹配:

sysctl -a | grep "net.ipv4.ip_forward"

net.ipv4.ip_forward = 1 //查询是否开启路由转发

echo 1 > /proc/sys/net/ipv4/ip_forward 

//开启路由转发

echo 0 > /proc/sys/net/ipv4/ip_forward

//关闭路由转发

//注意以上操作仅当前有效,计算机重启后无效

 echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf

//修改/etc/sysctl.conf配置文件,可以实现永久有效规则

 iptables -t filter -P FORWARD DROP

//修改转发链默认规则为不让转发通过

iptables -t filter -A FORWARD -p icmp -j ACCEPT

//设置允许协议是icmp 的访问通过

有来有回才算传输数据:

 iptables -t filter -A FORWARD -p tcp --dport 22 -j ACCEPT

//设置允许客户端访问目标端口是 22 的服务通过

 iptables -t filter -A FORWARD -p tcp --sport 22 -j ACCEPT

//设置允许客户端访问源端口是 22 的服务通过

 

扩展匹配:

ip范围匹配:

iptables -t filter -A FORWARD -p icmp -m iprange --src-range 192.168.4.0-192.168.4.95 -j ACCEPT

//允许访问协议是icmp 源目标IP是 192.168.4.0-4.95的通过

iptables -t filter -A FORWARD -p icmp -m iprange --dst-range 192.168.4.0-192.168.4.95 -j ACCEPT

//允许访问协议是icmp 目标IP是 192.168.4.0-4.95的通过

 iptables -I INPUT -s 192.168.4.100 -p tcp --dport 22 -j DROP

// 禁止mac 地址是52:54:00:11:c5:73  的主机访问

                                                Nat表典型应用

-让多台私有IP地址主机共享同一个公网IP地址 上网

SNAT:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p tcp --dport 80 -j SNAT --to-source 192.168.4.92

//添加规则: 条件是 IP是2.0/24 网段 的IP 并且访问的目标端口是80 的,进行 SNAT 地址转换 成4.92

或者:

iptables -t nat -I POSTROUTING -s 172.31.128.0/20 -j SNAT --to-source 172.31.66.212

snat配置一次就好了, 172.31.128.0/20 这个是无公网服务器的交换机网段,(简称:广播地址)172.31.66.212是有EIP服务器的内网ip

iptables -t nat -nL POSTROUTING	

//查看一下规则

 

DNAT:

iptables -t nat -I PREROUTING -d 172.31.66.212 -p tcp --dport 65530 -j DNAT --to 172.31.129.86:8440

这个是实现把有公网的服务器的65530端口映射到无公网的8440端口上。

iptables -t nat -I POSTROUTING -p tcp --dport 8440 -j MASQUERADE

这个是为了,转发到后面服务器的8440端口的返回数据包可以再通过有公网的服务器出去

 

扩展知识,对于proxy外网IP不固定的情况可以执行下面的地址伪装,动态伪装IP。

iptables  -t  nat  -A POSTROUTING -s  192.168.4.0/24 -p tcp --dport 80 -j MASQUERADE

 //添加规则:  访问外网的如果是 4.0这个网段 并且目标端口是80 的进行地址伪装

iptables-save > /etc/sysconfig/iptables	

//永久保存一下

 

iptables为了保证服务器安全,禁止ip登录访问:

比如现在要将47.52.209.185这个IP封杀,就输入:

iptables -I INPUT -s 47.74.209.185 -j DROP

要解封则将-I换成-D即可,前提是iptables已经有这条记录。如果要想清空封掉的IP地址,可以输入:

iptables -flush

要添加IP段到封停列表中,使用下面的命令:

iptables -I INPUT -s 121.0.0.0/8 -j DROP

设置白名单:

iptables -A INPUT -s 192.111.51.45 -p all -j ACCEPT      
 #开放所有端口给指定ip:192.111.51.45
iptables -A INPUT -s 192.111.51.44 -p all -j ACCEPT      
#开放所有端口给本机 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值