Zabezpieczenie przed atakiem Brute Force dla Direct Admin – FreeBSD 7.x,8.x,9.x Skrypt Bash cz.9

Pozostała jeszcze konfiguracja dla systemu FreeBSD (7.x-9.x). Potrzebujemy FreeBSD, ipfw wraz z przykładowymi konfiguracjami oraz DA w wersji 1.4


1) Włączamy IPFW:

Dostosowujemy metody do naszej konfiguracji serwera.

vi /etc/rc.conf


dopisujemy jeżeli nie ma:

firewall_enable=”YES”


restart systemu

Po uruchomieniu znów edytujemy rc.conf:

vi /etc.rc.conf 


pod firewall_enable dodajemy:

firewall_type=”simple”firewall_script=”/etc/ipfw.rules”firewall_logging=”YES”


Możemy otrzymać błąd, który występuje głównie na obciążonych serwerach:

ipfw: install_state: Too many dynamic rules


dodajemy więc poniższe polecenie i powinno być po sprawie:

echo „net.inet.ip.fw.dyn_max=65536” >> /etc/sysctl.conf



2) Prosty firewall:

vi /etc/ipfw.rules


#!/bin/sh
#################################################
# ipfw Firewall Commands
#################################################
cmd=”ipfw -q add” 
ipfw -q -f flush
pif=”em0″ #add our NIC

#################################################
# Allow Loopback and Deny Loopback Spoofing 
#################################################
$cmd allow all from any to any via lo0
$cmd deny all from any to 127.0.0.0/8
$cmd deny all from 127.0.0.0/8 to any
$cmd deny tcp from any to any frag 

#################################################
# Stateful rules
#################################################
$cmd check-state
$cmd deny tcp from any to any established
$cmd allow all from any to any out keep-state
$cmd allow icmp from any to any 

#################################################
# Table 10 for IP blocks
#################################################
ipfw -q table 10 add 127.0.0.2
ipfw -q add 900 deny ip from 'table(10)’ to any

#################################################
# Incoming/Outgoing Services
#################################################
$cmd 60001 allow tcp from any to any 21 setup limit src-addr 10
$cmd 60002 allow tcp from any to any 22 setup limit src-addr 8
$cmd 60003 allow tcp from any to any 25 setup limit src-addr 10
$cmd 60004 allow tcp from any to any 587 setup limit src-addr 20
$cmd 60005 allow tcp from any to any 53 setup limit src-addr 3
$cmd 60006 allow udp from any to any 53 limit src-addr 3
$cmd 60007 allow tcp from any to any 80 setup limit src-addr 20
$cmd 60008 allow tcp from any to any 110 setup limit src-addr 20
$cmd 60009 allow tcp from any to any 143 setup limit src-addr 10
$cmd 60010 allow tcp from any to any 443 setup limit src-addr 10
$cmd 60011 allow tcp from any to any 2222 setup limit src-addr 12
$cmd 60012 allow tcp from any to any 35000-35999 in setup limit src-addr 10
$cmd 60013 allow tcp from any to any 993 setup limit src-addr 10
$cmd 60014 allow tcp from any to any 995 setup limit src-addr 10
$cmd 60015 allow tcp from any to any 465 setup limit src-addr 10
$cmd 60016 allow tcp from any to any 585 setup limit src-addr 10


#################################################
# Deny Port scanning (Nmap)
#################################################
$cmd 00600 deny log logamount 50 ip from any to any ipoptions rr
$cmd 00610 deny log logamount 50 ip from any to any ipoptions ts
$cmd 00620 deny log logamount 50 ip from any to any ipoptions lsrr
$cmd 00630 deny log logamount 50 ip from any to any ipoptions ssrr
$cmd 00640 deny log logamount 50 tcp from any to any tcpflags syn,fin
$cmd 00650 deny log logamount 50 tcp from any to any tcpflags syn,rst


#################################################
# Deny and Log
#################################################
$cmd deny log all from any to any


Dodajemy pliki, które będą współpracować z DirectAdminem:

 cd /usr/local/directadmin/scripts/custom touch block_ip.sh unblock_ip.sh brute_force_notice_ip.sh show_blocked_ips.sh chmod 755 block_ip.sh unblock_ip.sh brute_force_notice_ip.sh show_blocked_ips.sh


Dodajemy do block_ip.sh:

#!/bin/sh
echo „Blocking IP: $ip”;
/sbin/ipfw -q table 10 add $ip
echo „Result:”;

/sbin/ipfw table 10 list
exit 0;

Dodajemy do unblock_ip.sh:

#!/bin/sh
echo „Unblocking IP: $ip”;
/sbin/ipfw -q table 10 delete $ip
exit 0;


Dodajemy do brute_force_notice_ip.sh:

#!/bin/sh
SCRIPT=/usr/local/directadmin/scripts/custom/block_ip.sh
ip=$value $SCRIPT
exit $?;

Dodajemy do show_blocked_ips.sh:

#!/bin/sh
/sbin/ipfw table 10 list | sed 's//32 0//g’
exit 0;


Restartujemy serwer, od teraz powinniśmy być zabezpieczeni przed niepowołanym dostępem do naszych usług.



Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.

Link do formularza tutaj: https://beitadmin.pl/pomysly

Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).

Dodaj komentarz

beitadmin.pl - Droga Administratora IT