linux下通过iptables命令设置防火墙
(1)显示目前规则iptables -L -n (2)清除原有规则 [root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则我们在来看一下[root@tp ~]# iptables -L -nChain
·
(1)显示目前规则
iptables -L -n(2)清除原有规则
[root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则
[root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则
我们在来看一下
[root@tp ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
(3)设定预设规则
[root@tp ~]# iptables -P INPUT DROP[root@tp ~]# iptables -P OUTPUT ACCEPT
[root@tp ~]# iptables -P FORWARD DROP
注意,如果执行这一步iptables -P INPUT DROP,远程连接会断线。
(4)添加允许访问端口
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
icmp是允许ping的配置。
下面写一下更加细致的规则,就是限制到某台机器
如:我们只允许192.168.0.3的机器进行SSH连接
[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT
(5)开发内部端口,允许联系外部机器
/sbin/iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT为何在没有添加上述规则就不能通信?因为建立一个通信连接需要服务器端和客户端交互才能完成。举例来说,从本机使用ssh客户端去登陆外部的ssh服务器,假设使用端口为12345,那么本就使用tcp端口号12345向服务器22端口发送一个请求,这个属于OUTPUT,由于OUTPUT规则没有任何限制,所以可以顺利到达服务器,服务器收到请求后,服务器会回应本机的tcp 12345端口,此时回应属于INPUT,如果INPUT中配置放行此规则,那么连接就无法完成,也即是本机无法和外部通信。外部的网络那么多,总不能逐条去配置INPUT规则,所以为了能访问外部网络,必须要配置上述规则
(6)保存到配置文件,重启验证
[root@tp ~]# /etc/rc.d/init.d/iptables save这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.
[root@tp ~]# service iptables restart
更多推荐
已为社区贡献1条内容
所有评论(0)