Things I learned today

logcheck rules for dovecot

As usual the default logcheck rules are not sufficient. These are the rules I added to my ignore.d.server/dovecot file:

^\w{3} [ :[:digit:]]{11} [.[:alnum:]-]+ dovecot: lmtp([[:digit:]]{5}): (Connect from local|Disconnect from local: Successful quit)
^\w{3} [ :[:digit:]]{11} [.[:alnum:]-]+ (dovecot: )?(deliver|lmtp)([-.@[:alnum:]]+): sieve: msgid=>?( (((added by )?[^[:space:]]+|sfid-[[:xdigit:]]+))?)?[[:space:]]: (stored mail into mailbox '.'|marked message to be dis carded if not explicitly delivered (discard action)|(forwarded to|sent vacation response to|discarding vacation response for message implicitly delivered to|not sending vacation response to system address|discarding vacation respon se to mailinglist recipient|discarded vacation reply to|discarding vacation response to (auto-submitted|precedence=(bulk|Bulk|list)) message from|discarded duplicate (vacation response|forward) to) <[^[:space:]]>)$

Überschreiben des default route parameters in Rails

Bei Standard RESTful Routen in Rails, wird der :id parameter verwendet. Man kann ihn überschreiben in der routes.rb mit

resources :articles, param: :datum

.
Dummerweise wirkt sich dies nicht auf link_to und form_for helper aus, so dass weiterhin Links mit id erzeugt werden. Um dies zu beheben, muss man im Model die to_param Funktion überschreiben:

class Article < ActiveRecord::Base
  def to_param
    datum
  end
end

rsync mit ssh über einen nicht-standard Port

Rsync ist ein praktisches Tool zum Synchronisieren von zwei Linux-Rechnern. Tut man dies nicht im eigenen Netz, sollte man den Traffic durch ssh schicken. Folgenden Befehl kann man dazu nutzen, wenn bei einem ssh nicht auf dem Standardport läuft:

rsync -avzhe "ssh -p 7777" USER@DEIN.HOST:/QUELLVERZ ZIELVERZ

Alles großgeschiebene und den Port natürlich an die eigene Umgebung anpassen und los geht’s =)

Tripwire Reports *.twr öffnen und lesen

Tripwire ist ein Intrusion Detection System, welches die Dateistruktur beobachtet und Veränderungen meldet. In den meisten Distributionen erstellt es seinen Report in dem Verzeichnis:

 /var/lib/tripwire/report/

Die Reports sind allerdings in einem Binärformat. Um sie zu lesen braucht man folgenden Befehl:

/usr/sbin/twprint -m r --twrfile /var/lib/tripwire/report/<name>.twr

Da die Reports sehr lang werden können, am besten in ein Programm wie less pipen oder die Ausgabe in eine Datei umlenken.

/usr/sbin/twprint -m r --twrfile /var/lib/tripwire/report/<name>.twr | less

oder

/usr/sbin/twprint -m r --twrfile /var/lib/tripwire/report/<name>.twr > tw_report.txt

How to unmount an encfs directory on linux?

Just because I always forget how to do it!

Mount is easy:

encfs SOURCE_DIR TARGET_DIR

But because encfs is using the FUSE kernel module for creating the mount point for the encrypted directory you have to use:

fusermount -u TARGET_DIR

to unmount it again.

Linux logic at its best!

Android Game: Age of Empire – Strategy Guide and Tutorial

Age of Empire is a real time strategy game for Android devices. You can download it at the Google Play Store for free. Age of Empire is a massive multiplayer online game (MMO), which means you play with a lot of other humans on one of the many servers.

Invitation Code for new comers

First of all, newbies can use an invitation code, when they first install the game. The invitee gets 5 free gold, which is one of the currencies in the game. Gold is the rare currency which you usually get, by buying it with real money. 5 more Gold gives you a really nice head start.

If you are new to this game and want to try out the game, please use this invitation code: 5299869696 for free gold!

