iptables简单使用

概念

iptables 是集成在 Linux 内核中的包过滤防火墙系统

硬件 –> 内核空间 –> 网络应用

  • netfilter:Linux 内核中的包过滤框架(内核态)
  • iptables:用户空间的防火墙管理工具(用户态)

linux主机也可充当一台小型路由

查看主机IP地址:hostname -I

四表五链

四表

表名优先级功能说明
raw最高连接跟踪处理
mangle次高数据包修改
nat次低网络地址转换
filter最低数据包过滤

五链

  • 进入本机数据包(入站):PREROUTING → INPUT
  • 转发数据包(转发):PREROUTING → FORWARD → POSTROUTING
  • 本机发出数据包(出站):OUTPUT → POSTROUTING
链名说明应用场景
INPUT处理入站数据包访问本机服务
OUTPUT处理出站数据包本机对外访问
FORWARD处理转发数据包路由器转发
PREROUTING路由前数据包处理目的地址转换(DNAT)
POSTROUTING路由后数据包处理源地址转换(SNAT)

表链关系

操作命令

不指定表默认使用filter表

简化iptables [-t 表名] 管理选项 [链名][序号][匹配条件] [-j 处理动作]

所有链名和处理动作必须使用大写

常用管理选项

选项说明示例
-A –append在链末尾添加规则(追加)iptables -A INPUT -p tcp –dport 80 -j ACCEPT
-I –insert在链中插入规则,无指定序号默认插入开头iptables -I INPUT 2 -p tcp –dport 22 -j ACCEPT
-D –delete删除链中指定序号规则(连续删除注意顺位)iptables -D INPUT 1
-R –replace替换链中指定序号的规则iptables -R INPUT 2 -p tcp –dport 80 -j ACCEPT
-L –list列出规则iptables -L -n -v
-P –policy设置默认策略iptables -P INPUT DROP
-F –flush清空规则iptables -F

处理动作

filter表动作说明示例
ACCEPT允许
DROP丢弃(无提示信息)
REJECT拒绝(有提示信息)
LOG写日志
nat表动作说明示例
SNAT源地址转换
DNAT目标地址转换

匹配条件

条件说明示例
-s x.x.x.x/x源地址
-d x.x.x.x/x目标地址
-p tcp|udp|imcp协议 需一一对应 80就是tcp,53就是udp
-i ethxINPUT链 从ethx接口进入的数据包
-o ethxOUTPUT链 从ethx接口出去的数据包

保存规则

系统每次重启后规则都会清空,需要保存好规则

iptables-save > /etc/iptables/iptables.rules

手动重载

//先清空现有规则再进行写入
iptables-restore < /etc/iptables/iptables.rules

//不对现有的进行覆盖,追加
iptables-restore -n < /etc/iptables/iptables.rules
iptables-restore -noflush < /etc/iptables/iptables.rules

案例

列出表中所有规则

当一个表里存在多个规则时,iptables默认从上往下执行,及时删除冲突的规则

iptables -t 表名 -L
iptables --table 表名 --list

服务以端口形式显示
iptables -L -n 

添加规则 – 禁止其他主机访问

REJECT:主动拒绝并返回响应 — 无法连接

iptables --table filter --append INPUT --source x.x.x.x --jump REJECT

添加规则 – 其他主机访问的数据包直接丢弃

DROP:静默丢弃,不返回任何响应 — 请求超时

iptables --table filter --append INPUT --source x.x.x.x --jump DROP

删除规则 – 删除input链的第一条规则

靠前的规则删除后,后面的规则会自动顺位,根据序号连续删除规则时千万要小心

iptables --table filter --delete INPUT 1

允许SSH连接(端口22)

iptables -A INPUT -p TCP --dport 22 --jump ACCEPT

允许HTTP和HTTPS连接(端口80和443)

iptables -A INPUT -p TCP --dport 80 --jump ACCEPT
iptables -A INPUT -p TCP --dport 443 --jump ACCEPT

允许ping

iptables -A INPUT -p ICMP --jump ACCEPT

拒绝其他所有入站连接

iptables -A INPUT --jump REJECT

//设置默认规则为REJECT
iptables -P INPUT REJECT
十二亿七千光年
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