禁止 ip 1.2.3.4 访问服务器
1 | firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=1.2.3.4 drop" |
最后一个 drop 的效果,不返回结果给请求地址,所以客户端会等待直至超时。
移除 ip 禁止访问规则
1 | firewall-cmd --permanent --remove-rich-rule 'rule family="ipv4" source address="1.2.3.4" drop' |
列出所有规则
1 | firewall-cmd --list-all |
reject 和 drop 的区别
在firewalld中,DROP很简单就是直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。而REJECT则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。
至于使用DROP还是REJECT更合适请大家根据自己的使用场景进行选择, REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和少许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功。
在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用规范的REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓攻击的进度或难度。