How to get started – The tutorial

Age of Empire has a really nice tutorial, which gets you started pretty good, if you follow the instructions. Pretty early in this tutorial you are prompted to spend 1 gold, to speed up the production of some troops. Don’t do it! It is not necessary to continue the tutorial and an utter waste of precious gold.

If you follow the tutorial, you will build some resource buildings, a warehouse, city hall and barracks, as well as some troops. You should do all that. In the beginning all building times are negligible and you will always have some stuff to do. After a while the building times begin to increase. That’s the time where you probably want to use your troops. You should think carefully before attacking a wild, because your n00b protection will stop the first time you attack something.

Resources

The following information might vary from server to server.

There are 4 kinds of resources: wood, stones, iron and food. You need them in different amounts for constructing buildings and to train troops.

  1. Wood
  2. Most of the time you will have more than enough wood. This is the cheapest and most seldom used resource. Don’t capture forests!

  3. Stones
  4. You need stones to train catapults and to upgrade you city hall. Apart from that, the use of stones is negligible.

  5. Iron
  6. Iron is important for building troops. You need a lot of it. Go and capture some high level wilds!

  7. Food
  8. Food is the only resource which gets used up without building something. Your troops eat up the food you produce. Therefore your actual food production is: amount of produced food – amount of troops = food surplus.
    Food is also important for building troops and upgrading your barracks. You will need some good wilds to cover your expanses here as well.
    In the late game however, it might be preferable to not produce food at all and buy all the food you need, because your troops eat up too much.

Important: Never hoard resources. Neither in your warehouse nor in your inventory. There are two reasons for that.

  • First, resources in your warehouse can be stolen. Be sure, to empty your warehouse each time you’ll be offline for a longer period of time.
  • Second, resources can and should be used to level up faster. The earlier you spend resources, the faster you level. It does not matter on what you spend the resources. It depends on what you need.

Just remember: stocked resources are wasted resources! You should however have a emergency stock of resources in your inventory. How big it is, is up to you. Be self-critical and ask yourself often, how big your emergency stock has to be. Use up everything else.

Troops

There are four kinds of troops. Each troop is strongest against one other type of troops.

  1. Infantry
  2. Infantry is strong against archers. They are the strongest defense unit.

  3. Cavalry
  4. Cavalry is strong against catapults.

  5. Archers
  6. Archers are strong against cavalry.

  7. Catapults
  8. Catapults are strong against infantry. They are the strongest attack unit.

This suggests, that you should build every kind of troop to adjust to the enemy you are facing. However the advantage over the antipodal troop type is so little, that it is negligible. Therefore I would like to compare the troops with a costs / attributes measure. In this calculation attribute are the values attack, defense and hit points summed up.

  • Infantry: 600 costs / 50 attributes = 12
  • One attribute point costs 12 resources

  • Cavalry: 567 costs / 42 attributes = 18
  • One attribute point costs 18 resources

  • Archers: 293 costs / 33 attributes = 16
  • One attribute point costs 16 resources

  • Catapults: 292 costs / 43 attributes = 19
  • One attribute point costs 19 resources

This shows that infantry has the best cost-benefit ratio, followed by archers. I would like to make another calculation however, because not all the resources are worth the same. In this second calculation I completely ignore the wood and stone costs, (because you usually have more than enough) and consider the ‘precious’ iron and food resources only.

  • Infantry: 390 costs / 50 attributes = 7,8
  • Cavalry: 757 costs / 42 attributes = 13,5
  • Archers: 534 costs / 33 attributes = 8,8
  • Catapults: 834 costs / 43 attributes = 6,7

Personally, I prefer the second calculation and build infantry and catapults only. I’ve seen people fight with catapults only as well. What kind of troops you build is up to you.

I discourage the use of cavalry, because they are too expensive and I discourage the use of archers, because they are too weak.

Battle formations

