Sicherheitsloch durch primitiv-Eintraege in pap-secrets
Hallo, SuSEconfig trägt in /etc/ppp/pap-secrets (und chap) bei jedem Durchlauf Passwortkombinationen ein, die in den Dateien in /etc/sysconfig/network/providers zu finden sind. Bei Internet-Zugängen v. z.B: freenet wird dann "anything" * "anything" eingetragen. Diese Primitiv-kombinationen können dann bei vorhandenen ISDN-Einwahldevices, die alle MSN-Anrufnummern zulassen, dazu mißbraucht werden, eine IP-Verbindung aufzubauen. Einfach mal "anything" als user und passwort ausprobieren ist schnell gemacht. Gibts da irgendeinen Trick dagegen? Ich weiß schon, daß es die Möglichkeit gibt, die unix-user-PAssworte zu verwenden, also in pap-secrets so was wie * * * einzutragen. Das will ich eigentlich nicht. Gibt es eine andere Möglichkeit den Mißbrauch zu verhindern ohne auf die Unix-Userdaten zuzugreifen? thx Ekkard
On Thu, Jan 01, 2004 at 09:13:26PM +0100, Ekkard Gerlach wrote:
Hallo,
SuSEconfig trägt in /etc/ppp/pap-secrets (und chap) bei jedem Durchlauf Passwortkombinationen ein, die in den Dateien in /etc/sysconfig/network/providers zu finden sind. Bei Internet-Zugängen v. z.B: freenet wird dann "anything" * "anything" eingetragen. Diese Primitiv-kombinationen können dann bei vorhandenen ISDN-Einwahldevices, die alle MSN-Anrufnummern zulassen, dazu mißbraucht werden, eine IP-Verbindung aufzubauen. Einfach mal "anything" als user und passwort ausprobieren ist schnell gemacht.
Gibts da irgendeinen Trick dagegen?
Ab SL 9.0 gibt es u.a. deshalb in /etc/sysconfig/suseconfig folgende Variable. ## Path: System/SuSEconfig ## Type: yesno ## Default: yes ## Config: isdn # # May SuSEconfig.isdn modify your /etc/ppp/pap-secret or # /etc/ppp/chap-secret? (yes/no) # MODIFY_SECRET="yes" Natürlich muss man dann selbst die entsprechenden Files aktuell halten und einmalig aufraeumen. Für aeltere Versionen kann man das leicht nachrüsten, in dem man SuSEconfig.isdn anpasst: --- /old/sbin/conf.d/SuSEconfig.isdn 2003-02-15 22:42:51.000000000 +0100 +++ /sbin/conf.d/SuSEconfig.isdn 2003-09-16 11:30:30.000000000 +0200 @@ -628,29 +628,33 @@ # loop trough provider definitions and create # pap/chap entries for ISDN Provider -cd $r/etc/sysconfig/network/providers -for i in *; do - case $i in - *~*|*.*) - # drop backup files - ;; - "*") - ;; - *) - for v in $PROVIDER_OPTIONS ; do - unset $v - done - . $i - echo -n "provider $i " - REMOTE_NAME=${REMOTE_NAME:-*} - if [ "$ISDNSUPPORTED" = "yes" ]; then - add_secret $r/etc/ppp/pap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME" - add_secret $r/etc/ppp/chap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME" - fi - echo " done" - ;; - esac -done +if [ "$MODIFY_SECRETS" != "no" ]; then + cd $r/etc/sysconfig/network/providers + for i in *; do + case $i in + *~*|*.*) + # drop backup files + ;; + "*") + ;; + *) + for v in $PROVIDER_OPTIONS ; do + unset $v + done + . $i + echo -n "provider $i " + REMOTE_NAME=${REMOTE_NAME:-*} + if [ "$ISDNSUPPORTED" = "yes" ]; then + add_secret $r/etc/ppp/pap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME" + add_secret $r/etc/ppp/chap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME" + fi + echo " done" + ;; + esac + done +else + echo "skip modify of pap-secrets/chap-secrets because of MODIFY_SECRETS=$MODIFY_SECRETS" +fi # loop trough isdn connection setups and create # etc/sysconfig/network/ifcfg files -- Karsten Keil SuSE Labs ISDN development
Karsten Keil schrieb: [...]
+if [ "$MODIFY_SECRETS" != "no" ]; then
hmmm, wäre da nicht if [ "$MODIFY_SECRETS" = "yes" ]; then besser? Wenn die Variable nicht gesetzt ist oder Käse drin steht, ist das dann gleich "no" Ausserdem ists dann auch per default Aus, das wäre nach meinem Geschmack mehr 'unlike M$' ;))
+ cd $r/etc/sysconfig/network/providers + for i in *; do + case $i in + *~*|*.*) + # drop backup files + ;; + "*") + ;; + *) + for v in $PROVIDER_OPTIONS ; do + unset $v + done + . $i + echo -n "provider $i " + REMOTE_NAME=${REMOTE_NAME:-*} + if [ "$ISDNSUPPORTED" = "yes" ]; then + add_secret $r/etc/ppp/pap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME" + add_secret $r/etc/ppp/chap-secrets "$USERNAME" "$PASSWORD" "$REMOTE_NAME" + fi + echo " done" + ;; + esac + done +else + echo "skip modify of pap-secrets/chap-secrets because of MODIFY_SECRETS=$MODIFY_SECRETS" +fi
# loop trough isdn connection setups and create # etc/sysconfig/network/ifcfg files
-- Gruss Bernd
On Sun, Jan 04, 2004 at 04:56:07PM +0100, Bernd Obermayr wrote:
Karsten Keil schrieb: [...]
+if [ "$MODIFY_SECRETS" != "no" ]; then
hmmm, wäre da nicht
if [ "$MODIFY_SECRETS" = "yes" ]; then
besser?
Ziel ist es bei Updates usw. wo der Eintrag eventuell fehlt das alte Verhalten weiterhin zu garantieren, deshalb diese Variante. Bei 99% der User, die keinen Einwahlserver aufsetzen ist das auch sicher. -- Karsten Keil SuSE Labs ISDN development
participants (3)
-
Ekkard Gerlach
-
Illuminatus@t-online.de
-
Karsten Keil