iptables是Linux中的控制端口开启与关闭的命令,防止服务器的端口对外暴露。
但是一定要慎用,如果不慎配置错误则会导致服务器访问不了,
如下是一些查看,清理规则的命令(稍微可以挽救一下)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| # 查看已经设置的规则 sudo iptables --list
# 默认策略设置为ACCEPT,否则后续操作会导致连接断开,无法再次连接 sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -t nat -P PREROUTING ACCEPT sudo iptables -t nat -P POSTROUTING ACCEPT sudo iptables -t nat -P OUTPUT ACCEPT # 清空所有规则 sudo iptables -F sudo iptables -t nat -F # 删除所有非系统默认的链 sudo iptables -X sudo iptables -t nat -X
# 保存 sudo iptables-save
|
- 但是如果未正确按照规则清理出错导致xshell,crt等工具连接不上那就必须到机房去处理了!!(慎重)
iptables相关设置
防火墙常用操作
注意:firewalld和iptables不能同时打开,一定要关闭firewalld,再打开iptables
这里是一些参考,如果有端口方面的需要,执行时一定小心谨慎,知道这条命令的作用是什么再去执行,而不是盲目的复制一条命令就拿到生产环境中跑!!!
还有就是执行rm -rf的时候必须谨慎!
1 2 3 4 5 6 7 8 9 10
| #关闭 firewalld 防火墙 systemctl stop firewalld.service systemctl disable firewalld.service
#安装 iptables 防火墙 yum -y install iptables iptables-services
#设置 iptables 开机启动 systemctl start iptables.service systemctl enable iptables.service
|
iptables命令常用操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| # 查看规则链 iptables -L
# 清除规则链,只剩默认策略 iptables -F
# 阻止所有机器访问本机 iptables -I INPUT -j DROP
# 不允许任何主机 ping 本主机,REJECT 拒绝 iptables -t filter -A INPUT -p icmp -j REJECT
# 禁止全部 ping 操作,同上 iptables -I INPUT 1 -p icmp --icmp-type echo-request -j DROP
# 允许指定 ip 可以 ping 操作 iptables -I INPUT -p icmp --icmp-type echo-request -s 192.168.10.30 -j ACCEPT
# 配置允许某一网段访问本机所有端口 iptables -A INPUT -s 192.168.1.0/24 -p tcp -j ACCEPT
# 拒绝所有主机访问本机 tcp 22 端口 iptables -I INPUT -p tcp --dport 22 -j DROP
# 允许指定主机访问本机 tcp 22 端口 iptables -I INPUT -s 192.168.10.30 -p tcp --dport 22 -j ACCEPT
# 配置允许所有 IP 访问本机 22 端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许指定范围 IP 访问本机所有 tcp 端口 iptables -I INPUT -p tcp -m iprange --src-range 192.168.10.10-192.168.10.100 -j ACCEPT
# 配置禁止某个 ip 访问本机的 80 端口 iptables -A INPUT -s 192.168.1.123 -p tcp --dport 80 -j DROP
# 使配置防火墙策略永久生效,执行保存命令,不然的话重启后会失效 service iptables save
|
iptables封IP及解封IP
自己总结的,然后最后一个限制端口可能跟上面的命令有冲突
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 封单个IP iptables -I INPUT -s 192.168.88.162 -j DROP
# 解封IP iptables -D INPUT -s 192.168.88.162 -j REJECT iptables -F # 全清掉了
# 只允许46.166.150.22访问本机的80端口。如果要设置其他ip或端口,改改即可。 iptables -I INPUT -p TCP --dport 9870 -j DROP #(执行之后所有的IP都不能访问9870端口了) iptables -I INPUT -s 192.168.88.162 -p TCP --dport 9870 -j ACCEPT #(执行后保存并重启iptables) iptables -I INPUT -s 172.20.10.3 -p TCP --dport 9870 -j ACCEPT # (允许本机访问9870端口
# 保存配置 service iptables save
# 重启iptables service iptables restart
|
iptables设置白名单相关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| [root@master ~]#vim /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] #
-N whitelist #设置白名单IP,开放ip可以访问设备,白名单就按类似规则增加就可以 -A whitelist -s 192.168.10.20 -j ACCEPT -A whitelist -s 192.168.10.30 -j ACCEPT #开放所有设备主动访问的服务器,处在RELATED,ESTABLISHED状态可以通信,这样设备需要主动访问的服务器就不用一个一个添加到白名单了 -A INPUT -m state --state RELATED,ESTABLISHED -j whitelist -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT # -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j whitelist -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j whitelist -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j whitelist #拒绝白名单以外IP访问指定端口 -A INPUT -p tcp -m multiport --dports 3306,80,22 -j DROP COMMIT
[root@master ~]#systemctl restart iptables
|
参考:
附录
- 别人给的一些文档仅供参考(感觉写的不详细,说不清)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #放行所有回环口的连接
iptables -I INPUT -i lo -j ACCEPT
#允许本机主动对外的连接
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许本机访问本机所有端口
iptables -A INPUT -s 10.23.134.70 -d 10.23.134.70 -j ACCEPT
iptables -A OUTPUT -s 10.23.134.70 -d 10.23.134.70 -j ACCEPT
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
# 开放端口22 25 8888 8761
iptables -A INPUT -i ethO -p tcp -m multiport --dport 22,25,8888,8761 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sport 22,25,8888,8761 -m state --state ESTABLISHED -j ACCEPT
# 限制端口6379,仅允许三个IP来访问
iptables -A INPUT -i ethO -p tcp -s 192.168.43.33 --dport 9870 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 9870 -m state --state ESTABLISHED -j ACCEPT
# 其他拒绝(慎重执行,执行后crt就断开了!!!)
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited
#允许本机访问本机所有端口
iptables -A INPUT -s 10.0.3.100 -d 10.0.3.100 -j ACCEРT
iptables -A OUTPUT -s 10.0.3.100 -d 10.0.3.100 -j ACCEРT
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
#限制端口9870,仅允许1个IP来访问,其他拒绝
iptables -A INPUT -i eth0 -p tcp -s 192.168.88.162 --dport 9870 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp -s 192.68.43.33 --dport 9870 --state NEW -j REJECT
iptables -A OUTPUT -o eth0 -p tcp --sport 9870 -m state --state ESTABLISHED -j ACCEPT
|