When you attack an unoccupied wild or other players there are several things to consider.

The easiest way to get wilds, is to take them from other players. For that, one hero with 6 troops of any kind is sufficient. But take into account, that this way, you will get attention of other players and probably get retaliation attacks. You should however attack 2 wilds from other players each day, for the daily quest “The victor is king” which gives you 200 free fame each day.

To understand the basics of troop formations, you should know the concept of decoy troops. Decoys are heroes with just one troop on it. When decoys get hit, you will only lose the one troop, no matter how big the attacking enemy stack is. Decoys are a perfect way to reduce you losses and to train your heroes (see The tower). Decoy troops should be archers, because they are the cheapest troops.

There are two good formations for occupying wilds. Wilds are held by NPC (non player character) troops. The higher the level of the wild, the more troops are stationed there.
This is how your formation should look like.

– N –
WME
– S –
(north, west, middle, east, south)

Requirement: Formations only work (best) if your strong troop, is strong enough to kill an enemy stack with one single hit.

Formation A
This formation is recommended for the lower levels of the tower.

N a decoy troop
M a strong troop (ie catapults)
E a strong troop (ie infantry)
S a decoy troop

With this formation you will only get casualties, when the enemy has four troops. The only dangerous enemy formation is a four stack formation with a really strong south troop, because that stack will hit you once in the second round of battle.
No other formation will be able to deal significant damage to you (providing you are able to one-hit the enemy stacks).

  • Pros:
    • Good to level a weaker hero, because he can stay protected behind the stronger one.
    • In the tower this formation won’t change after a refill! This is a big time-saver!
  • Cons:
    • Heavy losses in tower, when the enemy has only one stack which is too strong to one-hit. Therefore this formation is only useful in the lower levels.

Formation B
This formation is recommended for the higher levels of the tower.

N a strong troop
W and M a decoy troop
S a strong troop

In most cases this formation is as good as formation A. In some cases even better.

With this formation you will only get casualties, when the enemy has four troops. The only dangerous enemy formation is a four stack formation with a really strong middle troop, because that stack will hit you once in the second round of battle.
No other formation will be able to deal significant damage to you (providing you are able to one-hit the enemy stacks).

  • Pros:
    • Minimum casualties formation
    • You can go to higher levels in the tower, because you get four free attacks on a single-stack enemy.
  • Cons:
    • In the tower this formation has to be reassigned each refill. A huge time-killer!
    • Both of you strong stacks are on the front. If you miscalculte you will get more casualties.

Important: The strong stacks must be able to destroy any enemy stack with one hit.

With these formations your losses will be reduced to a minimum, because your strong troops will get hit only once by a full enemy stack.
These formations work in the tower as well and can be used against players. Fighting players however is a more complicated topic, where one should adapt to the enemies tactics.

Getting prestige

Prestige is extremely important. The more prestige you have, the higher your player level will be. Your level determines how many wilds and stronghold you can occupy. Therefore getting prestige is your main objective. There are several ways to get prestige:

  • The victor is king

This is a daily quest, which gives you 200 prestige. You should do it every day. To complete the quest you just have to take two wilds from enemy players.

  • Arena

Each day you can fight in the Arena for 15 times. Each victory gives you 10 prestige. This way you can get 150 prestige (and 3000 resources of each kind) a day. Do it daily.

  • Dragon

Once a day you can attack the dragon. Killing the dragon is not the objective, unless you have several tens of thousands troops to spare. But you get 20 prestige and some gold and resources, if you attack the dragon even with one troop only. Do it daily!

  • Fighting players

If you find enemy troops you can beat, destroy them. Each killed unit gives you 1 prestige. This is by far the best way to get prestige fast.

  • Buildings

You get prestige for every upgrade on any of your buildings. The higher the level, the more prestige you get.

The tower

Once a day you can enter the tower for free. In the tower you fight against NPC troops. You start at level one and fight your way up the tower. The higher you get, the bigger the enemy stacks will be. The tower is the best way to level up your heroes fast.

