(Elektronische) Post von der EFF

Dear Tobias,

Thank you.

If you’re getting this email, we think that you participated in the Tor Challenge last year (details) and that you have maintained your relay at least 80% of the time in the last year.

Basically, we think you’re awesome.

Tor is one of the strongest tools for protecting privacy online. It’s used by millions of people worldwide to route around Internet censorship and browse the Web with anonymity. Whistleblowers, journalists, activists, and everyday people rely on Tor.

And Tor relies on you.

Tor exists because volunteers worldwide are contributing computing power to the network. You’re part of a community of people helping defend privacy online. I don’t think it’s an exaggeration to call Tor node operators heroes. Without you, there would be no Tor.

As a small token of our appreciation, we’d love to send you a limited-edition sticker. If you’d like to receive the sticker, just give us your mailing address on this form: […]

Please fill this out by August 20. Note that it may take several weeks for your prize to arrive.

We also believe that the bandwidth of your relay qualifies you for our special prize — a custom T-shirt. If you’d like to receive the t-shirt, please also include your shirt size.

The Tor Challenge was a joint campaign of EFF, the Free Software Foundation, the Freedom of the Press Foundation, and the Tor Project. This is the second edition of the Tor Challenge, and over 1,600 nodes participated.

If you aren’t already on the EFF email list, please consider joining. We’d love to stay in touch.

For a more private Web,

Rainey Reitman
EFF Activism Director
Support our work with a donation today.

Generating a list of fake e-mail-addresses using bash, tr, sed and paste in Linux

(„Eine Liste falscher E-Mail-Adressen mit Linux generieren“)


All you need is a list of names (I’m using „census-dist-female-first.txt“ for this example, simply find that file using your favorite search engine), and a single bash command line on Linux:

cat census-dist-female-first.txt | tr "[:upper:]" "[:lower:]" | cut --delimiter=" " -f 1 | tr "\n" "," | sed 's/\,/\@freiwuppertal\.de\,/g' | tr "," "\n" | sort > output.txt ; paste --delimiter=";" output.txt output.txt | sed 's/\;/\"\>/g' | tr "\n" "," | sed 's/\,/\<\/a\>\,\<a\ href\=\"mailto\:/g' | tr "," "\n" | sed '$d' | sed '1d' > final-output.txt

This command line gives you two files, „output.txt“ and „final-output.txt“. The first file contains a simple text list of e-mail-addresses separated by newlines; the second file contains the same addresses as a list of HTML mailto: links.

It is probably a good idea to remove existing addresses (and any addresses which might be needed one day) from this list. Also, consider creating a redirection from one of these addresses to your personal address to see if somebody actually uses them. 😉

The result will look like this:
https://freiwuppertal.de/plone/sonstiges/contact-emails

(UPDATE 2015-08-05: Yes, I am actually receiving some SPAM e-mails sent to addresses in this list. Apparently, some bots are more stupid than I thought.)


German version:

Alles, was man dafür braucht, ist eine Namensliste (hier: “census-dist-female-first.txt”, einfach bei einer beliebigen Internetsuchmaschine eingeben), und eine einzige Befehlszeile in bash unter Linux:

cat census-dist-female-first.txt | tr "[:upper:]" "[:lower:]" | cut --delimiter=" " -f 1 | tr "\n" "," | sed 's/\,/\@freiwuppertal\.de\,/g' | tr "," "\n" | sort > output.txt ; paste --delimiter=";" output.txt output.txt | sed 's/\;/\"\>/g' | tr "\n" "," | sed 's/\,/\<\/a\>\,\<a\ href\=\"mailto\:/g' | tr "," "\n" | sed '$d' | sed '1d' > final-output.txt

Diese Befehlszeile erstellt zwei Dateien, „output.txt“ und „final-output.txt“. Die erste Datei enthält eine einfache Textliste von E-Mail-Adressen, die durch Zeilenumbrüche voneinander getrennt sind. Die zweite Datei enthält die gleichen Adressen als eine Liste von HTML-mailto:-Links.

Es macht Sinn, vorhandene und eventuell in der Zukunft benötigte Adressen aus dieser Liste zu entfernen, und eine der Adressen als Weiterleitung auf die persönliche E-Mail-Adresse einzurichten… um zu sehen, ob jemand die Liste tatsächlich nutzt.

Das Ergebnis sieht dann so aus:
https://freiwuppertal.de/plone/sonstiges/contact-emails

(UPDATE 2015-08-05: Ja, ich erhalte tatsächlich einige SPAM-E-Mails, die an diese Adressen gesendet wurden. Manche Bots scheinen dümmer zu sein, als ich dachte.)

Drittanbieter für Umfragen

Ich kann es durchaus noch nachvollziehen, wenn irgendwelche kleineren Projekte, die ihre Hauptwebseiten auf Shared-Hosting-Angeboten speichern oder sogar auf Hoster wie WordPress bzw. Blogspot zurückgreifen müssen, Drittanbieter damit beauftragen, eine Umfrage anzubieten. Wenn aber selbst Avaaz mir einen Link zu „surveymonkey“ schickt, hört mein Verständnis langsam auf. 😉

An alle Besitzer eines php-fähigen Webservers: es geht auch anders!

Die aktuelle Umfrage des UnrealIRCd-Projektes ist ein gutes Beispiel dafür, dass LimeSurvey auch für große Projekte geeignet ist.

Mir fällt gerade auf, dass auf der Startseite noch der Link zu umfragen.freiwuppertal.de fehlt – wenn es mal wieder ein paar neue Subdomains gibt, aktualisiere ich die Linkliste.

MOTU – Master Of The Universe

Ich wusste bisher nicht, dass SoulOfTheInternet aus den Infinite Adventures (siehe auch die 404-Seite von freiwuppertal.de) zufällig auch eine Parodie der Ubuntu-MOTUs ist:

https://wiki.ubuntu.com/MOTU

Welcome to the Masters of the Universe!

Masters of the Universe (MOTUs) are the brave souls who keep the Universe and Multiverse components of Ubuntu in shape. They are community members who spend their time adding, maintaining, and supporting as much as possible the software found in Universe.

😀

Ein guter Grund gegen HTML-Mails?

Hier ist einer:

https://www.postbank.de/privatkunden/pk_aktuelle_sicherheitshinweise.html

Für den vollen Zugang zu Ihrem Konto, Sie müssen Ihre Daten wiederherstellen und bestätigen Sie Ihr Konto über diesen Link:

https://banking.postbank.de/rai/login

Und jetzt? Ein vollkommen normaler Link, oder?

Bei mir wird er allerdings so dargestellt:

https://banking.postbank.de/rai/login
<https://der.wahre.link.steht.hier/und/ist/klar/erkennbar>

Hinter dem Linktext, der bereits wie ein Linkziel aussieht, versteckt sich im HTML-Code der Mail ein Link zu der Phishingwebseite, die übrigens der wahren Loginseite täuschend ähnelt. Ironischerweise enthält die gefälschte Loginseite sogar die aktuelle Warnung zu Phishingmails.

Noch ein guter Grund ist übrigens die schreckliche Angewohnheit einiger Menschen, farbigen Text und im Extremfall sogar einen Seitenhintergrund mitzuschicken. Solchen Quatsch bekomme ich natürlich auch nicht zu sehen. 😉

DDoS abgewehrt… mit Varnish und nerviger Musik

Die Schachburg wurde in der Nacht zum 23. Juni zum Opfer eines DDoS-Angriffs, siehe hier. Als ich meine Hilfe anbot und als ersten Schritt die Sperrseite von DomainFactory durch diese Seite ersetzte, zog ich die Aufmerksamkeit des Angreifers auf mich. Mit dem übermütigen Ziel, mir zu beweisen, dass er nicht nur Shared-Hosting-Angebote, sondern auch einzeln genutzte Server lahmlegen könne, griff er daraufhin das Freiwuppertal-Forum an…

Lächerlich.

…scheiterte allerdings am Varnish-Cache, der den Apache-Server zwar durchaus an seine Leistungsgrenze brachte, aber irgendwelche Folgen oder Abstürze verhinderte. Statische Ressourcen, die den Großteil jeder Seite ausmachen, werden hier sowieso von nginx geliefert.

Ein Blick auf die Ausgabe von „varnishlog“ und „varnishtop“… die „Angriffe“ waren eigentlich recht simpel. Der Möchtegern-Botnetbesitzer hatte auf einer international besuchten und anscheinend recht beliebten Erotikwebseite 1-Pixel-iframes von Forenbeiträgen aus der Schachburg und dem Freiwuppertal-Forum eingebaut. Daher wiesen alle Anfragen denselben Referer auf – eben diese Seite. Eine Zeile VCL genügte, um das Problem loszuwerden.

