Wednesday, November 2, 2016

Limit Queue Video Streaming


Limit Queue for Video Streaming "eg:Youtube" and Video Download using Layer7-Protocol.

LAYER7-PROTOCOL
/ip firewall layer7-protocol
add comment="" name=http-video regexp="http/(0\\.9|1\\.0|1\\.1)[\\x09-\\x0d ][\
1-5][0-9][0-9][\\x09-\\x0d-~]*(content-type: video)"

IP FIREWALL MANGLE
/ip firewall mangle
add action=mark-packet chain=forward comment="Limit Video Streaming" disabled=no \
layer7-protocol=http-video new-packet-mark=Limit-Video passthrough=no \
protocol=tcp

QUEUE TREE
Note: This sample use bandwith limit 256k, you can change the limit as you need by edited "256000" to other Limit you needed.
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=256000 \
max-limit=256000 name=Limit-Video packet-mark=Limit-Video parent=global-out \
priority=8 queue=default

Limit Bandwith using Layer 7-Protocol


SCRIPT I
/ip firewall layer7-protocol
add comment="" name=ISO regexp="\\.(iso)"
add comment="" name=NRG regexp="\\.(nrg)"
add comment="" name=RM regexp="\\.(rm)"
add comment="" name=RM1 regexp="\\.(rm1)"
add comment="" name=MP4 regexp="\\.(mp4)"
add comment="" name=AVI regexp="\\.(avi)"
add comment="" name=WAV regexp="\\.(wav)"
add comment="" name=MPG regexp="\\.(mpg)"
add comment="" name=MP3 regexp="\\.(mp3)"
add comment="" name=MPEG regexp="\\.(mpeg)"
add comment="" name=WMV regexp="\\.(wmv)"
add comment="" name=3GP regexp="\\.(3gp)"
add comment="" name=FLV regexp="\\.(flv)"
add comment="" name=MOV regexp="\\.(mov)"
add comment="" name=IMG regexp="\\.(img)"
add comment="" name=DOC regexp="\\.(doc)"
add comment="" name=PPT regexp="\\.(ppt)"
add comment="" name=PDF regexp="\\.(pdf)"
add comment="" name=EXE regexp="\\.(exe)"
add comment="" name=MSI regexp="\\.(msi)"
add comment="" name=7Z regexp="\\.(7z)"
add comment="" name=BIN regexp="\\.(bin)"
add comment="" name=GZ regexp="\\.(gz)"
add comment="" name=GZIP regexp="\\.(gzip)"
add comment="" name=TAR regexp="\\.(tar)"
add comment="" name=RAR regexp="\\.(rar)"
add comment="" name=ZIP regexp="\\.(zip)"

SCRIPT II
/ip firewall mangle
add action=mark-packet chain=forward comment="EKSTENSI-LAYER-7" disabled=no layer7-protocol=ISO new-packet-mark=ISO passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=NRG new-packet-mark=NRG passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=RM new-packet-mark=RM passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=RM1 new-packet-mark=RM1 passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=MP4 new-packet-mark=MP4 passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=AVI new-packet-mark=AVI passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=WAV new-packet-mark=WAV passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=MPG new-packet-mark=MPG passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=MP3 new-packet-mark=MP3 passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=MPEG new-packet-mark=MPEG passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=WMV new-packet-mark=WMV passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=3GP new-packet-mark=3GP passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=FLV new-packet-mark=FLV passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=MOV new-packet-mark=MOV passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=IMG new-packet-mark=IMG passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=DOC new-packet-mark=DOC passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=PPT new-packet-mark=PPT passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=PDF new-packet-mark=PDF passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=EXE new-packet-mark=EXE passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=MSI new-packet-mark=MSI passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=7Z new-packet-mark=7Z passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=BIN new-packet-mark=BIN passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=GZ new-packet-mark=GZ passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=GZIP new-packet-mark=GZIP passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=TAR new-packet-mark=TAR passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=RAR new-packet-mark=RAR passthrough=no
add action=mark-packet chain=forward comment="" disabled=no layer7-protocol=ZIP new-packet-mark=ZIP passthrough=no

SCRIPT III
/queue tree
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=256k max-limit=256k name=Limit-Download packet-mark=no-mark parent=global-out priority=8
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=ISO packet-mark=ISO parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=NRG packet-mark=NRG parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=RM packet-mark=RM parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=RM1 packet-mark=RM1 parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=MP4 packet-mark=MP4 parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=AVI packet-mark=AVI parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=WAV packet-mark=WAV parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=MPG packet-mark=MPG parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=MP3 packet-mark=MP3 parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=MPEG packet-mark=MPEG parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=WMV packet-mark=WMV parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=3GP packet-mark=3GP parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=FLV packet-mark=FLV parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=MOV packet-mark=MOV parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=IMG packet-mark=IMG parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=DOC packet-mark=DOC parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=PPT packet-mark=PPT parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=PDF packet-mark=PDF parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=EXE packet-mark=EXE parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=MSI packet-mark=MSI parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=7Z packet-mark=7Z parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=BIN packet-mark=BIN parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=GZ packet-mark=GZ parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=GZIP packet-mark=GZIP parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=TAR packet-mark=TAR parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=RAR packet-mark=RAR parent=Limit-Download priority=8 queue=default
add burst-limit=0 burst-threshold=0 burst-time=0s disabled=no limit-at=0 max-limit=0 name=ZIP packet-mark=ZIP parent=Limit-Download priority=8 queue=default

Blocking viruses port in mikrotik



/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1-2 comment="Socks Des Troie, Death"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=31 comment="Agent 31, Hacker's Paradise"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=37 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=41 comment="Deep Throat"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=58 comment="DM Setup"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=69-70 comment="W32.Evala.Worm"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=79 comment="Firehotcker"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=81 comment="Beagle.S"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=85-90 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=99 comment="Common Port for phishing scam sites"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=113 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=119 comment="Happy99"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=121 comment="Jammer Killah"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=129 comment="Password Generator Protocol"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=135-139 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=146 comment="Infector 1.3"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=382 comment="W32.Rotor"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=420 comment="W32.kibuv.b"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=421 comment="tcp Wrappers"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=445 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=456 comment="Hacker's Paradise"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=530 comment="W32.kibuv.worm"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=531 comment="Rasmin"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=555 comment="Stealth Spy, Phaze, 7-11 Trojan"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=559 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=587 comment="Sober worm Variants"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=593 comment="W.32.Sasser worm"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=666 comment="Attack FTP"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=777-778 comment="BackDoor.Netcrack.B"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=880 comment="Common Port for phishing scam sites"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=901-902 comment="Backdoor.Devil"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=911 comment="Dark Shadow"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=999-1001 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1011-1015 comment="Doly Trojan"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1024-1025 comment="Backdoor.lingosky"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1033-1034 comment="NetSpy"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1042 comment="Bla"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1045 comment="Rasmin"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1080-1081 comment="Backdoor.Zagaban"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1111 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1218 comment="Backdoor.Sazo"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1234 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1243 comment="Sub Seven"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1245 comment="VooDoo Doll"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1269 comment="Maverick's Matrix"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1394 comment="GoFriller, Backdoor G-1"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1433 comment="w32.spybot.ofn"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1492 comment="FTP99CMP"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1505 comment="FunkProxy "/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1509 comment="Psyber Streaming server"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1533-1534 comment="Backdoor.Miffice"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1534 comment="Bizex.Worm"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1600 comment="Shivka-Burka"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1604 comment="ICA Browser"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1751 comment="Loxbot.d"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1772 comment="Backdoor.NetControle"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1807 comment="SpySender"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1863 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1981 comment="Shockrave"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=1999-2005 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2023 comment="Ripper"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2041 comment="W32.korgo.a"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2080 comment="Backdoor.TJServ"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2090 comment="Backdoor.Expjan"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2115 comment="Bugs"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2140 comment="Deep Throat"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2155 comment="Illusion Mailer"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2283 comment="Dumaru.Y"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2322 comment="backdoor.shellbot"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2333-2335 comment="backdoor.shellbot, Eyeveg.worm.c"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2414 comment="vbs.shania"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2556 comment="Beagle.N"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2565 comment="Striker"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2583 comment="WinCrash"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2716 comment="The Prayer 1.2 -1.3"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2721 comment="Phase Zero"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2745 comment="Beagle.J"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2766 comment="W32.hllw.deadhat.b"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2801 comment="Phineas Phucker"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=2989 comment="Backdoor.Brador.A"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3024 comment="WinCrash"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3028 comment="Backdoor.Wortbot"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3030 comment="W32.Mytob.cz@mm"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3067 comment="W32.korgo.a"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3127-3198 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3256 comment="W32.HLLW.Dax"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3306 comment="Backdoor.Nemog.D"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3332 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3385 comment="w32.Mytob.kp@MM"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3410 comment="W32.mockbot.a.worm"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3456 comment="Backdoor.Fearic"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3459 comment="Eclipse 2000"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3547 comment="Backdoor.Amitis.B"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3700 comment="Portal of Doom"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3737 comment="Backdoor.helios"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=3791 comment="Eclypse"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4001 comment="Backdoor.OptixPro.13.C"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4092 comment="WinCrash"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4128 comment="Backdoor.rcserv"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4242 comment="Backdoor.Nemog.D"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4300 comment="Backdoor.smokodoor"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4387 comment="Phatbot"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4444 comment="More than 3 known worms and trojans use this port"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4512 comment="W32.mytob.db"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4567 comment="File Nail"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4590 comment="ICQ Trojan"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4646 comment="Backdoor.Nemog.D"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4661 comment="Backdoor.Nemog.D"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4751 comment="Beagle.U"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4820 comment="Backdoor.tuxder"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4888 comment="W32.Opanki"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4899 comment="W32.RaHack"/ip firewall filter add chain=viruses protocol= tcp action=drop dst-port=4903 comment="Common Port for phishing scam sites"

