Ubuntu Firewall Skript

Hey,

hier n kleines Skript zur bequemeren Konfiguration von iptables unter Ubuntu.

Hier das Konfigurationsskript:

/etc/iptables.sh

#!/bin/sh

# Iptables
FW=”/sbin/iptables”

# vorhandene Regeln & Ketten löschen
$FW -F
$FW -X
$FW -t nat -F

# Standardregeln
$FW -P INPUT ACCEPT
$FW -P FORWARD ACCEPT
$FW -P OUTPUT ACCEPT

$FW -A INPUT -p tcp –dport www -s xxx.xx.xx.x/16 -j ACCEPT
$FW -A INPUT -p tcp –dport www -j DROP
$FW -A INPUT -p tcp –dport https -s xxx.xx.xx.x/16 -j ACCEPT
$FW -A INPUT -p tcp –dport https -j DROP

$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport ssh -j DROP

$FW -A INPUT -p tcp –dport 21 -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport 21 -j DROP

$FW -A INPUT -p tcp –dport 7777 -s xxx.xx.xx.xxx -j ACCEPT
$FW -A INPUT -p tcp –dport 7777 -j DROP

Hier das Init-Skript:

/etc/init.d/firewall

#!/bin/sh
### BEGIN INIT INFO
# Provides: iptables
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop the firewall daemon.
### END INIT INFO

. /lib/lsb/init-functions

case “$1” in
start)
/etc/iptables.sh
iptables -L
;;
stop)
iptables -F
iptables -X
iptables -L
;;
status)
iptables -L
;;
*)
echo “Usage: /etc/init.d/firewall {start|stop|status}”
exit 1
;;
esac

exit 0

Automatisches Laden des Skripts in den Default-Runlevels:

update-rc.d firewall defaults

[Powershell]Printserver der Fritzbox neustarten

Hallo,

meine Eltern beklagten sich schon seit längerem darüber, dass ihr Drucker sporadisch nicht drucken bzw. mitten im Druckjob abbrechen würde. Der Drucker ist per USB an eine Fritzbox 7170 angeschlossen und an den Clients per Socket eingebunden.

Ich schaute mir also den Status des USB-Hosts in der Fritzbox an und stellte fest, dass der Drucker im Leerlauf als “beim Drucken” angezeigt wurde.

Da war für mich klar, dass vermutlich der Printserver der Fritzbox das Problem sein würde.

Blöderweise gibt es auf der Fritzbox-Oberfläche keine Möglichkeit, das USB-Subsystem neuzustarten ohne die ganze Fritzbox neu starten zu müssen. Gut, der Anschluss ist keine Komponente, die jederzeit verfübar sein muss, trotzdem ist es nervig.

Ich hatte im Hinterkopf, dass die Fritzbox einen Telnet-Zugang hat. Als alter Linuxer dachte ich mir, dass man über die dann verfügbare Shell das USB-Subsystem per init-skript o.ä durchzustarten.

Genau so funktionierte es auch. Blöderweise verfügen meine Eltern nicht über die Fähigkeit sich per telnet zu connecten und den Service neuzustarten ^^. Ich überlegt also, wie man diesen Vorgang Automatisieren könnte.

Die Lösung: Powershell! Mit der Powershell besteht die Möglichkeit, eine TCP-Verbindung über einen bestimmten Port aufzubauen und darüber Kommandos auszuführen.

Hier also das Skript:

param(
[string] $remoteHost = "",
[int] $port = 23,
[string] $password = "",
[string] $command1 = "/etc/init.d/rc.usbhost stop",
[string] $command2 = "/etc/init.d/rc.usbhost start",
[int] $commandDelay = 1000
)
[string] $output = ""
## Read output from a remote host
function GetOutput
{
## Create a buffer to receive the response
$buffer = new-object System.Byte[] 1024
$encoding = new-object System.Text.AsciiEncoding
$outputBuffer = ""
$foundMore = $false
## Read all the data available from the stream, writing it to the
## output buffer when done.
do
{
## Allow data to buffer for a bit
start-sleep -m 1000
## Read what data is available
$foundmore = $false
$stream.ReadTimeout = 1000
do
{
try
{
$read = $stream.Read($buffer, 0, 1024)
if($read -gt 0)
{
$foundmore = $true
$outputBuffer += ($encoding.GetString($buffer, 0, $read))
}
} catch { $foundMore = $false; $read = 0 }
} while($read -gt 0)
} while($foundmore)
$outputBuffer
}
function Main
{
## Open the socket, and connect to the computer on the specified port
write-host "Connecting to $remoteHost on port $port"
trap { Write-Error "Could not connect to remote computer: $_"; exit }
$socket = new-object System.Net.Sockets.TcpClient($remoteHost, $port)
write-host "Connected. Press ^D followed by [ENTER] to exit.`n"
$stream = $socket.GetStream()
$writer = new-object System.IO.StreamWriter $stream
## Receive the output that has buffered so far
$SCRIPT:output += GetOutput
Start-Sleep -m $commandDelay
$writer.WriteLine($password)
$writer.Flush()
Start-Sleep -m $commandDelay
$writer.WriteLine($command1)
$writer.Flush()
Start-Sleep -m $commandDelay
$writer.WriteLine($command2)
$writer.Flush()
$SCRIPT:output += GetOutput
## Close the streams
$writer.Close()
$stream.Close()
$output | Out-File ("C:\Temp\$remoteHost.txt") #Change this to suit your environment
}
. Main

[linux] rdesktop Script für RDP-Connections

Hallo,

unter Linux gibt es verschiedene Remotedesktop-Clients wie zb. Tsclient oder krdc. Das Problem bei diesen Clients ist, dass sie 1. in verschiedenen Versionen auftauchen und dort unterschiedliche Funktionen bereitstellen, 2. dass ihnen teilweise wichtige Funktionen fehlen (wie zb. lokales Laufwerk verbinden) oder kompliziert zu bedienen sind.

Daher habe ich für mich die Entscheidung getroffen rdesktop nativ über die Konsole zu benutzen, da ich dort alle Funktionen habe und mir die Skalierung nahtlos anpassen kann.

Um nicht ständig den Konsolenbefehl eintippen zu müssen habe ich mir ein kleines Shell-Script gebaut, welches mir eine vorgegebene Liste von Zielen sowie eine vorgebene Liste von Auflösungen ausgibt aus denen ich dann auswählen kann.

Hier das Skript:

cat rdp.sh
#/bin/bash
# Rdp Skript v1
#
PS3=”Bitte geben Sie die Nr. ein: ”
echo “Bitte das Ziel auswählen: ”
select ziel in server1 server2 server3 server4 server5 beenden
do
if [ $ziel = beenden ]
then
break
fi
PS3=”Bitte geben Sie die Nr. ein: ”
echo “Welche Skalierung möchten sie verwenden?: ”
select skal in 1024×768 1280×1024 1280×800 1650×1050 800×600 beenden
do
if [ $skal = beenden ]
then
break
fi
echo “Ihre Auflösung ist $skal”
read -p “Bitte Benutzer angeben: ” user;
read -p “Domain-Angabe notwendig?: [j/n] ” domaus;
#
if [ $domaus = “j” ];
then
read -p “Bitte Domain angeben: ” dom;
rdesktop -g $skal -u $user -d $dom $ziel;
else
rdesktop -g $skal -u $user $ziel;
fi
done
done

Die Ausgabe sieht dann so aus:

Bitte das Ziel auswählen:
1) server1
2) server2
3) server3
4) server4
5) server5
6) beenden
Bitte geben Sie die Nr. ein: 1
Welche Skalierung möchten sie verwenden?:
1) 1024×768   3) 1280×800   5) 800×600
2) 1280×1024  4) 1650×1050  6) beenden
Bitte geben Sie die Nr. ein: 1
Ihre Auflösung ist 1024×768
Bitte Benutzer angeben: test
Domain-Angabe notwendig?: [j/n] n
Autoselected keyboard map de