Planet

Un des grands avantages et points forts des distributions GNU/Linux, c’est la sécurité out of the box qu’elles offrent. Mais comme on le sait tous, ils sont rares les fois où une installation ne subit aucune modification : nouveaux paquets installés, changements de droits et permissions, modification des fichiers de configuration… Et parfois, on peut se retrouver avec de sérieux problème !

Le script ci-dessous peut vous aider à détecter quelques uns de ces problèmes. Il permet de faire un audit de votre installation et de vous alerter des possibles vulnérabilités d’authentification, dans les paramétrages du SSH, dans le système de fichier temporaire (/tmp, /var/tmp, /dev/shm) et dans la gestion des permissions.

Le script est très bien documenté et son auteur promet de le mettre à jour pour y ajouter de nouvelles fonctionnalités.

Un conseil, vérifier les recommandations de l’output du script, ne les exécutez pas sans savoir ce que vous faites ;)

#!/bin/sh #------------------------------------------------------------------------------------------------------------------------------ # LBSA - Linux Basic Security Audit script #------------------------------------------------------------------------------------------------------------------------------ # (c) Neale Rudd, Metawerx Pty Ltd, 2008-2009 # All rights reserved # Download latest version from http://wiki.metawerx.net/wiki/LBSA # Version 1.0.43 # Last updated 4/02/2009 8:01PM # # #------------------------------------------------------------------------------------------------------------------------------ # GUIDE #------------------------------------------------------------------------------------------------------------------------------ # This script runs a series of basic linux security checks. # It is, and will always be, a work in progress. # The script was originally designed for use on Ubuntu, but will most likely work with other distros. # # The checks are far from exhaustive, but can highlight some basic setup issues from default linux installs. # Checks include a subset of setup policies which I use for hardening server configurations. As such, not # all checks may be suitable for your environment. For example, I don't allow root to login over SSH. # This may cause issues in your environment, or may be too restrictive for home use in some cases. # # If your own settings are more restrictive than these, or you have your own opinions on the settings, then # modify this script to suit your own purposes. The main idea is to have a script that can enforce your # own policies, not to follow my policies line-by-line. # # That said, this script should be suitable for most servers and home users "as-is", and for other admins # it should give you some ideas for your own script, or at very least should make for a good read :-) # # Ideally, this script would be called by a wrapper script of your own, which implements similar checks # more specific to your environment. For example, if you run Apache, you may want to also check various # folder permissions for Apache, then call this script as the final step of your own script. # This script can be called regularly by cron, or other schedulers, to mail results to the appropriate # administrator account for review. # # * Tests covered in the Bastille software are not covered here. # # #------------------------------------------------------------------------------------------------------------------------------ # HOW TO USE #------------------------------------------------------------------------------------------------------------------------------ # First, change parameters in the SETTINGS section to suit your environment, or call from your wrapper # Script should be executed as root with sh. # eg: # export LBSA_PERMITTED_LOGIN_ACCOUNTS="nrudd|sjackson" # sh sec_lbsa.sh # # No modifications are performed # A series of checks are executed # Running this script should produce no result except the phrase "System Checks Completed", at position 0 # of the output. # If there is any other output, then one or more setup warnings have been issued # # This can be used in cron or another scheduler to send a mail using a command like the following: # export LBSA_PERMITTED_LOGIN_ACCOUNTS="nealerudd|sjackson"; # LBSA_RESULTS=`sh sec_lbsa.sh`; # if [ "$LBSA_RESULTS" != "System Checks Completed" ]; then {your sendmail command here}; fi # # #------------------------------------------------------------------------------------------------------------------------------ # SETTINGS #------------------------------------------------------------------------------------------------------------------------------ # Settings are in if-blocks in case you want to call this script from a wrapper, to avoid modifying it # This allows easier upgrades # Permitted Login Accounts # Specify the list of permitted logins in quotes, separated by | # If there are none, just leave it blank. root should not be listed here, as we don't want root logging in via SSH either. # Valid examples: # LBSA_PERMITTED_LOGIN_ACCOUNTS="" # LBSA_PERMITTED_LOGIN_ACCOUNTS="user1" # LBSA_PERMITTED_LOGIN_ACCOUNTS="user1|user2|user3" if [ "$LBSA_PERMITTED_LOGIN_ACCOUNTS" = "" ]; then LBSA_PERMITTED_LOGIN_ACCOUNTS="" fi # If you aren't worried about allowing any/all SSH port forwarding, change this to yes if [ "$LBSA_ALLOW_ALL_SSH_PORT_FORWARDING" = "" ]; then LBSA_ALLOW_ALL_SSH_PORT_FORWARDING=no fi # Set this to yes to provide additional SSH recommended settings if [ "$LBSA_INCLUDE_EXTRA_SSH_RECOMMENDATIONS" = "" ]; then LBSA_INCLUDE_EXTRA_SSH_RECOMMENDATIONS=no fi #------------------------------------------------------------------------------------------------------------------------------ # LOGINS #------------------------------------------------------------------------------------------------------------------------------ # ROOT_NOT_LOCKED # Make sure root account is locked (no SSH login, console only) passwd -S root | grep -v " L " | xargs -r -iLINE echo -e "Warning: root account is not locked and may allow login over SSH or other services. When locked, root will only be able to log in at the console. [LINE]\n" # Fix: passwd -l root # ROOT_PASS_TIMING # Make sure root password is set to 0 min 99999 max 7 warning -1 inactivity # This may occur with ROOT_PASS_EXPIRES passwd -S root | grep -v "0 99999 7 -1" | xargs -r -iLINE echo -e "Warning: root account has non-standard min/max/wait/expiry times set. If the root password expires, cron jobs and other services may stop working until the password is changed. [LINE]\n" # Fix: chage -m 0 -M 99999 -W 7 -I -1 root # ROOT_PASS_EXPIRES # Make sure root password is set to never expire # This will normally occur with ROOT_PASS_TIMING chage -l root | grep "Password expires" | grep -v never | xargs -r -iLINE echo -e "Warning: root password has an expiry date. If the root password expires, cron jobs and other services may stop working until the password is changed. [LINE]\n" # Fix: chage -m 0 -M 99999 -W 7 -I -1 root # ROOT_ACCT_EXPIRES # Make sure root account is set to never expire chage -l root | grep "Account expires" | grep -v never | xargs -r -iLINE echo -e "Warning: root account has an expiry date -- though Linux surely protects against it expiring automatically [recommend setting it to never expire]. [LINE]\n" # Fix: chage -E-1 root # UNEXPECTED_USER_LOGINS_PRESENT # Make sure the users that can log in, are ones we know about # First, get user list, excluding any we already have stated should be able to log in if [ "$LBSA_PERMITTED_LOGIN_ACCOUNTS" = "" ]; then USERLIST=`cat /etc/passwd | cut -f 1 -d ":"` else USERLIST=`cat /etc/passwd | cut -f 1 -d ":" | grep -v -w -E "$LBSA_PERMITTED_LOGIN_ACCOUNTS"` fi # Find out which ones have valid passwords LOGINLIST="" for USERNAME in $USERLIST do if [ "`passwd -S $USERNAME | grep \" P \"`" != "" ]; then if [ "$LOGINLIST" = "" ]; then LOGINLIST="$USERNAME" else LOGINLIST="$LOGINLIST $USERNAME" fi fi done # Report if [ "$LOGINLIST" != "" ]; then echo "Warning: the following user(s) are currently granted login rights to this machine: [$LOGINLIST]." echo "If users in this list should be allowed to log in, please add their usernames to the LBSA_PERMITTED_LOGIN_ACCOUNTS setting in this script, or set the environment variable prior to calling this script." echo "If an account is only used to run services, or used in cron, the account should not be permitted login rights, so lock the account with [passwd -l <username>] to help prevent it being abused." echo "Note: after locking the account, the account will also be marked as expired, so use [chage -E-1 <username>] to set the account to non-expired/never-expire, otherwise services or cron tasks that rely on the user account being active will fail." echo "" fi # Fix: lock the specified accounts then set them non-expired, or specify the users that are listed are ok to log in by # adding them to LBSA_PERMITTED_LOGIN_ACCOUNTS #-------------------------------------------------------------------------------------------------------------- # General #-------------------------------------------------------------------------------------------------------------- # Ensure /etc/hosts contains an entry for this server name export LBSA_HOSTNAME=`hostname` if [ "`cat /etc/hosts | grep \"$LBSA_HOSTNAME\"`" = "" ]; then echo "There is no entry for the server's name [`hostname`] in /etc/hosts. This may cause unexpected performance problems for local connections. Add the IP and name in /etc/hosts, eg: 192.168.0.1 `hostname`"; echo; fi #-------------------------------------------------------------------------------------------------------------- # SSH Setup #-------------------------------------------------------------------------------------------------------------- # Ensure SSHD config is set securely (we do use TcpForwarding, so allow TcpForwarding) if [ "`cat /etc/ssh/sshd_config | grep -E ^Port`" = "Port 22" ]; then echo "SSHD Config: Port is set to default (22). Recommend change to a non-standard port to make your SSH server more difficult to find/notice. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^ListenAddress`" = "" ]; then echo "SSHD Config: ListenAddress is set to default (all addresses). SSH will listen on ALL available IP addresses. Recommend change to a single IP to reduce the number of access points. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^PermitRootLogin`" != "PermitRootLogin no" ]; then echo "SSHD Config: PermitRootLogin should be set to no (prefer log in as a non-root user, then sudo/su to root). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^PermitEmptyPasswords`" != "PermitEmptyPasswords no" ]; then echo "SSHD Config: PermitEmptyPasswords should be set to no (all users must use passwords/keys). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^UsePrivilegeSeparation`" != "UsePrivilegeSeparation yes" ]; then echo "SSHD Config: UsePrivilegeSeparation should be set to yes (to chroot most of the SSH code, unless on older RHEL). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^Protocol`" != "Protocol 2" ]; then echo "SSHD Config: Protocol should be set to 2 (unless older Protocol 1 is really needed). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^X11Forwarding`" != "X11Forwarding no" ]; then echo "SSHD Config: X11Forwarding should be set to no (unless needed). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^StrictModes`" != "StrictModes yes" ]; then echo "SSHD Config: StrictModes should be set to yes (to check file permissions of files such as ~/.ssh, ~/.ssh/authorized_keys etc). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^IgnoreRhosts`" != "IgnoreRhosts yes" ]; then echo "SSHD Config: IgnoreRhosts should be set to yes (this method of Authentication should be avoided). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^HostbasedAuthentication`" != "HostbasedAuthentication no" ]; then echo "SSHD Config: HostbasedAuthentication should be set to no (this method of Authentication should be avoided). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^RhostsRSAAuthentication`" != "RhostsRSAAuthentication no" ]; then echo "SSHD Config: RhostsRSAAuthentication should be set to no (this method of Authentication should be avoided). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^GatewayPorts`" != "" ]; then echo "SSHD Config: GatewayPorts is configured. These allow listening on non-localhost addresses on the server. This is disabled by default, but has been added to the config file. Recommend remove this setting unless needed. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^PermitTunnel`" != "" ]; then echo "SSHD Config: PermitTunnel is configured. This allows point-to-point device forwarding and Virtual Tunnel software such as VTun to be used. This is disabled by default, but has been added to the config file. Recommend remove this setting unless needed. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi # Commenting out Subsystem sftp is fairly pointless, SCP can still be used and most tools fall back to SCP automatically. Additionally, it's possible to copy files using just SSH and redirection. # if [ "`cat /etc/ssh/sshd_config | grep -E \"^Subsystem sftp\"`" != "" ]; then echo "SSHD Config: Comment out Subsystem SFTP (unless needed). While enabled, any user with SSH shell access can browse the filesystem and transfer files using SFTP/SCP. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "$LBSA_ALLOW_ALL_SSH_PORT_FORWARDING" != "yes" ]; then if [ "`cat /etc/ssh/sshd_config | grep -E ^AllowTcpForwarding`" != "" ]; then if [ "`cat /etc/ssh/sshd_config | grep -E ^AllowTcpForwarding`" != "AllowTcpForwarding no" ]; then if [ "`cat /etc/ssh/sshd_config | grep -E ^PermitOpen`" = "" ]; then echo "SSHD Config: AllowTcpForwarding has been explicitly set to something other than no, but no PermitOpen setting has been specified. This means any user that can connect to a shell or a forced-command based session that allows open port-forwarding, can port forward to any other accessible host on the network (authorized users can probe or launch attacks on remote servers via SSH port-forwarding and make it appear that connections are coming from this server). Recommend disabling this feature by adding [AllowTcpForwarding no], or if port forwarding is required, providing a list of allowed host:ports entries with PermitOpen. For example [PermitOpen sql.myhost.com:1433 mysql.myhost.com:3306]. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)." echo "* Note: If this is ok for this machine, set LBSA_ALLOW_ALL_SSH_PORT_FORWARDING=yes in this script, or set the environment variable prior to calling this script." echo fi fi fi if [ "`cat /etc/ssh/sshd_config | grep -E ^AllowTcpForwarding`" = "" ]; then if [ "`cat /etc/ssh/sshd_config | grep -E ^PermitOpen`" = "" ]; then echo "SSHD Config: AllowTcpForwarding is not specified, so is currently set to the default (yes), but no PermitOpen setting has been specified. This means any user that can connect to a shell or a forced-command based session that allows open port-forwarding, can port forward to any other accessible host on the network (authorized users can probe or launch attacks on remote servers via SSH port-forwarding and make it appear that connections are coming from this server). Recommend disabling this feature by adding [AllowTcpForwarding no], or if port forwarding is required, providing a list of allowed host:ports entries with PermitOpen. For example [PermitOpen sql.myhost.com:1433 mysql.myhost.com:3306]. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)." echo "* Note: If this is ok for this machine, set LBSA_ALLOW_ALL_SSH_PORT_FORWARDING=yes in this script, or set the environment variable prior to calling this script." echo fi fi fi # Additional recommendations (These are not critical, but helpful. These are typically not specified so strictly by default # so will almost definitely require the user to change some of the settings manually. They are in an additional section # because they are not as critical as the settings above. if [ "$LBSA_INCLUDE_EXTRA_SSH_RECOMMENDATIONS" = "yes" ]; then # Specify DenyUsers/DenyGroups for extra protection against root login over SSH if [ "`cat /etc/ssh/sshd_config | grep -E ^DenyUsers | grep root`" = "" ]; then echo "SSHD Config: (Extra Recommendation) DenyUsers is not configured, or is configured but has not listed the root user. Recommend adding [DenyUsers root] as an extra protection against root login (allow only su/sudo to obtain root access). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "`cat /etc/ssh/sshd_config | grep -E ^DenyGroups | grep root`" = "" ]; then echo "SSHD Config: (Extra Recommendation) DenyGroup is not configured, or is configured but has not listed the root group. This means that if a user is added to the root group and are able to log in over SSH, then that login is effectively the same as a root login anyway. Recommend adding [DenyUsers root] as an extra protection against root login (allow only su/sudo to obtain root access). (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi # Get rid of annoying RDNS lookups which can cause timeouts if RDNS fails if [ "`cat /etc/ssh/sshd_config | grep -E \"^UseDNS no\"`" = "" ]; then echo "SSHD Config: (Extra Recommendation) Set UseDNS no. This will stop RDNS lookups during authentication. Advantage 1: RDNS can be spoofed, which will place an incorrect entry in auth.log causing problems with automated log-based blocking of brute-force attack sources. This change will eliminate the problem of RDNS spoofing. Advantage 2: If RDNS fails, timeouts can occur during SSH login, preventing access to the server in worst cases. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi # Reduce timeouts, max attempts and max number of concurrent logins LoginGraceTime=`cat /etc/ssh/sshd_config | grep ^LoginGraceTime | tr -s " " | cut -d " " -f 2` if [ "$LoginGraceTime" = "" ]; then LoginGraceTime=120; fi MaxAuthTries=`cat /etc/ssh/sshd_config | grep ^MaxAuthTries | tr -s " " | cut -d " " -f 2` if [ "$MaxAuthTries" = "" ]; then MaxAuthTries=6; fi MaxStartups=`cat /etc/ssh/sshd_config | grep ^MaxStartups | tr -s " " | cut -d " " -f 2` if [ "$MaxStartups" = "" ]; then MaxStartups=10; fi MaxConcurrent=`expr "$MaxStartups" "*" "$MaxAuthTries"` if [ "$LoginGraceTime" -gt 30 ]; then echo "SSHD Config: (Extra Recommendation) LoginGraceTime is set to [$LoginGraceTime]. This setting can be used to reduce the amount of time a user is allowed to spend logging in. A malicious user can use a large time window to more easily launch DoS attacks or consume your resources. Recommend reducing this to 30 seconds (or lower) with the setting [LoginGraceTime 30]. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "$MaxAuthTries" -gt 4 ]; then echo "SSHD Config: (Extra Recommendation) MaxAuthTries is set to [$MaxAuthTries]. This allows the user $MaxAuthTries attempts to log in per connection. The total number of concurrent login attempts your machine provides are ($MaxAuthTries MaxAuthTries) * ($MaxStartups MaxStartups) = $MaxConcurrent. Note that only half of these will be logged. Recommend reducing this to 4 (or lower) with the setting [MaxAuthTries 4]. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi if [ "$MaxStartups" -gt 3 ]; then echo "SSHD Config: (Extra Recommendation) MaxStartups is set to [$MaxStartups]. This allows the user to connect with $MaxStartups connections at the same time, before authenticating. The total number of concurrent login attempts your machine provides are ($MaxAuthTries MaxAuthTries) * ($MaxStartups MaxStartups) = $MaxConcurrent. Note that only half of these will be logged. Recommend reducing this to 3 (or lower) with the setting [MaxStartups 3]. (Remember to restart SSHD with /etc/init.d/ssh restart after making changes)."; echo; fi fi #------------------------------------------------------------------------------------------------------------------------------ # PERMISSIONS / OWNERS / GROUPS - LINUX TOP LEVEL FOLDER #------------------------------------------------------------------------------------------------------------------------------ # FOLDER_PRIVS_755_root_LINUX_TOP_LEVEL # Check privileges, owner, and group FOLDERS="bin boot dev etc home initrd lib media mnt opt sbin srv sys usr var" PERMS=drwxr-xr-x OWNER=root GROUP=root for FOLDER in $FOLDERS do ls / -l | grep -v "\->" | grep -w $FOLDER\$ | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls / -o | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls / -lg | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done # FOLDER_PRIVS_1777_root_LINUX_TOP_LEVEL # Check privileges, owner, and group FOLDERS="tmp" PERMS=drwxrwxrwt OWNER=root GROUP=root for FOLDER in $FOLDERS do ls / -l | grep -v "\->" | grep -w $FOLDER\$ | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls / -o | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls / -lg | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done # FOLDER_PRIVS_555_root_LINUX_TOP_LEVEL # Check privileges, owner, and group FOLDERS="proc" PERMS=dr-xr-xr-x OWNER=root GROUP=root for FOLDER in $FOLDERS do ls / -l | grep -v "\->" | grep -w $FOLDER\$ | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls / -o | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls / -lg | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done # FOLDER_PRIVS_700_root_LINUX_TOP_LEVEL # Check privileges, owner, and group FOLDERS="root" PERMS=drwx------ OWNER=root GROUP=root for FOLDER in $FOLDERS do ls / -l | grep -v "\->" | grep -w $FOLDER\$ | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls / -o | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls / -lg | grep -v "\->" | grep -w $FOLDER\$ | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done #------------------------------------------------------------------------------------------------------------------------------ # PERMISSIONS / OWNERS / GROUPS - /ETC/SSH FOLDER # Auto-fix all warnings in this area with: chmod 600 -R /etc/ssh; chown root:root -R /etc/ssh #------------------------------------------------------------------------------------------------------------------------------ # 600 seems ok for the entire /etc/ssh folder. I can connect to SSH OK, and make outgoing SSH connections OK as various users. # This prevents non-root users from viewing or modifying SSH config details which could be used for attacks on other user # accounts or potential privelege elevation. PERMS=-rw------- FILES="moduli sshd_config ssh_host_dsa_key ssh_host_rsa_key ssh_host_key blacklist.DSA-1024 blacklist.RSA-2048" FOLDER=/etc/ssh OWNER=root GROUP=root for FILE in $FILES do if [ -e $FOLDER/$FILE ]; then ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" fi done # Ubuntu defaults private keys to 600 all other files to 644 # CentOS defaults public keys to 644 all other files to 600 #PERMS=-rw-r--r-- PERMS=-rw------- FILES="ssh_config ssh_host_dsa_key.pub ssh_host_rsa_key.pub ssh_host_key.pub" FOLDER=/etc/ssh OWNER=root GROUP=root for FILE in $FILES do if [ -e $FOLDER/$FILE ]; then ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" fi done # Ubuntu defaults folder to 755 # CentOS defaults folder to 755 #PERMS=-rwxr-xr-x PERMS=drw------- FILES="ssh" FOLDER=/etc OWNER=root GROUP=root for FILE in $FILES do if [ -e $FOLDER/$FILE ]; then ls $FOLDER -l | grep $FILE | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER -o | grep $FILE | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER -lg | grep $FILE | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" fi done #------------------------------------------------------------------------------------------------------------------------------ # PERMISSIONS / OWNERS / GROUPS - /ETC FOLDER SPECIAL FILES #------------------------------------------------------------------------------------------------------------------------------ # -r--r----- 1 root root 579 2007-02-09 01:52 sudoers # -rw------- 1 root root 0 2006-07-28 22:55 .pwd.lock # -rw------- 1 root root 938 2008-06-11 21:28 gshadow- # -rw------- 1 root root 1114 2008-06-11 21:28 group- # -rw------- 1 root root 2413 2008-09-03 14:39 shadow- # -rw------- 1 root root 3693 2008-09-03 14:39 passwd- # -rw-r----- 1 root daemon 144 2006-05-09 07:44 at.deny # -rw-r----- 1 root fuse 216 2007-09-19 10:01 fuse.conf # -rw-r----- 1 root shadow 950 2008-06-11 21:32 gshadow # -rw-r----- 1 root shadow 2346 2008-11-02 15:11 shadow # -rwxr-xr-x 1 root root 268 2006-04-06 03:40 rmt # -rwxr-xr-x 1 root root 306 2006-07-28 22:54 rc.local # These are just the Ubuntu defaults PERMS=-r--r----- FOLDER=/etc FILES="sudoers" OWNER=root GROUP=root for FILE in $FILES do ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done # These are just the Ubuntu defaults PERMS=-rw------- FOLDER=/etc FILES=".pwd.lock gshadow- group- shadow- passwd-" OWNER=root GROUP=root for FILE in $FILES do ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done # These are just the Ubuntu defaults PERMS=-rw-r----- FOLDER=/etc FILES="at.deny" OWNER=root GROUP=daemon for FILE in $FILES do if [ -e "$FOLDER/$FILE" ]; then ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" fi done # These are just the Ubuntu defaults PERMS=-rw-r----- FOLDER=/etc FILES="fuse.conf" OWNER=root GROUP=fuse for FILE in $FILES do if [ -e "$FOLDER/$FILE" ]; then ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" fi done # These are just the Ubuntu defaults PERMS=-rw-r----- FOLDER=/etc FILES="gshadow shadow" OWNER=root GROUP=shadow for FILE in $FILES do if [ -e "$FOLDER/$FILE" ]; then ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" fi done # These are just the Ubuntu defaults PERMS=-rwxr-xr-x FOLDER=/etc FILES="rmt rc.local" OWNER=root GROUP=root for FILE in $FILES do ls $FOLDER/$FILE -l | grep -v "\->" | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER/$FILE -o | grep -v "\->" | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER/$FILE -lg | grep -v "\->" | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done #-------------------------------------------------------------------------------------------------------------- # CHECK FOR WORLD WRITABLE FOLDERS #-------------------------------------------------------------------------------------------------------------- # Search for world writables in /etc or other folders FOLDERS="/etc /bin /sbin /usr/bin" for FOLDER in $FOLDERS do # Find any files/folders in /etc which are world-writable # Future: also need to ensure files are owned by root. If not, they may be able to be written to anyway. if [ "`find $FOLDER -type f -perm -002`" != "" ]; then echo "Warning: There are files or folders in $FOLDER which are world writable. It is a security risk to have world-writables in this folder, as they may be executed by other scripts as root." echo "A complete list of these files follows:" find $FOLDER -type f -perm -002 | xargs -r ls -al echo "" fi if [ "`find $FOLDER -type d -perm -002`" != "" ]; then echo "Warning: There are folders in $FOLDER which are world writable. It is a security risk to have world-writables in this folder, as they may be executed by other scripts as root." echo "A complete list of these folders follows:" find $FOLDER -type d -perm -002 echo "" fi done #-------------------------------------------------------------------------------------------------------------- # CHECK FOR INSECURE TMP AND SHM FOLDERS /tmp, /usr/tmp, /var/tmp, /dev/shm #-------------------------------------------------------------------------------------------------------------- # TODO: this doesn't check /usr/tmp or /var/tmp yet # /tmp # First ensure that /tmp is a separate partition in mtab, otherwise the following tests are useless if [ "`cat /etc/mtab | grep /tmp`" = "" ]; then echo "Warning: /tmp is not a separate partition, so cannot be marked nodev/nosuid/noexec"; else # Ensure noexec # Note: Even though most admins recommend /tmp is noexec, the aptitude (apt-get) tool in do-release-upgrade mode # require exec permissions in /tmp and will stop with an error before installing the upgrade because /tmp has no exec permissions. # Workaround: Either edit /etc/apt/apt.conf and change the TempDir for apt to something else (such as /var/cache/apt/tmp), or before using the do-release-upgrade command, use this command to temporarily assign exec rights on /tmp: [mount -oremount,exec /tmp] if [ "`cat /etc/mtab | grep /tmp | grep noexec`" = "" ]; then echo "Warning: /tmp has EXECUTE permissions. Recommend adding noexec attribute to mount options for /tmp, in /etc/fstab." echo "This change will help in preventing malicious users from installing and executing binary files from the folder." echo "To test, run these commands. The output should say Permission denied if your system is already protected: cp /bin/ls /tmp; /tmp/ls; rm /tmp/ls;" echo "Tip: after adding the attribute, you can remount the partition with [mount -oremount /tmp] to avoid having to reboot." echo "Note: Even though most admins recommend /tmp is noexec, Ubuntu release upgrades require exec permissions in /tmp for some reason and will stop with an error before installing the upgrade because /tmp has no exec permissions." echo "Workaround: Either edit /etc/apt/apt.conf and change the TempDir for apt to something else (such as /var/cache/apt/tmp), or before using the do-release-upgrade command, use this command to temporarily assign exec rights on /tmp: [mount -oremount,exec /tmp]" echo "" fi # Ensure nosuid if [ "`cat /etc/mtab | grep /tmp | grep nosuid`" = "" ]; then echo "Warning: /tmp has SUID permissions. Recommend adding nosuid attribute to mount options for /tmp, in /etc/fstab." echo "This change will help in preventing malicious users from setting SUID on files on this folder. SUID files will run as root if they are owned by root." echo "Tip: after adding the attribute, you can remount the partition with [mount -oremount /tmp] to avoid having to reboot." echo "" fi # Ensure nodev if [ "`cat /etc/mtab | grep /tmp | grep nodev`" = "" ]; then echo "Warning: /tmp has DEVICE permissions. Recommend adding nodev attribute to mount options for /tmp, in /etc/fstab." echo "This change will help in preventing malicious users from creating device files in the folder. Device files should be creatable in temporary folders." echo "Tip: after adding the attribute, you can remount the partition with [mount -oremount /tmp] to avoid having to reboot." echo "" fi fi # /dev/shm if [ "`cat /etc/mtab | grep /dev/shm`" != "" ]; then # Ensure noexec if [ "`cat /etc/mtab | grep /dev/shm | grep noexec`" = "" ]; then echo "Warning: /dev/shm has EXECUTE permissions. Recommend adding noexec attribute to mount options for /dev/shm, in /etc/fstab." echo "This change will help in preventing malicious users from installing and executing malicious files from the folder." echo "To test, run these commands. The output should say Permission denied if your system is already protected: cp /bin/ls /dev/shm; /dev/shm/ls; rm /dev/shm/ls;" if [ "`cat /etc/fstab | grep /dev/shm`" = "" ]; then echo "Note: you do not currently have /dev/shm listed in /etc/fstab, so it is being mounted with default options by Linux." echo "To fix, add this line to /etc/fstab, then remount it with [mount -oremount /dev/shm] to avoid having to reboot." echo "none /dev/shm tmpfs defaults,noexec,nosuid,nodev 0 0" echo "" else echo "Tip: after adding the attribute, you can remount the partition with [mount -oremount /dev/shm] to avoid having to reboot." fi echo "" fi # Ensure nosuid if [ "`cat /etc/mtab | grep /dev/shm | grep nosuid`" = "" ]; then echo "Warning: /dev/shm has SUID permissions. Recommend adding nosuid attribute to mount options for /dev/shm, in /etc/fstab." echo "This change will help in preventing malicious users from setting SUID on files on this folder. SUID files will run as root if they are owned by root." if [ "`cat /etc/fstab | grep /dev/shm`" = "" ]; then echo "Note: you do not currently have /dev/shm listed in /etc/fstab, so it is being mounted with default options by Linux." echo "To fix, add this line to /etc/fstab, then remount it with [mount -oremount /dev/shm] to avoid having to reboot." echo "none /dev/shm tmpfs defaults,noexec,nosuid,nodev 0 0" echo "" else echo "Tip: after adding the attribute, you can remount the partition with [mount -oremount /dev/shm] to avoid having to reboot." fi echo "" fi # Ensure nodev if [ "`cat /etc/mtab | grep /dev/shm | grep nodev`" = "" ]; then echo "Warning: /dev/shm has DEVICE permissions. Recommend adding nodev attribute to mount options for /dev/shm, in /etc/fstab." echo "This change will help in preventing malicious users from creating device files in the folder. Device files should be creatable in temporary folders." if [ "`cat /etc/fstab | grep /dev/shm`" = "" ]; then echo "Note: you do not currently have /dev/shm listed in /etc/fstab, so it is being mounted with default options by Linux." echo "To fix, add this line to /etc/fstab, then remount it with [mount -oremount /dev/shm] to avoid having to reboot." echo "none /dev/shm tmpfs defaults,noexec,nosuid,nodev 0 0" echo "" else echo "Tip: after adding the attribute, you can remount the partition with [mount -oremount /dev/shm] to avoid having to reboot." fi echo "" fi fi #-------------------------------------------------------------------------------------------------------------- # CHECK HEARTBEAT CONFIG (if present) #-------------------------------------------------------------------------------------------------------------- if [ -e /etc/ha.d ]; then # Default is 755, but no reason for non-root users to have access to these details # FOLDER_PRIVS_600_etc_HA # Check privileges, owner, and group FOLDER="/etc" FILES="ha.d" PERMS=drw------- OWNER=root GROUP=root for FILE in $FILES do ls $FOLDER -l | grep -v "\->" | grep $FILE | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER -o | grep -v "\->" | grep $FILE | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER -lg | grep -v "\->" | grep $FILE | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done # Default is 600, but make sure it doesn't change # If details are known by user accounts, they can potentially send malicious heartbeat messages over UDP and cause havoc # FILE_PRIVS_600_etc_HA # Check privileges, owner, and group FOLDER="/etc/ha.d" FILES="authkeys" PERMS=-rw------- OWNER=root GROUP=root for FILE in $FILES do ls $FOLDER -l | grep -v "\->" | grep $FILE | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER -o | grep -v "\->" | grep $FILE | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER -lg | grep -v "\->" | grep $FILE | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done fi #-------------------------------------------------------------------------------------------------------------- # CHECK DRBD CONFIG (if present) #-------------------------------------------------------------------------------------------------------------- if [ -e /etc/drbd.conf ]; then # Default is 755, but if users have access to this file they can find out the shared-secret encryption key # FOLDER_PRIVS_600_etc_DRBD # Check privileges, owner, and group FOLDER="/etc" FILES="drbd.conf" PERMS=-rw------- OWNER=root GROUP=root for FILE in $FILES do ls $FOLDER -l | grep -v "\->" | grep $FILE | grep -v "^$PERMS" | xargs -r -iLINE echo -e "Permission recommendation $PERMS does not match current setting LINE\n" ls $FOLDER -o | grep -v "\->" | grep $FILE | grep -v "$OWNER" | xargs -r -iLINE echo -e "Owner recommendation $OWNER does not match current setting LINE\n" ls $FOLDER -lg | grep -v "\->" | grep $FILE | grep -v "$GROUP" | xargs -r -iLINE echo -e "Group recommendation $GROUP does not match current setting LINE\n" done # Check that drbd.conf contains shared-secret keys, otherwise there is no protection against malicious external DRBD packets if [ "`grep shared-secret /etc/drbd.conf`" = "" ]; then echo "Warning: No shared-secret configured in /etc/drbd.conf. There is no protection against malicious external DRBD packets which may cause data corruption on your DRBD disks. Ensure that every disk is configured with a shared-secret attribute."; echo; fi fi #-------------------------------------------------------------------------------------------------------------- # DONE #-------------------------------------------------------------------------------------------------------------- echo System Checks Completed #-------------------------------------------------------------------------------------------------------------- # Notes #-------------------------------------------------------------------------------------------------------------- # Show account expiry/change info for all logins # cat /etc/passwd | cut -f 1 -d ":" | xargs -r -I USERNAME chage -l USERNAME # Future: check sysctl network settings # Future: implement functions instead of all these loops # Future: use stat -c %a <file> or stat -c %A <file> and better if checks instead of all the text processing, this is useful too: find -printf "%m\t%P\n" # Future: since changing to sh, echo -e causes the text "-e" to be printed if using sh instead of bash. Fix by moving reporter-lines into functions.

