Comment surveiller les connections au partage d'écran et au SSH?

Je ne peux faire confiance à personne, ni même à mes propres pare-feu ni à d'autres mesures contre les pirates envahissants, mais je peux surveiller toute connection réussie à mes systèmes OS X (par exemple en envoyant un courriel à mon count Gmail).

Comment y parvenir, y compris les connections via le partage d'écran et SSH?

Je peux voir que le file secure.log répertorie ces connections, mais comment puis-je les surveiller et les filterr pour les connections réussies, afin d'émettre des courriels sur ces events?

L'user bmike a suggéré d'utiliser la command tail sur le file secure.log. J'ai trouvé que cette command a une option "-F" qui convient bien pour cette tâche: Je continue à rapporter les lignes ajoutées au file journal et gère même les rotations des files journaux.

Mais cela ne suffit pas encore à mes besoins. Je veux seulement envoyer les notifications si un access externe (login) s'est produit, pas chaque fois qu'une tâche locale est autorisée.

Voici un extrait de mon file secure.log:

mymac login[26292]: in pam_sm_acct_mgmt(): OpenDirectory - Membership cache TTL set to 1800. mymac login[26292]: in od_record_check_pwpolicy(): retval: 0 mymac login[26292]: in od_record_atsortingbute_create_cfssortingng(): returned 3 atsortingbutes for dsAttrTypeStandard:AuthenticationAuthority mymac sudo[26296]: myname : 3 incorrect password attempts ; TTY=ttys005 ; PWD=/Users/myname ; USER=root ; COMMAND=/bin/bash mymac sudo[26301]: myname : TTY=ttys005 ; PWD=/Users/myname ; USER=root ; COMMAND=/bin/bash mymac com.apple.SecurityServer[27]: Succeeded authorizing right 'system.hdd.smart' by client '/Library/Application Support/iStat local/iStatLocalDaemon' [133] for authorization created by '/Library/Application Support/iStat local/iStatLocalDaemon' [133] mymac sshd[26308]: Accepted publickey for myname from xxxx port 62433 ssh2 mymac screensharingd[26328]: Authentication: SUCCEEDED :: User Name: John Doe :: Viewer Address: xxxx :: Type: DH 

Seuls les "screensharingd" et "sshd" sont pertinents pour moi dans cet exemple. Mais il ne semble pas y avoir de distinction claire entre celles-ci et les autres permissions locales. Le seul motif commun que je trouve est l'adresse IP, mais est-ce à security embeddede? Je devrais rendre mon script généralement utilisable (par n'importe qui), je devrais non seulement détecter les adresses IPv4 mais aussi les adresses IPv6. Et puis-je être sûr que d'autres types externes de connections (par exemple le partage de files) listront également une adresse IP dans leur format brut comme ceci? N'utilisant jamais de noms symboliques que je ne pourrais pas détecter avec ce model?

En fait, je me suis également connecté via le partage de files (AFP) – qui n'a même pas été listé dans secure.log, curieusement! Ce qui signifie que secure.log n'est probablement pas le seul ou le principal point d'apprentissage sur les permissions.

J'avais espéré qu'il y a un point central dans OSX qui prend en charge toutes les permissions de nom d'user / mot de passe et que ce point fournirait également un crochet pour la surveillance.

J'ai bien peur de ne pas pouvoir répondre à ma question de façon suffisamment générale. Je vais aller maintenant et requestr sur la list de diffusion de security d'Apple. Je vais faire un rapport.

Context:

Mon raisonnement pour ce genre de question est que je pense qu'aucun système n'est à l'abri de l'effraction. Par conséquent, le fait de se fier à des mesures pour prévenir un effraction n'est pas une mesure sûre. L'ajout de notifications (externes) à propos de la connection à un système est ce qui le rend beaucoup plus contrôlable: si quelqu'un réussit à s'introduire, il sera détecté par cette méthode, de sorte que le système ne sera plus digne de confiance et sera traité. Sans ce type de surveillance, quelqu'un pourrait être capable de s'immiscer et de modifier le système à un point où quelqu'un qui regarde plus tard ne sera pas en mesure de dire ce qui s'est passé, en supposant que le système est toujours en security.

Oui – il serait plus efficace de tail -f le file journal pour que votre script n'ait à parsingr chaque ligne du file qu'une seule fois par intervalle.

Évidemment, il vous faut encore écrire et tester le code pour surveiller les moments où le file journal est pivoté et peut-être vérifier si vous n'avez pas manqué un événement en scannant le nouveau file une fois lors de la première connection à ce file.

Ce qui est mieux est un compromis entre votre niveau de confort et vos compétences. Le MIT a également un sens pour détecter le trafic réseau puisque le partage d'écran écoute sur des ports connus ou vous pouvez surveiller de nouveaux process écoutant de nouveaux ports ou activer l'audit de process et surveiller ces journaux ou parsingr la table de process. Il y a plusieurs façons de peau ce chat.

Si vous avez déjà trouvé comment extraire les informations du journal, un moyen simple de le faire fonctionner uniquement au besoin, plutôt que de l'interroger tous les jours / heures est d'append le script comme une action de connection aux users en question . Demandez-leur d'interpréter les journaux, de travailler s'il s'agit d'une connection locale ou à distance, et d'envoyer des courriels (ou imessage, etc.) de façon appropriée.