Linux on IBM Cloud - Port Knocking

Port knocking 是一种用来减小主机被恶意攻击的手段。可以参考如下链接https://en.wikipedia.org/wiki/Port_knocking

Linux 安全加固

1. 部署好的机器, 马上修改密码为强密码, 10位以上, 包括#@等异形字母

2. 监控每个进程的流量, 用nethogs

3. 用APF firewall 扫描 port, 关闭全部, 只允许80, 443, etc

4. 用port knocking 开防止恶意攻击

Port knocking

是一种用来减小主机被恶意攻击的手段。可以参考如下链接https://en.wikipedia.org/wiki/Port_knocking

暴力破解,装了fail2ban来限制攻击者的IP,但是攻击者频繁换IP的话fail2ban也没辙。需要Port Knocking,

 

功能和特性

部署系统

Centos 7

 

准备工作

 

用到的命令

iptables

knockd

knock

yum

service

wget

 

安装konockd server和konck命令

  1. 下载knocked server

wget http://li.nux.ro/download/nux/misc/el7/x86_64/knock-server-0.7-1.el7.nux.x86_64.rpm

  1. 安装knocked

yum localinstall knock-server-0.7-1.el7.nux.x86_64.rpm -y

  1. 下载knock

wget http://li.nux.ro/download/nux/misc/el7/x86_64/knock-0.7-1.el7.nux.x86_64.rp

  1. 安装knock

yum localinstall knock-0.7-1.el7.nux.x86_64.rp -y

 

部署过程

部署过程

  1. iptables -L 查看现有的防火墙规则
  2. 向防火墙规则中添加如下规则:
    1. 保证所有localhost的流量不会受到影响

iptables -A INPUT -i lo -j ACCEPT

    1. 保证所有内网请求22端口的流量不会受到影响

iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 22 -j ACCEPT

    1. 保证已有的连接不会受到影响

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

  1. 部署开机自动运行

chkconfig --level 2345 knockd on

  1. 修改配置文件

vi /etc/knockd.conf

 

 

[options]

        LogFile       = /var/log/knockd.log

        Interface     = eth1

[opencloseSSH]

        sequence      = 2000:udp,3000:tcp,4000:udp

        seq_timeout   = 30

        tcpflags      = syn

        start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport ssh -j ACCEPT

        cmd_timeout   = 30

        stop_command  = /sbin/iptables -D INPUT -s %IP% -p tcp --dport ssh -j ACCEPT

 

 

 

说明:

  1. interface 是指定程序监听的网卡,只能指定一块网卡。所以前文要将内网网卡的所有流量放行,否则内网主机之间无法相互登录。
  2. Logfile 指定日志的位置
  3. Sequence 指定knocking的顺序和协议,如果不指定协议,默认为tcp
  4. Seq_timeout指每个敲击之间的有效时间间隔
  5. Tcpfalgs 指定tcp的标识
  6. Start_command 是knocking符合设定之后执行的命令,这里设定为开端口动作
  7. cmd_timeout 是执行完start_command之后间隔多久执行stop_command
  8. stop_command 是要执行的关端口动作,自动在登录之后将端口关闭
  1. 添加iptables规则,将ssh端口完全关闭

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

  1. Service knockd restart 将服务重启
  2. 执行knockd -d 将knockd变成守护进程

 

登录被守护的主机

 

  1. 按照约定敲击端口

Knock -v -d 1000 host_ip port_num1[:udp] port_num2[:udp] port_num3[:udp]

  1. 执行ssh

ssh host_ip

  1. 联合使用命令

Knock -v -d 1000 host_ip port_num1[:udp] port_num2[:udp] port_num3[:udp]:ssh host_ip

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值