source

Cet article LBSA : script d’audit basique de la sécurité pour GNU/Linux est apparu en premier sur crowd42.

Related posts:

  1. Sécurité : utiliser Lynis pour effectuer un audit de votre système GNU/Linux
  2. Theme script : un script bash pour personnaliser votre bureau ubuntu [Gnome Shell]
  3. Archey, un script pour rendre votre terminal plus sexy

Quand vous installez ou désinstaller un paquet avec apt-get ou aptitude sur Debian et Ubuntu (ou toute autre distribution basée sur Debian), une copie est faite du paquet et sauvegardé dans /var/cache/apt/archive. Au bout de quelques mois vous risquez de vous retrouver avec un répertoire qui contient plusieurs Go de .deb.

Il existe plusieurs commandes pour vider le répertoire cache de tous ces paquets, de la plus bourrin à la plus « élégante« . Commençons par la dernière :

sudo apt-get autoclean

Cette ligne de commande supprimera toutes copies des anciennes versions des paquets dans /var/cache/apt/archives et qui ne sont plus présents dans les dépôts  et ne gardera que celles qui sont à jour.

sudo apt-get clean

Contrairement à autoclean, clean va supprimer tous les paquets du répertoire /var/cache/apt/archives. Personnellement c’est celle-là que je préfère et que j’utilise.