Wieder ein Blick ins varnishlog: Noch immer kamen unglaublich viele Anfragen an, wurden aber direkt am Cache mit einer Fehlermeldung abgewiesen. Wie langweilig. Irgendwie wollte ich das Problem an der Quelle lösen, nicht mit simplen Fehlermeldungen. Der Angreifer sollte einen Anlass dazu bekommen, die iframes wieder auszubauen; der idiotisch ignorante Hoster, bei dem die Seite registriert ist, war nicht als Anlaufpunkt geeignet.

Also ging es darum, die Besucher zu verärgern, Kunden zu vergraulen. Wenn niemand mehr die Seite besucht, ist die Gefahr gebannt; wenn der Admin die iframes ausbaut, um das zu verhindern, ist für mich ebenfalls alles in Ordnung. Was wäre da besser geeignet, als nervige Musik abzuspielen? Sicherlich nicht das, was die Konsumenten in diesem Moment hören wollten.

Nach einer Weiterleitung aller ungewünschten Gäste auf eine Webseite voller Bilder (auch durch lange Ladezeiten wird man Besucher los), die noch dazu automatisch „Never Gonna Give You Up“ von Rick Astley abspielte, in älteren Browsern durch JavaScript-Tricks das Fenster auf dem Bildschirm herumspringen ließ und ein Schließen der Seite durch andauernde Dialogmeldungen mit dem Liedtext verhinderte, war ziemlich schnell Ruhe. 😉


Update/Anmerkung: Eine andere Methode, um solche Angriffe recht effizient zu stoppen, ist der „X-Frame-Options“-HTTP-Header. Das funktioniert allerdings nur, wenn die unfreiwilligen Angreifer einen aktuellen Browser installiert haben; in unserem Fall kamen auch einige Zugriffe von Smartphones und wahrscheinlich ein paar veralteten Browsern. Es sollte aber kein Problem sein, veraltete Browser am User-Agent zu erkennen und auszusortieren.

Das kann jetzt bitte nicht wahr sein.

<ToBeFree> no please
<ToBeFree> I just sent an abuse report
<ToBeFree> and got „postLocal User Inbox Full“
<ToBeFree> :s
<Sway> WAT
<Sway> O.o
<ToBeFree> come on, that’s so damn weird – what kind of ISP is that
<Sway> ToBeFree, You broke it.
-*- ToBeFree cries
<Sway> :<
<ToBeFree> Transmit Report:
<ToBeFree>  To: access_sec@kornet.net, 2013/05/26 19:47:42, 402, Local User Inbox Full (access_sec@kornet.net) 6,30000,29999
<ToBeFree> Well, they obviously get a lot of abuse reports >.>
<Sway> :O

Firefox: Nun doch mit WebP

Schon im September 2010 wurde im Mozilla-Bugtracker vorgeschlagen, das Bildformat WebP in Firefox zu implementieren. 130 Leute ließen sich zur CC-Liste des Bugs hinzufügen, stimmten für den Bug ab und zeigten durch Kommentare (am Ende waren es über 150) ihre Zustimmung. Auch ich kann mir, wie bereits in einem früheren Eintrag geschrieben, gut vorstellen, dass WebP der zukünftige Ersatz für JPEG und PNG ist.

Die Reaktionen fielen unerwartet negativ aus, die Entwickler sträubten sich gegen die Implementierung, bezeichneten WebP als unfertiges Format, übertrieben meiner Meinung nach deutlich, verfassten teilweise ganze Blog-Einträge gegen WebP und markierten den Bug als „WONTFIX“, nur um gestern, am 30.03.2013, bekanntzugeben, dass WebP eben doch implementiert wird.

Das hätte man früher haben können. Chrome und Opera unterstützen WebP schon lange, weil dort die Vorteile des Bildformats erkannt wurden. Mozilla jedoch, eine Organisation, die ich bis jetzt eigentlich für innovativ und modern hielt, weigerte sich fast drei Jahre lang vehement gegen die Unterstützung einer neuen Technologie. Das, was gestern bekannt gegeben wurde, kann höchstens als lächerlicher Nachzug angesehen werden, als Einsicht, dass man jahrelang Argumente gegen eine echte Verbesserung gesammelt hat, und vielleicht auch, dass man als Browseranbieter ohne diese Verbesserung keine Konkurrenz mehr darstellt. Die Entscheidung, sich gegen die Benutzer und gegen die Innovation zu stellen, führte letztendlich zu hässlichen Workarounds, die mich persönlich an Dinge erinnerten, die man sonst nur für die Nutzer des schrecklichen und oft auch noch veralteten Internet Explorers einbauen muss.