In the tower it is very important to use decoys. One the one hand, it reduces your losses enormously. And on the other hand, the two remaining heroes level up twice the speed, because they kill all the enemy troops on their own. The only drawback of using decoys in tower is, that you can’t use the fill-up button anymore. Each time you lose an archer, you have to close the tower and refill your troops with the hero menu.

Important: To close the tower, use the ‘X’ button in the top right corner. Pressing the ‘exit’ button will forfeit your daily free tower run and you have to start again at level 1 on the next day.

You should fight in the tower until your heroes are unable to one-hit an enemy stack. When you are unable to one hit, consider carefully if you want to go on. From that point on, you will get casualties. After you quitted the tower, the next day start from level 1 again.

For the tower I recommend a combination of formation A (see Attacking formations) and formation B. Formation A is good for the lower levels and to train one weaker hero. Formation B is good for the higher levels of the tower.

Do the tower daily!

Daily tasks

  • Tower
  • Arena
  • All daily quests (except trade master)
  • Dragon
  • Treasure hunt

Thanks

Thanks for reading my strategy guide!

Feel free to comment on this post, correct me, thank me or point out some missing important information. If you liked this strategy guide and you are new to this game, please use my invitation code the first time you start age of empire: 5299869696. You will get 5 free gold as a reward!

Übertragungsrate beschränken in ProFTP 1.3

Einer der gängisten FTP Programme unter Linux ist ProFTP. In manchen Szenarien möchte man eventuell die Übertragungsrate des FTP-Servers einschränken, damit er nicht die volle Bandbreite belegt. Die Dokumentation von ProFTP fand ich an dieser Stelle von nicht hilfreich bis zu irreführend, da hier nur Methoden für alte Versionen beschrieben wurden, bei mir jedoch ProFTP 1.3 läuft. Erst nach einigem Googlen bin ich auf die Lösung gestoßen.

<Anonymous ~ftp>
   TransferRate         RETR    128
   TransferRate         STOR    128
[...]
</Anonymous>

Mit diesen beiden Zeilen lassen sich die Schreib- und Lesegeschwindigkeiten begrenzen – in diesem Beispiel auf 128 KB/s.

SSH absichern auf Linux, Debian/Lenny

Heute mussten einige Veränderungen an meinem SSH-Daemon vorgenommen werden. Diese Gelegenheit habe ich gleich genutzt, um diverse Sicherheitsverbesserungen einzuführen.

1. Port ändern

Streng betrachtet verbessert dieser Schritt die Sicherheit des SSH-Daemons nicht. Andererseits werden durch diese Maßnahme 98% aller automatisierten script kiddy Attacken abgewehrt. SSH läuft standardmäßig auf Port 22.
In /etc/ssh/sshd_config ändert man die Zeile

Port 22

in einen beliebig anderen Port über 1024 und schon laufen die meisten Brute-Force Attacken in Leere. (Nicht vergessen die Firewall entsprechend anzupassen)

2. Root Zugriff verbieten

Durch die Zeile

PermitRootLogin no

in der /etc/ssh/sshd_config verhindert man, dass sich der Root-User per SSH anmelden kann. Es können sich also nur noch normale User anmelden, wodurch eine weitere Barriere entsteht, beziehungsweise ein weiteres Passwort nötig ist, um Root-Zugang zu erhalten.

3. Verbindungsaufbau beschränken per SSH

Ebensfalls in der /etc/ssh/sshd_config ist die Direktive MaxStartups zu finden. Der Standardwert liegt bei 10. Das heißt es können zehn (noch unauthentifizierte) Verbindungen zum SSH-Server aufgebaut werden. Alle weiteren Verbindungen werden von SSH automatisch abgelehnt. Abhängig von der Anzahl der User, die sich auf dem System regelmäßig anmelden, kann man diese Direktive nun anpassen.