sudo rm -rf /var/cache/apt/archives

Sans doute la plus bourrin. Même si elle fonctionne. je la déconseille surtout aux gens un peu distraits, on est jamais à l’abri avec rm.

Si vous souhaitez empêcher APT de faire des copies des paquets dans var/cache/apt/archives, créez ce nouveau fichier :

sudo vim /etc/apt/apt.conf.d/02nocache

Ensuite, ajoutez ces deux lignes :

Dir::Cache ""; Dir::Cache::archives "";

Et c’est tout. Enjoy it ;)

Cet article Astuce : désactiver la mise en cache des copies de paquets par APT est apparu en premier sur crowd42.

Related posts:

  1. Désactiver un dépôt PPA et rétrograder les paquets qu’il contient avec PPA-Purge
  2. Astuce : désactiver le tap clic du touchapd
  3. Apt-fast : accélérez le téléchargement des paquets et des paquets et des mises à jour

Si vous n’avez pas eu encore l’occasion de découvrir Tor et i2p, les deux principaux réseaux anonymisant et dont je vous ai déjà parlé sur ce blog, voilà une longue introduction en vidéo (trois heures) à ces deux logiciels. L’intervenant n’est pas un inconnu dans la communauté de sécurité informatique, il est le gars derrière le site irongeek.com et il a été recruté il y a quelques jours par TrustedSec, la boite de Dave Kennedy, une autre pointure de la communauté de la sécu (il est le développeur de SE toolkit).

Après avoir regardé cette introduction, vous saurez comment fonctionne ces deux réseaux, comment les installer et les configurer sur GNU/Linux ainsi que Windows. Mais ce n’est pas tout ! Vous allez surtout apprendre que utiliser Tor ou i2p ne vous garanti un anonymat à 100% (problématique contexte et contenu), grâce à des exemples concrets (Sabu, Jeremy Hammond).

Un must watch que je vous conseille non seulement de regarder mais de télécharger et garder sur votre re re re re consultation :)

Les slides sont disponibles à cette adresse.

source

Cet article Vidéo : Introduction aux réseaux anonymisants Tor et i2p est apparu en premier sur crowd42.

Related posts:

  1. Vidéo : introduction à la cryptographie
  2. Tutoriel video : introduction à Vim
  3. Une démo vidéo de Ubuntu Phone

Telegram

Depuis les révélations sur les programmes d’espionnage de la NSA rendus publiques par Edward Snowden, l’intérêt pour les solutions de communication sécurisées (chat, mail…) n’a cessé de croître. La dernière en date que j’ai découvert s’appelle Telegram.

Si vous connaissez (et il y a de forte de chance que ce soit le cas) WhatsApp, alors vous ne serez pas trop dépaysé. En effet l’interface de Telegram ressemble assez à celle de WhatsApp (n’ayant pas de « smartphone » je n’ai regardé que les screenshots » pour comparer).