„Disappointing“ ist wohl die beste Zusammenfassung.

Dial-Up is still being actively used to connect to computers

Surprise!


<UserName> What program should I use for a modem dial-in? I have been using mgetty and pppd. Is there something newer/better. that will have the same functionality?
<ToBeFree> UserName: Modem dial-in still exists? 😮
<ToBeFree> Is there something you would like to do which mgetty and pppd can’t?
<UserName> Well I am using mgetty for when the user wants to get a console connection to manage the remote machine. and I use mgetty and ppp when the customer wants to use a network connection to the remote machine
<ToBeFree> hmm,
<Stary2001> :p
<ToBeFree> I never used dial-in with Linux; when I used that years ago, it was still on Windows using a program that the ISP shipped with a CD
<UserName> I can get them to connect but after disconnecting from ppp the kernel gets stuck somewhere and on some machines will cause the watchdogs to reset the machine. Other machines It just will not let a re-connection and some unix sockets stop working as well.
<ToBeFree> but I’ll try to find out how to do it
<UserName> All instructions I find on Google say to use mgetty and ppp or some other more inferior/older version of a getty.
<ToBeFree> you try to connect to the internet using a dial-up connection?
-*- ToBeFree has no idea, as you see
<UserName> No other way around. I am trying to recieve a dialin connection over a modem
<UserName> 🙂 That is fine
<ToBeFree> aah ok 😀
<UserName> I don’t think there are enough people using modems anymore
<ToBeFree> well, I wonder why one doesn’t use ssh, maybe over the LAN, instead, but this article might be useful:
<ToBeFree> https://www.howtoforge.com/linux_dialin_server
<UserName> So there is probably some error that got introduced in somewhere and is causing them to not work properly anymore
<ToBeFree> because, just saying, you could use ssh to forward your traffic via a local machine to the internet
<UserName> Well the situation is that this machine is so far out in the middle of nowhere that the only way to get a remote connection is over the phone lines that are there.
<ToBeFree> oh, ok
<UserName> Ya that link says the same thing I am trying to set up
<UserName> use mgetty and ppp
<UserName> thanks though for thinking about it for a bit 🙂
<ToBeFree> heh, you’re welcome^^
<ToBeFree> try ##linux on Freenode
<UserName> I have been chatting there as well and noone seems to have any better ideas either
-*- ToBeFree looks for that
<ToBeFree> lol, first response
<ToBeFree> [18:03:46] <Dominian> people still use modem dial in?
<Stary2001> LOL
<ToBeFree> the main problem is that nobody seems to 1) know and 2) care about dial-in nowadays
<ToBeFree> may I ask where the middle of nowhere is? 🙂
<UserName> I am not certain about which of our customers are still using the dial-in. Most of our customers are using other means to communicate with their substations way out in the country.
<UserName> I know that one of our customers even uses some old slow radio to just get a serial connection to one of our machines
<ToBeFree> O.o
<ToBeFree> and I’m complaining about my 1Mbit DSL connection.

Neulich in #linux…

<FireRogue> well, sorry i was gone, im now back
<FireRogue> I’m logged in to fedora, and trying to mount an NTFS partition with a bunch of flags
<FireRogue> so i follow a tutorial i found online, and add the proper line to my /etc/fstab file (/dev/sda3 /run/media/lior/Win7 ntfs-3g defaults,permissions,users,exec,rw,auto 0 0)
<FireRogue> but, when i use mount to check how its mounted it lists these flags: rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096
<FireRogue> why the mismatch, and how do i fix it?
<-> sav|away is now known as sav
<sav> take your computer
<sav> and throw it into your nearest washing machine
<sav> run for 2 loads

😀

Downrating TOR exits at WOT won’t help anyone

Steps to reproduce:

  1. connect to TOR
  2. open https://check.torproject.org/, copy the IP address
  3. open the IP address in your browser (if you’re afraid, use NoScript, but you shouldn’t have to)
  4. get a warning from WOT.

And that’s just because some people think they could help anybody by rating those IPs down.

There is no WOT-based blacklist which any serious admin uses to block incoming connections based on IPs. All they are doing is showing the world that they are not able to understand what WOT is for and what it isn’t. They also prove that they don’t know how TOR works.

