一、常用命令
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 | 查看版本:
[root@iptables-server ~]
iptables v1.4.21
配置文件:
/etc/sysconfig/iptables-config
/etc/sysconfig/iptables
[root@iptables-server ~]
[root@iptables-server ~]
[root@iptables-server ~]
--参数解释
-L:列出一个链或所有链中的规则信息
-n:以数字形式显示地址、端口等信息
- v :以更详细的方式显示规则信息
--line-numbers:查看规则时,显示规则的序号(方便之处,通过需要删除规则-D INPUT 1
-F:清空所有的规则(-X是清理自定义的链,用的少;-Z清零规则序号)
-D:删除链内指定序号(或内容)的一条规则
-P:为指定的链设置默认规则
-A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
-t: 指定表名,默认filter表
.... 更多参数可通过--help查看
|
二、宿主机网络限制
背景:
漏洞扫描发现任意用户对目标服务通过访问URL获取内容或者单纯的想要限制/允许某个Ip或者某个网段进行访问
1、任意用户对目标服务通过访问URL获取内容
1 2 3 4 | 目标服务存在未授权访问漏洞,通过访问URL:http: //192 .168.180.140:8081 /swagger-resources ,获取内容如下
[root@xiaoliu ~]
[root@xiaoliu ~]
:[{ "name" : "default" , "location" : "/v2/api-docs" , "swaggerVersion" : "2.0" }]
|
整改:对端口做限制,只允许平台服务器的网段对该端口进行访问,其余都拒绝
#注意拒绝其他所有IP地址进行访问,此规则因该在其他规则之前执行,以确保其生效
1 2 3 4 5 | [root@xiaoliu ~]
[root@xiaoliu ~]
[root@xiaoliu ~]
[root@xiaoliu ~]
|
2、允许某个Ip或者某个网段进行访问
1 2 | [root@xiaoliu ~]
[root@xiaoliu ~]
|
三、限制Docker 网络IP和端口访问
背景:
整改安全加固时,使用iptabels限制docker端口不生效,限制非docker容器端口可生效。
经查阅大量资料,发现Docker容器创建时会自动创建iptables策略,Docker使用的i规则链是DOCKER-USER,所以需使用iptables对DOCKER-USER链做限制。
1、同网段只允许负载均衡机器跟控制主机机器访问算法服务器
1 2 3 4 5 6 7 8 9 | iptables -I INPUT -p tcp --dport 48002 -j DROP
iptables -I INPUT -s 192.168.180.204 -p tcp --dport 48002 -j ACCEPT
iptables -I INPUT -s 192.168.180.215 -p tcp --dport 48002 -j ACCEPT
iptables -I INPUT -s 192.168.180.0 /24 -j DROP
iptables -I INPUT -s 192.168.180.215 -j ACCEPT
iptables -I INPUT -s 192.168.180.204 -j ACCEPT
iptables -I DOCKER-USER -i eno1 -s 192.168.180.215 -p tcp --dport 48002 -j ACCEPT
iptables -I DOCKER-USER -i eno1 -s 192.168.180.204 -p tcp --dport 48002 -j ACCEPT
|
2、限制与Docker主机的连接
默认情况下,允许所有外部源IP连接到Docker主机。
要仅允许特定的IP或网络访问容器,请在DOCKER-USER过滤器链的顶部插入一个否定的规则。
1 2 | $ iptables -I DOCKER-USER -i eno1 ! -s 192.168.1.1 -j DROP
|
#注意:eno1网卡需要按照你的实际情况填写
1 2 | $ iptables -I DOCKER-USER -i eno1 ! -s 192.168.1.0 /24 -j DROP
|
最后,您可以指定要接受的IP地址范围--src-range (请记住-m iprange在使用--src-range或时也要添加--dst-range):
1 2 | $ iptables -I DOCKER-USER -m iprange -i eno1 ! --src-range 192.168.1.1-192.168.1.3 -j DROP
|
您可以结合使用-s或--src-range与-d或--dst-range一起控制连续源地址和连续目标地址。
例如,如果Docker守护程序同时监听 192.168.1.99和10.1.2.3,则可以制定特定于10.1.2.3并保持 192.168.1.99打开的规则。
3、限制docker指定端口访问策略
1 2 3 4 | 禁止所有IP访问docker的389端口
iptables -I DOCKER-USER -i eth0 -p tcp --dport 389 -j DROP
允许172.27.30.92地址访问docker的389端口
iptables -I DOCKER-USER -i eth0 -s 172.27.30.92 -p tcp --dport 389 -j ACCEPT
|
4、DOCKER-USER常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | [root@ test ~]
Chain DOCKER-USER (1 references)
num pkts bytes target prot opt in out source destination
1 8 432 ACCEPT tcp -- eth0 * 172.27.30.92 0.0.0.0 /0 tcp dpt:389
2 13 740 DROP tcp -- eth0 * 0.0.0.0 /0 0.0.0.0 /0 tcp dpt:389
3 188 12524 RETURN all -- * * 0.0.0.0 /0 0.0.0.0 /0
[root@ test ~]
[root@ test ~]
iptables: Saving firewall rules to /etc/sysconfig/iptables :[ 确定 ]
telnet访问测试:
[root@zabbix_server ~]
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection timed out
|
总结
以上为个人经验,希望能给大家一个参考。