Linux之iptables

1.iptables的介绍

       iptables 是与Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。防火墙在做信息包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 信息包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。

2.iptables : 修改火墙规则的工具

/etc/sysconfig/iptables  ###主配置文件
systemctl   stop firewalld.service       ###关闭火墙,使用iptables之前要关闭火墙
systemctl   mask firewalld.service
systemctl start  iptables.service

systemctl enable iptables.service

iptables -nL   ##查看火墙列表信息

Chain INPUT (policy ACCEPT)
火墙动作     协议       源入口              目的地                数据包的状态
target          prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0               0.0.0.0/0            state RELATED,ESTABLISHED
ACCEPT     icmp --  0.0.0.0/0             0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0               0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0              0.0.0.0/0            state NEW tcp dpt:22
REJECT     all  --  0.0.0.0/0                0.0.0.0/0            reject-with icmp-host-prohibited

iptables  -F    ##清空火墙策略

service iptables save        ##把编辑好的规则写入配置文件

iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

3.iptables的信息

三张表:filter,nat,mangle
iptables -t mangle -nL
PREROUTING  
INPUT
FORWARD
OUTPUT
POSTROUTING


iptables -t filter -nL
INPUT
FORWARD
OUTPUT


iptables -t nat    -nL
PREROUTING     ###路由前 (DNAT:目的网络地址转换)
INPUT
OUTPUT
POSTROUTING   ###路由后 (SNAT:源网路地址转换)


filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWARD(处理通过的包)和OUTPUT(处理本地生成的包)。nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。mangle 这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由


之前本地的包)。

4.iptables的使用规则

-t   ##后面接表名称

-A   ##添加

从172.25.254.204传来的数据包全部拒绝


测试:(客户端IP:172.25.254.204)

真机IP:172.25.254.4(成功访问samba服务共享目录,虽然拒绝了172.25.254.204的访问,也没有规定172.25.254.4的火墙规则,但是policy ACCEPT,默认是接受的,所以172.25.254.4也可以访问)


-P  ##修改默认动作,只能有ACCEPT | DROP两种

iptables -P INPUT DROP    ##修改默认动作为DROP,真机也不能连接samba服务,连接超时


-R  ##修改

-I   ##插入

iptables -R  INPUT 2 ! -s 172.25.254.204 -p tcp --dport 22 -j  ACCEPT    ##除了204的ssh服务接收,别的请求都拒绝

客户端172.25.254.204不能通过ssh服务连接104


-E  ##修改链的名称
iptables -t filter -N westos      ###新建westos链


iptables -t filter -E westos redhat  


iptables -t filter -X redhat          ###删除redhat链


-D  ##删除  iptables -D INPUT 1   ##删除第二条火墙规则


-s  ##源地址
-d  ##目的地址
-p  ##协议
--dport ##端口

22           ##ssh服务使用
53           ##DNS
80           ##http
443         ##https

-i  ##回环lo,匹配从网络接口eth0进来的

-o  ##匹配从网络接口eth0出去的

-j  ACCEPT | DROP| REJECT  ##执行的动作

iptables -A INPUT -m state --state RELATED,ESTABLISHED  -j  ACCEPT

数据包的状态:

RELATED     ##已经来过的数据包

ESTABLISHED   ##已经确定的数据包

NEW   ##新接受到的数据包

5.网络地址转换

服务端(中转站):

eth0: 172.25.254.104
eth1: 192.168. 0. 104

真机IP:172.25.254.4

客户端IP:192.168.0.204

在客户端要设置网关:192.168.0.104

vim /etc/sysctl.conf
:
net.ipv4.ip_forward = 1
sysctl -p                   ###激活内核路由
net.ipv4.ip_forward = 1


在server(中转站)把规则加入nat表
iptables -t nat -A POSTROUTING -o eth0 -j  SNAT --to-source  172.25.254.104    ###从eth0进来的数据包地址转到172.25.254.104

w       ###查看连接自己的用户

ssh服务连接172.25.254.4,发现是172.25.254.104连接,而不是client IP:192.268.0.204连接,从192.268.0.204传来的数据包,通过自身网关传到中转站eth1,再通过中转站的内核路由从172.25.254.104转出,连接到真机,所以看到是172.25.254.104在连接


iptables -t nat -A PREROUTING  -i eth0   -j  DNAT --to-dest     192.168.0.204       ###从eth1出去的数据包地址转到192.168.0.204


ssh服务连接172.25.254.104,但是连接到了192.168.0.204,数据包从真机传来,通过中转站的eth0经由中转站内核路由,转到192.168.0.204


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值