包过滤防火墙iptables(网络层)
安装: yum -y install iptables-services
启动:systemctl start iptables.service
四表五链
过滤:filter
- input forward output
地址转换:nat
- prerouting(路由前) postrouting(路由后) output
包标记:mangle
-prerouting -postrouting input output forward
状态跟踪:raw
- prerouting output
规则链匹配顺序
顺序对比,匹配即停止(log除外) # log表示只记录
未匹配则按链的默认策略处理
查看配置文件: rpm -qc iptables
保存设置: iptables-save > /etc/sysconfig/iptables-config
基本用法
指令组成 iptables [-t 表名] options [链名] [conditions] [-j 目标操作]
选项(options)
-A # 在链的末尾追加一条规则
-I # 在链的开头(或指定序号)插入一条规则
-L # 列出所有的规则条目
-n # 以数字形式显示地址、端口等信息
--line-numbers # 查看规则是,显示规则的序号
-D # 删除链内指定序号(或内容)的一条规则
-F # 清空所有规则
-P # 为指定的链设置默认规则
条件(conditions)
通用匹配 协议匹配 -p 协议名
地址匹配 -s 源地址 -d 目标地址
接口匹配 -i 收数据的网卡 -o 发数据的网卡
隐含匹配 端口匹配 -sport 源端口 --dport 目标端口
ICMP类型匹配 --icmp-type ICMP类型
需要取反使用!
基本目标操作
ACCEPT:允许通过/放行
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必钥时给出提示
LOG:记录日志,然后传给下一条规则
主机型防火墙(自己保护自己)---filter表(INPUT OUTPUT FORWARD )
# eg: [root@50 ~]# iptables -t filter -A INPUT -p tcp -s 192.168.4.0/24 --dport 22 -j ACCEPT [root@50 ~]# iptables -t filter -P INPUT DROP # 默认进入的数据包都丢弃 [root@50 ~]# iptables -t filter -nL INPUT Chain INPUT (policy DROP) target prot opt source destination ACCEPT tcp -- 192.168.4.0/24 0.0.0.0/0 tcp dpt:22
配置SNAT实现共享上网
开启路由转发 echo 1 > /proc/sys/net/ipv4_forward 或者 echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
设置防火墙规则
iptables -t nat -A POSTROUTING -s xxx.xxx.xxx.xxx/24 -p tcp --dport 80 -j SNAT --to-source xxx.xxx.xxx.xxx
地址伪装
iptables -t nat -A POSTROUTING -s xxx.xxx.xxx.xxx/24 -p tcp --dport 80 -j MASQUEREAD