Archivo de agosto, 2006

Comandos linux de la A a la Z

Aquí paso una lista de comados linux de la A a la Z
extraída de  http://www.ss64.com/bash/index.html
alias    Create an alias
awk      Find and Replace text, database sort/validate/index
break    Exit from a loop
builtin  Run a shell builtin

cal      Display a calendar
case     Conditionally perform a command
cat      Display the contents of a file
cd       Change Directory
cfdisk   Partition table manipulator for Linux
chgrp    Change group ownership
chmod    Change access permissions
chown    Change file owner and group
chroot   Run a command with a different root directory
cksum    Print CRC checksum and byte counts
clear    Clear terminal screen
cmp      Compare two files
comm     Compare two sorted files line by line
command  Run a command - ignoring shell functions
continue Resume the next iteration of a loop
cp       Copy one or more files to another location
cron     Daemon to execute scheduled commands
crontab  Schedule a command to run at a later time
csplit   Split a file into context-determined pieces
cut      Divide a file into several parts

date     Display or change the date & time
dc       Desk Calculator
dd       Data Dump - Convert and copy a file
declare  Declare variables and give them attributes
df       Display free disk space
diff     Display the differences between two files
diff3    Show differences among three files
dir      Briefly list directory contents
dircolors Colour setup for `ls'
dirname  Convert a full pathname to just a path
dirs     Display list of remembered directories
du       Estimate file space usage

echo     Display message on screen
ed       A line-oriented text editor (edlin)
egrep    Search file(s) for lines that match an extended expression
eject    Eject CD-ROM
enable   Enable and disable builtin shell commands
env      Display, set, or remove environment variables
eval     Evaluate several commands/arguments
exec     Execute a command
exit     Exit the shell
expand   Convert tabs to spaces
export   Set an environment variable
expr     Evaluate expressions

factor   Print prime factors
false    Do nothing, unsuccessfully
fdformat Low-level format a floppy disk
fdisk    Partition table manipulator for Linux
fgrep    Search file(s) for lines that match a fixed string
find     Search for files that meet a desired criteria
fmt      Reformat paragraph text
fold     Wrap text to fit a specified width.
for      Expand words, and execute commands
format   Format disks or tapes
free     Display memory usage
fsck     Filesystem consistency check and repair.
function Define Function Macros

gawk     Find and Replace text within file(s)
getopts  Parse positional parameters
grep     Search file(s) for lines that match a given pattern
groups   Print group names a user is in
gzip     Compress or decompress named file(s)

hash     Remember the full pathname of a name argument
head     Output the first part of file(s)
history  Command History
hostname Print or set system name

id       Print user and group id's
if       Conditionally perform a command
import   Capture an X server screen and save the image to file
info     Help info
install  Copy files and set attributes

join     Join lines on a common field

kill     Stop a process from running

less     Display output one screen at a time
let      Perform arithmetic on shell variables
ln       Make links between files
local    Create variables
locate   Find files
logname  Print current login name
logout   Exit a login shell
lpc      Line printer control program
lpr      Off line print
lprint   Print a file
lprintd  Abort a print job
lprintq  List the print queue
lprm     Remove jobs from the print queue
ls       List information about file(s)

m4       Macro processor
man      Help manual
mkdir    Create new folder(s)
mkfifo   Make FIFOs (named pipes)
mknod    Make block or character special files
more     Display output one screen at a time
mount    Mount a file system
mtools   Manipulate MS-DOS files
mv       Move or rename files or directories

nice     Set the priority of a command or job
nl       Number lines and write files
nohup    Run a command immune to hangups

passwd   Modify a user password
paste    Merge lines of files
pathchk  Check file name portability
popd     Restore the previous value of the current directory
pr       Convert text files for printing
printcap Printer capability database
printenv Print environment variables
printf   Format and print data
ps       Process status
pushd    Save and then change the current directory
pwd      Print Working Directory

quota    Display disk usage and limits
quotacheck Scan a file system for disk usage
quotactl Set disk quotas

ram      ram disk device
rcp      Copy files between two machines.
read     read a line from standard input
readonly Mark variables/functions as readonly
remsync  Synchronize remote files via email
return   Exit a shell function
rm       Remove files
rmdir    Remove folder(s)
rpm      Remote Package Manager
rsync    Remote file copy (Synchronize file trees)

screen   Terminal window manager
sdiff    Merge two files interactively
sed      Stream Editor
select   Accept keyboard input
seq      Print numeric sequences
set      Manipulate shell variables and functions
shift    Shift positional parameters
shopt    Shell Options
shutdown Shutdown or restart linux
sleep    Delay for a specified time
sort     Sort text files
source   Run commands from a file `.'
split    Split a file into fixed-size pieces
su       Substitute user identity
sum      Print a checksum for a file
symlink  Make a new name for a file
sync     Synchronize data on disk with memory

tac      Concatenate and write files in reverse
tail     Output the last part of files
tar      Tape ARchiver
tee      Redirect output to multiple files
test     Evaluate a conditional expression
time     Measure Program Resource Use
times    User and system times
touch    Change file timestamps
top      List processes running on the system
traceroute Trace Route to Host
trap     Run a command when a signal is set(bourne)
tr       Translate, squeeze, and/or delete characters
true     Do nothing, successfully
tsort    Topological sort
tty      Print filename of terminal on stdin
type     Describe a command

ulimit   Limit user resources
umask    Users file creation mask
umount   Unmount a device
unalias  Remove an alias
uname    Print system information
unexpand Convert spaces to tabs
uniq     Uniquify files
units    Convert units from one scale to another
unset    Remove variable or function names
unshar   Unpack shell archive scripts
until    Execute commands (until error)
useradd  Create new user account
usermod  Modify user account
users    List users currently logged in
uuencode Encode a binary file
uudecode Decode a file created by uuencode

