姓名:刘浩然。 2020年大目标Python

防火墙

[root@localhost ~]# firewall-cmd --state

not running

[root@localhost ~]# firewall-cmd --state

running

放行http和https端口

[root@localhost ~]# firewall-cmd --permanent --add-port=80/tcp

success

[root@localhost ~]# firewall-cmd --permanent --add-port=443/tcp

success

--add-port:放行的端口

--permanent:firewalld在每次服务器启动时加载此规则

[root@localhost ~]# firewall-cmd --reload

success

--reload:将添加的规则适应当前会话

[root@localhost ~]# firewall-cmd --list-services

ssh dhcpv6-client

--list-services:查看当前防火墙的设置

 系统管理员需知的iptables 使用技巧

技巧#1: 开始之前先备份一下 iptables 配置文件。

用如下命令备份配置文件:

/sbin/iptables-save > /root/iptables-works

用如下命令加时间戳: 

技巧#2: 更妥当的做法,给文件加上时间戳。

/sbin/iptables-save > /root/iptables-works-`date +%F`

 然后你就可以生成如下名字的文件:

/root/iptables-works-2018-09-11

这样万一使得系统不工作了,你也可以很快的利用备份文件恢复原状:

/sbin/iptables-restore < /root/iptables-works-2018-09-11

技巧#3: 每次创建 iptables 配置文件副本时,都创建一个指向最新的文件的链接。

ln -s /root/iptables-works-`date +%F` /root/iptables-works-latest

技巧#4: 将特定规则放在策略顶部,底部放置通用规则。

避免在策略顶部使用如下的一些通用规则:

iptables -A INPUT -p tcp --dport 22 -j DROP 

你在规则中指定的条件越多,封锁自己的可能性就越小。不要使用上面非常通用的规则,而是使用如下的规则:

 iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -d 192.168.100.101 -j DROP

 

此规则表示在INPUT 链尾追加一条新规则,将源地址为10.0.0.0/8目的地址是192.168.100.101、目的端口号是22 --dport 22 TCP(-p tcp )数据包通通丢弃掉。

技巧#5: 在策略规则顶部将你的 IP 列入白名单。

这是一个有效地避免封锁自己的设置:

 iptables -I INPUT -s <your IP> -j ACCEPT

你需要将该规则添加到策略首位置。-I 表示则策略首部插入规则,-A 表示在策略尾部追加规则。

技巧#6: 理解现有策略中的所有规则。

不犯错就已经成功了一半。如果你了解iptables 策略背后的工作原理,使用起来更为得心应手。如果有必要,可以绘制流程图来理清数据包的走向。还要记住:策略的预期效果和实际效果可能完全是两回事。

设置防火墙策略

 

按时间规定做限制- 场景1

应用场景:公司员工强烈反对限制一切对Facebook 的访问,这导致了 CEO 放宽了要求(考虑到员工的反对以及他的助理提醒说她负责更新他的 Facebook 页面)。然后 CEO 决定允许在午餐时间访问 Facebook(中午 12 点到下午 1 点之间)。假设默认规则是丢弃,使用 iptables 的时间功能便可以实现。

2 iptables -A OUTPUT -p tcp -m multiport --dport http,https -i eth0 -o eth1 -m time --timestart 12:00 --timestop 13:00 -d 31.13.64.0/18 -j ACCEPT

-m multiport:启用多端口扩展

-i eth0:从eth0网卡流入

-o eth1:从eth0网卡流出

--timestart:开始时间

 

按时间规定做限制- 场景2

应用场景:在计划系统维护期间,你需要设置凌晨2 点到 3 点之间拒绝所有的 TCP 和 UDP 访问,这样维护任务就不会受到干扰。使用两个 iptables 规则可实现: 

iptables -A INPUT -p tcp -m time --timestart 02:00 --timestop 03:00 -j DROP

iptables -A INPUT -p udp -m time --timestart 02:00 --timestop 03:00 -j DROP

 

该规则禁止(-j DROP)在凌晨2点(--timestart 02:00)到凌晨3点(--timestop 03:00)之间的TCP 和 UDP (-p tcp and -p udp)的数据进入(-A INPUT)访问。

限制连接数量

应用场景:你的web 服务器有可能受到来自世界各地的 DoS 攻击,为了避免这些攻击,你可以限制单个 IP 地址到你的 web 服务器创建连接的数量:

iptables -A INPUT -p tcp -syn -m multiport --dport http,https -m connlimit --connlimit-above 20 -j REJECT --reject-with-tcp-reset

-syn:防止SYN攻击 轻量级预防

-m connlimit --connlimit-above 20:限制一个客户端并发请求为20

--reject-with-tcp-reset:返回tcp重置

分析一下上面的命令。如果单个主机在一分钟之内新建立(-p tcp -syn)超过20 个(-connlimit-above 20)到你的web 服务器(--dport http,https)的连接,服务器将拒绝(-j REJECT)建立新的连接,然后通知对方新建连接被拒绝(--reject-with-tcp-reset)。

 

posted @ 2019-02-03 10:08  pluto2charon  阅读(165)  评论(0编辑  收藏  举报