Une application de messagerie de plus donc ? Non pas vraiment, car comme je l’ai dit précédemment, chez Telegram on semble ne pas prendre la vie privée et la sécurité des données personnelles des utilisateurs à la légère, au point la société qui est derrière a proposé 200 000 $ à qui peut casser le système de chiffrement des messages !

Parmi les fonctionnalités que j’ai apprécié, il y a cette option qui permet de créer des sessions de chat privées et dont les messages chiffrés s’autodétruisent après un laps de temps. Et contrairement aux apps du même genre que vous pouvez télécharger depuis Google Play ou Appsotre, vous ne serez pas envahi par la publicité. En fait, il n’y aucune publicité sur Telegram ! Chose vraiment rare et qui mérite d’être signalé.

Et si , comme moi, vous avez fait le choix de se débarrasser de votre smartphone, sachez qu’il est possible d’utiliser Telegram sur votre ordinateur. En effet, grâce à son API publié sous licence libre, plusieurs clients sont déjà disponibles. L’installation du client pour GNU/Linux (en ligne de commande) est très simple et se fait en quelques commandes.

Tout d’abord, commencez par cloner le répertoire git :
git clone https://github.com/vysheng/tg.git && cd tg

Ensuite, il faut installer quelques dépendances :
sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev

Enfin :
./configure
make