If you read this text and think it applies to you, please read what TOR is and consider changing your rating.

iptables mit LibreOffice Calc

Klingt komisch, funktioniert aber super! Die automatische Fortführung von Zahlenreihen funktioniert auch bei IP-Adressen, wenn man einige Dinge beachtet.

iptables mit LibreOffice

Das ist z.B. sehr leicht, da die letzte Nummer verändert wird – wenn man eine mittlere Nummer hochzählen will, muss man ein bisschen tricksen:

iptables mit LibreOffice

Wenn man die Regeln erstellt hat, kann man sie nun in einen Texteditor wie Kate kopieren:

iptables mit LibreOffice

Dann entfernt man mit der Ersetzen-Funktion die mehrfach vorhandenen Leerzeichen (doppeltes Leerzeichen durch einfaches Leerzeichen ersetzen, dann einige Male auf „alles Ersetzen“ klicken):

iptables mit LibreOffice

…und schließlich ersetzt man “ .“ durch „.“ (Leerzeichen-Punkt durch Punkt)…

iptables mit LibreOffice

…, sodass am Ende ein fertiges Skript entstanden ist!

iptables mit LibreOffice

iptables mit LibreOffice

Wenn jemand eine schnellere Alternative kennt, kann er sie mir per Mail (tobias@freiwuppertal.de) empfehlen, aber so geht es auf jeden Fall deutlich schneller als ein manuelles Eintippen der IP-Adressen. Außerdem muss man für diese Methode weder komplizierte Skripte noch irgendwelche Tools benutzen, die man sich erst herunterladen müsste. Ich gehe davon aus, dass jeder Serveradmin irgendwo auf seinem Desktop-PC ein Programm wie LibreOffice Calc besitzt. 😉

Das funktioniert natürlich auch mit ipset-Regeln, wie hier beschrieben: https://daemonkeeper.net/781/mass-blocking-ip-addresses-with-ipset/

freiwuppertal.de nutzt WebP

…zumindest an Stellen, an denen es keine Probleme für Firefox-Nutzer verursacht. Mozilla hat sich leider bis jetzt geweigert, WebP zu implementieren (siehe hier), aber das wird sich wohl ändern, wenn WebP weiter ausgereift ist.

Mehr Informationen über WebP gibt es hier:
https://de.wikipedia.org/wiki/WebP
https://en.wikipedia.org/wiki/WebP
https://developers.google.com/speed/webp/

Seit dem Erscheinen dieses Eintrags wurde nur das Freiwuppertal-Logo auf der Startseite in WebP umgewandelt, außerdem enthält die Signatur auf freiwuppertal.de/plone ein kleines WebP-Icon, das man nur sehen kann, wenn der Browser das Bildformat unterstützt. Auf freiwuppertal.de/musik gibt es bis jetzt drei Logos, die nur als WebP erhältlich sind.

Wenn du das folgende Bild sehen kannst, unterstützt dein Browser WebP: (Wenn du stattdessen diesen Text siehst, nicht. Versuch es mal mit Chromium/Chrome!)

Die Behauptung mancher Kritiker, WebP komprimiere schlechter als seine Konkurrenz, kann ich übrigens nicht bestätigen – ich sehe vielmehr bei den (verlustlos!) umgewandelten PNG-Dateien einen unglaublichen Speicherplatzvorteil:

https://freiwuppertal.de/freiwuppertal-logo.png: 90KB
https://freiwuppertal.de/freiwuppertal-logo.webp: 47KB

😀

How to fool and ban attackers using a fake sshd at port 22 (English)

(The copy at freiwuppertal.de/plone/sonstiges/fool might be easier to read because of the simple design of the main page)


Imagine the following realistic scenario: You are the administrator of a linux server and you are intelligent enough not to run your real OpenSSHd at Port 22. However, you wonder what to do with that free port. You already thought about using it for a SSH honeypot like Kojoney or Kippo, but you are not the kind of person who would actually let an attacker in to see what he does. You just want to ban anyone who tries to access port 22, including any portscanner.

Guess what, that’s actually really easy!
.
.
.


Warning: It is possible that you lock yourself out of your system because you ban your own IP. If this happens, you need physical console access or another way to run a script that unbans you again!


Another Warning: The automatic ban will also apply to any other running sshd, including your real one. If you want to change this behavior, change the „SyslogFacility“ in your real sshd’s config to „DAEMON“ instead of „AUTH“ or decrease the LogLevel so that it does not show failed logins anymore.


