Linux--iptables基础篇
前一阵子,服务器搞网络安全,这对于小白来说真的是恶心坏了,没办法只能恶补iptables知识,坚决不做睁眼瞎,整理之后发现真的是博大精深,python也不能停,暂时整理出基础篇!深入篇会持续整理。。。
1 iptables基础篇
1.1 iptables基础
- 规则(rules):网络管理员预定义的条件。
- 链(chains): 是数据包传播的路径。
- 表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能。
- filter表是系统默认的,INPUT表(内核流入用户空间的数据包),FORWORD(从发用户空间流出的数据包,转发管卡),OUTPUT(进入/离开本机的外网接口),filter表只能对包进行授受和丢弃的操作。
- nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)。
- mangle表,修改报文原数据,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT。
1.2 顺序读取规则
iptables是按照顺序读取规则,所以后续优化会涉及到。
1.3 命令格式
iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [–sport 源端口号] [-d 目的IP|目标子网] [–dport 目标端口号] [-j 动作]
若不指定表名,默认使用filter表
所有的链名必须大写,表名必须小写,动作必须大写,中间的条件匹配必须小写
1.3.1 参数:
-A 增加 -I 插入 -D 删除 -R 替换
1.3.2 动作选项
ACCEPT 接收数据包
DROP 丢弃数据包
REDIRECT 将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
SNAT 源地址转换
DNAT 目的地址转换
MASQUERADE IP伪装
LOG 日志功能
1.4 帮助及环境准备
[root@FRONTDB ~]# iptables –h
[root@FRONTDB ~]# man iptables
iptables -L -n 查看当前规则
iptables -F #清空所有的防火墙规则
iptables -X #删除用户自定义的空链
iptables -Z #清空计数
2 简单应用
[root@FRONTDB ~]# netstat -lntup| grep ssh
tcp 0 0 :::22 :::* LISTEN 2737/ssh
[root@FRONTDB ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 2737 root 3u IPv6 9183 TCP *:ssh (LISTEN)
sshd 17199 root 3u IPv6 521111 TCP FRONTDB:ssh->192.168.0.201: