iptables防火墙
iptables安全策略就是管理员预设的条件,规则储存在内核空间的信息规则表中。看数据包与规则是否相符,否则处理结果不同。
处理有ACCEPT(通过);DROP(丢弃);REJECT(拒绝);QUEUE(排队);RETURN(返回)几种方式。
iptables中有filter(过滤表);nat(网络地址转换表);mangle(数据包处理表)。
表是包含处理特定信息包的规则和链的容器。
Filter(过滤表)3条链:
input---输入包规则链
output--输出包规则链
forword--转发包规则链
Nat(网络地址转换表)3条链:
output--处理传出规则链
prerouting--对到达且未经路由判断之前的包进行处理
postroution--到达且经过路由判断的包进行处理
转换特性分为SNAT(源网络地址转换)和DNAT(目的地址转换)
命令选项:
-A 选择的链最后一条添加规则
-D 删除规则
-L 显示规则
-F清空规则
-I根据序号插入规则
-N新增规则
-X 删除链
-R 修改指定策略
匹配选项:
-p 匹配定义的协议
--sport 基于TCP包的源端口来匹配包,检测数据包的源端口是否为指定的
--dport 基于TCP包的目的端口来匹配包
-s ip源地址匹配
-d 基于TCP包的目的端口来匹配包
-o数据包离开本地所使用的网络接口
-i 数据包进入本地所使用的网络接口
-t 匹配表名
-n 不做解析
1.安装使用
yum install iptables ##安装
systemctl stop firewalld.service ##关闭firewall-cmd软件以防影响
systemctl disable firewalld.service
systemctl mask firewalld.service
systemctl start iptables.service ##开启iptables
systemctl enable iptables.service
iptables -nL ##列出所有策略不做解析
【示例】
2.策略应用
iptables -I INPUT 2 -p tcp --dport 23 -j DROP:插入到第二条策略
iptables -D INPUT 3:删除filter表中的第三条规则
iptables -D INPUT -s 192.168.0.1 -j DROP:按内容删除
iptables -R INPUT 3 -j ACCEPT:将原来编号为3的规则内容替换为-j
iptables -P INPUT DROP: 设置filter表INPUT链的默认规则 ,当数据包没
有被规则列表里的任何规则匹配到时,按此默认规则处理
iptables -t nat -F:清空nat策略, -F 仅仅是清空链中规则,并不影响 -P 设
置的默认规则
iptables -t nat -nL:查看nat策略
iptables -t nat -L PREROUTING:查看nat表PREROUTING链的规则
service iptables save 保存策略
【示例允许访问tcp协议80端口,保存】
【保存的策略在/etc/sysconfig/iptables中】
3.策略的读取规则
策略的读取规则是按链中的顺序依次读取,如果一个包不符合规则1,则不再与下面的规则匹配。
【示例规则1为250主机可以通过tcp访问,规则2拒绝所有访问,则250的主机可以访问80端口】
4.目的地址与源地址转换
[root@route ~]# sysctl -a | grep ip_forward ##更改路由的内核
net.ipv4.ip_forward = 0
[root@route ~]# vim /etc/sysctl.conf
[root@route ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@route ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.11 ##从eth0离开的数据源地址都转换为11主机
[root@route ~]# iptables -t nat -A PREROUTING -i eth0 -d 172.25.254.11 -j DNAT --to-dest 172.25.87.11 ##目的端口为11主机的包目的转换为87.11主机
【示例】