sobota, 19 stycznia 2013

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.




Brak komentarzy:

Prześlij komentarz