iptables

IPtables简述

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。

一.iptables基本命令

链管理命令

  -P :设置默认策略的(设定默认门是关着的还是开着的)
    默认策略一般只有两种
    iptables -P INPUT (DROP|ACCEPT)  默认是关的/默认是开的
    比如:
    iptables -P INPUT DROP 这就把默认规则给拒绝了。并且没有定义哪个动作,所以关于外界连接的所有规则包括Xshell连接之类的,远程连接都被拒绝了。
    -F: FLASH,清空规则链的(注意每个链的管理权限)
    iptables -t nat -F PREROUTING
    iptables -t nat -F 清空nat表的所有链
    -N:NEW 支持用户新建一个链
        iptables -N inbound_tcp_web 表示附在tcp表上用于检查web的。
    -X: 用于删除用户自定义的空链
        使用方法跟-N相同,但是在删除之前必须要将里面的链给清空昂了
    -E:用来Rename chain主要是用来给用户自定义的链重命名
        -E oldname newname
     -Z:清空链,及链中默认规则的计数器的(有两个计数器,被匹配到多少个数据包,多少个字节)
        iptables -Z :清空

规则管理命令

  -A:追加,在当前链的最后新增一个规则
     -I num : 插入,把当前规则插入为第几条。
        -I 3 :插入为第三条
     -R num:Replays替换/修改第几条规则
        格式:iptables -R 3 …………
     -D num:删除,明确指定删除第几条规则

查看管理命令

附加子命令
-n:以数字的方式显示ip,它会将ip直接显示出来,如果不加-n,则会将ip反向解析成主机名。
-v:显示详细信息
-vv
-vvv :越多越详细
-x:在计数器上显示精确值,不做单位换算
--line-numbers : 显示规则的行号
-t nat:显示所有的关卡的信息

二.网关策略配置

iptables -t nat -F:(清空nat策略)
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1echo "1" » /proc/sys/net/ipv4/ip_forward
modprobe ip_nat_ftp(因ftp除使用21端口外,还要使用关联的22端口,因
此需要加载ftp模块)
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source
192.168.0.10( 内部网络访问外部时使用192.168.0.10,即公网地址)
(adsl 网络:iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.0.0/
24 -j MASQUERADE)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT -
-to-dest 172.25.254.36(外部网络可以访问内部的http服务器)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 81 -j DNAT -
-to-dest 172.25.254.36:80(端口映射)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 21 -j DNAT -
-to-dest 172.25.254.36(外部网络可以访问内部的ftp服务器)
限制内网用户:
iptables -A FORWARD -s 192.168.1.4 -j DROP
iptables -A FORWARD -m mac --mac 00:19:D1:63:AC:15 -j DROP
iptables -A FORWARD -d www.163.com -j REJECT
#星期一到星期六的8:00-12:30禁止qq通信
iptables -I FORWARD -p udp --dport 53 -m string --string "tencent"
-m time --timestart 8:15 --timestop 12:30 --days
Mon,Tue,Wed,Thu,Fri,Sat -j DROP
iptables -I FORWARD -p udp --dport 53 -m string --string
"TENCENT" -m time --timestart 8:15 --timestop 12:30 --days
Mon,Tue,Wed,Thu,Fri,Sat -j DROP
#星期一到星期六的8:00-12:30禁止qq网页
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "qq.com"
-m time --timestart 8:15 --timestop 12:30 --days
Mon,Tue,Wed,Thu,Fri,Sat -j DROP
#禁止宽频影院,色情,广告网页连接
iptables -I FORWARD -d 192.168.0.0/24 -m string --string "宽频影院"
-j DROP
iptables -I FORWARD -s 192.168.0.0/24 -m string --string "色情" -j
DROP
iptables -I FORWARD -p tcp --sport 80 -m string --string "广告" -j
DROP
#禁止BT连接
iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP#限制并发连接数
iptables -A FORWARD -p tcp --syn --dport 80 -m connlimit --
connlimit-above 15 --connlimit-mask 24 -j DROP
打开主机的22号端口,允许远程管理
iptables -A INPUT -i eth0 -s 192.168.1.104 -d 192.168.1.111 -p tcp
--dport 22 -j ACCEPT
iptables -A OUTPUT -o eth0 -d 192.168.1.111 -s 192.168.1.104 -p
tcp --sport 22 -j ACCEPT
iptables-save » /etc/iptables.up.rules
iptables-restore « /etc/iptables.up.rules
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
iptables -A INPUT -j DROP
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables
denied: " --log-level 7: (将被丢弃的报文记录到syslog中) 每分钟通过5个数据包
技巧:
iptables -A OUTPUT -s 192.168.1.100 -p tcp --dport 80 -j REJECT(不可
访问web)
iptables -A OUTPUT -s 192.168.1.100 -d www.163.com -p tcp --dport
80 -j REJECT
iptables -A OUTPUT -m owner --uid-owner 1000 -j REJECT (特定用户)
iptables -A OUTPUT -m owner --gid-owner 501:
iptables -A OUTPUT -m owner --pid-owner 50: 

三.iptables用法示例

iptables -vnL
 #查看详细的管理命令
iptables -A INPUT -s 172.25.254.36 -p tcp --dport 23 -j REJECT
 #明确拒绝172.25.254.36主机对23端口的访问
iptables -A INPUT -s 172.25.254.36 -p tcp --dport 23 -j DROP
 #悄悄丢弃172.25.254.36主机对23端口的访问,无任何提示
iptables -F:刷新策略
iptables -I INPUT 2 -p tcp --dport 23 -j DROP
 #插入到第二条策略
iptables -E oldname newname
 #修改规则链名称
 iptables -D INPUT 3
 #删除filter表中的第三条规则
iptables -D INPUT -s 172.25.254.36 -j DROP
 #按内容删除规则
iptables -R INPUT 3 -j ACCEPT
 #将原来编号为3的规则内容替换为-j
iptables -t nat -F
 #清空nat策略, -F 仅仅是清空链中规则,并不影响 -P 设
置的默认规则
iptables -t nat -nL
 #查看nat策略
iptables -t nat -L PREROUTING
 #查看nat表PREROUTING链的规则
iptables -N redhat
 #添加自定义链名
iptables -D redhat 1
 #删除自定义链下的策略
iptables -X redhat
 #删除自定义链
iptables -A INPUT -s !172.25.254.36 -p tcp --dport 23 -j REJECT
 #只允许172.25.254.36主机的连接
 -i eth0:匹配从网络接口 eth0 进来
-o eth0:匹配从网络接口 eth0 出去
-s 172.25.254.36 匹配来自 192.168.0.1 的数据包
-s 172.25.254.0 /24 匹配来自 172.25.254.0/24 网络的数据包 
-d 172.25.254.36匹配去往 172.25.254.36 的数据包
-d 172.25.0.0/16 匹配去往 172.25.0.0/16 网络的数据包
-d www.abc.com:匹配去往域名 www.abc.com
-p tcp,udp
-p icmp --icmp-type 8(ping)
--sport 1000:匹配源端口是 1000 的数据包
--sport 1000:3000 匹配源端口是 1000-3000 的数据包(含10003000
)
--sport :3000:匹配源端口是 3000 以下的数据包(含 3000 )
--sport 1000: 匹配源端口是 1000 以上的数据包(含 1000 )
-s 172.25.254.36 -d www.abc.com -p tcp --dport 80:匹配来自
172.25.254.36 ,去www.abc.com 的 80 端口的 TCP 协议数据包
iptables -A OUTPUT -m owner --uid-owner 500:匹配特定使用者的包
iptables -A OUTPUT -m owner --gid-owner 501:
iptables -A OUTPUT -m owner --pid-owner 50:
iptables -A OUTPUT -m owner --sid-owner 5:是否为某特定联机
(session id)的封包
iptables -A FORWARD -m mac --mac xx:xx:xx:xx:xx:xx -j DROP:阻
断来自某 MAC 地址的数据包,通过本机
iptables -A INPUT -m mac --mac 00:19:D1:63:AC:15 -p tcp --dport
21 -j DROP(禁止访问本机的ftp)
-j ACCEPT DROP REJECT REDIRECT MASQUERADE LOG DNAT SNAT
MIRROR QUEUE RETURN MARK
POSTROUTING:可以在这里定义进行源NAT的规 则,系统在决定了数据包的路
由以后在执行该链中的规则。
 #在进行地址伪装和端口转化的时候要开启内核路由功能
[root@issic-server ~]# sysctl -a | grep forward
net.ipv4.ip_forward = 0
[root@issic-server ~]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[root@issic-server ~]#sysctl -p
DNAT示例:
INBOUND(进入)
Iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --todest 172.25.254.36
OUTBOUD(输出,带有端口重定向)
iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to--
dest 172.25.254.36:3128
SNAT示例:
Iptables -t nat -A POSTROUTING -j SNAT --to-source
172.25.254.36
MASQUERADE(地址伪装)
Iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.25.0.0/24 -j MASQUERADE --
to-ports 1024-31000:将源地址是172.25.0.0/24的包的地址改写为防火墙的
NIC ip,并指定端口范围
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值