閑來無事,整理一個系統安全加固腳本,每個公司的要求不一樣,所以僅供參考:
#!/bin/sh
echo "00 */1 * * * ?/usr/sbin/ntpdate 192.168.1.1 >>/var/log/ntpdate.log" > mycrontab
crontab ?mycrontab
rm -rf mycrontab
/usr/sbin/ntpdate 192.168.1.1
cp ?/etc/sysconfig/i18n ?/etc/sysconfig/i18n.bak
echo > ?/etc/sysconfig/i18n
echo LANG="zh_CN.GB18030" >> /etc/sysconfig/i18n?
echo LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN" >> /etc/sysconfig/i18n?
echo SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en" >> /etc/sysconfig/i18n?
echo SYSFONT="latarcyrheb-sun16" ?>> /etc/sysconfig/i18n?
#echo "root:xbbwlcUoKjF7" | chpasswd
useradd weblogic
echo "weblogic:weblogic" | chpasswd
history -c?
# 接收套接字緩沖區大小的缺省值
echo "net.core.rmem_default = 2569600" >>/etc/sysctl.conf
# 最大的TCP數據接收緩沖
echo "net.core.rmem_max = 2569600" >>/etc/sysctl.conf
# 發送套接字緩沖區大小的缺省值
echo "net.core.wmem_default = 2569600" >>/etc/sysctl.conf
# 最大的TCP數據發送緩沖
echo "net.core.wmem_max = 2569600" >>/etc/sysctl.conf
# 時間戳在(請參考RFC 1323)TCP的包頭增加12個字節
echo "net.ipv4.tcp_timestamps = 0" >>/etc/sysctl.conf
# 有選擇的應答
echo "net.ipv4.tcp_sack = 1" >>/etc/sysctl.conf
# 支持更大的TCP窗口. 如果TCP窗口最大超過65535(64K), 必須設置該數值為1?
echo "net.ipv4.tcp_window_scaling = 1" >>/etc/sysctl.conf
# 開啟keepalive的閑置時長
echo "net.ipv4.tcp_keepalive_time = 600" >>/etc/sysctl.conf
echo "kernel.sem = 500 64000 200 256" >>/etc/sysctl.conf
# 文件句柄
echo "fs.file-max = 65536" >>/etc/sysctl.conf
echo "net.ipv4.ip_local_port_range = 1024 65000" >>/etc/sysctl.conf
# 當本地系統向外發起tcp或udp連接請求時使用的端口范圍
sysctl -p
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sed -i "s/#PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config
#當普通用戶登錄時,密碼輸入錯誤三次,系統馬上把該用戶鎖定,需要120s后重新登錄
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
auth required pam_tally2.so deny=3 onerr=fail no_magic_root unlock_time=120
?
#由于遠程是可以通過普通用戶登錄,所以給所有普通用戶設置密碼時,至少有一個特殊字符、大寫字母、小寫字母、最小長度為8位
password requisite /lib/security/$ISA/pam_cracklib.so retry=3 difok=5 ?ocredit=-1 dcredit=-1 ucredit=-1 ?minlen=8
#設置密碼過期的時間最多天數,新建用戶是,用戶可以修改的天使,密碼的最短長度(前面已經設置可以不設置),密碼過期的警告天數。
cp /etc/login.defs /etc/login.defs.bak
sed -i 's/PASS_MAX_DAYS.* ? 99999/PASS_MAX_DAYS ? 90/' /etc/login.defs?
sed -i 's/PASS_MIN_DAYS.* ? 0/PASS_MIN_DAYS ? 7/' /etc/login.defs?
sed -i 's/PASS_MIN_LEN.* ? ?5/PASS_MIN_LEN ? ?8/' /etc/login.defs?
#關閉DNS
cp ?/etc/resolv.conf /etc/resolv.conf.bak
echo 'nameserver 210.22.84.3' > /etc/resolv.conf
#備份環境變量文件
cp ?/etc/profile /etc/profile.bak
echo export TMOUT=600 >> /etc/profile ?#增加60S超時退出
echo export HISTTIMEFORMAT=\'%F %T \' >> /etc/profile ? ?#記錄操作歷史記錄的時間
echo export HISTFILESIZE=10000 >> /etc/profile
echo export HISTSIZE=10000 >> /etc/profile
#修改系統文件最大打開數
echo -e "* soft ?nofile = 32768 \n* hard ?nofile = 65536" >> /etc/security/limits.conf
#計劃任務
mkdir ~/Shell
echo -e " #!/bin/bash \n sync \n echo 3 > /proc/sys/vm/drop_caches" > ~/Shell/MemcacheClean.sh
echo "00 03 * * * /Shell/MemcacheClean.sh" > ~/Shell/mycrontab
crontab ~/Shell/mycrontab
#關閉selinux
sed '7s/enforcing/disabled/g' /etc/sysconfig/selinux -i
#關閉火墻
iptables -F
/etc/init.d/iptables save >> /dev/null
service sshd restart?
history -c
本文轉自青衫解衣 51CTO博客,原文鏈接:http://blog.51cto.com/215687833/1755103