Linux安全——iptables防火墙基本设置

语法

iptables(选项)(参数)

选项

-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
iptables命令选项输入顺序:

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

SNAT

原理:修改数据包中的源IP地址
作用:可以实现局域网共享上网

配置的表及链:nat表中的POSTROUTING
实现方法:
1)主机、服务器配置正确的ip地址及网关
2)网关服务器开启路由功能
a、echo 1 > /proc/sys/net/ipv4/ip_forward
b、vim /etc/sysctl.conf
net.ip…….ip_forward = 1
sysctl -p
3)设置SNAT
a、网关服务器外网卡的IP地址固定
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j SNAT –to-source 网关服务器外网卡的IP地址

b、网关服务器外网卡的IP地址不固定
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j MASQUERADE

在linux系统中利用ADSL拨号连接外网,将上述的网卡接口名称进行修改(ppp0,ppp1等),如果没有办法确认网络接口的名称可以采用ppp+替代。

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ppp1 -j
MASQUERA

说明:条件匹配根据具体情况适当添加

DNAT

原理:修改数据包中的目标IP地址
作用:将内网中服务器进行发布

配置在nat表中的PREROUTING链上

实现方法:
a、正确配置ip地址及网关
b、开启网关服务器的路由功能功
c、进行DNAT配置(最好先配置SNAT,内网的用户就可以直接访问外网)

例子:
iptables -t nat -A PREROUTING -d 210.99.19.2 -p tcp –dport 80 -j DNAT –to-destination 192.168.10.5

用户访问不使用默认的端口
iptables -t nat -A PREROUTING -d 210.99.19.2 -p tcp –dport 8080 -j DNAT –to-destination 192.168.10.5:80

内外网通信规则

具体实现方法:
(1)中间的防火墙充当路由器,开启nat功能;
(2)防火墙上做策略,指定192.168.2.0/24的主机转换成192.168.3.20

内网主机

网卡vm1:192.168.2.10
网卡地址配置:

[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.2.10
NETMASK=255.255.255.0
GATEWAY=192.168.2.20 #需要指网关才能上网
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=08232f73-ef4f-4daf-804a-d9d70834f6ca
DEVICE=ens33
ONBOOT=YES
[root@server1 ~]# systemctl restart network #重启网卡

[root@server1 ~]# route -n #允许内外网通信的规则创建后会由一个默认路由指向服务器外网卡
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.2.20    0.0.0.0         UG    100    0        0 ens33
192.168.2.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

服务器

网卡vm1:192.168.2.20 (内网卡)
网卡vm2:192.168.3.20 (外网卡)
网卡地址配置:

[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#服务器本身不用设置网卡
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.2.20 
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=5384c845-a48a-4970-aabd-10b16ee36e29
DEVICE=ens33
ONBOOT=yes
[root@server1 ~]# systemctl restart network #重启网卡

[root@server1 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36 #新建网卡后默认没有配置文件,复制存在的网卡配置文件

[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36
#服务器本身不用设置网卡
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.3.20
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes

[root@server1 ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf #开启路由功能
[root@server1 ~]# sysctl -p #加载配置
net.ipv4.ip_forward = 1

[root@server1 ~]# iptables -F #清空规则
[root@server1 ~]# iptables -n -L #查看现有规则
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

[root@server1 ~]# iptables -t nat -I POSTROUTING -s 192.168.2.0/24 -o ens36 -j SNAT --to-source 192.168.3.20 #编写防火墙规则

[root@server1 ~]# iptables -t nat -L #检查nat表规则,POSTROUTING链里包含创建的规则
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.2.0/24       anywhere             to:192.168.3.20

###此时内网主机可以ping外网主机,但外网主机不能ping内网网段,内网主机会有一条默认路由指向外网卡

外网主机

vm2:192.168.3.30
[root@server1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.3.30 #外网不需要配置网卡
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=3b8888d1-1c1e-4481-a5b5-75085e119ac5
DEVICE=ens33
ONBOOT=yes
[root@server1 ~]# systemctl restart network #重启网卡

外网用户访问内网发布的服务

DNAT:相当于华为路由器中的servernat,让外网的用户可以访问内网发布的服务。
具体的实现方法:
(1)中间的防火墙充当路由器,开启nat功能;
(2)防火墙上做策略,指定访问网关的某服务映射给内网服务器

内网主机

[root@server1 ~]# yum -y install httpd #安装apache服务
[root@server1 ~]# echo "this is web" > /var/www/html/index.html #主页内容
[root@server1 ~]# systemctl start httpd #启动apache服务
[root@server1 ~]# netstat -anpt | grep httpd #查看apache开启情况
tcp6       0      0 :::80                   :::*                    LISTEN      8351/httpd 

服务器

[root@server1 ~]# iptables -t nat -A PREROUTING -i  ens36 -d 192.168.3.20 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.10 #定义规则,协议加端口号为服务

[root@server1 ~]# iptables -t nat -L #查看规则情况
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  anywhere             server1              tcp dpt:http to:192.168.2.10

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  --  192.168.2.0/24       anywhere             to:192.168.3.20

外网主机

[root@server1 ~]# curl http://192.168.3.20 #测试访问内网服务
this is web
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值