Knockd
De Linuxmemo.
Port knocking
Sommaire |
[modifier] basic firewall
iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT #iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 53 -j ACCEPT iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 514 -j ACCEPT iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --dport 22 -j ACCEPT iptables -A INPUT -j DROP
iptables -S apt-get install iptables-persistent systemctl start iptables-persistent
iptables-save > /etc/iptables/rules.v4
[modifier] install knockd et config
apt-get install knockd vim /etc/knockd.conf
- changer la règle [openSSH]:
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT en command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT
- Démarrer le service
vim /etc/default/knockd START_KNOCKD=1 systemctl start knockd
- test
ssh root@server_ip_address sh: connect to host server_ip_address port 22: Operation timed out knock server_ip_address sequence knock server_ip_address 7000 8000 9000 ou bien for x in 7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x server_ip_address; done ssh root@server_ip_address pour refermer le port knock server_ip_address sequence knock server_ip_address 7000 8000 9000 ou bien for x in 7000 8000 9000; do nmap -Pn --host_timeout 201 --max-retries 0 -p $x server_ip_address; done
- fermeture auto des connexions
vim /etc/knockd.conf
Commenter les règles [openSSH] et [closeSSH] pour définir une seul règle [SSH]
[options] UseSyslog [SSH] sequence = 5438:tcp,3428:tcp,3280:tcp,4479:tcp tcpflags = syn seq_timeout = 15 start_command = /sbin/iptables -I INPUT 1 -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 10 stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
systemctl reload knockd
[modifier] utilisation
knock server_ip_address 5438 3428 3280 4479 && ssh root@server_ip_address
Le trou que nous avons créé dans le pare-feu se fermera après 10 secondes.
[modifier] plus
- numéro de port au hasard
python -c "import random; print random.randint(1025,64999)"
- Powershell
Get-Random -Minimum 10000 -Maximum 20000
- avec ssh client
host hostalias HostName hostname User username ProxyCommand bash -c 'knock -d 500 %h portnumber portnumber portnumber; sleep 3; nc -q0 %h %p'