Pour lancer Telegram, il suffit d’exécuter la commande ci-dessous :
./telegram -k tg.pub

Telegram CLI

Pour plus de détails sur l’installation de Telegram sur une autre distro que Debian ou ubuntu, le Read Me est très complet et contient aussi un guide d’utilisation pour toute les commandes.

Les gens qui préfèrent utiliser leurs navigateurs plutôt qu’un Terminal, peuvent utiliser Webogram.

Cet article Telegram : l’alernative à WhatsApp qui chiffre vos message est apparu en premier sur crowd42.

No related posts.

Une nouvelle version de maintenance, appelée Ubuntu 12.04.4, est désormais disponible au téléchargement. Les utilisateurs faisant un usage fréquent d'une session sans installation à partir d'un liveCD/liveDVD ou d'une clé liveUSB, ou faisant prochainement des installations d'Ubuntu 12.04 LTS devraient mettre à jour leur média d'Ubuntu. S'agissant d'une version de maintenance, peu de nouveautés sont apportées, afin de ne pas perturber la liste des logiciels et des fonctionnalités. Notons l'inclusion d'un noyau Linux mis à jour à la version 3.11, ainsi que l'ensemble de la pile graphique X correspondant. D'autres changements consistent en la mise à jour de Firefox et Thunderbird, le retrait du greffon Ubuntu One du lecteur de musique Rhythmbox et la mise à jour de la documentation d'aide.  

Que sont les versions de maintenance ?

Spécifiques aux éditions soutenue à long terme (Long Term Support, LTS), les versions de maintenance (point releases) consistent en une recompilation récente du média d'installation d'Ubuntu. Celui-ci contient alors tous les plus récents correctifs de sécurité et les mises à jour de logiciels. Télécharger une version de maintenance pour utilisation sans installation ou pour procéder à des installations futures apporte principalement deux avantages :
  • au sortir de l'installation d'Ubuntu, dans le cas d'un usage pour installation dans un poste de travail, il est nécessaire de récupérer moins de nouvelle mises à jour. Le délais avant d'avoir un système à jour est raccourci, et la bande passante est moins sollicitée ;
  • avec des logiciels et composantes mis à jour, le média fonctionne sur davantage de nouveau matériel. Les utilisateurs en session sans installation pourront donc faire fonctionner leur liveCD/liveDVD/liveUSB dans un plus grand nombre d'ordinateurs récents.
 

Dois-je télécharger le média et refaire une installation d'Ubuntu ?

Si vous utilisez votre média d'Ubuntu 12.04 LTS pour sa session sans installation, vous serez intéressé à télécharger la nouvelle version de maintenance. Elle vous permettra un usage sur un plus grand nombre de nouveaux matériels. Si vous utilisez votre média d'Ubuntu 12.04 LTS pour faire de nouvelles installations d'Ubuntu, l'usage de cette version de maintenance vous évitera le téléchargement de nombreux correctifs de sécurité et mises à jour de logiciels publiés depuis la sortie d'Ubuntu 12.04 LTS en avril 2012. Si vous avez déjà une installation locale d'Ubuntu 12.04 LTS, il n'est pas nécessaire de refaire une installation d'Ubuntu. Si vous installez régulièrement les mises à jour proposées par le gestionnaire de mises à jour, vous disposez déjà de l'ensemble des correctifs de sécurité et des nouvelles versions de logiciels. Cependant :
  • si vous avez installé votre système Ubuntu à l'aide du média 12.04.0 ou 12.04.1, vous ne recevez que les mises à jour de sécurité. Vous n'obtenez pas automatiquement les nouvelles versions du noyau Linux ni du serveur graphique X.Org. Pour activer l'installation de ces composantes plus récentes, installez les paquets linux-generic-lts-saucy et xserver-xorg-lts-saucy
  • si vous avez installé votre système Ubuntu à l'aide du média 12.04.2 ou 12.04.3, vous recevez automatiquement les mises à jour de sécurité et les nouvelles versions du noyau Linux et du serveur graphique X.Org par l'entremise du gestionnaire de mises à jour. Vous n'avez qu'à installer les mises à jour proposées, lorsqu'il y en a.
------ Source : The Fridge
Avec l'arrivée prévue d'Unity 8 dans Ubuntu pour postes de travail d'ici un an, les développeurs d'Ubuntu souhaitent homogénéiser les applications principales autour d'un même gabarit, basé sur Qt. Même si rien n'est encore officiellement accompli, la disparition de Nautilus des applications par défaut dans Ubuntu semble probable, ainsi que plus largement une partie des applications liées à GNOME. En effet, Unity 8 ne se contentera pas d'être une simple interface, mais deviendra plutôt un véritable environnement de bureau à part entière, avec sa propre suite d'applications conçues et pensées autour du SDK d'Ubuntu, construit avec Qt. GNOME étant basé sur l'ensemble graphique GTK, les applications de cet autre environnement bureautique risquent donc de disparaître petit à petit, au profit d'applications spécialement bâties pour Unity 8. Dans la liste de diffusion relative aux avancées d'Ubuntu pour postes de travail, une annonce vient d'être publiée pour recenser les besoins et les attentes des utilisateurs autour du logiciel de gestion de fichiers. Le gestionnaire de fichiers actuel, Nautilus, s'il fait bien son travail, a essuyé récemment nombre de critiques, car les développeurs de GNOME ont décidé de supprimer certaines fonctionnalités utiles, dans le but de simplifier le code du programme et d'en faciliter sa maintenance. Beaucoup d'utilisateurs se sont plaints de ces régressions et de l'absence de prise en compte des avis des utilisateurs. Le résultat a été l'apparition d'un certain nombre de dérivés réintégrant les fonctionnalités abandonnées par Nautilus (entres autres, Maemo du projet Linux Mint et Files du projet Elementary OS). Ubuntu restait sur une position neutre en maintenant une version ancienne de Nautilus et en réactivant certaines options manquante. Un projet de gestionnaire de fichiers a débuté dans Unity 8 il y a un an. Il est dirigé par l'équipe du design d'Ubuntu et développé par la communauté (a contrario de quelques applications principales qui sont développées uniquement par Canonical). Dans un premier temps orienté uniquement pour un usage sur smartphone, il a bénéficié récemment de changements lui permettant de tirer profit d'un affichage plus grand pour les tablettes. La prochaine étape sera d'offrir une version adaptée à un usage sur micro-ordinateur. Il faudra donc implémenter des fonctionnalités avancées et faire en sorte que l'usage de la souris et du clavier soit ergonomique. Oliver Grawert a envoyé un message à la liste de diffusion Ubuntu Desktop :
Avec le passage prévu vers Unity 8 pour [Ubuntu] 14.10, il serait préférable de commencer à utiliser les applications convergentes QML qui sont développées aujourd'hui. Avec toutes les plaintes et les frustrations à propos des développeurs de Nautilus, qui ont supprimé des fonctionnalités comme le double panneau et d'autres fonctionnalités appréciées, j'estime que nous pouvons faire mieux [...]
Oliver propose donc trois choses :
  • collecter les fonctionnalités jugées nécessaires pour un gestionnaire de fichiers ;
  • remplir des rapports de bogues de type "liste de souhaits" (whishlist)
  • participer au développement.
