iptables [ -t tables ] [ -L ] [ -nv ]
iptables [ -AIchain名 ] [ -io网络接口 ] [ -p协议 ] [ -s来源IP或网域 ] [ -d目标IP或网域 ] [ -j ACCEPT | REJECT | DROP | LOG ]
-L(list)
-t :后面节tables 默认是filter [ nat ]
-n :不进行ip与hostname的反查(即不进行DNS解析,直接输出IP)
-v : 列出更多的信息,包括通过该规则的封包总数,网络接口等
--line-number ==>显示规则编号
-F :清除所有已定义的规则
-X : 清除所有使用者自定义的chain
-Z : 将所有chain的计数和流量清零
-A(append) ==>append添加规则
-I (insert) ==>插入规则
-D (删除一条规则,后面跟规则的编号)
-R(修改)
-i :数据包进入的网卡 与INPUT 链对应
-o (小写) : 数据包出去的网卡,与OUTPUT 链对应
-s : 来源IP或者网域
IP: 192.168.1.1
网域: 192.168.1.0/24
-s ! 192.168.1.1 ==>取反
-d : 目标IP 或网域
-P(大写):设置默认规则,而不是添加规则
-p(小写 ): 协议 tcp /udp icmp….smtp 即封包的格式)
- -dport 目标端口或端口范围 如: 10000:20000(表示10000到20000之间的端口, 10000,20000 表示端口10000和20000)
- -sport 源端口或端口范围
iptables -A input [ -m state ] [ --state 状态 |--mac-source ]
-m : ptables的外挂模块,常见的有:
state : 状态模块
mac : hardware address
INVALID : 无效的封包
ESTABLISHED : 已经联机的状态
NEW : 想要新建立联机的封包状态
RELATED: 表示这个封包与我们主机发送出去的封包有关
example :
iptables -A INPUT -m state --state RELATED , ESTABLISED -j ACCEPT
iptables -A IPNUT -m state --state INVALID -j DROP
针对局域网内的 aa:bb:cc:dd:ee:ff 主机开放
iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT
filter table 的chain
1外面进来的数据包
Chain INPUT (policy ACCEPT)
target prot opt source destination
2从我们的主机转发到其他的主机
Chain FORWARD (policy ACCEPT )
target prot opt source destination
3从主机出去的数据包
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
target prot opt source destination
DROP all -- 192.168.0.4 0.0.0.0/0
target : 代表的是进行的动作
port :代表此规则针对的封包协议 主要有TCP ,UDP,ICMP
source :代表此规则针对的哪个来源IP
destination :代表此规则针对哪个目标IP
ACCEPT 让数据进来
DROP直接丢掉,不告诉客户端
REJECT 丢弃数据包,告诉客户
LOG : 将封包的信息写入到/var/log/messages中(仅起记录作用)
iptables [- t table ] command [ match ] [target]
1表 filter(用的最多) nat(网关) mangle
filter 表用于一般数据的过滤 ,针对本机; 是iptables默认的表;
链:INPUT FORWARD OUTPUT ;
nat ,仅用于NAT ,也就是转换数据包得源地址和目标地址;
源,目的接口 -s -d ip或者ip段
iptables -A OUTPUT -d 192.168.0.1 -j DROP 将来自192.168.0.1的请求全drop掉
iptables -A INPUT -s 192.168.0.1 -j DROP 将来自192.168.0.1的请求全drop掉
协议类型 -p TCP UDP ICMP
iptables 系统内核级服务
在系统启东时,会把iptables加载到内存
service iptables save 把再命令行中设定的规则保存到磁盘上
或者
iptables -save > /etc/sysconfig/iptables
设置默认规则:
iptables -P INPUT ACCEPT (注意,别加-j)
==========================
iptables -F(flush) ==>清除所有iptables规则
iptables -A INPUT(进来的数据包) -j(动作,怎么处理进来的数据包) DROP
这条规则的意思; 增加一条规则==>丢弃所有的进来的数据包
此时再访问网站时,浏览器会一直卡着,用其他的工具(ssh ,等)也连不上服务器了(DROP all -- anywhere anywhere )
===================================
删除一条规则:
iptables -DINPUT 1
=====================================
禁止ssh登陆,但允许web访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22(ssh端口) -j DROP
========================================
iptables -i INPUT eth0 -j ACCEPT
===========================================
阻止从80端口出去的数据包
iptables -A output -p tcp --sport 80 -j DROP
===========================================
把ping的数据包全丢掉
iptables -A IPNUT -p icmp -j DROP
iptables -A INPUT -s(来源) 192.168.0.3 -j DROP
========================================
这两行要经过测试后没问题才加
service iptables save
service iptables restart
=========================================