How to autodetect infected or spammer users and temporary block the SMTP output


Here can see in the solution which i invented and work excellent to autodetect and block SMTP viruses or spammers!
Only create these 2 rules in firewall forward:
/ip firewall filter

add chain=forward protocol=tcp dst-port=25 src-address-list=spammer
action=drop comment="BLOCK SPAMMERS OR INFECTED USERS"

add chain=forward protocol=tcp dst-port=25 connection-limit=30,32 limit=50,5 action=add-src-to-address-list
address-list=spammer address-list-timeout=1d comment="Detect and add-list SMTP virus or spammers"
When an infected user is autodetected with a virus worm or doing spam, the user is added to a spammer list and block the STMP outgoing by 1 day, all the values can be adjusted for different networks types or at your convenience
Antispam-rules.jpg

Logging detected users

Next, to display a red Log each 30 minutes listing the detected infected or spammers users using hotspot, add the next script:
/system script
add name="spammers" source=":log error \"----------Users detected like \
    SPAMMERS -------------\";
\n:foreach i in \[/ip firewall address-list find \
    list=spammer\] do={:set usser \[/ip firewall address-list get \$i \
    address\];
\n:foreach j in=\[/ip hotspot active find address=\$usser\] \
    do={:set ip \[/ip hotspot active get \$j user\];
\n:log error \$ip;
\n:log \
    error \$usser} };" policy=ftp,read,write,policy,test,winbox 
Logging-spammers.jpg

DesertAdmin correction to the above rule set.
/ip firewall filter
add action=drop chain=virus comment="Drop Spammer" disabled=no dst-port=25 protocol=tcp src-address-list=spammer
add action=add-src-to-address-list address-list=spammer address-list-timeout=1d chain=virus comment="add to spammer list" connection-limit=30,32 disabled=no dst-port=25 limit=50,5 protocol=tcp

Remove the following line if you already have a virus chain if not added it in.
add action=jump chain=forward comment="jump to the virus chain" disabled=no jump-target=virus

Also remember to move newly updated rules logically above your current jump forward rule. I like to keep my rules in orders of ports.
-Sincerely, DesertAdmin
Netinthewest says. (My first ever Mikrotik script) I got e-mail blacklisted so had to do something fast. I used DesertAdmins solution and it worked great. Took a while though to work out logging from Alessio's script.(screenshots were great) Turns out I needed to create the variable first before I could use it to log the spammers IP. I called it "spamip" This version works straight from the tin.
:global spamip;
:log error "----------Users detected like SPAMMERS -------------";
:foreach i in [/ip firewall address-list find list=spammer] do={:set spamip [/ip firewall address-list get $i address];
:log error $spamip};
Thanks guys! You got me out of trouble.

Modification by Bob Burley
I liked and implemented this method of trapping spammers but I wanted to prevent unnecessary log entries every 30 minutes when the spammer list was empty. I made the following change to the script;
:global spamip;
:if ([:len [/ip firewall address-list find list=spammer]]>0) do= {
:log error "---------- IP's detected as SPAMMERS ----------";
:foreach i in [/ip firewall address-list find list=spammer] do={ :set spamip [/ip firewall address-list get $i address];
:log error $spamip };
}

Another Modification by Bob Burley
This version will also send an email ONLY ONCE for each new IP address detected. It uses another address-list called "email-log" to keep track of which addresses have been emailed. The addresses are removed from the "email-log" list after they timeout from the "spammer" list so that you will be notified again if that address is detected again.
:local emailip
:local spamip
:local keepflag 0
:foreach j in [/ip firewall address-list find list=email-log] do={
  :set emailip [/ip firewall address-list get $j address]
  :foreach i in [/ip firewall address-list find list=spammer] do={
    :set spamip [/ip firewall address-list get $i address]
    :if ($emailip=$spamip) do={:set keepflag 1}
  }
  :if ($keepflag=0) do={/ip firewall address-list remove $j} else= {:set keepflag 0}
}
:if ([:len [/ip firewall address-list find list=spammer]]>0) do={
  :local bodymsg ""
  :local emailflag 0
  :log error "---------- IP's detected as SPAMMERS ----------"
  :foreach i in [/ip firewall address-list find list=spammer] do={
    :set spamip [/ip firewall address-list get $i address]
    :log error $spamip
  }
  :foreach i in [/ip firewall address-list find list=spammer] do={
    :set spamip [/ip firewall address-list get $i address]
    :foreach j in [/ip firewall address-list find list=email-log] do={
      :set emailip [/ip firewall address-list get $j address]
      :if ($spamip=$emailip) do={:set emailflag 1}
    }
    :if ($emailflag=0) do={
      :set bodymsg ($bodymsg . $spamip . "\r\n")
      /ip firewall address-list add address=$spamip list=email-log
    } else= {:set emailflag 0}
  }
  :if ([:len $bodymsg]>0) do={
    /tool e-mail send from=MikroTik-XX@yourisp.com server=xxx.xxx.xxx.xxx to=youremail@yourisp.com subject="IP's detected as SPAMMERS" body=$bodymsg
    :set bodymsg ""
  }
}

