iptables实战
- 一、iptables命令参数讲解
- 二、iptables常用命令
- 三、配置实例讲解
- 1.限制某台主机远程登陆
- 2.允许访问22端口
- 3.拒绝某一IP访问本机某个端口
- 4.允许某一IP访问,其余拒绝
- 5.完整iptables配置文件展示
一、iptables命令参数讲解
iptables -A 增加规则,添加到规则的末尾
iptables -D 删除规则
iptables -I 插入规则 ,可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
iptables -Z 计数器清零
iptables -F 清除当前规则,不能清除规则
iptables -R 修改规则
iptables -P INPUT DROP 设定默认规则,不能用-F清除规则,只能用iptables -P ACCEPT才能恢复
iptables (-t nat) --line-number-nvL 查看nat表规则(带有ID号),-t为需要配置的表,默认是filter表
'-j' 跳转到相应的动作,常用有ACCEPT、DROP、REJECT 、MASQUERADE(伪装)
'-s' 后面跟源地址
'-d' 后面跟目的地址
'-p' 后面跟协议,有tcp、udp、icmp等
'--sport' 后面跟源端口号
'--dport' 后面跟目的端口号
'-i' 后面跟输入设备,如eth0
'-o' 后面跟输出设备,如eth0
注意:上面所说的"源"和"目的"(或者成为输入和输出)注意区分,对于INPUT链来说,源是对方,目的是本机,对于OUTPUT链来说则是反过来的。
二、iptables常用命令
CentOS, RedHat
# 保存iptables规则
service iptables save
# 重启iptables服务
方法1:
service iptables stop
service iptables start
方法2(修改配置后常用):
service iptables reload
或者
/etc/init.d/iptables restart
查看当前防火墙规则:
方法1:
cat /etc/sysconfig/iptables
方法2:
iptables -L --line-number
centos
开启防火墙
命令:systemctl start iptables.service #启动防火墙
命令:systemctl enable iptables.service #设置开机自启动
关闭防火墙
命令:systemctl stop iptables.service #关闭防火墙
命令:systemctl disable iptables.service #禁止开机启动
重启
systemctl restart iptables.service
三、配置实例讲解
1.限制某台主机远程登陆
iptables -A INPUT -p tcp -s 192.168.67.140 --destination-port 22 -j REJECT
2.允许访问22端口
iptables -A INPUT -s 180.136.145.242 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 180.136.145.242 -p tcp --dport 22 -j ACCEPT
3.拒绝某一IP访问本机某个端口
iptables -I INPUT -p tcp -s 172.20.10.2 --dport 888 -j DROP
4.允许某一IP访问,其余拒绝
iptables -A INPUT -s 192.168.1.104 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j DROP
为何要有:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
因为建立一个通信连接需要服务器端和客户端交互才能完成。举例来说,从本机使用ssh客户端去登陆外部的ssh服务器,假设使用端口为12345,那么本就使用tcp端口号12345向服务器22端口发送一个请求,这个属于OUTPUT,由于OUTPUT规则没有任何限制,所以可以顺利到达服务器,服务器收到请求后,服务器会回应本机的tcp 12345端口,此时回应属INPUT,如果INPUT中配置放行此规则,那么连接就无法完成,也即是本机无法和外部通信。外部的网络那么多,总不能逐条去配置INPUT规则,所以为了能访问外部网络,必须要配置上述规则。
5.完整iptables配置文件展示
# Generated by iptables-save v1.4.7 on Mon Nov 18 10:16:35 2019
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [76:9792]
之上是默认配置,下面是具体iptables策略:
-A INPUT -i lo -j ACCEPT(本地回环,必须有)
-A INPUT -s IP/32 -j ACCEPT(具体策略)
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT(必须有)
-A INPUT -j DROP(必须有)
下面是默认配置,必须有
COMMIT
# Completed on Mon Nov 18 10:16:35 2019