v        Verbosely list directory contents (`ls -l -b')
vdir     Verbosely list directory contents (`ls -l -b')
vi       Text Editor

watch    Execute/display a program periodically
wc       Print byte, word, and line counts
whereis  Report all known instances of a command
which    Locate a program file in the user's path.
while    Execute commands
who      Print all usernames currently logged in
whoami   Print the current user id and name (`id -un')

xargs    Execute utility, passing constructed argument list(s)
yes      Print a string until interrupted

.period  Run commands from a file
###      Comment / Remark

Intentando detener un DDoS

Porque un null-route a una ip no es una solución, es una chapuza.

Si unos script-kiddies están DDoSeando tu web…..

1) Se basa en ataques reales.
2) No hay nada de teoría, solo parte práctica.

A) Detectando el ataque

1) Usando el comando netstat

Código:
netstat -an | grep :80 | sort
Código:
netstat -n -p | grep SYN_REC | awk ‘{print $5}’ | awk -F: ‘{print $1}’
Código:
netstat -n -p|grep SYN_REC | wc -l
Código:
netstat -lpn|grep :80 |awk ‘{print $5}’|sort
Código:
netstat -an | grep :80 | awk ‘{ print $5 }’ | awk -F: ‘{ print $1 }’ | sort | uniq -c | sort -n

Ejemplo de ataque SYN_RECV o SYN Flooding al Apache (puerto 80).

192.168.0.3 es la ip del servidor apache y 192.168.0.105 es la ip del “atacante”.

Código:
tcp 0 0 192.168.0.3:80 192.168.0.5:60808 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60761 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60876 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60946 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60763 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60955 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60765 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60961 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60923 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61336 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61011 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60911 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60758 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60828 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61114 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61074 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60826 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60959 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60900 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60940 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60920 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60825 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60945 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60913 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61009 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60755 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60904 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61583 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60910 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60915 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60827 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61458 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60908 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61007 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60927 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60951 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60942 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61113 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60909 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60822 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60894 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60952 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60928 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60936 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60906 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61466 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60919 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60914 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60926 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60939 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60931 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60831 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60823 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60954 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60916 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60963 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60947 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61006 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60933 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60950 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60895 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60917 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61480 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60935 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60960 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60767 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60918 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60821 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61077 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60905 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61517 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60893 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60953 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60903 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61439 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61337 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61545 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61299 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61010 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60930 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60744 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60929 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60754 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61008 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61116 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60811 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60807 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60938 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60764 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60873 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60817 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61550 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60748 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60956 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60753 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61115 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60741 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61075 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60948 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60829 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60943 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61338 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60762 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60824 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60830 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61535 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60898 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60815 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60962 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60957 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60944 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60921 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60759 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60897 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61518 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60958 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60922 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60937 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60875 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60766 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60751 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60768 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60743 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:61076 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60912 SYN_RECV
tcp 0 0 192.168.0.3:80 192.168.0.5:60816 SYN_RECV

Claro ejemplo de SYN Attack al Apache.

2) Mirando el server-status del Apache

Si miramos el server-status del apache veremos conexiones en estado “Reading” (“R” Reading Request).

El problema es que cuando el número de conexiones “Reading” lllena el “MaxClients” del Apache no acepta nuevas peticiones, por lo que los nuevos clientes, aunque sean legítimos, no serán aceptados.

Podemos aumentar el valor del “MaxClients” para que no se llene la cola de peticiones y acepte a todos los clientes, sean atacantes o no.

Otra buena medida es bajar el valor del “Timeout” del Apache para que las peticiones “Reading” sean “matadas” rápidamente, antes que pueda llenarse el MaxClients a su tope.

3) Mirando los logs del mod_evasive

Citar
Jun 22 18:24:04 lan mod_evasive[3835]: Blacklisting address 82.228.169.50: possible attack.
Jun 22 18:24:45 lan mod_evasive[3600]: Blacklisting address 81.206.164.163: possible attack.
Jun 22 18:25:46 lan mod_evasive[3589]: Blacklisting address 155.232.250.19: possible attack.
Jun 22 18:27:23 lan mod_evasive[3671]: Blacklisting address 83.227.217.2: possible attack.
Jun 22 18:28:10 lan mod_evasive[3673]: Blacklisting address 68.187.171.89: possible attack.
Jun 22 18:29:57 lan mod_evasive[3605]: Blacklisting address 70.143.2.130: possible attack.
Jun 22 18:30:45 lan mod_evasive[3803]: Blacklisting address 69.157.93.88: possible attack.
Jun 22 18:31:45 lan mod_evasive[10397]: Blacklisting address 146.64.81.22: possible attack.
Jun 22 18:35:01 lan mod_evasive[3794]: Blacklisting address 66.38.192.134: possible attack.
Jun 22 18:35:15 lan mod_evasive[3553]: Blacklisting address 81.190.204.64: possible attack.
Jun 22 18:40:10 lan mod_evasive[16602]: Blacklisting address 64.231.39.129: possible attack.
Jun 22 18:48:04 lan mod_evasive[16479]: Blacklisting address 84.99.195.100: possible attack.
Jun 22 18:48:12 lan mod_evasive[16467]: Blacklisting address 201.0.10.142: possible attack.
Jun 22 18:52:57 lan mod_evasive[16573]: Blacklisting address 219.95.39.242: possible attack.
Jun 22 18:53:07 lan mod_evasive[16534]: Blacklisting address 86.129.3.91: possible attack.
Jun 22 18:53:26 lan mod_evasive[16527]: Blacklisting address 62.254.0.32: possible attack.
Jun 22 18:54:41 lan mod_evasive[30473]: Blacklisting address 24.196.199.191: possible attack.
Jun 22 18:55:17 lan mod_evasive[30520]: Blacklisting address 142.161.157.227: possible attack.
Jun 22 18:55:24 lan mod_evasive[30461]: Blacklisting address 65.92.145.133: possible attack.
Jun 22 18:55:33 lan mod_evasive[30509]: Blacklisting address 88.111.227.200: possible attack.
Jun 22 18:56:13 lan mod_evasive[30473]: Blacklisting address 69.199.94.227: possible attack.
Jun 22 18:57:45 lan mod_evasive[30517]: Blacklisting address 86.125.135.212: possible attack.
Jun 22 18:57:54 lan mod_evasive[30479]: Blacklisting address 84.192.141.65: possible attack.
Jun 22 18:58:46 lan mod_evasive[30527]: Blacklisting address 83.140.97.106: possible attack.
Jun 22 18:59:31 lan mod_evasive[30469]: Blacklisting address 82.173.216.196: possible attack.
Jun 22 19:00:33 lan mod_evasive[30517]: Blacklisting address 80.176.157.245: possible attack.
Jun 22 19:00:38 lan mod_evasive[30470]: Blacklisting address 86.133.102.51: possible attack.
Jun 22 19:01:35 lan mod_evasive[30870]: Blacklisting address 24.42.134.253: possible attack.
Jun 22 19:01:48 lan mod_evasive[30509]: Blacklisting address 62.254.0.34: possible attack.
Jun 22 19:02:57 lan mod_evasive[31009]: Blacklisting address 81.227.219.125: possible attack.
Jun 22 19:03:29 lan mod_evasive[31056]: Blacklisting address 172.209.173.153: possible attack.
Jun 22 19:05:07 lan mod_evasive[31385]: Blacklisting address 84.6.12.110: possible attack.
Jun 22 19:06:52 lan mod_evasive[31008]: Blacklisting address 85.227.144.249: possible attack.
Jun 22 19:06:56 lan mod_evasive[31263]: Blacklisting address 213.222.156.222: possible attack.
Jun 22 19:07:13 lan mod_evasive[31393]: Blacklisting address 62.163.143.166: possible attack.
Jun 22 19:07:37 lan mod_evasive[31021]: Blacklisting address 62.135.101.73: possible attack.
Jun 22 19:08:03 lan mod_evasive[31251]: Blacklisting address 82.201.249.69: possible attack.
Jun 22 19:08:17 lan mod_evasive[31200]: Blacklisting address 81.62.65.53: possible attack.
Jun 22 19:11:04 lan mod_evasive[31263]: Blacklisting address 82.39.148.204: possible attack.
Jun 22 19:12:37 lan mod_evasive[31241]: Blacklisting address 213.222.154.13: possible attack.
Jun 22 19:13:54 lan mod_evasive[31027]: Blacklisting address 81.51.79.4: possible attack.
Jun 22 19:24:04 lan mod_evasive[31041]: Blacklisting address 84.221.118.156: possible attack.
Jun 22 19:48:47 lan mod_evasive[3400]: Blacklisting address 62.135.101.192: possible attack.
Jun 22 19:53:04 lan mod_evasive[31031]: Blacklisting address 62.30.33.13: possible attack.
Jun 22 19:54:32 lan mod_evasive[31016]: Blacklisting address 72.14.194.18: possible attack.
Jun 22 19:56:10 lan mod_evasive[31067]: Blacklisting address 198.96.34.58: possible attack.
Jun 22 20:03:24 lan mod_evasive[5144]: Blacklisting address 172.213.33.242: possible attack.
Jun 22 20:08:31 lan mod_evasive[5137]: Blacklisting address 83.241.11.16: possible attack.
Jun 22 20:21:59 lan mod_evasive[6645]: Blacklisting address 201.23.193.20: possible attack.
Jun 22 20:32:28 lan mod_evasive[7801]: Blacklisting address 212.38.134.172: possible attack.
Jun 22 20:45:46 lan mod_evasive[7836]: Blacklisting address 81.247.11.48: possible attack.
Jun 22 20:48:03 lan mod_evasive[7796]: Blacklisting address 70.245.98.186: possible attack.
Jun 22 20:49:38 lan mod_evasive[7832]: Blacklisting address 61.8.138.203: possible attack.
Jun 22 20:51:21 lan mod_evasive[7801]: Blacklisting address 201.132.197.161: possible attack.
Jun 22 20:57:18 lan mod_evasive[10426]: Blacklisting address 82.201.249.67: possible attack.
Jun 22 20:57:51 lan mod_evasive[7822]: Blacklisting address 81.77.26.162: possible attack.
Jun 22 21:00:25 lan mod_evasive[7817]: Blacklisting address 200.39.202.243: possible attack.
Jun 22 21:12:04 lan mod_evasive[7794]: Blacklisting address 84.27.139.25: possible attack.
Jun 22 21:22:27 lan mod_evasive[7816]: Blacklisting address 217.208.98.254: possible attack.

Si es un DDoS muy distribuido enseguida notaremos que muchas ip’s diferente DoSean el Apache.

4) Mirando los logs del syslog (del kernel)

Citar
May 17 13:39:01 lan kernel: possible SYN flooding on port 80. Sending cookies.
May 17 13:39:02 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:35 lan kernel: NET: 4 messages suppressed.
May 17 13:39:35 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:38 lan kernel: NET: 1 messages suppressed.
May 17 13:39:38 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:43 lan kernel: NET: 6 messages suppressed.
May 17 13:39:43 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:48 lan kernel: NET: 4 messages suppressed.
May 17 13:39:48 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:52 lan kernel: NET: 9 messages suppressed.
May 17 13:39:52 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:39:57 lan kernel: NET: 15 messages suppressed.
May 17 13:39:57 lan kernel: ip_conntrack: table full, dropping packet.
May 17 13:40:01 lan kernel: possible SYN flooding on port 80. Sending cookies.

Líneas a mirar:

Citar
possible SYN flooding on port 80. Sending cookies.

“Sending Cookies” si lo tenemos activado en el /etc/sysctl.conf
# Enable TCP SYN Cookie Protection

Código:
net.ipv4.tcp_syncookies = 1

A veces es mejor deshabilitarlo:

Código:
net.ipv4.tcp_syncookies = 0

De esta manera podemos ver las ip’s del ataque:

Citar
Jul 14 12:46:50 lan kernel: TCP: drop open request from 80.171.45.81/63069
Jul 14 12:46:55 lan kernel: NET: 1401 messages suppressed.
Jul 14 12:46:55 lan kernel: TCP: drop open request from 80.103.166.148/4403
Jul 14 12:46:59 lan kernel: NET: 1772 messages suppressed.
Jul 14 12:46:59 lan kernel: TCP: drop open request from 200.127.62.215/4019
Jul 14 12:47:05 lan kernel: NET: 2362 messages suppressed.
Jul 14 12:47:05 lan kernel: TCP: drop open request from 85.57.169.142/19899
Jul 14 12:47:11 lan kernel: NET: 2618 messages suppressed.
Jul 14 12:47:11 lan kernel: TCP: drop open request from 83.19.73.122/2710
Jul 14 12:47:14 lan kernel: NET: 898 messages suppressed.
Jul 14 12:47:14 lan kernel: TCP: drop open request from 80.235.39.64/3554
Jul 14 12:47:19 lan kernel: NET: 1120 messages suppressed.
Jul 14 12:47:19 lan kernel: TCP: drop open request from 80.171.45.81/62095
Jul 14 12:47:24 lan kernel: NET: 1714 messages suppressed.
Jul 14 12:47:24 lan kernel: TCP: drop open request from 84.62.152.44/34014
Jul 14 12:47:29 lan kernel: NET: 2274 messages suppressed.
Jul 14 12:47:29 lan kernel: TCP: drop open request from 200.127.62.215/3207
Jul 14 12:47:34 lan kernel: NET: 1552 messages suppressed.
Jul 14 12:47:34 lan kernel: TCP: drop open request from 80.103.166.148/4797
Jul 14 12:47:39 lan kernel: NET: 4044 messages suppressed.
Jul 14 12:47:39 lan kernel: TCP: drop open request from 80.235.39.64/2678
Jul 14 12:47:44 lan kernel: NET: 4360 messages suppressed.
Jul 14 12:47:44 lan kernel: TCP: drop open request from 80.103.166.148/1312
Jul 14 13:04:15 lan kernel: TCP: drop open request from 200.14.237.83/4787
Jul 14 13:04:22 lan kernel: NET: 147 messages suppressed.
Jul 14 13:04:22 lan kernel: TCP: drop open request from 81.38.172.161/4892
Jul 14 13:04:30 lan kernel: NET: 6 messages suppressed.
Jul 14 13:04:30 lan kernel: TCP: drop open request from 200.14.237.83/4934
Jul 14 13:04:30 lan kernel: TCP: drop open request from 200.14.237.83/4935
Jul 14 13:04:38 lan kernel: NET: 76 messages suppressed.
Jul 14 13:04:38 lan kernel: TCP: drop open request from 81.84.212.34/2861
Jul 14 13:04:40 lan kernel: NET: 269 messages suppressed.
Jul 14 13:04:40 lan kernel: TCP: drop open request from 200.14.237.83/3070
Jul 14 13:04:45 lan kernel: NET: 287 messages suppressed.
Jul 14 13:04:45 lan kernel: TCP: drop open request from 81.203.228.102/4400
Jul 14 13:04:50 lan kernel: NET: 98 messages suppressed.
Jul 14 13:04:50 lan kernel: TCP: drop open request from 81.84.212.34/3961
Jul 14 13:04:54 lan kernel: NET: 245 messages suppressed.
Jul 14 13:04:54 lan kernel: TCP: drop open request from 200.84.169.200/1183
Jul 14 13:05:00 lan kernel: NET: 1787 messages suppressed.
Jul 14 13:05:00 lan kernel: TCP: drop open request from 81.203.228.102/2050
Jul 14 13:05:04 lan kernel: NET: 3208 messages suppressed.
Jul 14 13:05:04 lan kernel: TCP: drop open request from 86.212.167.27/4720
Jul 14 13:05:09 lan kernel: NET: 2031 messages suppressed.
Jul 14 13:05:09 lan kernel: TCP: drop open request from 81.203.228.102/1794
Jul 14 13:05:14 lan kernel: NET: 2221 messages suppressed.
Jul 14 13:05:14 lan kernel: TCP: drop open request from 81.38.172.161/4908
Jul 14 13:05:21 lan kernel: NET: 730 messages suppressed.
Jul 14 13:05:21 lan kernel: TCP: drop open request from 81.203.228.102/1430
Jul 14 13:05:25 lan kernel: NET: 234 messages suppressed.
Jul 14 13:05:25 lan kernel: TCP: drop open request from 81.203.228.102/2939
Jul 14 13:05:30 lan kernel: NET: 1594 messages suppressed.
Jul 14 13:05:30 lan kernel: TCP: drop open request from 200.14.237.83/3876
Jul 14 13:05:36 lan kernel: NET: 633 messages suppressed.
Jul 14 13:05:36 lan kernel: TCP: drop open request from 86.212.167.27/1116
Jul 14 13:05:39 lan kernel: NET: 970 messages suppressed.
Jul 14 13:05:39 lan kernel: TCP: drop open request from 81.38.172.161/3040
Jul 14 13:05:45 lan kernel: NET: 548 messages suppressed.
Jul 14 13:05:45 lan kernel: TCP: drop open request from 81.203.228.102/2119
Jul 14 13:05:50 lan kernel: NET: 421 messages suppressed.
Jul 14 13:05:50 lan kernel: TCP: drop open request from 81.203.228.102/2478
Jul 14 13:05:56 lan kernel: NET: 379 messages suppressed.
Jul 14 13:05:56 lan kernel: TCP: drop open request from 81.203.228.102/4005
Jul 14 13:05:59 lan kernel: NET: 891 messages suppressed.
Jul 14 13:05:59 lan kernel: TCP: drop open request from 81.38.172.161/3568
Jul 14 13:06:04 lan kernel: NET: 2221 messages suppressed.
Jul 14 13:06:04 lan kernel: TCP: drop open request from 81.203.228.102/4532
Jul 14 13:06:09 lan kernel: NET: 243 messages suppressed.
Jul 14 13:06:09 lan kernel: TCP: drop open request from 81.203.228.102/1939
Jul 14 13:06:14 lan kernel: NET: 2166 messages suppressed.
Jul 14 13:06:14 lan kernel: TCP: drop open request from 81.38.172.161/2137
Jul 14 13:06:19 lan kernel: NET: 2071 messages suppressed.
Jul 14 13:06:19 lan kernel: TCP: drop open request from 81.38.172.161/3136
Jul 14 13:06:24 lan kernel: NET: 2069 messages suppressed.
Jul 14 13:06:24 lan kernel: TCP: drop open request from 81.84.212.34/4600
Jul 14 13:06:29 lan kernel: NET: 1797 messages suppressed.
Jul 14 13:06:29 lan kernel: TCP: drop open request from 86.212.167.27/3171
Jul 14 13:06:35 lan kernel: NET: 1292 messages suppressed.
Jul 14 13:06:35 lan kernel: TCP: drop open request from 81.203.228.102/1394
Jul 14 13:06:39 lan kernel: NET: 715 messages suppressed.
Citar
May 17 14:13:24 lan kernel: ip_conntrack: table full, dropping packet.

Tabla llena. Tenemos un problema porque no admitiremos más conexiones aunque sean legítimas.

Podemos aumentar el valor de dicha tabla si nuestra red da para más.

Directamente:

Código:
echo “65535″ > /proc/sys/net/ipv4/ip_conntrack_max

Para que el valor quede guardardo y no se pierda al reiniciar, debemos añadirlo en el sysctl.conf

Código:
net.ipv4.ip_conntrack_max = 65535

Recuerda reiniciar la red para aplicar los cambios en el /proc (service network restart).

5) Mirando las gráficas del MRTG, RRDtool

Si ves que el tráfico inbound sube hasta los 100mbps es que te están doseando hehehe.


B) Intentar parar el ataque1) – mod_evasiveWeb Oficial:
http://www.nuclearelephant.com/projects/mod_evasive/Consideramos que 50 conexiones por segundo a 2 páginas es suficiente motivo como para bloquear esa ip:

Código:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 900

Igual que el anterior pero con 50 peticiones en un segundo a 1 sola página:

Código:
DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1

Si queremos bloquear las ips que floodean, podemos usar el iptables:

DOSSystemCommand “sudo -u root -c ‘/sbin/iptables -A INPUT -s %s -j DROP”

Recordar de mirar el syslog por si hay posibles falsos positivos (ip’s que no hacian flood).

Config ejemplo:
http://www.eth0.us/mod_evasive

2 – mod_security

El único problema del mod_security es que necesitamos al menos un argumento para detectar el ataque.

En el ejemplo usamos en http_referer y el User Agent para detectar el DDoS:

Bloqueando un ataque Iframe
http://foro.elhacker.net/index.php/topic,127481.0.html

3- tcplimit, ipdrop, ipblock

Usando firewalls dinámicos.

4- Optimizando y asegurando la red con el sysctl.conf

cat /proc/sys/net/ipv4/tcp_syncookies

# Enable IP spoofing protection, turn on Source Address Verification

net.ipv4.conf.all.rp_filter = 1

# Enable TCP SYN Cookie Protection

net.ipv4.tcp_syncookies = 1

# Enable ignoring broadcasts request

net.ipv4.icmp_echo_ignore_broadcasts = 1

Más ejemplos de configuración completa del sysctl.conf en las referencias del documento.

5- APF Firewall con el módulo anti-ddos

*/8 * * * * root /etc/apf/ad/antidos -a >> /dev/null 2>&1

KISS My Firewall es una alternativa.

Script PHP
http://www.prism-hosting.com/AntiDoS

6- Parar el botnet

Tracking Botnets – Bot-Commands
http://www.honeynet.org/papers/bots/botnet-commands.html

Tracking Botnets
http://www.honeynet.org/papers/bots/

Tracking Botnets – DDoS-attacks
http://www.honeynet.org/papers/bots/botnet-ddos.html

Phatbot Trojan Analysis
http://www.lurhq.com/phatbot.html

7- Usando reglas del iptables

Código:
# todo el trafico syn
-P INPUT DROP
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp ! –syn -j REJECT –reject-with tcp-reset
-A INPUT -m state –state INVALID -j DROP
-P OUTPUT DROP
-A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp ! –syn -j REJECT –reject-with tcp-reset
-A OUTPUT -m state –state INVALID -j DROP
-P FORWARD DROP
-A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p tcp ! –syn -j REJECT –reject-with tcp-reset
-A FORWARD -m state –state INVALID -j DROP
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A FORWARD -i lo -o lo -j ACCEPT# sube las cargas pero muchos wwww buena señal
-A INPUT -p tcp –syn -j REJECT –reject-with icmp-port-unreachable# la que mejor va
-N syn-flood
-A syn-flood -m limit –limit 100/second –limit-burst 150 -j RETURN
-A syn-flood -j LOG –log-prefix “SYN flood: ”
-A syn-flood -j DROP# igual que el de arriba pero muy bestia
-N syn-flood
-A INPUT -i eth0:2 -p tcp –syn -j syn-flood
-A syn-flood -m limit –limit 1/s –limit-burst 4 -j RETURN
-A syn-flood -j DROP-A INPUT -p tcp -m tcp –tcp-flags SYN,RST,ACK SYN -m limit –limit
1/sec -j ACCEPT
-A INPUT -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK RST -m limit
–limit 1/sec -j ACCEPT

# no es muy efectivo
-A INPUT -s 0/0 -p tcp –syn –source-port 1000:5000
–destination-port 80 -j DROP

# no es muy efectivo
-A INPUT -p tcp -m tcp –dport 80 –sport 1000:5000 –tcp-flags SYN SYN -j DROP

C) Referencias

- Opciones de seguridad en Linux a través de /proc (I) y (II)
http://www.elhacker.net/opciones-seguridad-linux-proc.html

- Syctl.conf Hardening
http://www.eth0.us/sysctl

- Ipsysctl tutorial 1.0.4
http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html

- Hardening the TCP/IP stack to SYN attacks
http://www.securityfocus.com/infocus/1729

- DDOS and SYN_Recv Attacks And some SOlutions
http://www.vbulletin.com/forum/showthread.php?t=126699

- Distributed Reflection Denial of Service
http://www.grc.com/dos/drdos.htm

- Dynamic iptables firewalls
http://www-128.ibm.com/developerworks/library/l-fw/

- Preventing DDoS Attacks
http://www.linuxsecurity.com/content/view/121960/49/

- Distributed Denial of Service (DDoS) Attacks/tools
http://staff.washington.edu/dittrich/misc/ddos/

fuente: foro.elhacker.net/index.php/topic,137442.0.html

La Clase

Se cuenta por ahí que un profesor un módulo de FP en Desarrollo de Aplicaciones explicaba en clase que los buenos programadores solo usan Windows XP y pide que levante la mano todo el que también sea seguidor de la empresa de Bill Gates. Todos en clase, por temor a represalias por parte del profesor, levantan la mano, excepto uno con pinta de friki que estaba sentado al fondo del aula. El profesor le miró con sorpresa y le preguntó:

-Oiga, usted. ¿Por qué no ha levantado la mano?.
-Porque yo no utilizo Windows.

El profesor, extrañado, preguntó de nuevo:

-Vaya, y sino utilizas Windows ¿Que Sistema Operativo utilizas?
-GNU/Linux. -Respondió orgulloso-

El profesor, cuyos fanáticos oídos no podían dar crédito a algo así, exclamó:

-Pero hijo mío ¿qué pecado has cometido para utilizar tal chapuza?

El alumno, muy tranquilo, le respondió:

-Mi padre es informático y usa SUSE Linux, mi madre es asesora en seguridad y usa Debian Linux y mi hermano estudia Físicas y utiliza Linux Mandrake, por eso yo también utilizo GNU/Linux! -remató orgulloso y convencido-

- Bueno, -replicó irritado el profesor-, pero ese no es motivo para utilizar Linux. Tú no tienes porqué hacer lo que hacen tus padres.. Por ejemplo, si tu madre se prostituyese y se drogase todo el día, tu padre se tocara los cojones, bebiese como un cabrón y traficase con drogas y tu hermano atracase comercios y robase a abuelitas, entonces, ¿tú qué harías?

- Seguramente instalaría Windows

fuente: noticias linux

Antivirus para linux

Panda a anunciado en su web que ha desarrollado un antivirus llamado Panda Desktop Secure para Linux Ubuntu.
Vamos a ver, no es un poco raro que no habiendo virus para Linux saquen un software destinado a ello?, solo falta que en poco tiempo empiece a aparecer malware para Linux, sería algo digno de sospecha.

Alojamiento de archivos alternativos a rapidshare

Las páginas web dedicadas al alojamiento de archivos hoy se cuentan por centenas. Se usan principalmente en foros y blogs para alojar discos, vídeos y archivos en general de un tamaño que oscila entre los 10 y los 100 Mb. No recomendamos en ningún caso alojar archivos privados o muy importantes en las webs de este estilo. Son sitios para salir del paso o para temas de ocio, muchos de los cuales ofrecen una seguridad y privacidad dudosas.Si eres aficionado a estos sitios, te habrás encontrado cientos de veces con Rapidshare.de, sin duda la web líder en este aspecto seguida de cerca por Megaupload, Filefactory y alguna más.

Teniendo en cuenta que hay cientos de alternativas me pone de los nervios que se use tanto rapidshare ya que aparte de tener que esperar casi 1 minuto para descargar el archivo, sólo te deja descargar un archivo cada cierto tiempo y tiene un límite de 30 megas por hora. Así pues, me propuse encontrar alguna opción mejor.

Lo primero era buscar alternativas y eso no es un problema. Aquí van tres populares listados de sitios de alojamiento de archivos:

Pero como dice sabiamente Arturo Goga en su blog:

Lo malo de la lista, es que se nos dan las características (bastante homogéneas entre sí, la verdad), pero no que tan confiable es el servicio… Así que no sería mala idea recomendar algunos, de entre todos esos.

Y efectivamente, justo cuando se nos empieza a caer la baba con sitios que prometen varios gigas por archivo y condiciones estupendas la realidad es muy diferente. O se mantienen gracias a una publicidad que invade todo tu campo visual, o unos son clones exactos de otros con distinto nombre o sencillamente la mayoría no funcionan. Así que en faqoff hemos probado los sitios webs más apetecibles (más de 50 oigan), durante varios días y les hemos sometido a un estricto test en el que se puntuaba las webs tal como sigue:

  • Size (2pts): Tamaño máximo del archivo que puedes subir.
  • Limit/day (2pts): El tiempo que tienen alojado tu archivo antes de borrarlo.
  • Limit/band (1pt): Si existe alguna restricción al número de veces que puede descargarse un archivo.
  • Publicidad (1pt): si la publicidad es muy poca, soportable o llega a complicar el proceso.
  • Proceso (1pt): si tienes que dar varios pasos para obtener el link de descarga, si además hay un tiempo de espera para descargar y en general la simplicidad del proceso subir/descargar.
  • D.Speed (1pt): indica si puedes descargar a toda la velocidad que tu conexión permite o no.
  • Registro (1pt): si tienes que registrarte en la página o no.
  • Info (0,5 pts): indica si cuando estás subiendo el archivo tienes algun indicador del estado de la transferencia y si este incluye % de lo completado.
  • Status (0,5 pts): indica si la web ha fallado o dado error en algún momento de las múltiples pruebas.

Como se puede ver el total posible es 10.

Las puntuaciones claro está son subjetivas y otras personas puntuarían más alto aspectos que consideren más importantes pero tras porbar con distintas puntuaciones los resultados no cambian mucho. Aquí está el cuadro resultante con los 9 servicios que más me han gustado y por último con la nota que habría sacado Rapidshare. En verde puntúa el 100% de la nota en la categoría, en ámbar el 50% y en rojo 0 (el color dependía de la comparación con el resto de webs):

ScreenShot006.jpg

(click para ampliar)

La columna de Status es un tanto peculiar ya que muchos sitios funcionaban terriblemente mal por lo que era imposible darles puntuación en otras categorías y al final se quedaron por el camino. Por supuesto también eliminamos de la selección todas las páginas que no aprobaban. Las pruebas se realizaron con distintos archivos .mp3 de tamaño entre 2 y 4 Mb.

Ahora comentaré con algo de detalle las premiadas con algunas capturas (click en las miniaturas para ampliar)

1. Quicksharing – 8,75

ScreenShot001_1.jpg

De las últimas que miré y la mejor sin lugar a dudas. Es de estos servicios a los que te pasas buscando la trampa por alguna parte pero yo aún no la encontré. La info que te dan sobre el proceso de subida es mínima pero se les perdona.

ScreenShot002.jpg

ScreenShot005.jpg

2. Upload.sc – 7,5

ScreenShot008.jpg

Un gran diseño muy Web 2.0 que dota al proceso de una gran sencillez. He leído algun comentario en otro blog sobre que el tiempo que tu archivo está disponible es muy inferior al mes que ellos prometen y al no estar muy masificado es difícil encontrar opiniones pero a mí me al menos me ha dado un buen resultado. Cuando acabas de subir el archivo en lugar de darte el link de descarga te dan un “link maestro” desde el cual puedes borrar el archivo o compartirlo.

ScreenShot009.jpg

ScreenShot010.jpg

3. Verzend – 7,25

ScreenShot011_1.jpg

Otro de los que más me ha gustado. Ideal para los que busquen gran capacidad (puedes subir hasta archivos de 1Gb). La mayor pega que tiene es que borrarán el archivo tras 7 días sin uso pero aún así es quizás la única web que permite archivos enormes conservando una apariencia limpia y sencilla.

ScreenShot012.jpg

ScreenShot013.jpg

4. Zupload – 7,25

ScreenShot014.jpg
Quizás la mejor relación tamaño/tiempo con archivos de hasta 500 Mb durante 1 mes. La apariencia es muy amateur y el copyright de la parte inferior sigue anclado en 2005 por lo que mucho seguridad no ofrece. Lo peor, una velocidad de descarga bajísima en las pruebas realizadas.

ScreenShot015.jpg

ScreenShot016.jpg

5. Bestsharing – 7

ScreenShot017_1.jpg

Otro de mis favoritos, sobretodo en lo que apariencia y sencillez del proceso se refiere. No está más arriba por su lentísima velocidad de descarga pero su web permite aceleradores de descarga por lo que es un problema salvable.

ScreenShot019.jpg

ScreenShot020.jpg

6. Yousendit – 7

ScreenShot021_1.jpg
Es muy popular y es el que venía usando hasta hoy. Quizás el aumento de su popularidad es el que ha hecho que hayan aumentado progresivamente sus limitaciones hasta el punto actual. Marcamos la opción de registro en ámbar ya que es gratuito y mejora sensiblemente esos límites.

ScreenShot022.jpg

ScreenShot023.jpg

7. Sendspace – 6,5

ScreenShot024.jpg

Es un servicio con condiciones exactamente iguales al popular Filefactory pero tiene mucha menos publicidad y mientras que en Filefactory tienes que pasar 3 pantallas para llegar al link de descarga, aquí el proceso se acelera.

ScreenShot025.jpg

ScreenShot026.jpg

8. Box.net – 6

ScreenShot027_1.jpg

Box es el único de los citados que requiere registro pero es que es mucho más que un servicio de alojamiento de archivos. El único en el que tendrás una cuenta permanente, como si de un disco duro se tratara. El proceso no es que sea complicado pero al haber múltiples opciones se hace menos inmediato. Fue el primero que encontré y me ha convencido para archivos pequeños que compartes con muchas personas. Las pantallas de descarga que ofrecerás a tus amigos son las más limpias de todas, no tienen pérdida.

ScreenShot028.jpg

ScreenShot029.jpg

ScreenShot030.jpg

Por el camino se han quedado sitios muy populares o que prometían mucho como AxiFile, Easy File Host, Content Type, Upload2, Up-file, Megashares, Pix Folder, Streamload, zShare, Wikiupload, Jumbofile, Filelodge, Gimehost… Algunos no aprobaband, otros eran muy similares a los aquí destacados, otros eran un desastre. Pero sinceramente creo que con los 8 vistos es más que suficiente para cualquiera.

Y si sigues sin estar satisfecho usa P2P.

Si alguien tiene alguna otra opción que use habitualmente y que saque buenas notas que la sugiera en los comentarios (nótese que hemos dejado dos huecos para un top-10).

Fuente: blogoff

Incendio en el Empordà

incendio

Originally uploaded by chanclon.

Foto tomada por mi desde la estación.

Tenemos un incendio aquí al lado, según he leído se inició en Ventallo, y ha estado quemando toda la noche.
Como consecuencia del incendio la carretera C-31 está cortada en ambos sentidos a la altura de Verges.

En estos momentos según veo el incendio no está controlado, desde aquí camallera se pueden ver pasar avionetas, helicópteros y patrullas de mossos de esquadra. Según dice gente de aquí el pueblo de al lado ya está afectado por el incendio.

Windows Vista, jaqueado en Black Hat

Fueron por lana y salieron trasquilados. Tal y como estaba previsto, Microsoft habló sobre la seguridad de Windows Vista en Black Hat. Mientras tanto, en una sala contigua, la investigadora polaca Joanna Rutkowska mostraba cómo utilizar su técnica Blue Pill (más detalles técnicos aquí) para insertar código malicioso en las mismísimas entrañas de una copia de Windows Vista versión 64-bit.Rutkowska encontró una forma de traspasar el polémico mecanismo con el que Microsoft intenta que sólo se puedan cargar en el kernel de Vista los drivers digitalmente firmados…

Fuente:  kriptopolis

Wifi Solar

La energía solar abre nuevas posibilidades al acceso a la red desde cualquier lugar perdido de la naturaleza sin necesidad de disponer de corriente eléctrica. El uso de paneles solares para acceder a internet es ya una realidad en la ciudad de Boulder (Colorado) donde sus habitantes ya disfrutan WiFi gracias a los paneles instalados en sus tejados, y todo ello sin un sólo cable y una inversión de sólo 10.000 dólares.

Wifi Solar

La empresa Lumin Innivative Products comercializa el modelo LightWave AP 1000, que por medio de paneles solares proporcionan un funcionamiento ininterrumpido con sólo cinco horas diarias de exposición al sol. Además disponen también de baterías recargables con una autonomía de hasta siete días.

Las terminales de Lumin alcanan hasta los 40 kilómetros y serán de gran utilidad en las zonas más apartadas y pueblos de dificil acceso con problemas para instalar corriente eléctrica. En la publicidad del fabricante se asegura que los militares le quitan el producto de las manos, aunque también destacan sus aplicaciones en excavaciones arqueológicas o escenarios de catástrofes; y será de gran utilidad en pistas de esquí, parques naturales, estaciones de monitorización medioambiental…

Para saber más sobre la WiFi solar:

Fuente: blogtelecom 

AJAX vs. Flash

La dualidad en el desarrollo de interfaces web: ¿Ajax o Flash?

¿Ajax o Flash?. Ésta es una de las muchas preguntas sin respuesta que casi cualquier desarrollador web se ha hecho durante el último año.

Argumentos a favor de ambas tecnologías (porque en ambos casos hablar de lenguaje o de entorno de desarrollo no es demasiado riguroso) los hay, y probablemente del mismo peso y defendidos con semejante vehemencia por las respectivas comunidades de desarrolladores. Pero en realidad, la discusión se puede simplificar en uno sólo: el uso de tecnologías propietarias, o abiertas, y es que el player o máquina virtual de Flash es algo cerrado, propiedad de Adobe, y el HTML dinámico basado en comunicaciones asíncronas depende de un objeto (XMLHTTPRequest) propiedad de Microsoft, aunque implementado por todos los navegadores modernos.

Evidentemente, la discusión es mucho más compleja, y en ella hay también una carga bastante fuerte de, llamémosles así, prejuicios históricos. Flash ha sido hasta hace muy poco tiempo una herramienta exclusiva para diseñadores y animadores, y si bien es cierto que con ella se han realizado algunas de las aberraciones más dolorosas para la vista que se recuerdan, no es menos cierto que también hay alguna que otra retina desprendida por el mal uso del HTML (“blink, blink”).

Por eso, todos los argumentos que se puedan dar a favor de una u otra tecnología no son más que discusiones bizantinas que intentan obviar lo que debería ser la norma para cualquier desarrollador: utiliza la herramienta que mejor te pueda ayudar a resolver el problema concreto con el que te encuentres.

En cualquier caso, no estaría de más volver al vista atrás y recordar el porqué de la existencia de ambas tecnologías. En los albores de la historia moderna de Internet, allá por el 2000, se empezó a hacer patente la necesidad de superar las limitaciones intrínsecas al HTML, el lenguaje de descripción de páginas en el que se basó la web, y del modo de operación del protocolo de comunicaciones utilizado, basado en envíos de datos a un servidor remoto, y espera de la respuesta de éste para volver a presentar datos en el navegador del usuario.

En esos tiempos, había quien se ganaba las lentejas (como éste que les escribe) realizando animaciones en Javascript, un lenguaje de programación que permitía hacer maravillas visuales si se dedicaba un 80% del tiempo de desarrollo a luchar a brazo partido contra las diferentes implementaciones del lenguaje y del acceso a los elementos de la página por los navegadores existentes, incluso por las distintas versiones de un mismo navegador.

Pero en eso llegó algo nuevo: Flash. Con Flash se podía hacer lo mismo que con HTML dinámico (esto es, la combinación de HTML y Javascript), sólo que de forma mucho más rápida y que funcionaba en todos los navegadores. Y aunque ya lo he dicho, quiero insistir en ello: de forma más rápida. Mucho más rápida.

Y pasó lo que tenía que pasar: todo el mundo, al menos el mundo que gustaba de los interfaces ricos, que gustaba de salirse del aburrimiento visual del HTML, giró la cabeza, abandonó el Javascript y se pasó a Flash. Y comenzaron a propagarse por la web los equivalentes a blink y a las marquesinas, sólo que ahora con más colorines, y a veces, incluso con sonido.

Y así estuvimos unos tres años largos, creciendo con cada nueva versión de Flash, y empezando a decir que podíamos llevar la experiencia de las aplicaciones de escritorio a la web, haciendo lo que el marketing de Macromedia llamaba RIAs. (Rich Internet Applications). Ésa era la luz hacia la que todos íbamos, el cielo que todos perseguíamos: las RIAs.

Pero de repente, Google sacó del arroyo al Javascript, e implementó todo el cliente de su sistema de correo electrónico utilizando ese lenguaje. Y alguien más llegó y decidió que había que ponerle un nombre al redescubrimiento: AJAX (Asynchronous Javascript And XML). Y alguien más desarrolló un framework para simplificar el desarrollo en Javascript. Y alguien más llegó y decidió que esa forma de implementar los interfaces de las aplicaciones web era uno de los pilares maestros sobre las que se sustentaba lo que había comenzado a llamarse web 2.0.

Y de la noche a la mañana, los que llevaban años diciendo que Javascript no era un lenguaje de programación, se olvidaron de su poco gusto por la plataforma, y de lo poco que les gustaba que en los navegadores las cosas se movieran, o que se recargaran datos si eso se hacía en Flash, y comenzaron a loar las maravillas de AJAX.

Y ahora, nos pasamos los días de claro en claro y las noches de turbio en turbio discutiendo sobre qué es lo correcto, si implementar soluciones basadas en Flash o en XHTML con peticiones de datos asíncronas a servidor.

¿Lo correcto? ¿Cómo se puede saber qué es lo correcto? En primer lugar, conociendo las ventajas e inconvenientes de cada solución, sabiendo qué se puede y qué no se puede hacer y qué perspectivas de futuro inmediato hay. Veamos, pués, rápidamente, qué caracteriza a cada una de las dos tecnologías.

AJAX

Lo bueno:

Basada en HTML, en realidad en XHTML, por lo que debería ser fácilmente estandarizable.
Accesible. La integración de lectores de pantalla, las posibilidades de modificar el tamaño del texto por el usuario, etc siguen sin tener comparación en Flash. (Por aquí hay disidencia: ¿AJAX accesible? Si te lee Stevie Wonder se le caen las gafas de sol. La propuesta es quitarlo tanto de aquí como de Flash)
Integración con CSS. Es, por tanto, bastante sencillo separar datos de presentación, por lo que las aplicaciones son más escalables.
Ligereza. Se supone que una página con sólo HTML es más ligera que un front-end en flash, aunque en realidad el Javascript necesario para funcionar no es tan ligero, por lo que finalmente se depende de mecanismos de caché en servidor.
Javascript. Lenguaje interpretado en el navegador, sencillo, orientado a objetos (según a quién se le pregunte), especialmente orientado a manipular el DOM de las páginas.
Motores de búsqueda. Al basar los interfaces en HTML, son fácilmente indexados por los motores de búsqueda. Siempre y cuando su contenido no sea producto de una petición de datos a servidor, claro está.

Lo malo:

El usuario puede haber deshabilitado el Javascript en el navegador.
Se depende de un objeto propiedad de Microsoft para las comunicaciones asíncronas. Lo malo de esto no es que ese objeto sea propiedad de Microsoft o de cualquier otro, sino que es propiedad de alguien.
No es tan ligero como parece a primera vista.
Burdo. Por mucho que se intente, el resultado final no es comparable al de una web en Flash.

Flash

Lo bueno:

Player casi universal. Prácticamente todos los ordenadores del mundo lo tienen instalado, aunque eso no implica que el usuario de un ordenador en concreto tenga instalada la última versión del mismo, ni que no lo haya deshabilitado utilizando alguna extensión del navegador.
Calidad visual. Sobre todo con el avance en el manejo de los textos en las últimas versiones del player de Flash.
Animación, multimedia. La única forma solvente de incluir animaciones, contenido interactivo, vídeo, audio.
Lenguaje de programación de alto nivel orientado a objetos, aunque también sea interpretado en el player.

Lo malo:

Se depende de un plug-in, propietario.
Se tiende a abusar de las animaciones.
Integración con el botón de volver del navegador no es nada sencilla.
Poco accesible, a pesar de que las últimas versiones de Flash suponen una mejora sensible en este aspecto.
Está inevitablemente unido a dos cosas: el botón de “Skip intro” y los banners abusivamente invasivos.

Efectivamente, todos los argumentos a favor de una u otra tecnología en realidad contienen un argumento en contra. Y viceversa. En el fondo, no debería ser el uso de una u otra tecnología el que marque la bondad de una solución sino el buen uso que se haga de ella, la forma en la que se utiliza. Al igual que con todos los avances del ser humano, como la electricidad, el motor de explosión, o la rueda, tanto Flash como AJAX se pueden utilizar para hacer el bien y para hacer el mal.

Esa, al menos, fue la conclusión de Herr Kompilehn, eminente psiquiatra de los Cárpatos, en el Trigésimocuarto Congreso Mundial de Transtornos de la Personalidad en Programadores.

A continuación, voy a transcribir las notas que tomé sobre su ponencia en dicho Congreso. Es un relato escalofriante, así que, por favor, si sus corazones son delicados, no sigan leyendo…

Estimados miembros de la Comisión Científica, estimados colegas, señoras y señores:

Durante los últimos cuarenta años he tratado a algunas de las mentes más preclaras de Europa, pero también a algunas de las más sanguinarias; a genios que no eran capaces de acordarse de ponerse los pantalones antes de salir de casa, y a asesinos múltiples que lloraban cuando alguien les enseñaba una foto de su madre.

Pero lo que les voy a contar ahora es el caso más extraño con el que me he encontrado jamás, el caso que estuvo a punto de hacerme renegar del Juramento Hipocrático, de hacerme abandonar el ejercicio de la psiquiatría.

Todo comenzó hace un par de años, cuando mi ayudante concertó una cita con un paciente que parecía como cualquier otro, una persona joven, con muchos de esos pendientes en partes muy extrañas de la cara, que hablaba un lenguaje un poco raro, lleno de términos desconocidos entonces para mí, pero que me perseguirán en mis sueños durante el resto de mi vida.

Pero no adelantemos acontecimientos, queridos colegas. Como he dicho, todo comenzó hace un par de años, con la visita de este joven paciente, a quien llamaré Mr. Alaguan de ahora en adelante, nombre ficticio, sí, pero que me permitirá mantener el debido secreto profesional.

Mr. Alaguan era un joven vestido a la moda, con ese pelo alborotado que estoy seguro que necesita más tiempo de preparación que un buen peinado con gomina, como a mí me gusta.

Desde su primera visita, aprecié en él una serie de gestos inquietantes. Como he dicho, durante mi larga carrera, igual que como durante la suya, queridos colegas, he tenido que tratar con algunos de los cerebros más enfermos de Centro-Europa, pero en el joven Alaguan, había algo que no había visto nunca.

Había decisión, una decisión, una pasión, que rallaba en el fanatismo. Porque durante los primeros meses de terapia lo único que conseguí sacar en claro es que el joven Alaguan sufría por no poder conseguir lo que él llamaba “llevar el escritorio a la web”, fuera eso lo que fuera.

Cada vez que nos acercábamos al tema, la agitación del joven Alaguan era patente,: comenzaba a temblar, a sudar, sus músculos se convulsionaban, y lo único que era capaz de decir, haciendo dolorosos esfuerzos para abrir la boca aprisionada bajo la tensión de sus mandíbulas era “llevar el escritorio a la web, debo llevar el escritorio a la web, debo trasladar la experiencia de utilizar una aplicación de escritorio a la web”.

¿Qué mayor reto puede haber para un científico, queridos colegas, que intentar desentrañar lo desconocido, intentar hacer un poco de luz en la oscuridad de una mente enferma? Por eso, en pocas sesiones Alaguan se convirtió casi en una obsesión para mí.

Poco a poco, utilizando algunas de las técnicas más avanzadas de electroshock, conseguí atisbar la fuente del problema. Dentro de Alaguan había dos personalidades totalmente diferentes, pero en continua lucha por lograr un objetivo compartido, que no era otro que la frase que Alaguan repetía una y otra vez durante sus ataques “llevar el escritorio a la web, trasladar la experiencia de usuario de una aplicación de escritorio a la web”.

Por fin, tras varios meses, conseguí comenzar a separar una de otra, conseguí aislar a las dos personalidades, de forma que podía interrogar a cada una de ellas. Pero siempre, antes o después, la personalidad que no estaba siendo interrogada conseguía, no sé cómo, salir a la luz, y participar de la conversación.

Por ello, me ha parecido, queridos colegas, que lo mejor era transcribir las grabaciones de una de mis sesiones con Mr. Alaguan, aquella en la que por fin sus dos personalidades afloraron y se enfrentaron abiertamente, para intentar hacerles partícipes del miedo, del horror que yo sentí.

Despacho de Herr Kompilehn: 30/06/2006

Herr Kompilehn: Relájese, Mr. Alaguan, no se asuste, esta inyección es un relajante muscular. Le ayudará a evitar los dolores que tuvo después de las últimas sesiones.

Bien, relájese, y deje que AJAX tome el control de su cuerpo, que se exprese con confianza. Déjele que hable de sus frustraciones, de sus miedos, de sus orgullos, con total libertad.

AJAX: Un momento, que estoy haciendo una petición nueva de datos sin recargar la página. Que eso se me da muy bien. Pero claro, ya estoy oyendo a Flash , protestando como siempre, que si es que dependo del objeto HTTPRequest, que si dependo de un lenguaje interpretado, que si no termino de ser cross-browser…. Qué pesado ¿Y él?, se habrá visto… con esa chulería, con esa soberbia por dibujar gráficos vectoriales, ¿quién se creerá que es?

Flash: ¡Callaaaaaaaaa! No me seas soberbio tú. Dependes para funcionar de un objeto que no se implementa igual en todos los navegadores, y de un framework en Javascript (como si eso fuera un lenguaje de programación) que deja mucho que desear, basado en una arquitectura más que discutible, y que parece pensado para que cualquier programador se vincule y dependa de él más que para utilizarlo.

AJAX: Ya está, ya salió. ¿Y tú? ¿Acaso no dependes de un runtime (perdona, no me mires así, por mucho que te empeñes en llamarlo máquina virtual no deja de ser un runtime), y además, propietario? Porque yo no obligo a ningún usuario a que se tenga que instalar nada, ni runtimes, ni máquinas virtuales, ni nada.

Flash: Sí claro, tú nunca obligas a nadie a nada, sólo es necesario que tengan activado el Javascript en el navegador, y que además el navegador no sea demasiado viejo. Por no hablar de los desarrolladores, que tienen que pasar por un infierno para probar sus aplicaciones, dependiendo de plugins del navegador o de sniffers de red para probar y resolver los errores de sus aplicaciones…

AJAX: ¡Calla! ¡Que me estás poniendo malo! No paras de quejarte, que si esto, que si lo otro, que si tienen que activar el Javascript… anda, y ¿qué pasa si alguien no se instala el Flash Player? ¿Y si tiene una versión antigua y no se ve tu aplicación?

Flash: Ya estamos otra vez con lo del player. ¿Porqué no dices de una vez que eso no es más de una disculpa para no reconocer que como el resultado que doy yo no lo da nadie?. ¿Quieres un trabajo fino? Dáselo a Flash, no al garrulo ese del Javascript

AJAX: Eso que acabas de decir sí que es una tontería.

Flash: Claro, pero no das argumentos para sustentar tus teorías. ¿No tendrá algo que ver el que yo ahora tenga un player nuevo, con un lenguaje nuevo, y que mis aplicaciones funcionen mucho más rápido que antes? ¿Te suena? ¿Has oído hablar de Flex o estás tan ocupado mirándote el ombligo que no te has enterado?

AJAX: ¿Flex?. Espera… ¿no es lo mismo que Generator, pero cinco años después?. Uy, no, no es lo mismo, que para desarrollar con Flex hay que seaber mucho de patrones J2EE…. ¡JA!

Flash: Ya, claro, lo que pasa es que a tí te molesta que se facilite el desarrollo de aplicaciones de cualquier forma. Si hay algo que no se hace con un editor de texto, ya no sirve para nada. Da igual que el desarrollo se pueda basar en un lenguaje orientado a objetos moderno y eficaz, que no necesita de trucos baratos como tu adorado prototipo, herencia de la que yo ya he salido.

AJAX: ¡Qué cara más dura! Ahora resulta que el mismo lenguaje que tú has estado utilizando durante años, lo que llamas con tanta pedantería ActionScript 1, como si ya lo hubieras olvidado, es lo peor que se ha inventado. Claro, con ponerle coletillas y número de versión al lenguaje ya lo arreglamos todo. Que si AS1, que si AS2, que si AS3… Muy modernos, sí, pero ¿por qué no hablas de la burrada de dinero que se necesita para empezar a desarrollar en Flash?… … y no te cuento ya si encima lo que vas a hacer lo vas a hacer con Flex… Porque en el mejor de los casos, hay que comprar un entorno de desarrollo, que por cierto, sigue siendo de lo más incomprensible y agresivo para los programadores que vengan de otros lenguajes. Mientras no te deshagas de la línea de tiempo no vas a conseguir que te consideren como un lenguaje normal, no como yo, que no necesito de paradigmas extraños; lo mío es código, y nada más, basta con tener un editor de texto, y se puede empezar a desarrollar.

Flash: Claro, ya has llegado a donde querías ¿no? Eso es lo que en realidad te molesta, que Flash haya sido durante mucho tiempo una herramienta para creativos, y que éstos la sigan utilizando. ¿Si hay línea de tiempo no vale como lenguaje de programación?

Herr Kompilehn: ¡Señores, por favor! ¡Compórtense! ¿Les parece a ustedes bien que se peleen de esa forma por algo tan banal?

AJAX: ¡Ha empezado él!

Flash: ¡Ha sido él, que se cree mejor que nadie!

Herr Kompilehn: ¡Silencio! ¡Ya está bien! ¿No han probado a trabajar en equipo, aprovechando cada uno lo mejor del otro? ¿No se dan cuenta que no son más que dos herramientas disponibles para la resolución de un mismo problema?

Efectivamente, Herr Kompilehn, como suele ocurrir con los grandes científicos de los Cárpatos, había dado en el clavo. La bondad de las soluciones viene por modas. Lo que hace cinco o seis años era considerado por la mayoría de los desarrolladores como un lenguaje de segunda categoría, de repente se ha convertido en la panacea, superando a otra herramienta también denostada por muchos por su pasado como herramienta para diseñadores y para realizar los banners más molestos del mundo.

Tal vez lo importante no sea saber qué solución es mejor, porque ninguna lo es, sino conocer bien las implicaciones, ventajas y desventajas de cada una de ellas, para que sea el desarrollador quien, utilizando su criterio, su conocimiento del problema a atacar y de las posibles soluciones para el mismo, utilice una u otra herramienta, o una combinación de ambas.

Fuente: César Tardáguila

Get Adobe Flash playerPlugin by wpburn.com wordpress themes