Monday, October 24, 2016

Создание отказоустойчивого IPSec VPN туннеля между Mikrotik RouterOS и Kerio Control



Начиная с версии 8.1 Kerio Control для создания туннелей VPN можно использовать не только пропиетарный протокол Kerio VPN, но и вполне себе расово правильный IPSec. И конечно же мне сразу захотелось скрестить Mikrotik и Kerio Control. 

В этой статье я расскажу о нескольких схемах подключения. Итак, схема первая.

Объединение двух подсетей. Это просто.


И сразу маленькое лирическое отступление на тему направления установки соединения. Т.е. какой из концов туннеля принимает, а какой инициирует соединение VPN. Схема, когда Kerio Control инициирует подключение выбрана для упрощения обеспечения отказоустойчивости VPN туннелей в случае если у Kerio Control и Mikrotik несколько WAN интерфейсов. Подробно на этом я остановлюсь в четвертой части этой статьи. Во всех случаях я буду использовать аутентификацию по предопределенному ключу (паролю).

Для подключения про протоколу IPsec между Kerio Control и Mikrotik RouterBoard на RouterOS 6.1 необходимо на стороне Control создать новый туннель IPsec с следующими настройками:



  • Общие параметры. Активный режим (Control инициирует подключение к Mikrotik). Ведите IP адрес или DNS имя внешнего интерфейса Mikrotik. В примере — 109.172.41.XXX
  • Аутентификация. Предопределенный ключ. Введите надежный пароль.
  • Локальный ИД. Произвольное имя шлюза Control или внешний IP адрес Control. В примере – drgs1-gtw02
  • Отдаленный ИД. Внешний адрес Mikrotik. Если адрес WAN интерфейса Mikrotik отличается от внешнего адреса – укажите адрес WAN интерфейса в Mikrotik. Классический пример, когда провайдер выдает на сетевой интерфейс Mikrotik IP адрес по DHCP из своей серой локальной сети, на который пробрасывает пакеты приходящие на выданный вам внешний статический IP адрес. В этой статье описан именно такой вариант. Поэтому в примере — 10.48.113.102.
  • Удаленные сети. Укажите сеть\маску локальной подсети за Mikrotik. Например 192.168.88.0/24.
  • Локальные сети. Укажите сеть\маску локальной подсети за Kerio Control. Например 192.168.10.0/24.

Для настройки туннеля на стороне Mikrotik необходимо подключиться к роутеру через Winbox и добавить правила фаервола, разрешающие IKE, IPSec-esp, IPSec-ah или временно для отладки весь трафик UDP (очень не советую разрешать весь UDP — заюзают как форвардер DNS запросов злые люди, как минимум) в цепочке input. Для этого в окне терминала необходимо выполнить следующие команды:

/ip firewall filter add chain=input comment="Allow IKE" dst-port=500 protocol=udp
/ip firewall filter add chain=input comment="Allow IPSec-esp" protocol=ipsec-esp
/ip firewall filter add chain=input comment="Allow IPSec-ah" protocol=ipsec-ah
/ip firewall filter add chain=input comment="Allow UDP" protocol=udp

Результатом выполнения команды будут добавленные правила фильтра фаервола. Думаю, что всем это очевидно, но для начинающих отмечу, что эти правила должны находиться выше запрещающих правил в цепочке input. В моем примере выше правила с номером 13.



Далее необходимо отредактировать (или создать) политики шифрования (Proposals) в настройке IPsec. Приведите свои настройки в соответствие с рисунком или выполните в окне терминала команду, указанную ниже. 



Это команда, редактирующая существующее значение политики. В случае, если у вас в proposal нет никаких значений по умолчанию (пусто вообще, нет ни одного) их необходимо создать в соответствии с рисунком. И в этом случае команду выполнять не нужно.

/ip ipsec proposal set [find default=yes] enc-algorithms=3des,aes-128 pfs-group=none

Нам необходимо настроить peer и на этом остановимся особо. Нужно заметить, что в Router OS версии выше 6.0 изменились некоторые настройки, касаемые IPsec Peers и IPSec Policies. В частности, в настройки Peers добавлены новые опции. Теперь для Peer можно указать инициирует Mikrotik или принимает подключение (аналог пассивный\активный в Kerio Control). Нюанс состоит в том, что параметр «passive» нельзя установить через GUI. Его нет ни в Winbox, ни веб интерфейсе управление роутером. По умолчанию, при создании peer через Winbox — он становится активным и начинает непрерывно пытаться установить подключение по адресу указанному в его настройке. Поэтому для создания пассивного конца нашего туннеля необходимо воспользоваться именно CLI и в окне терминала выполнить команду где вместо «password» необходимо указать предопределенный ключ, который вы указали на стороне Kerio Control при его настройке.

