iptables

1. iptables的安装

安装:
yum install iptables iptables-services -y

rpm -ql iptables-services

启动防火墙
systemctl start iptables.service 
systemctl enable iptables.service

检查模块是否加载成功
lsmod |egrep 'nat|ipt|filter'

手动的加载模块
modprobe ip_tables 
modprobe iptable_filter 
modprobe iptable_nat 
modprobe ip_conntrack 
modprobe ip_conntrack_ftp 
modprobe ip_nat_ftp 
modprobe ipt_state

当然治理使用的是iptables,firewalld也可以进行防火墙的管理

2. iptables命令参数

参数作用
-t指定表,默认filter
-A把规则追加到末尾
-I把规则掺入到第1条,添加拒绝类规则的时候
-p指定协议,tcp udp icmp
–dport目标端口
–sport源端口
-d目标ip地址
-s源ip地址
-i数据进来的时候的网卡
-o数据出去通过的网卡
-j方法:ACCEPT准许 DROP拒绝
-F清除链中的所有规则
-X清空自定义的链的规则
-Z清空计数器
-n不要把端口解析服务名字
-L显示表中的规则
–line-number给每个链的规则加上行号
-D删除规则,根据规则的号码进行删除

3.iptables介绍

表 table用来存放链的容器
链 chain存放规则的容器
规则 policy拒绝/允许

对于centos7,我们可以stop,firewalld,安装iptables.
iptables的匹配规则:

1.从上往下依次匹配
2.一旦匹配上就不在往下匹配了
3.默认规则,放行所有

优先级设置:谁访问多,谁在上边
匹配频次多的放在上面

3.1 四表五链

filter过滤,默认的表,防火墙功能
nat实现NAT转化:1.共享上网 2.端口转发
mangle主要负责修改数据包中特殊的路由标记,如TTL,TOS,MARK等,这个表定义了5个链
raw


在这里插入图片描述
filter表:

INPUT就是过滤进入主机的数据包
FORWARD负责转发流经主机的数据包
OUTPUT就是处理从主机发出去的数据包

nat表

PREROUTING处理用户请求中的目的地址 目的端口 端口转发 ip映射
POSTROUTING处理离开服务器的请求 源端口 源ip :共享上网
OUTPUT和主机放出去的数据包有关,改变主机发出数据包的目的地址

在这里插入图片描述

4. filter表的一些使用案例

先清除默认的

iptables -nL
iptables -F
iptables -X
iptables -Z
配置规则禁止22端口访问
iptables -t filter  -A INPUT  -p tcp --dport 22 -j DROP


这个时候xshell就会断开连接
使用本地的黑窗口

显规则的行号
iptables -nL --line-numbers

删除禁止22的
iptables -D INPUT 1


禁止10.0.0.7的访问我的22端口
iptables -t filter  -A INPUT  -p tcp -s 10.0.0.7--dport 22 -j DROP

禁止所有
iptables -t filter  -A INPUT  -p tcp -s 10.0.0.7  -j DROP

禁止10.0.0.8访问80端口
iptables -t filter  -A INPUT  -p tcp -s 10.0.0.8 --dport 80 -j DROP

禁止某个ip访问
iptables -I INPUT -p tcp -s 10.0.0.8 -i eth0 -j DROP
iptables -A INPUT -p tcp ! -s 10.0.0.8 -i eth0 -j DROP

只允许一台连接 叹号 取反 除了7谁都不能
iptables -A INPUT -p tcp ! -s 10.0.0.7 --dport 80  -j DROP

禁止一个网段不能访问80
iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 80  -j DROP

禁止10.0.0.7的访问22和80  ACCEPT表示可以与DROP相反
iptables -I -INPUT -p tcp -s 10.0.0.7 -m multiport --dport 22,80 -j DROP

禁止访问22到100之间的所有端口
iptables -I -INPUT -p tcp -s 10.0.0.7  --dport 22:100 -j DROP

禁止icmp类型,例如ping    --icmp-type 8 icmp类型协议号8
iptables -A INPUT -p icmp --icmp-type 8 -j DROP
准许或禁止端口
iptables -I INPUT -p tcp ! --dport 1:1024 -j DROP

多个端口 不连续 80,433,52113,22
iptables -I INPUT -p tcp -m multiport ! --dport 80,443,22 - j DROP

准许或禁止ping
iptables -I INPUT -p icmp --icmp-type any -j DROP
 

连接状态
NEW:已经或将启动新的连接
ESTABLISHED:已建立的连接
RELATED:正在启动的新连接
INVALID:非法或无法识别的

匹配网络限制策略(限制并发 访问的频率)
在同一时间内允许通过的请求”n”为数字,不指定默认为5
iptables -I INPUT -s 10.0.1.0/24 -p icmp --icmp-type 8 -m limit --limit 6/min --limit-burst 5 -j ACCEPT
 

5. 保存规则

iptables-save 这样重启会失效

这样重启会不会失效
iptables-save >/etc/sysconfig/iptables

改规则之间可以先保存一个附件,可以restore恢复原来
iptables-restore < /etc/sysconfig/iptables
systemctl restart iptables.service

6. 企业防火墙配置案例

生产环境的防火墙配置
允许ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许本机回环lo接口数据流量流出与流入
iptables -A INPUT -i lo -j ACCEPT 
iptables -A OUTPUT -o lo -j ACCEPT

准许icmp协议通过
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

准许用户使用的端口通过 80,443
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT

允许用户与服务器建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

开启信任的IP网段**
iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT 
iptables -A INPUT -s 172.16.1.0/24 -p all -j ACCEPT 


修改默认规则
iptables -P INPUT DROP 
iptables -P FORWARD DROP 
iptables -P OUTPUT ACCEPT

代码:

iptables -F
iptables -X
iptables -Z

iptables -A INPUT -s 192.168.80.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -nL

7. 局域网共享上网配置

7.1 能上网主机的配置

m01 192.168.80.61 内网ip 172.16.1.61
防火墙配置

iptables -F
iptables -X
iptables -Z

iptables -A INPUT -s 192.168.80.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dport 80,443 -j ACCEPT
iptables -A INPUT -s 172.16.1.0/24 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT  -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -nL

当时172.16.1.0/24这个网段访问的时候就把地址转换为192.168.80.61

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to-source 192.168.80.61

iptables -nL -t nat

开启内核转发

vim  /etc/sysctl.conf
net.ipv4.ip_forward = 1

sysctl -p

7.2 不能上网主机配置

web01 内网ip 172.16.1.7
假如有外网,关闭外网

vim /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes 改为
ONBOOT=no 开机不自启

ifdown eth0
ip a

这个时候只剩下eth1,添加网关

vim /etc/sysconfig/network-scripts/ifcfg-eth1
GATEWAY=172.16.1.61

修改域名解析地址,修改成m01的网关地址

vim  /etc/resolv.conf 
# Generated by NetworkManager
nameserver 192.168.80.2

这个时候就可以使用ping 外网了

[root@web01 ~]# ping www.baidu.com
PING www.a.shifen.com (39.156.66.18) 56(84) bytes of data.
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=1 ttl=127 time=27.2 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=2 ttl=127 time=27.0 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=3 ttl=127 time=26.4 ms
64 bytes from 39.156.66.18 (39.156.66.18): icmp_seq=4 ttl=127 time=26.2 ms

ping 不同问题:
1.www.baidu.com 域名不知道
没有配置nameserver,修改/etc/resolv.conf文件
2. ping没有反应
防火墙的配置有问题,该防火墙的配置相当于白名单,除了白名单里边的其他的人都不允许访问
解决办法:

1.修改默认规则
iptables -P FORWARD ACCEPT

2.配置filter的FORWARD
iptables -A FORWARD -s 172.16.1.0/24 -j ACCEPT
iptables -A FORWARD -d 172.16.1.0/24 -j ACCEPT
-s 源地址  -d 目标地址 forward的进去一个,出来也有一个

8. 本机访问端口转发,可以xshell访问没有外网的主机

访问防火墙服务器的9000端口就可以访问web01的22端口(这个时候web01是没有外网的的)
192.168.80.61:9000 —》 172.16.1.7:22

iptables -t nat -A PREROUTING -d 192.168.80.61 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.7:22

iptables -nL -t nat --line-numbers

这样访问不了的解决办法
对于web01需要配置就是,把eth1的网关配置成防火墙服务器的ip

vim /etc/sysconfig/network-scripts/ifcfg-eth1
GATEWAY=172.16.1.61

通过xshell 就也可以连接访问
在这里插入图片描述
在这里插入图片描述

9. ip的一对一映射

ip addr add 10.0.0.81/24 dev eth0 label eth0:0
iptables  -t nat -I POSTROUTING -s 10.0.0.0/255.255.240.0 -d 10.0.0.81 -j SNAT --to-source 10.0.0.2


iptables  -t nat -I PREROUTING -d 10.0.0.81 -j DNAT --to-destination 172.16.1.51
iptables  -t nat -I POSTROUTING -s 172.16.1.51 -o eth0 -j SNAT --to-source 10.0.0.81

检查:
ping 10.0.0.81
tcpdump|grep -i icmp(两台机器上分别监测)
telnet 10.0.0.81 873(51上提前配好)

映射多个外网IP上网

iptables -t nat -A POSTROUTING -s 10.0.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.11-124.42.60.16

iptables -t nat -A POSTROUTING -s 10.0.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.11
iptables -t nat -A POSTROUTING -s 10.0.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.12
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值