Reste donc à voir comment la communauté va réagir à cette annonce et si le gestionnaire de fichiers arrivera à faire mieux que Nautilus, sans quoi Nautilus pourrait bien encore rester longtemps le gestionnaire de fichier par défaut.
07 Février 2014 à 13:46

Le Numéro 75 est arrivé ! via Full Circle Mag FR

Bonjour à toutes et à tous !

L'équipe du FCMfr est heureuse de vous présenter le numéro 75 en français. Comme d'habitude, il est disponible sur notre page Lire ou télécharger les numéros, ou directement en cliquant sur l'image ci-dessous.

numero75.png

Ce mois-ci, outre la critique d'OUYA annoncée sur la couverture, vous y trouverez, notamment :

  • Un nouvel article dans les séries Python, LibreOffice et Inkscape ;
  • L'opinion du « Petit Nouveau » sur l'avancée des jeux sous Linux (qu'ils soient téléchargés via Steam ou via la Logithèque) ;
  • Une critique du jeu « Euro Truck Simulator 2» qui le rend extrêmement attrayant ;
  • Une comparaison du « trio musical », Banshee, Amarok et Rhythmbox ;

Ainsi que, côté français :

  • La deuxième partie du tutoriel d'Ekel sur le Simulateur FlightGear ;
  • Et, de ma part, un « tutoriel » sur (ou plutôt mes déboires avec) deux clés WiFi et Ubuntu 12.04.

Et vous ? À quand votre aide et/ou votre contribution ?

En attendant de vous accueillir sur le site, amusez-vous bien avec ce numéro !

Toute l'équipe du FCMfr dont le scribeur Bab, les traducteurs Ekel, Frangi et moi, et les relecteurs Bab, Ekel, Thobou et moi, AuntieE

P.S. Je me répète, mais, « Et vous ? À quand votre aide ou votre contribution ? » Comme dit Bab, nous, les deux retraités, ne sommes pas éternels et l'équipe a donc besoin de scribeurs, traducteurs et relecteurs ... À bon entendeur, salut !

Bonjour !

Le numéro spécial Inkscape (vol. 2) est dors et déjà disponible sur notre page Lire ou télécharger les numéros ou, directement, en cliquant sur l'image ci-dessous.

inkscape2fr.png

Bonne lecture !

24 Janvier 2014 à 00:00

Pourquoi écrire en Markdown ? via Quack1

Depuis quelques temps, je parle beaucoup de Markdown, de l'utilisation que j'en ai et des outils que j'utilise, mais jamais des raisons de cette utilisation. Je vais essayer de lister ici les quelques raisons qui me font utiliser Markdown au quotidien, et quelques pistes si vous voulez vous y mettre ! :)

J'ai d'abord choisi d'écrire en Markdown, un peu par obligation. Quand j'ai migré le blog sur Pelican il y a presque un an, je me suis retrouvé à écrire tous mes billets en Markdown[^1]. Et c'est petit à petit que je me suis mis à ne trouver que — ou presque — des avantages au Markdown.

D'abord, il est super léger, et ne nécessite qu'un simple éditeur de texte. Les fichiers sont écrits en simple texte, en donc ne nécessite pas d'installer un quelconque logiciel supplémentaire sur son ordinateur (pas besoin de Microsoft Office, de LibreOffice, ou iWorks). À ma connaissance, tous les OS d'aujourd'hui disposent, en natif après l'installation, d'un éditeur de texte. Donc on peut écrite en Markdown sur tous les OS, sans rien installer. Même Windows a le Bloc-Notes !

L'avantage d'utiliser Markdown, c'est de posséder une syntaxe claire et légère pour définir la mise en forme. Par exemple, pour écrire une portion de texte en gras, il suffit de l'entourer de deux symboles * ou de deux _. Exemple : J'aime **beaucoup** les Kinder devient « J'aime beaucoup les Kinder ». Pour mettre du texte en italique, il suffit d'un seul de ces symboles (_bonjour_ devient « bonjour »).

On peut aussi écrire des listes en commençant les lignes par des tirets, faire des citations, des liens hypertextes, etc...

L'avantage d'une syntaxe aussi légère est — à mon avis — double :

  • Le fichier Markdown est lisible tel quel. En quelques minutes, vous êtes déjà habitué à comprendre que du texte entouré de deux étoiles est important, car en gras, que les lignes débutant par des tirets forment une liste, etc... Si vous ne me croyez pas, reprenez la capture d'écran du bloc-notes Windows un peu plus haut. Le texte est parfaitement lisible, même sans mise en forme[^2].
  • Ensuite, on peut écrire du Markdown, avec de la mise en forme, n'importe où. Vous êtes devant un ordi, ouvrez un éditeur de texte. En voiture, dans le bus, le métro, sans PC, pas de souci ! Envoyez vous un sms, un mail, créez une note dans Evernote ou autre, et vous n'aurez à faire qu'un copier-coller une fois rentré chez vous pour retrouver votre texte, parfaitement mis en forme[^3].

Je trouve qu'un des principaux avantages du Markdown est justement ici : ne pas avoir à se soucier de la forme. Combien de fois est ce que vous avez fini des rapports ou des présentations parce que vous avez passé 80% du temps à mettre en forme trois phrases, pour vous rendre compte, après coup, que vous devez tout refaire parce que le contenu est trop grand/large/différent ? Avec Markdown, vous pouvez vous contrefoutre de la forme. Le plus important c'est ce que vous dites, c'est le contenu. Le reste, c'est du pipeau pour se donner un genre parce qu'on sort un document tout beau tout propre. Alors qu'au final, la forme, on s'en branle un peu, le plus important c'est ce qu'on met dedans.

Pour la petite histoire, j'ai des collègues qui pensent que, si vous leur passez un Word ou un PowerPoint « de travail » avec du texte noir sur fond blanc, c'est un travail baclé que vous avez fait à l'arrache. Juste parce qu'il n'y a pas de mise en forme.

Le meilleur contre-exemple, c'est quand même les scénarios. Les mecs écrivent des histoires de malades, dépensent des millions de dollars pour tourner des supers films avec des caméras 4K (TK), et au final le script est juste écrit en Courier New et sans mise en forme de malade[^4].

Pour ma part, quand je veux générer des PDF ou des ODT un peu classes, j'utilise pandoc et des feuilles de style, propres au format de destination. Je ne vais pas faire de tuto (enfin, pas tout de suite), mais ce site est pas trop mal pour débuter.

Enfin, je ne peux pas finir ce — long — post sans parler des inconvénients de Markdown. Perso, je n'en ai pas vu des masses. Si tant est qu'on ait un éditeur de texte qui le supporte, la lecture d'un source .md est super simple, l'écriture aussi.

Générer des PDF ou autres, c'est un peu plus tendu pour les non connaisseurs, mais je des outils intègrent déjà ce genre de fonctionnalités (comme Uberwriter par exemple).

Enfin, Markdown ne gère pas encore tout ce qu'on peut avoir envie de faire dans un document texte. Pour taper du texte « simple » (j'entends par là, du texte avec mise en avant (gras, italique, souligné), listes à puces ou numérotées, titres, liens, images, ...), c'est royal, mais quand on arrive sur des bibliographies ou des trucs un peu plus exotiques, c'est — à ma connaissance — pas géré nativement par Markdown[^5].

En conclusion : utilisez Markdown, c'est bon, ça mord pas, et ça fait de la place sur les disques !

Quelques liens que j'ai vu passer récemment chez urbanbike :

[^1]: En même temps, j'avais un peu choisi Pelican pour ça aussi :p

[^2]: Et aujourd'hui, de nombreux éditeurs de texte (comme Sublime-Text) supportent le Markdown et mettent automatiquement le texte en forme. Voir ici par exemple.

[^3]: Chose parfaitement impossible avec Microsoft Office ou Libre Office, pour lesquels il faut refaire la mise en forme par la suite.

[^4]: Et, ici aussi, comme pour le Markdown, on regarde juste la mise en forme brute du texte : majuscules, minuscules, indentation du texte, et pas s'il est écrit en jaune, corps 16, souligné en rouge ;)

[^5]: Mais on peut, dans du Markdown, intégrer du code Html, ou du LaTeX aussi je crois. Je n'ai jamais essayé ça, si vous l'avez fait, je veux bien un retour d'xp :p

[^6]: L'appli est écrite en Html5, et reste stockée en cache dans votre navigateur, donc vous pourrez même l'utiliser hors-ligne.

24 Janvier 2014 à 00:00

Pourquoi écrire en Markdown ? via Quack1

Depuis quelques temps, je parle beaucoup de Markdown, de l'utilisation que j'en ai et des outils que j'utilise, mais jamais des raisons de cette utilisation. Je vais essayer de lister ici les quelques raisons qui me font utiliser Markdown au quotidien, et quelques pistes si vous voulez vous y mettre ! :)

J'ai d'abord choisi d'écrire en Markdown, un peu par obligation. Quand j'ai migré le blog sur Pelican il y a presque un an, je me suis retrouvé à écrire tous mes billets en Markdown1. Et c'est petit à petit que je me suis mis à ne trouver que — ou presque — des avantages au Markdown.

D'abord, il est super léger, et ne nécessite qu'un simple éditeur de texte. Les fichiers sont écrits en simple texte, en donc ne nécessite pas d'installer un quelconque logiciel supplémentaire sur son ordinateur (pas besoin de Microsoft Office, de LibreOffice, ou iWorks). À ma connaissance, tous les OS d'aujourd'hui disposent, en natif après l'installation, d'un éditeur de texte. Donc on peut écrite en Markdown sur tous les OS, sans rien installer. Même Windows a le Bloc-Notes !

L'avantage d'utiliser Markdown, c'est de posséder une syntaxe claire et légère pour définir la mise en forme. Par exemple, pour écrire une portion de texte en gras, il suffit de l'entourer de deux symboles * ou de deux _. Exemple : J'aime **beaucoup** les Kinder devient « J'aime beaucoup les Kinder ». Pour mettre du texte en italique, il suffit d'un seul de ces symboles (_bonjour_ devient « bonjour »).

On peut aussi écrire des listes en commençant les lignes par des tirets, faire des citations, des liens hypertextes, etc...

L'avantage d'une syntaxe aussi légère est — à mon avis — double :

  • Le fichier Markdown est lisible tel quel. En quelques minutes, vous êtes déjà habitué à comprendre que du texte entouré de deux étoiles est important, car en gras, que les lignes débutant par des tirets forment une liste, etc... Si vous ne me croyez pas, reprenez la capture d'écran du bloc-notes Windows un peu plus haut. Le texte est parfaitement lisible, même sans mise en forme2.
  • Ensuite, on peut écrire du Markdown, avec de la mise en forme, n'importe où. Vous êtes devant un ordi, ouvrez un éditeur de texte. En voiture, dans le bus, le métro, sans PC, pas de souci ! Envoyez vous un sms, un mail, créez une note dans Evernote ou autre, et vous n'aurez à faire qu'un copier-coller une fois rentré chez vous pour retrouver votre texte, parfaitement mis en forme3.

Je trouve qu'un des principaux avantages du Markdown est justement ici : ne pas avoir à se soucier de la forme. Combien de fois est ce que vous avez fini des rapports ou des présentations parce que vous avez passé 80% du temps à mettre en forme trois phrases, pour vous rendre compte, après coup, que vous devez tout refaire parce que le contenu est trop grand/large/différent ? Avec Markdown, vous pouvez vous contrefoutre de la forme. Le plus important c'est ce que vous dites, c'est le contenu. Le reste, c'est du pipeau pour se donner un genre parce qu'on sort un document tout beau tout propre. Alors qu'au final, la forme, on s'en branle un peu, le plus important c'est ce qu'on met dedans.

Pour la petite histoire, j'ai des collègues qui pensent que, si vous leur passez un Word ou un PowerPoint « de travail » avec du texte noir sur fond blanc, c'est un travail baclé que vous avez fait à l'arrache. Juste parce qu'il n'y a pas de mise en forme.

Le meilleur contre-exemple, c'est quand même les scénarios. Les mecs écrivent des histoires de malades, dépensent des millions de dollars pour tourner des supers films avec des caméras 4K (TK), et au final le script est juste écrit en Courier New et sans mise en forme de malade4.

Pour ma part, quand je veux générer des PDF ou des ODT un peu classes, j'utilise pandoc et des feuilles de style, propres au format de destination. Je ne vais pas faire de tuto (enfin, pas tout de suite), mais ce site est pas trop mal pour débuter.

Enfin, je ne peux pas finir ce — long — post sans parler des inconvénients de Markdown. Perso, je n'en ai pas vu des masses. Si tant est qu'on ait un éditeur de texte qui le supporte, la lecture d'un source .md est super simple, l'écriture aussi.

Générer des PDF ou autres, c'est un peu plus tendu pour les non connaisseurs, mais je des outils intègrent déjà ce genre de fonctionnalités (comme Uberwriter par exemple).

Enfin, Markdown ne gère pas encore tout ce qu'on peut avoir envie de faire dans un document texte. Pour taper du texte « simple » (j'entends par là, du texte avec mise en avant (gras, italique, souligné), listes à puces ou numérotées, titres, liens, images, ...), c'est royal, mais quand on arrive sur des bibliographies ou des trucs un peu plus exotiques, c'est — à ma connaissance — pas géré nativement par Markdown5.

En conclusion : utilisez Markdown, c'est bon, ça mord pas, et ça fait de la place sur les disques !

Quelques liens que j'ai vu passer récemment chez urbanbike :

  1. En même temps, j'avais un peu choisi Pelican pour ça aussi :p 

  2. Et aujourd'hui, de nombreux éditeurs de texte (comme Sublime-Text) supportent le Markdown et mettent automatiquement le texte en forme. Voir ici par exemple. 

  3. Chose parfaitement impossible avec Microsoft Office ou Libre Office, pour lesquels il faut refaire la mise en forme par la suite. 

  4. Et, ici aussi, comme pour le Markdown, on regarde juste la mise en forme brute du texte : majuscules, minuscules, indentation du texte, et pas s'il est écrit en jaune, corps 16, souligné en rouge ;) 

  5. Mais on peut, dans du Markdown, intégrer du code Html, ou du LaTeX aussi je crois. Je n'ai jamais essayé ça, si vous l'avez fait, je veux bien un retour d'xp :p 

  6. L'appli est écrite en Html5, et reste stockée en cache dans votre navigateur, donc vous pourrez même l'utiliser hors-ligne. 

Pages