/ip ipsec peer add address=109.172.42.XXX/32 dh-group=modp1536 exchange-mode=main-l2tp generate-policy=port-override hash-algorithm=sha1 passive=yes secret=password

Результатом выполнения команды будет созданный peer, ожидающий подключения. В случае, если ваши WAN интерфейсы находятся за NAT провайдера – установите чекбокс NAT-Travesal



При настройке Peer мы указали параметр автоматической генерации политик IPsec. Поэтому нам не требуется создавать ничего в /ip ipsec policies. Необходимые политики будут созданы автоматически после установление соединения. В случае если вы не забыли в настройке туннеля в Kerio Control его включить — это произойдет сразу же, после добавления peer-а.
После этого туннель на стороне Kerio Control должен перейти в статус «Подключено». В Mikrotik на закладке «Policies» в должна появиться автоматически созданная политика для подсетей, которые указывали при настройке Kerio Control в «Удаленные сети» и «Локальные сети». В «Installed SAs» вы увидите, что ваши концы туннелей «подружились» и наконец в «Remote Peers» вы увидите статус подключения. 





Туннель установлен. Но для прохождения трафика между подсетями за Kerio Control и Mikrotik необходимо добавить в правила NAT фаервола правило, которое не позволит замаскарадиться трафику, который вы отправляете в туннель. Если вы не сделаете этого правила – сети дружить не будут, даже если туннель будет установлен. Для этого в окне терминала необходимо выполнить команду:

/ip firewall nat add chain=srcnat dst-address=192.168.10.0/24 src-address=192.168.88.0/24

Важно! Правило должно стоять выше правил маскарадинга. Т.е быть самым верхним в списке правил NAT. 

После этого связь по внутренним адресам между подсетями 192.168.88.0/24 и 192.168.10.0/24 должна работать. На этом настройка туннеля между двумя подсетями окончена. Но это было просто. Дальше интереснее…

Объединение сети за Mikrotik и нескольких VPN сетей за Kerio Control


Рассмотрим более сложный вариант, когда необходимо предоставить доступ локальной сети за Mikrotik к локальным сетям за Kerio Control, подключенных к центральному офису при помощи других VPN туннелей по протоколу Kerio VPN (например). Примерная схема отражена на рисунке ниже.



Казалось бы, чего проще? В настройке VPN туннеля в Kerio Control необходимо всего лишь в списке «Локальные сети» добавить список всех подсетей, к которым необходимо получить доступ из локальной сети за Mikrotik и о которых Head Office уже знает. И соответственно расширить диапазон адресов в правиле NAT в Mikrotik которые не будут маскарадиться, например, создав группу таких адресов в «Address List» и указав эту группу в назначении правила. 

Добавляем, переустанавливаем туннель. Видим, что туннель установился, в IPsec Policies весело добавились автоматические политики для всех подсетей, который мы указали в настройке туннеля на стороне Kerio Control. В Installed SAs видим созданные SAs для всех подсетей. Бинго? А не тут то было…

Вдумчивое курение интернетов на тему IPseс в Mikrotik и объединения локальных сетей за разными типами роутеров дало понимание, что при такой схеме у всех проблема однотипная – невозможность объяснить Mikrotik куда именно слать пакеты. Практически на всех типах роутеров IPSec туннель – это отдельный сетевой интерфейс, что логично. Но не в Mikrotik, и поэтому определить для него маршрут прохождения пакетов в удаленную подсеть невозможно. На практике в связке с Kerio Control — Mikrotik упорно слал пакеты через последний добавленный SAs. Пакеты честно приходили в центральный офис и там отбрасывались Kerio Control. Ни в одной статье я не нашел объяснения логики поведения Mikrotik в таком случае. Я перепробовал все, кажется, возможные варианты с одинаковым результатом. С нулевым. Связь была только с одной подсетью – с последней автоматически добавленной при установке туннеля. 

Пять дней мозгового шторма, потерянный сон, двухдневный запой – позади. Мысль о решении описанном ниже посещала меня примерно на второй день поисков решения, но поначалу была отметена, как крайне кривое решение. Почему кривое и видимые мне недостатки я объясню чуть позже. Но, как известно, на безрыбье – и рак рыба.

Если Mikrotik отлично работает с одной подсетью в политиках IPSec, то нам необходимо логически объединить наши подсети за Kerio Control маской подсети. Т.е. агрегировать подсети за Kerio Control в одну. Адреса в подсетях 192.168.10.0/24, 192.168.20.0/24, 192.168.30.0/24 и 192.168.40.0/24 будут в пределах одной подсети 192.168.0.0/18, добавим именно эту подсеть в список «Локальные сети» при настройке туннеля в Kerio Control и установим туннельное соединение. Mikrotik создаст единственную IPsec Policies и создаст единственный SAs. Теперь он просто не сможет ошибиться куда слать пакеты. Проверка пингом должна показать доступность всех подсетей за Control для сети за Mikrotik. Если вы проверяете доступность по ICMP с Mikrotik – вы должны пускать ping не с WAN интерфейса, а с бриджа, например. Это очень распространенная ошибка, которая приводит к стенаниям в стиле ЧТЯДНТ, ничего не работает, мы все умрем, лапы ломит и хвост отваливается, спасите-помогите.

