Avatar billede dudez Nybegynder
06. februar 2006 - 19:25 Der er 8 kommentarer og
1 løsning

Fedora Core Firewall script

Jeg har lavet et script som kigger min logfil igennem for IP adresser som prøver at logge på mere end 5 gange i timen via SSH.

Scriptet laver en fil kladet:
"blockers.list" som indenholder en masse ip adresser:

aaa.aaa.aaa.aaa
bbb.bbb.bbb.bbb
ccc.ccc.ccc.ccc

Hvordan ligger men den liste ind i FIREWALLEN "Fedora Core 4" automatisk ?
Avatar billede strych9 Praktikant
06. februar 2006 - 20:07 #1
Det er utestet, men mon ikke det virker?

iptables -A INPUT -s ´cat /whatever/blockers.list´ -j DROP
og så smide det på som et cron job?
der skal dog nok noget log rotation på din blockers.list

feedback ønskes.. jeg har ikke tid til at scripte ligenu og her.
Avatar billede strych9 Praktikant
06. februar 2006 - 20:12 #2
det kan iøvrigt godt være at de der ´ vender forkert så det skal være ` i stedet.
Avatar billede bufferzone Praktikant
06. februar 2006 - 20:18 #3
Du skriver nedenstående ind i en fil du f.eks. kalder firewall.sh og placerer i root home biblioteket

#!/bin/bash

IPTABLES="/sbin/iptables" # Iptables binary

#Default policies drop all packets.
$IPTABLES -P INPUT DROP # Drop all packets to input
$IPTABLES -P FORWARD DROP # Don’t forward anything
$IPTABLES -P OUTPUT DROP # Drop all packets to output

# Flushing Standard chains
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT
$IPTABLES -Z INPUT
$IPTABLES -Z FORWARD
$IPTABLES -Z OUTPUT

Hvis firewallen er installeret på den maskine du vil beskytte skriver du

$IPTABLES -A INPUT  --destination aaa.aaa.aaa.aaa -j DROP
$IPTABLES -A OUTPUT --destination aaa.aaa.aaa.aaa -j DROP

Hvis firewallen er en bastions firewall der skal filtrere trafikken ind og ud af dit net, skriver du:

$IPTABLES -A FORWARD --destination aaa.aaa.aaa.aaa -j DROP

Sådan gøres det manuelt, hvis du vil have det så det kører automatisk fra din listefil, så må du lige sige til, så skal vi un i noget lidt andet. Bl.a. skal firewall scriptet køres jævnligt for at ændringerne træder i kræft
Avatar billede bufferzone Praktikant
06. februar 2006 - 20:19 #4
dudez>se venligst bort fra mit svar, jeg fik ikke lige reloadet minden jeg sendte
Avatar billede dudez Nybegynder
06. februar 2006 - 20:21 #5
Vil meget gerne have det til at køre automatisk, men tænkte at hvis jeg fik lavet et script så kunne jeg ligge det i et Cron Job bagefter:

Min IpTables ser sådan ud nu

Table: nat
Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination       

Chain POSTROUTING (policy ACCEPT)
target    prot opt source              destination       

Chain PREROUTING (policy ACCEPT)
target    prot opt source              destination       

Table: mangle
Chain FORWARD (policy ACCEPT)
target    prot opt source              destination       

Chain INPUT (policy ACCEPT)
target    prot opt source              destination       

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination       

Chain POSTROUTING (policy ACCEPT)
target    prot opt source              destination       

Chain PREROUTING (policy ACCEPT)
target    prot opt source              destination       

Table: filter
Chain FORWARD (policy ACCEPT)
target    prot opt source              destination       
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0         

Chain INPUT (policy ACCEPT)
target    prot opt source              destination       
RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0         

Chain OUTPUT (policy ACCEPT)
target    prot opt source              destination       

Chain RH-Firewall-1-INPUT (2 references)
target    prot opt source              destination       
ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0         
ACCEPT    icmp --  0.0.0.0/0            0.0.0.0/0          icmp type 255
ACCEPT    esp  --  0.0.0.0/0            0.0.0.0/0         
ACCEPT    ah  --  0.0.0.0/0            0.0.0.0/0         
ACCEPT    udp  --  0.0.0.0/0            224.0.0.251        udp dpt:5353
ACCEPT    udp  --  0.0.0.0/0            0.0.0.0/0          udp dpt:631
ACCEPT    all  --  0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:443
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:21
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:25
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:23
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:80
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:22
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:5900
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:311
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:123
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:391
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:143
ACCEPT    tcp  --  0.0.0.0/0            0.0.0.0/0          state NEW tcp dpt:110
REJECT    all  --  0.0.0.0/0            0.0.0.0/0          reject-with icmp-host-prohibited
Avatar billede strych9 Praktikant
06. februar 2006 - 20:31 #6
ja, det var nemlig lige præcist forkert det jeg foreslog.

iptables -A INPUT -s `cat /whatever/blockers.list` -j DROP
sådan der
forklaring: Når man smider noget imellem de apostroffer der, eller "backticks" som de hedder, så laver bash det der hedder command substitution. Den tager simpelthen output af den anden kommando og smider ind på det sted.

Hvis jeg ikke husker galt, så laver den automatisk repeat af kommandoen for hver eneste linje du har i din blocker fil. Prøv det ad og så se om iptables reglerne bliver opdateret med samtlige ip numre du har i den fil ligenu.

bufferzone er velkommen til at hjælpe dig færdig hvis han vil.. så afstår jeg fra point.
Har nogle ting at ordne nu.
Avatar billede dudez Nybegynder
06. februar 2006 - 21:20 #7
Så virker det næsten, hvis jeg vil have en bestem port på gør man så sådan her:

iptables -A INPUT -s `cat /whatever/blockers.list` -j 23 DROP
Avatar billede dudez Nybegynder
06. februar 2006 - 21:34 #8
Så virker det :-) (Tak for hjælpen)

hvis i får mulighed for at hjælpe med det sidste spørgsmål ang. port

(iptables -A INPUT -s `cat /whatever/blockers.list` -j 23 DROP)

så spiller det 100%



#INDU-SIKKERHED-RUN


NUM_TRIES=5

SSH_INVALID_USERS=`grep 'Invalid user' /var/log/secure | awk '{ print $10 }' | sort -u`

for iu in $SSH_INVALID_USERS; do
  num=`grep $iu /var/log/secure | wc -l`
  if [ $num -gt $NUM_TRIES ]; then
    echo "$iu" >> /var/tmp/invalid_users.list
  fi
done

cat /var/tmp/invalid_users.list | sort -u > /var/tmp/invalid_users.list

SSH_FAILED_PASSWORD=`grep 'Failed password for' /var/log/secure | grep -v 'invalid user' | awk '{ print $11 }' | sort -u`

for fp in $SSH_FAILED_PASSWORD; do
  num=`grep $fp /var/log/secure | wc -l`
  if [ $num -gt $NUM_TRIES ]; then
    echo "$fp" >> /var/tmp/failed_passwords.list
  fi
done

cat /var/tmp/failed_passwords.list | sort -u > /var/tmp/failed_passwords.list

cat /var/tmp/invalid_users.list /var/tmp/failed_passwords.list | sort -u > /var/tmp/blockers.list





#INDU-SIKKERHED-INPUT

clear

echo "Running invalid_users.list";
echo " "

IPT=/sbin/iptables # Path to iptables
BAN_LIST="/var/tmp/invalid_users.list";


echo -n "Adding rules to iptables, denying all ip's access: ";

# Sets a list of IP addresses to be banned from the ban.conf file
${IPT} -N INPUT
${IPT} -F INPUT

# Sets a list of IP addresses to be banned from the ban.conf file
#${IPT} -N INPUT
${IPT} -F INPUT

while read BAN; do
if [ "${BAN}" != "" ]; then
${IPT} -A INPUT -s ${BAN} -j DROP
fi
done < ${BAN_LIST}

echo "DONE - invalid_users.list";
echo " "







IPT=/sbin/iptables # Path to iptables
BAN_LIST="/var/tmp/blockers.list";


echo -n "Adding rules to iptables, denying all ip's access: ";

# Sets a list of IP addresses to be banned from the ban.conf file
#${IPT} -N INPUT
${IPT} -F INPUT

# Sets a list of IP addresses to be banned from the ban.conf file
#${IPT} -N INPUT
${IPT} -F INPUT

while read BAN; do
if [ "${BAN}" != "" ]; then
${IPT} -A INPUT -s ${BAN} -j DROP
fi
done < ${BAN_LIST}

echo "DONE - blockers.list";
echo " "




IPT=/sbin/iptables # Path to iptables
BAN_LIST="/var/tmp/failed_passwords.list";


echo -n "Adding rules to iptables, denying all ip's access: ";

# Sets a list of IP addresses to be banned from the ban.conf file
#${IPT} -N INPUT
${IPT} -F INPUT

# Sets a list of IP addresses to be banned from the ban.conf file
#${IPT} -N INPUT
${IPT} -F INPUT

while read BAN; do
if [ "${BAN}" != "" ]; then
${IPT} -A INPUT -s ${BAN} -j DROP
fi
done < ${BAN_LIST}

echo "DONE - failed_passwords.list";
echo " "

exit 0;
Avatar billede strych9 Praktikant
06. februar 2006 - 21:39 #9
iptables -A INPUT -s `cat /whatever/blockers.list` --dport 23 -j DROP
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester