Linuxサーバセキュリティ初期化Shellスクリプト


次のLinuxシステムセキュリティShellスクリプトはLinuxシステムのセキュリティ初期化スクリプトに使用され、サーバシステムのインストールが完了した後、すぐにサーバのセキュリティ保護を迅速に確立するために実行できます.最初のシナリオは暁輝が書き、数回の修正後、ある大手メディアサイトシステムに大量に応用された.原作者との交流を通じて、オリジナルのシナリオに小さな変更を加え、バグを修正しました.CentOS 5.5 x 86_64を通過し、現在ハードウェアファイアウォールのないサーバで使用されています.
使用方法:それをコピーし、securityなどのshellファイルとして保存します.sh.linuxサーバにアップロードしsh securityを実行する.sh、このスクリプトを使用できます.システムの初期化後すぐに実行し、ユーザーアカウントとパスワードを作成した後、重要なファイルの初期md 5値に影響を与えないように変更しないことをお勧めします.
脚本内容(源脚はもともと暁輝のブログから.以下は読みやすいように注釈を翻訳した):

#!/bin/sh
# desc: setup linux system security
# author:coralzd
# powered by www.freebsdsystem.org
# version 0.1.2 written by 2011.05.03

#    
passwd -l xfs
passwd -l news
passwd -l nscd
passwd -l dbus
passwd -l vcsa
passwd -l games
passwd -l nobody
passwd -l avahi
passwd -l haldaemon
passwd -l gopher
passwd -l ftp
passwd -l mailnull
passwd -l pcap
passwd -l mail
passwd -l shutdown
passwd -l halt
passwd -l uucp
passwd -l operator
passwd -l sync
passwd -l adm
passwd -l lp

#  chattr         。chattr          [1]
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

#         3    5  
sed -i 's#auth        required      pam_env.so#auth        required      pam_env.so
auth required pam_tally.so onerr=fail deny=3 unlock_time=300
auth required /lib/security/$ISA/pam_tally.so onerr=fail deny=3 unlock_time=300#' /etc/pam.d/system-auth # 5 , [2] echo "TMOUT=300" >>/etc/profile # 10 sed -i "s/HISTSIZE=1000/HISTSIZE=10/" /etc/profile # /etc/profile source /etc/profile # /etc/sysctl.conf syncookie echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf sysctl -p # exec sysctl.conf enable # sshd_config sed -i "s/#MaxAuthTries 6/MaxAuthTries 6/" /etc/ssh/sshd_config sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config # chmod 700 /bin/ping chmod 700 /usr/bin/finger chmod 700 /usr/bin/who chmod 700 /usr/bin/w chmod 700 /usr/bin/locate chmod 700 /usr/bin/whereis chmod 700 /sbin/ifconfig chmod 700 /usr/bin/pico chmod 700 /bin/vi chmod 700 /usr/bin/which chmod 700 /usr/bin/gcc chmod 700 /usr/bin/make chmod 700 /bin/rpm # chattr +a /root/.bash_history chattr +i /root/.bash_history # md5 cat > list << "EOF" && /bin/ping /usr/bin/finger /usr/bin/who /usr/bin/w /usr/bin/locate /usr/bin/whereis /sbin/ifconfig /bin/vi /usr/bin/vim /usr/bin/which /usr/bin/gcc /usr/bin/make /bin/rpm EOF for i in `cat list` do if [ ! -x $i ];then echo "$i not found,no md5sum!" else md5sum $i >> /var/log/`hostname`.log fi done rm -f list

ナレッジポイント[1]:chattrコマンドについて
chattrコマンドは、ファイルのプロパティを変更して、ファイルとディレクトリを保護します.chattrコマンドは、ファイルの読み書き、実行権限を変更するchmodコマンドよりも、より下位のファイル属性を制御します.このコマンドは非常に強力で、一部の機能はLinuxカーネルバージョンでサポートされています.Linuxカーネルバージョンが2.2未満の場合、多くの機能は実現できません.同様に-D圧縮ファイルのエラーをチェックする機能は、サポートするには2.5.19以上のカーネルが必要です.また、chattrコマンドでプロパティを変更すると、システムのセキュリティが向上しますが、すべてのディレクトリに適していません.chattrコマンドでは、/、/dev、/tmp、/varディレクトリを保護できません.
このプロパティの表示はlsattrコマンドで行えます.
chattrコマンドの使い方:chattr[-RV][-v version][mode]files...
最も重要なのは[mode]セクション、すなわちファイルプロパティセクションです.[mode]セクションは、+-=と[ASacDdIijsTtu]の文字を組み合わせたものです.
+:既存のパラメータ設定に加えて、パラメータを追加します.
-:既存のパラメータ設定に基づいて、パラメータを除去します.
=:指定したパラメータ設定に更新されます.
A:ファイルやディレクトリのatime(access time)は変更できません.例えば、ノートパソコンのディスクI/Oエラーの発生を効果的に予防できます.
S:ハードディスクI/O同期オプション、機能はsyncに似ている.
a:すなわちappendは、このパラメータを設定すると、ファイルにデータを追加するだけで、削除することはできません.サーバログファイルのセキュリティに多く使用され、rootだけがこの属性を設定できます.
c:compresseで、ファイルが圧縮されてから格納されるかどうかを設定します.読み込み時に自動解凍操作が必要です.
d:すなわちno dumpであり、設定ファイルがdumpプログラムのバックアップ先にならない.
i:設定ファイルは削除、改名、リンク関係の設定ができず、同時に内容の書き込みや新規作成ができない.iパラメータはファイルシステムのセキュリティ設定に役立ちます.
j:すなわちjournalは、mountパラメータ:data=orderedまたはdata=writebackでマウントされたファイルシステムを介して、ファイルが書き込み時に先に記録されるように設定する(journal).filesystemがdata=journalに設定されている場合、このパラメータは自動的に失効します.
s:ファイルまたはディレクトリを秘密裏に削除します.すなわち、ハードディスク領域がすべて回収されます.
u:sとは逆に、uに設定場合、データ内容は実際にはディスクに存在し、undeletionに用いることができる.
各パラメータオプションでよく使用されるのはaとiです.aオプションは、削除不可のみを追加でき、ログシステムのセキュリティ設定に多く使用されます.iはより厳格なセキュリティ設定であり、superuser(root)またはCAP_を有するのみである.LINUX_IMMUTABLE処理能力(識別)のプロセスは、このオプションを適用することができる.
適用例:
1、chattrコマンドでシステム中のキーファイルが修正されないようにする

# chattr +i /etc/fstab

そしてrm mv renameなどのコマンドをこのファイルに操作してみると、Operation not permittedの結果が得られます
2、あるファイルに内容を追加することしかできなくて、削除することができなくて、いくつかのログファイルはこのような操作に適用します

# chattr +a /data1/user_act.log

ナレッジポイント[2]:なぜ5分後に自動的にログアウトするのか
お客様のメンテナンススタッフがログインした後、TERMポートを直接閉じることでtelnetを不正に脱退することが多いため、システムのptsプロセスがますます多くなり、1ヶ月で100近くになり、プロセスが多すぎるとシステムにアラームが発生します.仕様操作はexitまたはctrl+Dで行うべきですが、他の人はそうしませんので、echo「TMOUT=300」>/etc/profileという内容を定義し、サーバに300秒も動作しないクライアントを自動的に削除させます.もちろん、この項目は実際のニーズに応じて追加するかどうかを決めることができます.
参照ドキュメント:http://blog.csdn.net/phphot/article/details/4089791