MaxStartups 3:30:10

Die drei durch Doppelpunkt getrennten Zahlen stehen für start:rate:full.
Die erste Zahl bestimmt, ab wann die Zugriffe beschränkt werden sollen. Die zweite Zahl, wie viel Prozent der Verbindungen abgelehnt werden sollen und die dritte Zahl bestimmt, ab wann 100% der Verbindungen abgelehnt werden. Die obenstehende Zeile bewirkt also, dass ab drei noch unauthentifizierten Verbindungen 30% weiterer Verbindungen zufällig abgelehnt werden. Die Rate steigt linear und sobald zehn unauthentifizierte Verbindungen bestehen, werden alle weiteren Verbindungen automatisch abgelehnt.
Gleichzeitig sollte man die

LoginGraceTime 120

reduzieren. Dies ist die Zeit in Sekunden, die ein User hat um sich erfolgreich zu authentifizieren, also sein Passwort einzugeben. 120 Sekunden ist viel zu großzügig bemessen. Ein Wert von 30 sollte hier mehr als ausreichen.

Ich habe mich allerdings gegen diese Methode Verbindungen zu beschränken entschieden. Denn wenn ein Angreifer entscheidet den SSH-Port zu hammern, können sich auch wohlgesonnene Benutzer nicht mehr am System anmelden. Stattdessen habe ich mich für die nun folgende Lösung entschieden.

4. Verbindungsaufbau beschränken per iptables

iptables kann dazu benutzt werden Verbindungsversuche die von einer bestimmten IP kommen zu zählen und nach Erreichen einer bestimmten Anzahl weitere Verbindungsversuche zu verbieten. Dies geht mit Hilfe des Moduls recent sogar recht einfach.

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP

1. Zeile: -m state –state NEW bewirkt, dass nur neue Verbindungen betrachtet werden. -m recent –set bewirkt, dass die IP des Rechners der die Verbindung aufbauen wollte in der recent list gespeichert wird. Diese wird dann in der zweiten Zeile verwendet.

2. Zeile: –update überprüft, ob die IP des Zugriffs bereits in der recent list steht. –seconds 60 betrachtet nur Verbindungen innerhalb der letzten Sekunden. –hitcount 3 trifft zu, wenn drei oder mehr Verbindungsversuche gemacht wurden.
Zusammengenommen wird diese Regel also ausgeführt, wenn:
Die IP des verbindungsaufbauenden Rechners bereits in der recent list steht und
der letzte Verbindungsaufbau von dieser IP nicht länger als 60 Sekunden her ist und
drei oder mehr Verbindungsversuche geschehen sind.

Trifft die Regel zu wird das Paket gedropt.

5. Sichere Passwörter

Dies ist eigentlich so selbstverständlich, dass ich es fast nicht erwähnen möchte. Ein sicheres Passwort sollte folgenden Bedingungen entsprechen.

  • Acht oder mehr Zeichen
  • Groß- und Kleinbuchstaben enthalten
  • Zahlen enthalten
  • Sonderzeichen (wie &,”,€,µ,?,µ) enthalten

Ob die gewählten Passwörter gut genug sind, kann mit Programmen wie john the ripper getestet werden.

6. Weitere Absicherungen

Je nach Anwendungsfall gibt es noch weitere Möglichkeiten, die ich zumindest erwähnen möchte:

  • Zugriff auf bestimmte IP beschränken (per sshd und/oder iptables)
  • Zugriff auf bestimmte User oder Usergruppen beschränken
  • Passwortauthentifizierung deaktivieren – Login per public/private key
  • IP blacklisten über denyhosts

Quellen

Using iptables to rate-limit incoming connections
Security Paranoia – restricting ssh access
Securing SSH
HOWTO: Five steps to a more secure SSH

In Windows 7 auf Dokumente und Einstellungen oder auch Documents and Settings zugreifen

