Maison  >  Article  >  Opération et maintenance  >  Comment améliorer la sécurité des serveurs Linux et Unix

Comment améliorer la sécurité des serveurs Linux et Unix

PHPz
PHPzavant
2023-05-19 14:43:061274parcourir

1. Fichiers d'enregistrement de sécurité du système

Les fichiers d'enregistrement à l'intérieur du système d'exploitation sont des indices importants pour détecter s'il y a une intrusion sur le réseau. Si votre système est directement connecté à Internet et que vous constatez que de nombreuses personnes tentent de se connecter telnet/ftp à votre système, vous pouvez exécuter "#more /var/log/secure grep refusé" pour vérifier les attaques sur le système afin que vous pouvez prendre des mesures Contre-mesures correspondantes, telles que l'utilisation de ssh pour remplacer telnet/rlogin, etc.

2. Sécurité de démarrage et de connexion

1. Sécurité du BIOS

Définissez le mot de passe du BIOS et modifiez la séquence de démarrage pour interdire le démarrage du système à partir d'une disquette.

2. Mot de passe utilisateur

Le mot de passe utilisateur est un point de départ fondamental pour la sécurité Linux. De nombreuses personnes utilisent des mots de passe utilisateur trop simples, ce qui ouvre la porte aux intrus, bien qu'en théorie, tant qu'il y aura suffisamment de temps et de ressources disponibles, il y en aura. non Mots de passe utilisateur indéchiffrables, mais les mots de passe bien choisis sont difficiles à déchiffrer. Un meilleur mot de passe utilisateur est une chaîne de caractères que lui seul peut facilement mémoriser et comprendre, et qui ne doit jamais être écrit nulle part.

3. Les comptes par défaut

devraient interdire tous les comptes inutiles démarrés par le système d'exploitation lui-même. Cela doit être fait lors de la première installation du système. Linux fournit de nombreux comptes par défaut, et plus il y a de comptes, plus le système sera facilement attaqué.

Vous pouvez utiliser la commande suivante pour supprimer le compte.

# userdel用户名

Ou utilisez la commande suivante pour supprimer le compte utilisateur du groupe.

# groupdel username

4. La commande du fichier de mots de passe

chattr ajoute un attribut non modifiable au fichier suivant pour empêcher les utilisateurs non autorisés d'obtenir des autorisations.

# chattr +i /etc/passwd

# chattr +i /etc/shadow

# chattr +i /etc/group

# chattr +i /etc/gshadow

5. Désactivez la commande ctrl+alt+delete pour redémarrer la machine

Modifiez le fichier /etc/inittab et commentez la ligne "ca::ctrlaltdel:/sbin/shutdown -t3 -r now". Réinitialisez ensuite les autorisations de tous les fichiers du répertoire /etc/rc.d/init.d/ et exécutez la commande suivante : ca::ctrlaltdel:/sbin/shutdown -t3 -r now"一行注释掉。然后重新设置/etc/rc.d/init.d/目录下所有文件的许可权限,运行如下命令:

# chmod -r 700 /etc/rc.d/init.d/*

这样便仅有root可以读、写或执行上述所有脚本文件。

6.限制su命令

如果您不想任何人能够su作为root,可以编辑/etc/pam.d/su文件,增加如下两行:

auth sufficient /lib/security/pam_rootok.so debug

auth required /lib/security/pam_wheel.so group=isd

这时,仅isd组的用户可以su作为root。此后,如果您希望用户admin能够su作为root,可以运行如下命令:

# usermod -g10 admin

7.删减登录信息

默认情况下,登录提示信息包括linux发行版、内核版本名和服务器主机名等。对于一台安全性要求较高的机器来说这样泄漏了过多的信息。可以编辑/etc/rc.d/rc.local将输出系统信息的如下行注释掉。

# this will overwrite /etc/issue at every boot. so, make any changes you

# want to make to /etc/issue here or you will lose them when you reboot.

# echo "" > /etc/issue

# echo "$r" >> /etc/issue

# echo "kernel $(uname -r) on $a $(uname -m)" >> /etc/issue

# cp -f /etc/issue /etc/issue.net

# echo >> /etc/issue

然后,进行如下操作:

# rm -f /etc/issue

# rm -f /etc/issue.net

# touch /etc/issue

# touch /etc/issue.net

三、限制网络访问

1.nfs访问

如果您使用nfs网络文件系统服务,应该确保您的/etc/exports具有最严格的访问权限设置,也就是意味着不要使用任何通配符、不允许root写权限并且只能安装为只读文件系统。编辑文件/etc/exports并加入如下两行。

/dir/to/export host1.mydomain.com(ro,root_squash)

/dir/to/export host2.mydomain.com(ro,root_squash)

/dir/to/export 是您想输出的目录,host.mydomain.com是登录这个目录的机器名,ro意味着mount成只读系统,root_squash禁止root写入该目录。为了使改动生效,运行如下命令。

# /usr/sbin/exportfs -a

2.inetd设置

首先要确认/etc/inetd.conf的所有者是root,且文件权限设置为600。设置完成后,可以使用"stat

# chmod 600 /etc/inetd.conf

Ensuite, seul root peut lire, écrire ou exécuter tous les fichiers de script ci-dessus.

