一、iptables 基础
1、容器:包含或者说属于的关系
2、Netfilter/iptables是表的容器,iptables包含的各个表
(filter,NAT,MANGLE,RAW)
3、iptables的表tables又是链的容器
链chains:INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING
4、链chains是规则容器:
5、规则Policy:一条条过滤的语句。
二、查看系统内核防火墙功能模块加载情况
lsmod |egrep "nat|filter"
[root@server_02 ~]# lsmod |egrep "nat|filter" nf_nat_ftp 3507 0 nf_conntrack_ftp 12913 1 nf_nat_ftp iptable_nat 6158 1 nf_nat 22759 2 nf_nat_ftp,iptable_nat nf_conntrack_ipv4 9506 3 iptable_nat,nf_nat nf_conntrack 79758 6 xt_state,nf_nat_ftp,nf_conntrack_ftp,iptable_nat,nf_nat,nf_conntrack_ipv4 iptable_filter 2793 0 ip_tables 17831 2 iptable_nat,iptable_filter
如果没有,可以通过以下命令加载相关模块
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
三、iptables使用
iptables -F //清除所有规则,不会处理默认的规则。
iptables -X //删除用户自定义的链。
iptables -Z //链的记数器清零。
(2)禁止掉当前主机SSH功能,这里ssh端口用的是52113。
[root@ipt ~]# iptables -t filter -A INPUT -p tcp --dport 52113 -j DROP
命令语法:
Usage:
iptables -t [table] -[AD] chain rule-specification [options]
具体命令示例:
iptables -A INPUT -p tcp --dport 52113 -j DROP
iptables -t filter -A INPUT -p tcp --dport 52113 -j DROP
说明:
1.iptables默认用的就是filter表,因此,以上两条命令等价。
2. 其中的INPUT DROP要大写。
3. --jump -j target
target for rule (may load target extension)
基本的处理行为:ACCEPT(接受)、DROP(丢弃)、REJECT(拒绝)
比较:DROP好于REJECT
(3)显示filter表过滤规则的序号
[root@ipt ~]# iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
[root@ipt ~]# iptables -t filter -D INPUT 1
根据源地址封:
[root@ipt ~]# iptables -t filter -A INPUT -i eth0 -s 10.0.0.104 -j DROP
iptables -t filter -A INPUT -i eth0 ! -s 10.0.0.104 -j DROP
iptables -t filter -I INPUT -p icmp --icmp-type 8 -i eth0 ! -s 10.0.0.0/24 -j DROP
[root@ipt ~]# iptables -t filter -I INPUT -p icmp --icmp-type 8 -i eth0 -s 10.0.0.0/24 -j DROP
封掉3306端口
iptables -A INPUT -p tcp --dport 3306 -j DROP
匹配指定协议外的所有协议
iptables -A INPUT -p ! tcp
匹配主机源IP
iptables -A INPUT -s 10.0.0.14
iptables -A INPUT -s ! 10.0.0.14
匹配网段
iptables -A INPUT -s 10.0.0.0/24
iptables -A INPUT -s ! 10.0.0.0/24
匹配单一端口
iptables -A INPUT -p tcp --sport 53
iptables -A INPUT -p udp --dport 53
匹配指定端口之外的端口
iptables -A INPUT -p tcp --dport ! 22
iptables -I INPUT -p tcp ! --dport 22 -s 10.0.0.123 -j DROP
匹配单一端口
iptables -A INPUT -p tcp --sport 53
iptables -A INPUT -p udp --dport 53
匹配指定端口之外的端口
iptables -A INPUT -p tcp --dport ! 22
iptables -I INPUT -p tcp ! --dport 22 -s 10.0.0.123 -j DROP
匹配端口范围:
iptables -I INPUT -p tcp --dport 52000:53000 -j DROP //端口范围52000-53000
iptables -A INPUT -p tcp --sport 22:80 //端口范围22-80
iptables -I INPUT -p tcp --dport 21,22,23,24 -j ACCEPT===》错误语法
iptables -I INPUT -p tcp -m multiport --dport 21,22,23,24 -j ACCEPT===》正确写法
iptables -I INPUT -p tcp --dport 3306:8809 -j ACCEPT
iptables -I INPUT -p tcp --dport 18:80 -j DROP
匹配ICMP类型
iptables -A INPUT -p icmp --icmp-type 8
例:iptables -A INPUT -p icmp --icmp-type 8 -j DROP
iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
匹配指定的网络接口
iptables -A INPUT -i eth0
iptables -A FORWARD -o eth0
记忆方法:
--in-interface -i [!] input name[+]
network interface name ([+] for wildcard)
--out-interface -o [!] output name[+]
network interface name ([+] for wildcard)
匹配网络状态
-m state --state
NEW:已经或将启动新的连接
ESTABLISHED:已建立的连接
RELATED:正在启动新连接
INVALID:非法或无法识别的
FTP服务是特殊的,需要配状态连接。
7.允许关联的状态包通过(web服务不要使用FTP服务)
#others RELATED ftp协议
#允许关联的状态包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#___________________________ ipconfig conf end _______________________________
比喻:看电影出去WC或者接个电话,回来也得允许进去。
-m limit
--limit n/{second/minute/hour}:指定时间内的请求速率"n"为速率,后面为时间分别为:秒、分、时
--limit-burst [n]:在同一时间内允许通过的请求"n"为数字,不指定默认为5
fg:本机地址:172.16.14.1,允许172.16.0.0/16网络ping本机,但限制每分钟请求不能超过20,每次并发不能超过6个
iptables -A INPUT -s 172.16.0.0/16 -d 172.16.14.1 -p icmp --icmp-type 8 -m limit --limit 20/min --limit-burst 6 -j ACCEPT
iptables -A OUTPUT -s 172.16.14.1 -d 172.16.0.0/16 -p icmp --icmp-type 0 -j ACCEPT
配置一个企业防火墙规则示例:
[root@ipt ~]# iptables -F
[root@ipt ~]# iptables -X
[root@ipt ~]# iptables -Z
[root@ipt ~]# iptables -A INPUT -p tcp --dport 52113 -s 10.0.0.0/24 -j ACCEPT
[root@ipt ~]# iptables -A INPUT -i lo -j ACCEPT
[root@ipt ~]# iptables -A INPUT -o lo -j ACCEPT
[root@ipt ~]# iptables -A OUTPUT -o lo -j ACCEPT
允许合法的进入:
iptables -A INPUT -s 124.43.62.96/27 -p all -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#others RELATED ftp协议
#允许关联的状态包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables禁ping
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
#others RELATED ftp协议
#允许关联的状态包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
修改链表默认策略:
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -s 124.43.62.96/27 -p all -j ACCEP
iptables -A INPUT -s 192.168.1.0/24 -p all -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -p all -j ACCEPT
iptables -A INPUT -s 203.83.24.0/24 -p all -j ACCEPT
iptables -A INPUT -s 201.82.34.0/24 -p all -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
企业iptables面试题:自定义链处理syn***
iptables -N syn-flood
iptables -A INPUT -i eth0 -syn -j syn-flood
iptables -A syn-flood -m limit -limit 5000/s -limit-burst 200 -j RETURN
iptables -A syn-flood -j DROP
保存iptables的配置
iptables-save >/etc/sysconfig/iptables
局域网共享的两条命令方法:
方法1:适合于有固定外网地址的:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.7
(1)-s 192.168.1.0/24 办公室或IDC内网网段。
(2)-o eth0 为网关的外网卡接口。
(3)-j SNAT --to-source 10.0.0.19 是网关外网卡IP地址。
方法2:适合变化外网地址(ADSL):
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE 伪装源地址
iptables的生产常用场景:
1)实现服务器本身防火墙功能,使用filter表。
2)实现局域网上网网关,使用nat表,网关上也可以同时用filter表做防火墙。
3)实现NAT功能,如:由外部IP映射到内部服务器IP(包括端口),使用nat表。
端口映射配置示例:
iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.8:9000
7.映射多个外网IP上网
iptables -t nat -A POSTROUTING -s 10.0.0.0/255.255.240.0 -o eth0 -j SNAT --to-source 124.42.60.11-124.42.60.16
iptables -t nat -A POSTROUTING -s 172.16.1.0/255.255.255.0 -o eth0 -j SNAT --to-source 124.42.60.103-124.42.60.106
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。