Remember that you have to restart any running sshd after you changed the configuration or even the banner!


.
.
.
The first thing you need is a sshd at port 22. This sshd should not have any valid user/password configuration to make sure that no cracker is ever able to get in. The best tool for this task is (yes!) OpenSSHd. You can simply run a second SSHd by specifying a different configuration file.

To get a working config file, copy the original one…

cp /etc/ssh/sshd_config ~/trap-sshd.conf

…and edit it, using any command line editor of your choice. I prefer nano:

nano ~/trap-sshd.conf

The following options are important, change them if needed:

Port 22
SyslogFacility AUTH
LogLevel VERBOSE
PermitRootLogin no
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreUserKnownHosts yes
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding no
Banner /home/yourhome/trap-sshd-banner
UsePAM yes
AllowUsers nobody

After you saved your configuration (using nano, Ctrl+X, y and Return), you might want to create a notice that is shown before the user is finally banned. You can use something like this:

You have been banned because you tried to get SSH access.
1. forget it.
2. to get unbanned, contact myemail@example.org
Have a nice day.

Or like this:

Q: What do you have when you have a cracker buried up to his neck in sand?
A: Not enough sand.

Another idea is to use any funny output of /usr/games/fortune if you have it installed. Save the message of your choice in the text-file /home/yourhome/trap-sshd-banner and it should work.


Now we have a working fake sshd that will run at port 22. You can start it whenever you want, using the start command I mentioned at the beginning. Create a script to run it manually or create an @reboot cronjob to run it when the server starts.

This is the command to run your fake sshd:

sudo /usr/sbin/sshd -f /home/yourhome/trap-sshd.conf


We’re not done yet.

To ban everyone who tries to access the sshd, we will use Fail2Ban. If you installed it using apt-get, you should be able to find the configuration files at /etc/fail2ban – cd to this directory and continue:

Edit the „jail.local“ file, NOT the .conf file. If you edit the .conf file, your changes will be overwritten during the next upgrade.

You have to set all lines that are „true“ like this:

[ssh]
enabled = true

to „false“. We do not want to use any of the default configurations.

When you did that, delete the [ssh] and the [ssh-ddos] part and replace them with the following:

[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
banaction = iptables-trap
bantime = 86400
maxretry = 1

[ssh-ddos]
enabled = true
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
banaction = iptables-trap
bantime = 86400
maxretry = 1

After you did that, save the file and close the editor. If you know how Fail2Ban works, you might wonder what „iptables-trap“ is. It is an action that does not exist yet, so we will create it:

cd action.d ; ls

We will simply copy the original „iptables“ action and modify it to fit our needs:

sudo cp ./iptables.conf ./iptables-trap.conf

Open iptables-trap.conf with your text editor. Look for the two lines containing the following string:

--dport <port>

and delete that string, ONLY THAT PART, not the whole lines. They should look like this now:

iptables -I <chain> -p <protocol> -j fail2ban-<name>actionstop = iptables -D <chain> -p <protocol> -j fail2ban-<name>

Save the file, close the editor. Now you need to create a script that you can run when you banned yourself. Create the file „/help-fail2ban.sh“ using your text editor (you need to use sudo) and fill it with the following code:

#!/bin/bash
echo rotating logfiles,
logrotate -f /etc/logrotate.conf
echo clearing and restoring iptables,
/restore-iptables.sh
echo and restarting fail2ban.
/etc/init.d/fail2ban restart
echo done.

Save it, close it.

Now you should create/edit the file „/restore-iptables.sh“. Fill it with something like this:

#!/bin/bash
iptables -F

Add your „permanent“ iptables rules below the „iptables -F“, if you have some. All others will be deleted when you run the script.

Remember to run the following command from the console if you lock yourself out:

sudo bash /help-fail2ban.sh

Everything should work now. Any failed ssh connection attempt leads to a 24-hour ban of the IP and any portscan that hits port 22 will be useless.

To see what Fail2Ban does, you can always check the /var/log/fail2ban.log – you might want to add some permanent bans for some very annoying IPs.


EDIT: To allow portscans and only ban people who really try „ssh example.com“, simply change the „ssh-ddos“ option in jail.local to „false“.

To allow SSH attempts (just logging them) but to ban someone who does a „nmap -sS -A example.com“, do the same with „ssh“, but keep „ssh-ddos“ enabled.