6. Restreindre la commande su

Si vous ne voulez pas que quiconque puisse su en tant que root, vous pouvez éditer le fichier /etc/pam.d/su et ajouter les deux lignes suivantes :

ftp telnet shell login exec talk ntalk imap pop-2 pop-3 finger auth

Pour le moment, seuls les utilisateurs dans le groupe isd peut être su en tant que root. Ensuite, si vous souhaitez que l'utilisateur admin puisse su en tant que root, vous pouvez exécuter la commande suivante :

#killall -hup inetd

7. Supprimer les informations de connexion

Par défaut, les informations d'invite de connexion incluent la version de la distribution Linux, le nom de la version du noyau, le nom d'hôte du serveur, etc. Pour une machine ayant des exigences de sécurité élevées, cela laisse fuir trop d’informations. Vous pouvez éditer /etc/rc.d/rc.local pour commenter les lignes suivantes qui génèrent des informations système.

# tcpdchk 

Ensuite, procédez comme suit :

# tty1

# tty2

# tty3

# tty4

# tty5

# tty6

3. Restreindre l'accès au réseau

1. accès nfs

Si vous utilisez le service de système de fichiers réseau nfs, vous devez vous assurer que votre /etc/exports dispose des paramètres d'accès les plus restrictifs, ce qui signifie n'utiliser aucun caractère générique, n'autoriser pas l'accès root en écriture et ne peut être monté qu'en tant que Système de fichiers en lecture seule. Editez le fichier /etc/exports et ajoutez les deux lignes suivantes.

telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -

/dir/to/export est le répertoire que vous souhaitez exporter, host.mydomain.com est le nom de la machine connectée à ce répertoire, ro signifie monter en tant que système en lecture seule, root_squash interdit à root d'écrire dans le annuaire. Pour que les modifications prennent effet, exécutez la commande suivante.

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
2. Paramètres inetd

Assurez-vous d'abord que le propriétaire de /etc/inetd.conf est root et que les autorisations de fichiers sont définies sur 600. Une fois les réglages terminés, vous pouvez utiliser la commande "stat" pour vérifier.

order bind,hosts

multi off

nospoof on 

Ensuite, modifiez /etc/inetd.conf pour désactiver les services suivants.

session required /lib/security/pam_limits.so

Si ssh/scp est installé, vous pouvez également désactiver telnet/ftp. Pour que les modifications prennent effet, exécutez la commande suivante : 🎜rrreee🎜Par défaut, la plupart des systèmes Linux autorisent toutes les requêtes, et utiliser tcp_wrappers pour améliorer la sécurité du système est un jeu d'enfant. Vous pouvez modifier /etc /hosts.deny et. /etc/hosts.allow pour augmenter les restrictions d'accès. Par exemple, définir /etc/hosts.deny sur "all: all" refuse tout accès par défaut. Ajoutez ensuite l'accès autorisé dans le fichier /etc/hosts.allow. Par exemple, « sshd : 192.168.1.10/255.255.255.0 gate.openarch.com » signifie que l'adresse IP 192.168.1.10 et le nom d'hôte gate.openarch.com sont autorisés à se connecter via ssh. 🎜🎜Une fois la configuration terminée, vous pouvez la vérifier avec tcpdchk : 🎜rrreee🎜tcpchk est un outil de vérification de la configuration tcp_wrapper, qui vérifie la configuration de votre wrapper TCP et signale tous les problèmes potentiels/existants trouvés. 🎜🎜3. Paramètres du terminal de connexion 🎜🎜/etc/securetty spécifie le périphérique tty qui permet la connexion root. Il est lu par le programme /bin/login Son format est une liste de noms autorisés. suivant OK. 🎜rrreee🎜Pour le moment, root ne peut se connecter qu'au terminal tty1. 🎜🎜4. Évitez d’afficher les informations sur le système et la version. 🎜🎜Si vous souhaitez que les utilisateurs connectés à distance ne voient pas les informations sur le système et la version, vous pouvez modifier le fichier /etc/inetd.conf en effectuant les opérations suivantes : 🎜rrreee🎜Ajoutez -h pour indiquer que telnet n'affiche pas les informations système, mais uniquement affiche "login :". 🎜🎜🎜4. Prévenir les attaques🎜🎜🎜1. Bloquer le ping Si personne ne peut pinger votre système, la sécurité est naturellement augmentée. Pour ce faire, vous pouvez ajouter la ligne suivante dans le fichier /etc/rc.d/rc.local : 🎜rrreee🎜2. Empêcher l'usurpation d'adresse IP🎜

编辑host.conf文件并增加如下几行来防止ip欺骗攻击。

order bind,hosts

multi off

nospoof on 

3.防止dos攻击

对系统所有的用户设置资源限制可以防止dos类型攻击。如最大进程数和内存使用数量等。例如,可以在/etc/security/limits.conf中添加如下几行:

  • * hard core 0

  • * hard rss 5000

  • * hard nproc 20

然后必须编辑/etc/pam.d/login文件检查下面一行是否存在。

session required /lib/security/pam_limits.so

上面的命令禁止调试文件,限制进程数为50并且限制内存使用为5mb。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer