iptables

iptables命令

 1 内建三个表:nat mangle 和 filter
 2 filter预设规则表,有INPUT、FORWARD 和 OUTPUT 三个规则链
 3 vi /etc/sysconfig/iptables    # 配置文件
 4 INPUT    # 进入
 5 FORWARD  # 转发
 6 OUTPUT   # 出去
 7 ACCEPT   # 将封包放行
 8 REJECT   # 拦阻该封包
 9 DROP     # 丢弃封包不予处理
10 -A       # 在所选择的链(INPUT等)末添加一条或更多规则
11 -D       # 删除一条
12 -E       # 修改
13 -p       # tcp、udp、icmp    0相当于所有all    !取反
14 -P       # 设置缺省策略(与所有链都不匹配强制使用此策略)
15 -s         # IP/掩码    (IP/24)    主机名、网络名和清楚的IP地址 !取反
16 -j         # 目标跳转,立即决定包的命运的专用内建目标
17 -i         # 进入的(网络)接口 [名称] eth0
18 -o         # 输出接口[名称] 
19 -m         # 模块
20 --sport    # 源端口
21 --dport    # 目标端口
22  
23 iptables -F                        # 将防火墙中的规则条目清除掉  # 注意: iptables -P INPUT ACCEPT
24 iptables-restore < 规则文件         # 导入防火墙规则
25 /etc/init.d/iptables save          # 保存防火墙设置
26 /etc/init.d/iptables restart       # 重启防火墙服务
27 iptables -L -n                     # 查看规则
28 iptables -t nat -nL                # 查看转发

 

iptables实例

 1 iptables -L INPUT                   # 列出某规则链中的所有规则
 2 iptables -X allowed                 # 删除某个规则链 ,不加规则链,清除所有非内建的
 3 iptables -Z INPUT                   # 将封包计数器归零
 4 iptables -N allowed                 # 定义新的规则链
 5 iptables -P INPUT DROP              # 定义过滤政策
 6 iptables -A INPUT -s 192.168.1.1    # 比对封包的来源IP   # ! 192.168.0.0/24  ! 反向对比
 7 iptables -A INPUT -d 192.168.1.1    # 比对封包的目的地IP
 8 iptables -A INPUT -i eth0           # 比对封包是从哪片网卡进入
 9 iptables -A FORWARD -o eth0         # 比对封包要从哪片网卡送出 eth+表示所有的网卡
10 iptables -A INPUT -p tcp            # -p ! tcp 排除tcp以外的udp、icmp。-p all所有类型
11 iptables -D INPUT 8                 # 从某个规则链中删除一条规则
12 iptables -D INPUT --dport 80 -j DROP         # 从某个规则链中删除一条规则
13 iptables -R INPUT 8 -s 192.168.0.1 -j DROP   # 取代现行规则
14 iptables -I INPUT 8 --dport 80 -j ACCEPT     # 插入一条规则
15 iptables -A INPUT -i eth0 -j DROP            # 其它情况不允许
16 iptables -A INPUT -p tcp -s IP -j DROP       # 禁止指定IP访问
17 iptables -A INPUT -p tcp -s IP --dport port -j DROP               # 禁止指定IP访问端口
18 iptables -A INPUT -s IP -p tcp --dport port -j ACCEPT             # 允许在IP访问指定端口
19 iptables -A INPUT -p tcp --dport 22 -j DROP                       # 禁止使用某端口
20 iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP   # 禁止icmp端口
21 iptables -A INPUT -i eth0 -p icmp -j DROP                         # 禁止icmp端口
22 iptables -t filter -A INPUT -i eth0 -p tcp --syn -j DROP                  # 阻止所有没有经过你系统授权的TCP连接
23 iptables -A INPUT -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT   # IP包流量限制
24 iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT  # 除192.168.62.1外,禁止其它人ping我的主机
25 iptables -A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 --rttl --name WEB --rsource -j DROP  # 可防御cc攻击(未测试)

 

iptables配置实例文件

 1 # Generated by iptables-save v1.2.11 on Fri Feb  9 12:10:37 2007
 2 *filter
 3 :INPUT ACCEPT [637:58967]
 4 :FORWARD DROP [0:0]
 5 :OUTPUT ACCEPT [5091:1301533]
 6 # 允许的IP或IP段访问 建议多个
 7 -A INPUT -s 127.0.0.1 -p tcp -j ACCEPT
 8 -A INPUT -s 192.168.0.0/255.255.0.0 -p tcp -j ACCEPT
 9 # 开放对外开放端口
10 -A INPUT -p tcp --dport 80 -j ACCEPT
11 # 指定某端口针对IP开放
12 -A INPUT -s 192.168.10.37 -p tcp --dport 22 -j ACCEPT
13 # 拒绝所有协议(INPUT允许)
14 -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,URG RST -j DROP
15 # 允许已建立的或相关连的通行
16 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
17 # 拒绝ping
18 -A INPUT -p tcp -m tcp -j REJECT --reject-with icmp-port-unreachable
19 COMMIT
20 # Completed on Fri Feb  9 12:10:37 2007

 

iptables配置实例

 1 # 允许某段IP访问任何端口
 2 iptables -A INPUT -s 192.168.0.3/24 -p tcp -j ACCEPT
 3 # 设定预设规则 (拒绝所有的数据包,再允许需要的,如只做WEB服务器.还是推荐三个链都是DROP)
 4 iptables -P INPUT DROP
 5 iptables -P FORWARD DROP
 6 iptables -P OUTPUT ACCEPT
 7 # 注意: 直接设置这三条会掉线
 8 # 开启22端口
 9 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
10 # 如果OUTPUT 设置成DROP的,要写上下面一条
11 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 
12 # 注:不写导致无法SSH.其他的端口一样,OUTPUT设置成DROP的话,也要添加一条链
13 # 如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链
14 iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
15 # 做WEB服务器,开启80端口 ,其他同理
16 iptables -A INPUT -p tcp --dport 80 -j ACCEPT
17 # 做邮件服务器,开启25,110端口
18 iptables -A INPUT -p tcp --dport 110 -j ACCEPT
19 iptables -A INPUT -p tcp --dport 25 -j ACCEPT
20 # 允许icmp包通过,允许ping
21 iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话) 
22 iptables -A INPUT -p icmp -j ACCEPT  (INPUT设置成DROP的话)
23 # 允许loopback!(不然会导致DNS无法正常关闭等问题) 
24 IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
25 IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

 

iptables添加网段转发

1 # 例如通过vpn上网
2 echo 1 > /proc/sys/net/ipv4/ip_forward       # 在内核里打开ip转发功能
3 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE  # 添加网段转发
4 iptables -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -o eth0 -j SNAT --to 192.168.10.158  # 原IP网段经过哪个网卡IP出去
5 iptables -t nat -nL                # 查看转发

 

iptables端口映射

1 # 内网通过有外网IP的机器映射端口
2 echo 1 > /proc/sys/net/ipv4/ip_forward       # 在内核里打开ip转发功能
3 route add -net 10.10.20.0 netmask 255.255.255.0 gw 10.10.20.111     # 内网需要添加默认网关,并且网关开启转发
4 iptables -t nat -A PREROUTING -d 192.168.10.158  -p tcp --dport 9999 -j DNAT --to 10.10.20.55:22
5 iptables -t nat -nL                # 查看转发

 

posted @ 2019-09-17 11:05  凌空a  阅读(174)  评论(0编辑  收藏  举报