https://www.cnblogs.com/wangyang0210/p/13593936.html

    1. #######################################################################
    2. ###########################LINUX 配置规范###############################
    3. ######################################################################
    4. #!/bin/bash
    5. ##检查口令最小长度
    6. cp /etc/login.defs /etc/login.defs.back
    7. sed -i "/^PASS_MIN_LEN/c PASS_MIN_LEN 8" /etc/login.defs
    8. ##检查口令生存周期
    9. sed -i "/^PASS_MAX_DAYS/c PASS_MAX_DAYS 90" /etc/login.defs
    10. ##检查设备密码复杂度策略
    11. cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
    12. sed -i "/^password/i password requisite pam_cracklib.so ucredit=-1 lcredit=-1 dcredit=-1" /etc/pam.d/system-auth
    13. ##检查是否设置文件与目录缺省权限
    14. cp /etc/profile /etc/profile.bak
    15. sed -i "/umask 002/c umask 027" /etc/profile
    16. ##检查是否设置命令行界面超时退出
    17. sed -i "/^TMOUT=1800/c TMOUT=300" /etc/profile
    18. ##检查是否限制root用户远程登录
    19. cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    20. sed -i "/^PermitRootLogin/c PermitRootLogin no" /etc/ssh/sshd_config
    21. #重启sshd服务
    22. ##检查是否配置远程日志功能
    23. cp /etc/rsyslog.conf /etc/rsyslog.conf.bak
    24. sed -i "/*.* @@remote-host:514/c *.* @@remote-host:514" /etc/rsyslog.conf
    25. ##检查是否配置用户所需最小权限
    26. #检查/etc/group文件权限
    27. # chmod 644 /etc/group
    28. #检查/etc/passwd文件权限
    29. # chmod 644 /etc/passwd
    30. #检查/etc/shadow文件权限
    31. chmod 600 /etc/shadow
    32. ##检查是否修改系统banner
    33. #删除"/etc"目录下的 issue.net 和 issue 文件:
    34. mv /etc/issue /etc/issue.bak
    35. mv /etc/issue.net /etc/issue.net.bak
    36. ##sshd弱算法
    37. cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
    38. echo "Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc" >> /etc/ssh/sshd_config
    39. systemctl restart sshd.service
    40. ##检查是否安装OS补丁
    41. #可以使用OnlineUpdate或Patch CD Update等方式升级系统补丁
    42. ##检查FTP Banner设置
    43. #1.修改vsftp回显信息
    44. ## vi /etc/vsftpd.conf(或/etc/vsftpd/vsftpd.conf)
    45. #ftpd_banner=” Authorized users only. All activity will be monitored and reported.”
    46. #可根据实际需要修改该文件内容。
    47. #重启服务:
    48. ## /etc/init.d/vsftpd restart
    49. #2.修改pure-ftp配置文件:
    50. ##vi /etc/pure-ftpd/pure-ftpd.conf
    51. #找到以下行,确保该行未被注释。
    52. #FortunesFile /usr/share/fortune/zippy
    53. #编辑/usr/share/fortune/zippy文件(如没有fortune文件夹或者zippy文件,则新建该文件夹或该文件):
    54. ##vi /usr/share/fortune/zippy
    55. #将自定义BANNER写入其中。
    56. #重启服务:
    57. ## /etc/init.d/pure-ftpd restart
    58. ##检查FTP用户上传的文件所具有的权限
    59. #如果系统使用vsftp:
    60. #修改/etc/vsftpd.conf(或者为/etc/vsftpd/vsftpd.conf)
    61. ## vi /etc/vsftpd.conf
    62. #确保以下行未被注释掉,如果没有该行,请添加:
    63. #write_enable=YES //允许上传。如果不需要上传权限,此项可不进行更改。
    64. #ls_recurse_enable=YES
    65. #local_umask=022 //设置用户上传文件的属性为755
    66. #anon_umask=022 //匿名用户上传文件(包括目录)的 umask
    67. #重启网络服务
    68. ## /etc/init.d/vsftpd restart
    69. #如果系统使用pure-ftp
    70. #修改/etc/pure-ftpd/pure-ftpd.conf
    71. ## vi /etc/pure-ftpd/pure-ftpd.conf
    72. #确保以下行未被注释掉,如果没有该行,请添加:
    73. #umask 177:077
    74. #重启ftp服务
    75. ##/etc/init.d/pure-ftpd restart
    76. ##检查是否关闭不必要的服务和端口
    77. #检查是否关闭tftp服务
    78. #chkconfig [--level levels] tftp off
    79. #注:levels为运行级别,需要重启机器
    80. #检查是否关闭sendmail服务
    81. #chkconfig [--level levels] sendmail off
    82. #注:levels为运行级别,需要重启机器
    83. #检查是否关闭ypbind服务
    84. #chkconfig [--level levels] ypbind off
    85. #注:levels为运行级别,需要重启机器
    86. #检查是够关闭kshell服务
    87. #hkconfig [--level levels] kshell off
    88. #注:levels为运行级别,需要重启机器
    89. #检查是否关闭lpd服务
    90. #chkconfig [--level levels] lpd off
    91. #注:levels为运行级别,需要重启机器
    92. #检查是否关闭ident服务
    93. #chkconfig [--level levels] ident off
    94. #注:levels为运行级别,需要重启机器
    95. #检查是否关闭time服务
    96. #chkconfig [--level levels] time off
    97. #chkconfig [--level levels] time-udp off
    98. #注:levels为运行级别,需要重启机器
    99. #检查是否关闭ntalk服务
    100. #chkconfig [--level levels] ntalk off
    101. #注:levels为运行级别,需要重启机器
    102. #检查是否关闭bootps服务
    103. #chkconfig [--level levels] bootps off
    104. #注:levels为运行级别,需要重启机器
    105. #检查是否关闭chargen服务
    106. #chkconfig [--level levels] chargen off
    107. #chkconfig [--level levels] chargen-udp off
    108. #注:levels为运行级别,需要重启机器
    109. #检查是否关闭nfs服务
    110. #chkconfig [--level levels] nfs off
    111. #注:levels为运行级别,需要重启机器
    112. #检查是否关闭daytime服务
    113. #chkconfig [--level levels] daytime off
    114. #注:levels为运行级别,需要重启机器
    115. #检查是否关闭printer服务
    116. #chkconfig [--level levels] printer off
    117. #注:levels为运行级别,需要重启机器
    118. #检查是否关闭nfslock服务
    119. #chkconfig [--level levels] nfslock off
    120. #注:levels为运行级别,需要重启机器
    121. #检查是否关闭echo服务
    122. #chkconfig [--level levels] echo off
    123. #chkconfig [--level levels] echo-udp off
    124. #注:levels为运行级别,需要重启机器
    125. #检查是否关闭discard服务
    126. #chkconfig [--level levels] discard off
    127. #chkconfig [--level levels] discard-udp off
    128. #注:levels为运行级别,需要重启机器
    129. #检查是否关闭klogin服务
    130. #chkconfig [--level levels] klogin off
    131. #注:levels为运行级别,需要重启机器
    132. ##检查是否限制用户FTP缺省访问权限
    133. #配置方法:
    134. #打开/etc/vsftpd/chroot_list 文件,将需要限制的用户名加入到文件中。
    135. ##检查是否删除了潜在危险文件
    136. #1 是否删除.netrc 文件
    137. # 1.执行命令find / -maxdepth 3 -name .netrc 2>/dev/null
    138. # 2.进入到.netrc文件存在的目录
    139. # 3.执行命令:mv .netrc .netrc.bak
    140. #2 是否删除hosts.equiv文件
    141. # 1.执行命令find / -maxdepth 3 -name hosts.equiv 2>/dev/null
    142. # 2.进入到hosts.equiv文件存在的目录
    143. # 3.执行命令:mv hosts.equiv hosts.equiv.bak
    144. #3 是否删除.rhosts 文件
    145. # 1.执行命令find / -maxdepth 3 -name .rhosts 2>/dev/null
    146. # 2.进入到.rhosts文件存在的目录
    147. # 3.执行命令:mv .rhosts .rhosts.bak
    148. ##检查是否禁止root用户登录FTP
    149. #1 禁止root登录VSFTP
    150. # 编辑/etc/ftpusers(或/etc/vsftpd/ftpusers)文件
    151. # 添加root
    152. #2 禁止root登录WU-FTP
    153. # 在/etc/ftpusers文件中加入下列行
    154. # root
    155. ##检查是否启用SSH协议,禁用telnet协议
    156. #1 应配置ssh协议,并安全配置sshd
    157. # 通过#/etc/init.d/sshd start 来启动 SSH服务
    158. #2 应禁用telnet协议
    159. # 利用命令rpm -qa |grep telnet查看是否安装telnet 和telnet server
    160. # 如果安装的话 编辑/etc/xinetd.d/telnet, 修改 disable = yes。
    161. # 激活xinetd服务。命令如下:
    162. # # service xinetd restart
    163. # 如果没安装则说明禁用telnet服务
    164. ##检查是否启用cron行为日志功能
    165. #1 syslog-ng是否启用记录cron行为日志功能
    166. # 在/etc/syslog-ng/syslog-ng.conf中添加
    167. # filter f_cron { facility(cron); };
    168. # destination cron { file("/var/log/cron"); };
    169. # log { source(src); filter(f_cron); destination(cron); };
    170. # 其中/var/log/cron为日志文件。
    171. # 如果该文件不存在,则创建该文件,命令为:
    172. # touch /var/log/cron,并修改权限为775.命令为:chmod 775 /var/log/cron.
    173. #2 rsyslog是否启用记录cron行为日志功能 编辑/etc/rsyslog.conf文件,
    174. # 配置:
    175. # cron.* /var/log/cron ,
    176. # 其中/var/log/cron为日志文件。
    177. # 如果该文件不存在,则创建该文件,命令为:
    178. # touch /var/log/cron,并修改权限为775.命令为:chmod 775 /var/log/cron.
    179. #3 syslog是否启用记录cron行为日志功能 编辑/etc/syslog.conf文件,
    180. # 配置:
    181. # cron.* /var/log/cron ,
    182. # 其中/var/log/cron为日志文件。
    183. # 如果该文件不存在,则创建该文件,命令为:
    184. # touch /var/log/cron,并修改权限为775.命令为:chmod 775 /var/log/cron.
    185. ##检查是否禁止匿名用户登录FTP
    186. #1 禁止匿名WU-FTP用户登录
    187. # 在/etc/passwd文件中,删除ftp用户
    188. #2 禁止匿名VSFTP用户登录
    189. # 编辑/etc/vsftpd.conf(或/etc/vsftpd/vsftpd.conf)文件,设置:anonymous_enable=NO
    190. ##检查是否启用syslog日志审计
    191. #1.
    192. # Redhat5.x之前(包括5.x):编辑/etc/syslog.conf,
    193. # Redhat 6.x:编辑/etc/rsyslog.conf,
    194. # 配置:
    195. # authpriv.* /var/log/secure
    196. #2.
    197. # 创建/var/log/secure文件
    198. # touch /var/log/secure
    199. #3.
    200. # 重启syslog服务
    201. ##检查日志文件是否非全局可写
    202. #检查/var/log/mail文件是否other用户不可写 位比较小于等于 775 执行命令:chmod 775 /var/log/mail
    203. #检查/var/log/boot.log是否是否other用户不可写 位比较小于等于 775 执行命令:chmod 775 /var/log/boot.log
    204. #检查/var/log/secure文件是否other用户不可写 位比较小于等于 775 执行命令:chmod 775 /var/log/secure
    205. #检查/var/log/messages文件是否不可被其他用户修改 位比较小于等于 755 执行命令:chmod 755 /var/log/messages
    206. #检查/var/log/cron日志文件是否other用户不可写 位比较小于等于 775 执行命令:chmod 775 /var/log/cron
    207. #检查/var/log/spooler文件是否other用户不可写 位比较小于等于 775 执行命令:chmod 775 /var/log/spooler
    208. #检查/var/log/maillog文件是否other用户不可写 位比较小于等于 775 执行命令:chmod 775 /var/log/maillog
    209. ##检查是否限制用户su到root
    210. #sed -i "/^auth/i auth sufficient pam_rootok.so" /etc/pam.d/su
    211. #sed -i "/^auth/i auth required pam_wheel.so group=wheel" /etc/pam.d/su
    212. ##检查是否按用户分配账号
    213. #为用户创建账号:
    214. #useradd username #创建账号
    215. #passwd username #设置密码
    216. #修改权限:
    217. #chmod 750 directory #其中750为设置的权限,可根据实际情况设置相应的权限,directory是要更改权限的目录)
    218. #使用该命令为不同的用户分配不同的账号,设置不同的口令及权限信息等。
    219. ##是否删除与设备运行、维护等工作无关的账号
    220. #删除用户:#userdel username;
    221. #锁定用户:
    222. #usermod -L username
    223. #只有具备超级用户权限的使用者方可使用.
    224. #usermod –U username可以解锁。
    225. #补充操作说明
    226. #需要锁定的用户:
    227. #listen,gdm,webservd,nobody,nobody4,noaccess。
    228. ##检查是否按组进行账号管理
    229. #1.执行备份:
    230. #cp -p /etc/group /etc/group.bak
    231. #2.创建新的用户组
    232. #groupadd 组名
    233. #usermod -g 组名 -d 用户目录 -m 用户名
    234. #把用户添加进入某个组(s)或参考usermod --help说明进行设置
    235. #######################################################################
    236. ###########################NGINX 配置规范###############################
    237. ######################################################################
    238. ##检查是否启用日志功能---记录错误日志
    239. #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf),去掉error_log前面的"#"号
    240. ##检查是否启用日志功能---记录访问日志
    241. #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf),设置access_log,去掉前面的注释,修改配置文件如下:
    242. #log_format formatname '$remote_addr - $remote_user [$time_local] '
    243. #' "$request" $status $body_bytes_sent "$http_referer" '
    244. #' "$http_user_agent" "$http_x_forwarded_for"';
    245. #access_log logs/access.log formantname;
    246. #formatname是设置配置文件格式的名称
    247. ##检查是否限制IP访问
    248. #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
    249. #具体设置举例如下:
    250. #location / {
    251. #deny 192.168.1.1; #拒绝IP
    252. #allow 192.168.1.0/24; #允许IP
    253. #allow 10.1.1.0/16; #允许IP
    254. #deny all; #拒绝其他所有IP
    255. #}
    256. #根据应用场景,设置合适的IP地址
    257. ##检查是否隐藏nginx服务信息头
    258. #配置在http中
    259. server_tokens off;
    260. server_tag off;
    261. server_info off;
    262. ##检查是否自定义错误信息
    263. #修改nginx_install_dir/conf/nginx.conf文件
    264. #在每个站点server里添加自定义错误页面,例如:
    265. #error_page 404 /404.html;
    266. #404.html为具体的自定义错误页面,需要纺织在站点的根目录下,一版是nginx_install_dir/html/目录下
    267. #
    268. #配置完毕后采用nginx_install_dir/sbin/nginx -t测试配置文件是否正确。
    269. #之后平滑重启nginx
    270. #nginx_install_dir/sbin/nginx -s reload
    271. ##检查是否控制超时时间---客户端保持活动的超时时间
    272. #http
    273. #keepalive_timeout 120;
    274. #重新启动nginx服务
    275. #需要根据应用场景的需要选择合适的参数值
    276. ##检查是否控制超时时间---客户端请求读取超时时间
    277. #http
    278. #client_header_timeout 10; #设置客户端请求头读取超时时间
    279. #重新启动nginx服务
    280. #需要根据应用场景的需要选择合适的参数值
    281. ##检查是否限制客户端下载的并发连接数
    282. #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
    283. #具体设置如下:
    284. #例如网站存放路径为/usr/local/nsfocus/ ,服务器名称为:down.nsfocus.com
    285. #http {
    286. #……
    287. #limit_zone one $binary_remote_addr 10m;
    288. ##针对每个IP定义一个存储session状态的容器,10m的容器按照32bytes/session,可以处理320000个session
    289. #server
    290. #{
    291. #listen 80
    292. #server_name down.nsfocus.com;
    293. #index index.html index.htm index.php;
    294. #root /usr/local/nsfocus;
    295. ##Zone limit;
    296. #location / {
    297. #limit_conn one 1; #限制每个ip只能发起一个并发连接
    298. #limit_rate 20k; #限制每个连接的限制速度为20K,IP的下载速度为连接数*限制速度
    299. #}
    300. #………
    301. #}
    302. #重启nginx服务
    303. #根据应用场景的需要进行并发数、速度限制
    304. #注:
    305. #limit_zone 这个变量只能在http中使用
    306. #limit_coon和limit_rate变量可以在http,server,location中使用
    307. ##检查是否控制超时时间---响应客户端的超时时间
    308. #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
    309. #具体设置如下:
    310. #send_timeout 10; #指定响应客户端的超时时间
    311. #重新启动nginx服务
    312. #需要根据应用场景的需要选择合适的参数值
    313. ##检查是否配置防盗链接设置
    314. #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
    315. #具体设置举例如下:
    316. #location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip)$ {
    317. #valid_referers none blocked www.baidu.com;
    318. #if ($invalid_referer) {
    319. #rewrite ^/ [img]http://www.nsfocus.com/images/default/logo.gif[/img];
    320. ## return 403;
    321. #}
    322. #}
    323. #根据应用场景,设置合适的域名
    324. #重新启动nginx服务
    325. #注:
    326. #1.gif|jpg|png|swf|flv|rar|zip
    327. #表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
    328. #2.www.baidu.com
    329. #表示对www.baidu.com这个来路进行判断
    330. #3.if{}里面内容的意思是,如果来路不是指定来路就跳转到错误页面,当然直接返回404也是可以的
    331. ##检查是否限制客户端的下载速度
    332. #编辑nginx.conf文件(eg:/usr/local/nginx/conf/nginx.conf)
    333. #具体设置如下:
    334. #例如网站存放路径为/usr/local/nsfocus/ ,服务器名称为:down.nsfocus.com
    335. #http {
    336. #……
    337. #limit_zone one $binary_remote_addr 10m;
    338. ##针对每个IP定义一个存储session状态的容器,10m的容器按照32bytes/session,可以处理320000个session
    339. #server
    340. #{
    341. #listen 80
    342. #server_name down.nsfocus.com;
    343. #index index.html index.htm index.php;
    344. #root /usr/local/nsfocus;
    345. ##Zone limit;
    346. #location / {
    347. #limit_conn one 1; #限制每个ip只能发起一个并发连接
    348. #limit_rate 20k; #限制每个连接的限制速度为20K,IP的下载速度为连接数*限制速度
    349. #}
    350. #………
    351. #}
    352. #重启nginx服务
    353. #根据应用场景的需要进行并发数、速度限制
    354. #注:
    355. #limit_zone 这个变量只能在http中使用
    356. #limit_coon和limit_rate变量可以在http,server,location中使用