一.默认的四张表
1.filter:用于防火墙,默认有INPUT/OUTPUT/FORWARD三条链
2.nat:网络地址转换,PREROUTING/POSTROUTING/OUTPUT 三条链
3.mangle:流量整形,五条链
4.raw:确定是否对数据包进行状态跟踪
二.默认的五条规则链
1.INPUT:如果一个数据包的目的地址是LINUX本身,则进入INPUT链
2.OUTPUT:源地址是LINUX本身
3.FORWARD:数据包从一块网卡接收,从另一块网卡发出,经过LINUX的包,进入这条链
4..PREROUTING路由前
5.POSTROUTING路由后
三.编写规则
类别 选项 用途
添加规则 -A 在链的末尾追加一条规则
-I 在链的开头(或指定序号)插入一条规则
查看规则 -L 列出所有的规则条目
-n 以数字形式显示地址,端口等信息
--line-numbers 查看规则时,显示规则的序号
删除规则 -D 删除链内指定序号(或内容)的一条规则
-F 清空所有规则
默认策略 -P 为指定的链设置默认规则
ACCEPT:允许通行/放行
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志,然后传给下一条规则
工具程序位置
- /sbin/iptables
指令组成
- [ -t 表名 ] 选项 [ 链名 ] [ 链名 ] [ 条件 ] [ -j 目标操作 ]
Iptables –nL //查看规则,以数字形式显示
Iptables –t filter –L //可直接写iptalbes –L 查filter表
Iptables –F //清除规则
Iptables –L
Iptables –P INPUT DROP //DROP 丢弃,不允许访问
Iptables –A INPUT –p tcp –dport 80 –jACCEPT //追加tcp 80 端口 ACCEPT允许 –J跳转
Iptables –A INPUT –p tcp –dport 443 –jACCEPT
Iptables –A INPUT –s 192.168.10.3 –p tcp –-dport80 –j ACCEPT //-s源
Iptables –I INPUT 3 –S 192.168.1.1 –p –tcp --doport 80 –j ACCERT 在第三行插入
Iptables –nL --line-numbers //显示规则的序列号
Iptables –D INPUT 3 //删除第3排的规则
# watch –n 1 iptables –nvL //每隔一少钟刷新后面的命令
1.拒绝ping防火墙本身
# iptables -F
# iptables –A INPUT –p icmp –j DROP
2.ping linux 的IP地址
3.把防火墙规则再清空,把拒绝ICMP的目标规则改为REJECT,再次ping测试,看结果,
4.查看防火墙规则
#iptables –nvl
5.允许指定ip地址的主机ping防火墙
# iptables –I INPUT 1 –s 192.168.1.1 –picmp –j ACCEPT
6.查看防火墙规则,每个规则注说序号
# iptables –nL –-line-numbers
7.删除防火墙的INPUT链中第二条规则
# iptables –D INPUT 2
8.把OUTPUT的默认规则改为DROP
# iptables –P OUTPUT DROP
9.清空OUTPUT这条规刚
# iptables –F OUTPUT
10.iptables –nvL //匹配的条数
四,规则的基本匹配条件
类别 选项 用法
协义匹配 -P协义名
通用匹配 地址匹配 -s 源地址 -d 目标地址
接口匹配 -i 收数据的网卡 -o 发数据的网卡
端口匹配 --sport源端口 --dport 目标端口
隐含匹配 ICMP类型匹配 --icmp-type ICMP类型
TCP标记匹配 --tcp-flags检查哪些位 哪些位被设置
1. 允许特定ip地址访问LINUX 的telnet服务
(1)# yum –y install telnet-server
#service xinetd start
#chkconfig telnet on
(2) # iptables –P INPUT DROP
(3) #iptables –A INPUT –s 192.168.1.1 –p tcp –-dport 23 –j ACCEPT
2.继续第一步,向INPUT链插入规则,第一条,从eth0网卡收到的、访问telnet服务的数据包,拒绝
# iptables –I INPUT –i eth0 p tcp –dport 23–j REJECT
五.打开LINUX的路由功能(转发功能)
IS:中间系统路由器
ES:终端系统,主机系统
1. 临时打开路由功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_ forward
2. 永久打开转发功能
# echo `echo 1 > /proc/sys/net/ipv4/ip_forward` >>/etc/rc.local
或
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
:wq
Sysctl –q //马上生效
六.使用FORWARD链
主机1 主机2 主机3
Eth0:192.1681.1 eth0:192.168.2.1
Eth0:192.168.1.2
Eth0:192.168.2.2
3. 拒绝192.168.195.0//24 网段访问192.168.194.0、24网段的telnet服务
4. # iptables –A FORWARD –s192.168.195.0/24 –d 192.168.2.0/24 –p tcp –doprt 23 –i eth1 -0 eth0 –j REJECT
2. 拒绝SSH协议通过防火墙
3. iptables –A FORWARD –p tcp –dport22 –j REJECT
4. 不是192.168.195.0/24 网段的主机访问SSH服务,可通过
# iptables –I FORWARD ! –s 192.168.195.0/24–p tcp –dport 22 –j ACCEPT
5. 防火墙拒绝icmp的请求
# iptables –A INPUT –p icmp –-icmp-typeecho-request –j REJECT .
6. 允许192.168.195.0/24网段进行PING
# iptables –I INPUT –s 192.168.195.0/24 –picpm –-icmp-type echo-request –j ACCEPT
7. 防火墙拒绝发送echo-reply
# iptables –A OUTPUT –p icmp –-icmp-typeecho-reply –j REJECT
8. 允许防火墙回应192.168.195.0/24网段的ping
# iptables –I OUTPUT –s 192.168.195.0/24 –picmp –icmp-type echo-reply –j ACCEPT
9.防火墙拒绝192.168.195.0/24对其进行TCP连接
检查SYN/ACK/RST/FIN四个位置,其中SYN被置位
# iptables –I INPUT –s 192.168.195.0/24 –ptcp –-tcp-flags SYN,ACK,RST,FIN SYN –j REJECT
或
# iptables –A INPUT –i eth1 –p tcp ! –-syn –jACCEPT
5. 主机1拼通主机3 主机3拼通主机1 主机2设置
# iptables –I FORWARD –s 192.168.2.0/24 –d192.168.1.0/24 –p icmp –j ACCEPT
# iptables –I FORWARD 2 –s 192.168.1.0/24 –d192.168.2.0/24 –p icmp –j ACCEPT
# iptables –I FORWARD –s 192.168.2.0/24 –d192.168.1.0/24 –i eth1 –o eth0 –p tcp –dport 22 –j ACCEPT
# iptables –I FORWARD –s 192.168.1.0/24 –d192.168.2.0/24 –i eth0 –o eth1 –p tcp –dport 22 –j ACCEPT
主机2设置 执行单向拼通主机1拼主机3
#iptables –I FORWARD –s 192.168.1.0/24 –d 192.168.2.0/24 –p icmp –-icmp-typeecho-request –j ACCEPT
主机2设置
# iptables –I FORWARD –s 192.168.2..0/24 –d192..168.1.0./24 –p icmp icmp-typeecho-reply –j ACCEPT
七.扩展匹配
类别 选项 用法
状态匹配 -mstate --state 状态值
MAC地址匹配 -mmac –-mac-source MAC地址
显示匹配 多端口匹配 -mmultiport –-sports 源端口列表
-mmultiport –-dports 目标端口列表
IP范围匹配 -miprange –-src-range IP1-IP2
-miprange –-dst-range IP1-IP2
根据MAC地址封锁主机
适用于交换网络,针对源MAC地址
- 不管其IP地址变成多少
- # iptables –A INPUT –m mac –-mac–source 00:0C:29:34:45:25–j DROP
- 1、阻止MAC地址为XX:XX:XX:XX:XX:XX主机的所有通信:
- iptables -AINPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP
-
- 2、允许MAC地址为XX:XX:XX:XX:XX:XX主机访问22端口:
- iptables -AINPUT -p tcp --destination-port 22 -m mac --mac-source XX:XX:XX:XX:XX:XX -jACCEPT
- 3、允许IP地址为192.168.1.21,MAC地址为XX:XX:XX:XX:XX:XX的主机通信,拒绝多有其他主机:
- iptables -AINPUT -s 192.168.1.21 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
- iptables -PINPUT DROP
- 4、可以写脚本限制MAC:
- iptables -PFORWARD DROP
- for mac in$(cat ipaddressfile); do
- iptables -AFORWARD -m mac --mac-source $mac -j ACCEPT
- done
-
简化服务开启规则
条规则开放多个端口
比如Web FTP MailSSH等等
# iptables –A –INPUT –s 192.168.20.0/24 –p tcp –mmultiport --dport 20:22,25,80,110,143,16501:16800 –j ACCEPT
//20到23的端口都需要拒统
# iptables –A INPUT –p tcp –dport 20:23 –j REJECT
根据IP范围封锁主机
SSH登陆的IP范围控制
-允许从192.168.4.10-192.168.4.20登陆
-禁止从192.168.4.0、24网段其他的主机登陆
# iptables A INPUT –p tcp –dport 22 –m iprange –src-range192.168.4.10-192.168.4.20 –j ACCEPT
# iptables –A INPUT –p tcp –dport 22 –s 192.168.4.0/24 –jDROP
1. 网络连接的五种状态
NEW,请求建立连接的包,完全陌生的包
ESTABLISHED,将要或已经建立连接的包
RELATED,与已知某个连接相关联的包
INVALID 无对应连接,以通讯连接无效的包
UNTRACKED,未跟踪状态的包
# iptables –P FORWARD DROP
# iptables –A FORWARD –s 192.168.10.0/24 –jACCEPT
# iptables –A FORWARD –d 192.168.10.0/24 –m state –-stateESTABLSHED,RELATED –j ACCEPT
不做重点
DOS: Denial OF Service 拒绝服务功击
# iptables –A INPUT –m state –state NEW –ptcp –syn –j DROP
# iptables –A FORWARD –m state –state NEW –ptcp ! –syn DROP
识别FTP数据链接
针对FTP被动模式,数据端口未知
# iptables –A FORWARD –d 192.168.4.100 –ptcp –dport 20:21 –j –ACCEPT
# iptables –A FORWARD –s 192.168.4.100 –ptcp –sport 20:21 –j ACCEPT
# iptables -A FORWARD –d 192.168.4.100 –m state –stateESTABLISHED,RELATED –j ACCEPT
# iptables -A FORWARD –s 192.168.4.100 –m state –stateESTABLISHED,RELATED –j ACCEPT
禁止从内网访问外网的服务
# iptables –A FORWARD –s 192.168.4.0/24 –oeth0 –j ACCEPT
# iptables –A FORWARD –d 192.168.4..0/24 –i eth0 –mstate –state ESTABLISHED,RELATED –j DROP
# iptables –A FORWARD –d 192.168.4.0/24 –ieth0 –m state –state NEW –j DROP
比如,访问量较大的Web服务
# iptables –t raw –A PREROUTING –d192.168.4.100 –p tcp –dport 80 –j NOTRACK
# iptables –t raw –A PREROUTING –s192.168.4.100 –P tcp –sport 80 –j NOTRACK
# iptables –A FORWARD –m state –stateUNTRACKED –j ACCEPT