Для обратного прохождения пакетов из удаленный VPN сетей в сеть за Mikrotik необходимо добавить аналог правила в Mikrotik, которое не позволяет маскарадиться пакетам, отправленным в туннель. Т.к. весь трафик в сеть за Mikrotik из VPN сетей пойдет с интерфейса VPN центрального филиала, нам необходимо правила трафика, которое бы обманывали бы Mikrotik, подменив источник с адреса VPN на адрес из подсети, о которой Mikrotik знает. Правила на рисунке. Адрес 192.168.10.2 – внутренний адрес шлюза центрального офиса.



После этого обмен трафика между подсетями пойдет во все стороны.

Теперь о недостатках это метода. При такой схеме невозможно выдать локальной сети «маршруты» (я намерено беру слово в кавычки, т.к. в реальности никаких привычных для понимании маршрутов в таблице маршрутизации Mikrotik в удаленные подсети нет вообще) только для конкретных удаленных подсетей, подключенных к Head Office. Теоретически существует возможность, что вы не сможете логически объединить адреса в удаленных подсетях в одну при помощи маски. Т.к. они могут находиться вообще в разных классах сетей. В связи с тем, что в диапазон попадает громадное количество адресов, в теории существует возможность, что вам понадобится использовать другие адреса из этого диапазона не в IPSec туннеле, что будет невозможно. Внимание, если ваш адрес Mikrotik попадает в этот диапазон (!!!) то установка туннеля приведет к тому, что вы потеряете связь с Mikrotik. В этом случае зайдите на него через Winbox по MAC адресу и отключите туннель или отключите его на стороне Kerio Control. После этого или вынесите локальный адрес Mikrotik за пределы диапазона, который он получает от Contol при установке VPN туннеля или это (т.е. вариант с агрегацией локальных сетей за Kerio Control) вообще не ваш случай. 

В общем я бы сказал, что решение кривое до нельзя. Кривое, но рабочее. В уже сложившейся инфраструктуре, возможно, придется перепиливать локальные адреса подсетей. Но разработчики RouterOS не оставили мне выбора. Добавление интерфейса для IPSec в хотелках, насколько я знаю, уже давно. На англоязычных форумах неоднократно видел петиции к разработчикам, полные слез и отчаяния.

Используем роутер Mikrotik в качестве клиента VPN


Использование Mikrotik как клиента даст возможность забыть о плясках с IPSec и маршрутизацией не маршрутизируемого. Но имейте ввиду, что доступа к сети за Mikrotik со стороны локальной сети за Kerio Control не будет. И это логично. Учтите, что т.к. Kerio Control лицензируется на подключения в том числе и VPN клиентов — такой тип подключения уменьшает счетчик лицензированных подключений на единицу. Ну или если по-простому – использует одну лицензию на подключение. 

Здесь все предельно просто. Создадим пользователя в Kerio Control или отредактируем существующего. На закладке «Права» установим чекбокс «Пользователи могут подключаться через VPN». 



В правила трафика добавляем правило позволяющее подключаться к Kerio Control по протоколу L2TP из интернета или можете ограничить источник списком доверенных адресов. На рисунке у меня позволено подключение только для списка доверенных адресов удаленных администраторов. 



На стороне Mikrotik необходимо добавить новый интерфейс L2TP Client, выполнив команду в окне терминала:

add comment="L2TP VPN Client" connect-to=109.172.42.XXX disabled=no max-mru=1460 max-mtu=1460 name=INTERFACE-NAME password=password user=username

Значения адреса, имени интерфейса, имени и пароля подключения вам необходимо заменить на свой адрес Kerio Control, свое произвольное имя интерфейса и свой логин\пароль, который вы создали или отредактировали в настройках пользователя. Результатом выполнения команды должен быть новый созданный интерфейс, который немедленно установит соединение с сервером.



В списке адресов Mikrotik появится новый адрес, динамически выданный ему VPN сервером Kerio Control.



Для того, чтобы локальная сеть за Mikrotik получила доступ в сеть за Kerio Control необходимо добавить статические маршруты в таблицу маршрутизации. Для этого в окне терминала необходимо выполнить команды, заменив имя интерфейса на существующее у вас:

/ip route add comment="Route to 192.168.20.0/24" distance=1 dst-address=192.168.20.0/24 gateway=INTERFACE-NAME
/ip route add comment="Route to 192.168.30.0/24" distance=1 dst-address=192.168.30.0/24 gateway=INTERFACE-NAME
/ip route add comment="Route to 192.168.40.0/24" distance=1 dst-address=192.168.40.0/24 gateway=INTERFACE-NAME

Результатом будут добавленные статические маршруты в удаленные подсети за Kerio Control через интерфейс VPN.

Теперь добавим правило маскарадинга в Mikrotik. Для этого в окне терминала выполним команду:

/ip firewall nat add action=masquerade chain=srcnat out-interface=INTERFACE-NAME src-address=192.168.88.0/24

На этом все, доступ из локальной сети за Mikrotik в сеть за Kerio Control и во все сети, подключенные к нему по другим VPN туннелям должен быть. Не забудьте исправить мои значения в командах на свои.

Обеспечение отказоустойчивости туннеля VPN


Ну и на закуску самое сладкое. Обещанный рассказ про организацию отказоустойчивости туннелей. До версии Kerio Control 8.1 в настройке активного подключения нельзя было указать больше одного адреса принимающего конца туннеля, поэтому для обеспечения отказоустойчивости VPN туннелей я бы голосовал за схему, когда Kerio Control в центральном офисе именно принимает подключения. В этом случае отказоустойчивость можно было бы обеспечить мониторингом входящих каналов центрального офиса и автоматической смены единственного DNS имени, на который филиалы устанавливают подключения. Я использую для этого сервис DynDNS и систему мониторинга PRTG Network Monitor. Краткая суть метода такова. При помощи PRTG проверяется доступность каналов центрального офиса и в случае, если фиксируется падение канала, на который филиалы устанавливают подключения, то через API DynDNS, PRTG автоматически меняет DNS имя, зарегистрированное на сервисе DynDNS на которое филиалы устанавливают соединение, дергая ссылку в интернете. Метод рабочий 146%. Проверен у меня на более чем полусотне туннелей подключенных к центральному офису классической звездой. В случае восстановления можно менять IP адрес обратно, можно оставить как есть. Тут как пожелаете.

Казалось бы, что мешает в случае с Mikrotik сделать также? Но и тут подножка от RouterOS. В настройках peer вы хоть и сможете указать DNS имя принимающего конца туннеля, но при сохранении оно будет отрезолвлено и записано как IP адрес. В таком случае придется изобретать скрипты, которые будут мониторить каналы (вместо PRTG) на Kerio Control и менять настройки peer в случае, если текущий канал, на который устанавливается соединение — становится недоступным. Плюс масса плясок с политиками IPSec. И это видится мне жуткой головомойкой. 

Теперь же Kerio Control сам замечательно умеет обеспечивать отказоустойчивость в случае, если сам инициирует подключение, в настройке туннеля можно указать несколько IP адресов (или DNS имен) принимающего конца туннеля. Таким образом, создав на стороне Mikrotik два peer, принимающих подключение, можно добиться желанной отказоустойчивости. Ну, погнали наши городских… Примерная схема отображена на рисунке. Необходимо обеспечить живучесть туннеля при падении любого WAN интерфейса на Kerio или ISP на Mikrotik (названы по-разному во избежание путаницы). 



Начнем с настройки Mikrotik. Т.к. он не умеет понимать имена DNS в значении адреса настроек IPsec Peers, то нам придется создать два пира, для обоих WAN интерфейсов центрального офиса. Для этого перейдем в окно терминала и введем команду, заменив значения адресов и предопределённый ключ на свои:

/ip ipsec peer add address=109.172.42.XXX/32 dh-group=modp1536 exchange-mode=main-l2tp generate-policy=port-override hash-algorithm=sha1 nat-traversal=yes passive=yes secret=PASSWORD
/ip ipsec peer add address=95.179.13.YYY/32 dh-group=modp1536 exchange-mode=main-l2tp generate-policy=port-override hash-algorithm=sha1 nat-traversal=yes passive=yes secret=PASSWORD

Я обращаю ваше внимание, что если вы уже создавали peer по инструкции приведенной в предыдущих частях статьи и решили вместо CLI воспользоваться Winbox и скопировали уже созданный до этого peer, то настройка passive (та самая, которая определяет инициирует или принимает Mikrotik подключения) – не копируется. Поэтому на этом этапе я настоятельно рекомендуется воспользоваться инструментами командной строки. Результатом выполнения команды должно быть успешное создание двух peers ожидающих подключения со стороны Kerio Control.

Но этого мало. При падении WAN1 на Kerio Control туннель успешно переустановится, а вот если упадет ISP1 канал на Mikrotik, то в таком случае значение «удаленный ИД» настроек туннеля в Kerio Control в котором мы указывали серый провайдерский IP на ISP интерфейсе Mikrotik — не совпадет с реальным значением. И мы вместо успешного переподключения получим милую ошибку в консоли администрирования Kerio Control – «Несовпадение ИД». 

Засада? Засада… И я почти отчаялся, потому что фонтан мыслей иссяк, я решительно не понимал, как автоматизировать смену этого ИД. Поколдовал с hosts файлом, но безуспешно. Пришло время вспомнить слова одного умного дядьки с уже, наверняка, совсем седой задницей, который в мохнатом еще году говорил мне – если ничего не помогает, то самое время заглянуть в мануалы и логи. Ну… мануалы – это не про нас (здесь гомерический хохот автора), полез в debug-log Kerio Control, предварительно включив в него все сообщения, касаемые IPSec. Что я могу сказать – ищущий, да обрящет. В нашем случае, когда параметр «удаленный ИД» может динамически изменяться в зависимости от того, к какому IP адресу подключается туннель — в настройках туннеля Kerio Control можно в удаленный ИД указать значение «%any». 
В именах хостов введем через точку с запятой все адреса ISP1 И ISP2 на Mikrotik и значение «%any» в «Удаленный ИД» как на рисунке ниже.



Сохраняем, применяем, счастливыми глазами смотрим на изменившийся статус туннеля на «Подключено» и приступаем к проверке. Эмулируем падение основного канала на Kerio Control сменой мест резервного и основного канала – туннель переподключился и живой. Эмулируем падение основного канала на Mikrotik выдергиванием из него шнурка провайдера. Пока Kerio Control осилил, что туннеля уже нет — прошло около двух минут, но он все таки увел VPN на резерв. Бинго! 

Все эксперименты проводились на Kerio Control 8.1 и RouterOS 6.1. Названия переменных и настроек ROS в командах терминала, приведенные здесь, соответствуют этой версии (6.1). На сегодняшний день версия 6.10 имеет несколько измененных названий настроек, но при минимальном тюнинге все работает и на текущих версиях Kerio Control 8.2 и RouterOS 6.10. Все вышесказанное может быть чуть меньше, чем бредом сумасшедшего ИТ-ишника, я не претендую на правильность формулировок и определений и с удовольствием приму замечания и рекомендации, ведь Mikrotik для меня зверушка новая и загадочная, в отличии от Kerio Control, который почти прочитанная книга.

Friday, October 21, 2016

Шифрование файлов Dropbox

Облачные хранилища данных, такие как Dropbox, более глобальный Amazon и др. предоставляют пользоватлям отличную возможность всегда иметь под рукой свои документы, фото или видео. Причем в последней редакции, с возможностью отката на предыдующие версии документов. Удобно? Бесспорно. А как насчет безопасности? Здесь можно выделить несколько нюансов:
  • Ваши личные данные защищены от всего мира только вашим паролем, который вообще-то можно попытаться подобрать/угадать.
  • Всегда есть вероятность, что в крупных и находящихся под постоянным прицелом сервисах онлайн-хранилищ рано или поздно найдут лазейку и ваши отсканированные права или паспорт утекут в мир.
  • Когда вы, находясь на работе, запускаете Dropbox, то при этом на рабочий компьютер синхронизируются ВСЕ файлы (если они не отмечены как несинхронизируемые в интерфейсе Dropbox). Отмечать какие файлы синхронизировать, какие - нет, не всегда удобно. Вводить каждый день пароль от Dropbox может быть неудобным.
  • Когды вы, придя к кому-то в гости, вынуждены подключить свой Dropbox, те файлы, что зашифрованы, никогда не будут доступны другим.
  • Как выяснилось, верить словам майнтейнерам таких проектов, что "ваши файлы надежно зашифрованы и доступны только вам", нельзя. Ваши личные данные никто, кроме вас, не защитит.
Поэтому тема шифрования файлов на общедоступных сервисах так актуальна.
Шифрование файлов можно осуществлять двумя способами:
  1. Использование криптоконтейнера (например, TrueCrypt).
    При этом после каждого сохранения маленького файлика будет синхронизироваться весь контейнер. А если это 1 Гб??? В общем, это хороший метод, но не для online-сервиса.
  2. Шифровать каждый файл в отдельности.
    Изменили маленький фалик - только его и обновили. Трафик минимальный, время синхронизации - тоже. Минус - если не шифровать имена файлов, можно привлечь повышенное внимание и лишнюю попытку к расшифровке, хоть бы и грубой силой.
Мы выберем второй метод - будем шифровать каждый файл в отдельности, при этом шифровать будем не только сами данные, но и имя файлов. Для этого испольуем программу BoxCryptor, которая "на лету" шифрует каждый файл по отдельности. Используется алгоритм AES-256. BoxCryptor монтирует новый локальный диск, ссылающийся на какую-либо папку, например, в каталоге Dropbox-а. При этом файлы в самой папке зашифрованы, а при работе через примонтированный диск эти же файлы доступны как обычно:
BoxCryptor - шифрование файлов Dropbox
На рисунке видно, что при доступе через примонтированный диск S: с файлами можно работать как обычно. При этом в самой папке Dropbox эти файлы все время зашифрованы.
Доступ к зашифрованным данным приосходит на основе пароля, который необходимо вводить при монтировании диска (либо вручную, либо дать программе запомнить этот пароль).
BoxCryptor - шифрование файлов Dropbox
Установка и настройка BoxCryptor элементарная:
  1. Скачали (бесплатная версия на 2 Гб).
  2. Запустили. Программа сама определит, что у вас установлен (или нет) Dropbox и предложит создать защищенную папку сразу в вашем Dropbox.
  3. После этого вы придумаете пароль и ВСЕ.
Сама программа BoxCryptor работает под Windows. Файлы, защищенные BoxCryptor, могут быть доступны в Linux и MacOS с помощью EncFS.