一、使用iptables对防火墙的管理

## 1、iptables的管理和存储方式
### (1)iptables的安装
yum install iptables -y        |安装iptables

### (2)使用iptables的环境配置
systemctl stop firewalld    |关闭firewalld
systemctl disable firewalld    |开机不启动firewalld
systemctl mask firewalld    |给firewalld上锁
systemctl unmask iptables    |解锁iptables
systemctl start iptables    |开启iptables
systemctl enable iptables    |开机自动启动iptables

1、如下:

iptables 最佳实践 iptables —l_重启

 

 

 

 

 

二、iptables的管理
 

iptables -nL            |n:numeric,L:list,列出表的策略信息,不指定时默认列出filter表
iptables -F            |F:flush,刷新,将表中策略刷新删除
iptables -nL            |再次查看策略,此时无策略
systemctl restart iptables    |重启服务
iptables -nL            |再次查看时,因为重启服务,保存的策略被再次加载出来
iptables -F            |再次刷新删除
service iptables save        |保存此时的策略
cat /etc/sysconfig/iptables    |查看策略保存的文件
systemctl restart iptables    |重启服务
iptables -nL            |再次查看时,重启服务,保存的策略为无策略,所以此时没有策略被加载出来
iptables -A INPUT -s 172.25.254.54 -p tcp --dport 80 -j REJECT        |-A为添加,INPUT为想要添加的chain(链)名称,-s指定IP,若指所有人,则不加该参数,-p指定协议,--dport指定端口,-j指定执行的动作,此处为REJECT
iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT                |-I为插入,此处指将该策略插入至INPUT的第1条
iptables -D INPUT 1        |删除INPUT中的第1条策略,-D为指定删除某链下的某个策略
iptables -N abc            |添加自定义链,名为abc
iptables -E abc zxc        |修改自定义链abc名为zxc
iptables -X zxc            |删除自定义链zxc
iptables -P INPUT DROP        |更改INPUT链的默认规则为DROP
iptables -t nat -nL        |-t为指定表,此处为查看nat表的策略信息,当不指定时,默认指定的是filter表
iptables -L INPUT        |列出filter表下的INPUT链的策略信息

 

1、查看iptables列表信息

iptables  -nL                  ##查看iptables列表信息
iptables  -F                   ##清空iptables列表信息(临时重启服务后恢复原来的设置)
systemctl restart iptables     ##重启iptables服务

iptables 最佳实践 iptables —l_自定义_02

 

iptables 最佳实践 iptables —l_IP_03

 

2、保存iptables中的设定

service liptables  save           ##保存iptables中的设置

iptables 最佳实践 iptables —l_重启_04

 

3、查看iptables保存策略的文件

vim /etc/sysconfig/iptables           ##查看iptables保存策略的文件

iptables 最佳实践 iptables —l_iptables 最佳实践_05

 

iptables 最佳实践 iptables —l_自定义_06

 

 

 

 

三、iptables策略的添加和删除

1、禁止172.25.66.250用户访问80端口

iptables -A INPUT -s 172.25.66.250 -p tcp --deport 80 -j REJECT   ##禁止172.25.66.250 用户访问本机的80端口(apache)

iptables 最佳实践 iptables —l_IP_07

iptables 最佳实践 iptables —l_自定义_08

 

2、策略的删除

iptables  -D IPUT  1   ##表示删除列表中的第一条策略

iptables 最佳实践 iptables —l_重启_09

iptables 最佳实践 iptables —l_IP_10

 

 

3、插入策略

iptables -I IPUT 1 -p tcp --deport 80 -j REJECT      ##表示插入此策略

iptables 最佳实践 iptables —l_自定义_11

iptables 最佳实践 iptables —l_自定义_12

 

4、添加自定义链

iptables -N westos      ##添加自定义链 名为westos

iptables 最佳实践 iptables —l_重启_13

 

4、修改自定义链的名称

iptables -E westos WESTOS     ##将自定义链westos改名为WESTOS

iptables 最佳实践 iptables —l_IP_14

 

5、删除自定义链

iptables -X WESTOS        ##删除自定义链

iptables 最佳实践 iptables —l_重启_15

 

 

6、查看相应的列表信息

iptables -t nat -nL          ##列出nat列表的信息

iptables 最佳实践 iptables —l_重启_16

 

7、修改INPUT的默认规则

iptables -P INPUT DROP      ##更改INPUT链的默认规则为DROP

iptables 最佳实践 iptables —l_自定义_17

 

 

 

四、在iptables中做SNAT(原地址转换)和DNAT(目的地地址转换)

此实验需要三台机,提供目的地地址的、提供路由功能的(需两块网卡,两个不同网段)、提供原地址的。

此处设定的原地址为:
172.25.0.166,网关为172.25.0.1(路由器的一个IP)
路由器的两个IP为:

172.25.66.66(eth1网卡IP)和172.25.0.1(eth0网卡IP)
 目的地IP为:
 172.25.66.250
 ### (1)SNAT
 #### <1>在路由器上设置
 iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.66.66    |给nat表的POSTROUTING链中添加策略,指定网卡为eth0网卡,执行SNAT,转换的IP为172.25.66.66
 iptables -t nat -nL        |查看是否添加成功
 sysctl -a | grep ip_forward    |查看路由功能是否开启,若显示为0,则没有开启
 vim /etc/sysctl.conf        |修改该文件
 net.ipv4.ip_forward = 1        |开启路由功能
 sysctl -p            |修改完成后加载修改的设定,立即开启路由功能#### <2>在原地址端测试
 ping 172.25.66.250(目的地地址)        |可ping通,说明原地址转换成功
 ssh kiosk@172.25.66.250(目的地地址)    |连接目的地地址#### <3>在目的地查看
 w -i            |查看连接自己的IP,此时经过原地址转换,所以看到的IP应是路由器的eth0网卡IP172.25.66.66#### <4>还原设定,使实验环境纯净
 iptables -t nat -D POSTROUTING 1    |删除设定,还原实验环境### (2)DNAT
 #### <1>在路由器上设置
 iptables -t nat -A PREROUTING -i eth1 -j DNAT --to-dest 172.25.0.166    |给nat表的PREROUTING链中添加策略,指定网卡为eth1网卡,执行DNAT,转换的IP为172.25.0.166
 iptables -t nat -nL        |#### <2>在原地址端测试
 ssh kiosk@172.25.0.166(目的地地址)    |连接目的地地址#### <3>在目的地查看
 w -i            |查看连接自己的IP,此时经过目的地地址转换,所以看到的IP应是原地址IP172.25.66.250

 

1、实验配置

desktop上配置两快网卡:

eth0:充当内网主机的源地址转换的接口

eth1:充当外网链接的接口

iptables 最佳实践 iptables —l_自定义_18

 

2、将server主机的ip设置为172.25.0.166 (充当外网主机)

网关:GATEWAY=172.25.0.1

iptables 最佳实践 iptables —l_自定义_19

 

3、检查网关的连接情况以及ip的设置情况:

iptables 最佳实践 iptables —l_自定义_20

 

4、设置访问的ip从172.25.66.66端口出去

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.66.66    |给nat表的POSTROUTING链中添加策略,指定网卡为eth0网卡,执行SNAT,转换的IP为172.25.66 网段的ip
iptables -t nat -nL                  ##查看策略是否生效

iptables 最佳实践 iptables —l_自定义_21

 

5、检查1725.25.0.166主机是否可以连接172.25.66.250主机

连接失败

iptables 最佳实践 iptables —l_iptables 最佳实践_22

 

6、查看内核路由功能是否开启

sysctl -a | grep ip_forward                ##查看内核路由i是否开启
vim /etc/sysctl.conf                       ##编辑内核路由文件

内容:
net.ipv4.ip_forward=1                      ##开启内核路由功能

sysctl -p                                  ##查看内核路由是否成功开启

(1)、查看内核路由是否开启

iptables 最佳实践 iptables —l_自定义_23

 

(2)、编辑内核路由文件

iptables 最佳实践 iptables —l_自定义_24

iptables 最佳实践 iptables —l_IP_25

 

(3)、查看内核路由是否成功的开启

iptables 最佳实践 iptables —l_重启_26

 

 

7、在此检查是否可以连接172.25.66.250主机

ping 172.25.66.250

iptables 最佳实践 iptables —l_iptables 最佳实践_27

 

8、将172.25.0.166设置为网络访问的入口

iptables -t nat -A PREROUTING -i eth1 -j DNAT --to-dest 172.25.0.166    |给nat表的PREROUTING链中添加策略,指定网卡为eth1网卡,执行DNAT,转换的IP为172.25.0 网段的ip

iptables 最佳实践 iptables —l_iptables 最佳实践_28

 

9、 在172.25.66.250主机上登录172.25.66.66主机进行测试

(1)、登录172.25.66.66主机

ssh root@172.25.66.66         ##登录172.25.66.66主机 

登录到的用户是172.25.0.166主机

iptables 最佳实践 iptables —l_IP_29

 

(2)、查看登录本机的ip

直接可以看到172.25.250连接只做源地址转换

iptables 最佳实践 iptables —l_iptables 最佳实践_30

 

10、172.25.0.166主机连接172.25.66.250主机

(1)、ssh root@172.25.66.250

iptables 最佳实践 iptables —l_IP_31

 

(2)、查看到连接的主机ip为172.25.66.66主机的ip

iptables 最佳实践 iptables —l_重启_32