Eine weitere Neuerung die bei Windows 7 Nutzern zu Verwirrung führen kann, ist die Meldung Zugriff verweigert, wenn man versucht auf Dokumente und Einstellungen zuzugreifen. Dieses Problem trifft natürlich nur auf, wenn man in den Ordneroptionen zuvor die Option verstecke Dateien anzuzeigen aktiviert hat.

Als erfahrener Windows-Nutzer versucht man normalerweise zuerst, die Rechte des Ordners anzupassen, so dass man Zugriff erhält. Unter Windows 7 geht dass aber nicht. Das liegt daran, dass diese Ordner nur Links sind. Es sind aber keine herkömmlichen Verknüpfungen, wie man es von alten Windows-Versionen kennt, sondern sogenannte “junction points”. Das sind NTFS-Verweise, die für Rückwärtskompatibilität für alte Programme sorgen soll. Ein User kann und brauch auf diese Verknüpfungen gar nicht zugreifen.

Diese windowsinternen Verweise zeigen natürlich trotzdem in einen entsprechenden Ordner. Man muss also lediglich wissen wo die eigentlichen Ordner liegen und kann die junction points getrost ignorieren.

Ach und bevor ichs vergesse: C:\Documents and Settings zeigt ganz einfach auf C:\Users. Und dort findet man auch seine restlichen Dateien. Aber Vorsicht: Unter C:\Users\[Username] sind wieder einige junction points zu finden. Hier ein paar Beispiele:

  • c:\Users\[Username]\Application Data -> c:\Users\[Username]\AppData\Roaming\
  • c:\Users\[Username]\Local Settings -> c:\Users\[Username]\AppData\Local\
  • c:\Users\[Username]\Start Menu -> c:\Users\[Username]\AppData\Roaming\Microsoft\Windows\Start Menu\

Und um das Verwirrspiel von Windows 7 komplett zu machen, findet man dort noch folgenden Verweis:

c:\Users\[Username]\My Documents\ -> c:\Users\[Username]\Documents\

In dem Documents Ordner findet man nun drei weitere Verweise:

  • c:\Users\[Username]\Documents\My Music -> c:\Users\[Username]\Music\
  • c:\Users\[Username]\Documents\My Pictures -> c:\Users\[Username]\Pictures\
  • c:\Users\[Username]\Documents\My Videos -> c:\Users\[Username]\Videos\

Und jetzt wundert man sich nicht mehr, wieso unter Windows 7 niemand mehr seine Dateien findet und sich über das ständige Zugriff verweigert ärgert m(

Quick launch (Schnellstart-Leiste) in Windows 7 aktivieren

Ich habe gerade begonnen mich mit Windows 7 auseinanderzusetzen. Eins der ersten Dinge, welche mir aufgefallen sind ist, dass es keine Quickstart-Leiste in Windows 7 mehr gibt, was mich sehr gestört hat, weil es eins meiner meistgenutzten Features in den alten Windowsversionen war.

Ist aber kein Problem, man kann die Schnellstartleiste relativ einfach wieder aktvieren:

  1. Neue Toolbar zur Taskleiste hinzufügen:
    Rechtsklick auf die Taskleiste -> Toolbars -> new toolbar…
  2. Zielordner auswählen:
    c:\Users\[UserName]\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\

Tadaa, schon ist die Schnellstartleiste wieder da.
Nun sieht sie noch ein bisschen ungewohnt aus. Aber dem ist auch schnell Abhilfe geschaffen. Einfach per Rechtsklick auf die Schnellstartleiste “Show Title” und “Show Text” abwählen und schon ist das gewohnte Aussehen wieder hergestellt. Wenn einen jetzt noch die Position stört, muss man per Rechtsklick auf die Tastleiste die Taskleiste entsperren und nun kann man seine neue Schnellstartleiste an die richtige Stelle verschieben. Danke an Thomas, der dass schon Ende 2009 herausgefunden hat 🙂