心を開発するため、Linuxの運用・保守 - サーバーのセキュリティ運用

免責事項:この記事は従って、ブロガーオリジナル記事です。CC BY-SA 4.0再現著作権の契約を、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/weixin_45181224/article/details/96491037

1.特定のユーザーやユーザーグループを削除します。

システムのインストールが完了したら、システムのデフォルト設定の不要なユーザーやユーザーグループ、もし私たちが必要としないし、より多くのユーザーから、より安全でないシステムは、ハッカーが使用することができ、すぐに削除する必要があるユーザーの一部のユーザーおよびグループこれらは、脅威のサーバを占めています。
次のようにLinuxシステムでは、デフォルトのユーザーやユーザーグループを削除することができます。

  • ユーザーが削除することができます:ADM、LP、同期、シャットダウン、停止、ニュース、UUCP、オペレータ、ゲームなど
  • あなたはユーザーグループを削除することができます:ADM、LP、ニュース、UUCP 、ゲーム、ディップなど、
    ユーザーのコマンドを削除しuserdel、コマンドは、ユーザー・グループを削除しますgroupdel
    一部のユーザーが機能をログに記録する必要がない場合はまた、我々は、このユーザのログイン機能を禁止する必要があります。
usermod -s /sbin/nologin 用户

2.不要なサービスシステムをオフにします

サーバは、より多くのサービスは、より安全ではないので、私たちは、サーバーの安全性能を向上させるために不必要なサービスをオフにすることができます。
サービスがでシャットダウンすることができchkconfig、たとえば、達成するためのコマンド:

chkconfig --level 345 apach off #重启服务器后生效,关闭 apach 服务

システムが正常に機能するためには、次の表のサービスを開始することをお勧めします。

サービス名 サービス
acpidの 電力管理のための、オープン提案
apmdの 高度な電源管理は電池性能を監視することができます
ハードウェアの変更かどうかを検出
crond 定期的なタスク
使い捨てタイミングタスク
キーテーブル キーボード画像、開始のオプションをロードするための
iptablesの ファイアウォールは、起動する必要があります
xinetdを サポートコアネットワークサービスデーモン
XFS X Window Systemのデスクトップを使用すると、起動する必要があります
ネットワーク ネットワークサービスの起動、開始する必要があります
SSHD リモート管理のsshを提供
syslogの システムロギングサービスは、開始する必要があります

3.合理的な使用sudoコマンド

sudo普通のユーザーは、我々はの使用の合理化であるべき理由である、システムの再起動など、実行するユーザーを追加し、システムファイルを設定するには、rootユーザー権限の一部を行うことができるようにするコマンドは、通常のユーザーにいくつかの合理的な権限を割り当てることができsudo、コマンド、およびsudo認可するために。するためにsudo使用する必要が承認し/etc/sudoersたファイルを、ファイル内の関連する設定パラメータを追加することができます。
例えば:

#例 1 普通用户 Bob 只能在 Server1 这台主机上执行 reboot,shutdown 命令
Bob Server1=/usr/sbin/reboot,/usr/sbin/shutdown		

#例 2 普通用户 Bob 能在 任何主机上执行 reboot,shutdown 命令
Bob ALL=/usr/sbin/reboot,/usr/sbin/shutdown

#例 2 Bob 可以在任何主机上执行所有命令,且不需要密码登录,还能切到root用户下(sudo su-)
Bob ALL=(ALL) NOPASSWD: ALL

#Bob 可以在任何主机上提权到 root 下执行chown 命令,不用密码,但执行 useradd 要密码
Bob ALL=(root) NOPASSWD: /bin/chown,/usr/sbin/useradd

#例 3 user 用户组的用户以 root 权限修改其他用户密码,这里表示组要用百分号%
%users ALL=(root) /usr/bin/passwd

システムのログイン情報の削除4。

そこ4つのファイルシステムは、ある/etc/issue/etc/issue.net/etc/redhat-release/etc/motd。彼らは、システムのバージョン番号が削除または変更することで、情報セキュリティシステムのバージョンを確認するために我々はできる、関連する情報の一部です記録し
た場合、ローカル端末またはローカル仮想コンソールのログインシステムを介してユーザ表示される/etc/issue内容は、ユーザーsshのリモートログインシステム、表示されます/etc/issue.netデフォルトでは、コンテンツをissue.netあなたがすることができます表示する場合、表示されていない/etc/ssh/sshd_config次のコードファイルを追加します:

Banner /etc/issue.net

/etc/redhat-releaseファイルはまた、削除することを提案し、システム名とバージョン番号を記録します。
/etc/motdファイルには、その都度、ユーザのログイン後、システムの掲示板の情報である/etc/motd本書は、ソフトウェア、ハードウェアのアップグレードや情報システムの保守情報について何かを公開することができます使用して、ファイルの内容が表示されます。

5. SSHリモートログインセキュリティ

関連するssh対応するプロファイルで/etc/ssh/sshd_config、セキュリティ設定に関するいくつかの質問はここにあります。

  • ポート22:安全のために、我々は通常、デフォルトのポート22を変更、リスニングポートを設定します
  • プロトコール2:プロトコル2と、ここで不備があるため、バージョンSSH2、SSH1のバージョンを使用するように設定
  • KeyRegenerationIntervalに1時間:長い後に盗難を防止するためのキーを使用している場合は、この設定が自動的に生成されたキー
  • rootユーザを設定することができないのsshログインは、ルートリモートログインは非常に危険です:いいえはのPermitRootLogin
  • はいPrintMotd:ディスプレイを設定する/etc/motd情報
  • MaxStartups 5:5を可能にしながら、オンラインでログインしていませんが、オンラインに属するSSHパスワードに接続されていません
  • MaxAuthTries 3:リトライ許可ログイン失敗の最大回数は3回です
  • AllowUsersという<ユーザー名>:複数のユーザーがスペースで区切られ、リモートアクセスを介してユーザを指定します。
  • AllowGroups <グループ名>:スペースで区切っマルチユーザ・グループ、リモートアクセスを介してユーザ・グループを指定します。
  • DenyUsers <ユーザー名>:ユーザーが無効にアクセス、スペースで区切って複数のユーザーを持って指定します
  • DenyGroups <ユーザグループ>:ユーザーの指定したグループへのアクセス不能、スペースで区切られたユーザーのグループ

歴史の6.使用の合理化

historyコマンド我々は、ユーザの操作履歴を参照してくださいに保存されているシェルコマンドの操作を記録することができます.hash_historyファイルが、ハッカーの攻撃サーバがこのファイルを削除します後、監査することができなくなるので、我々は戻ってファイルをバックアップし、合理的な保護を必要とする、以下の通りであるhistoryログファイルセキュリティ設定。
デフォルトのhistoryコマンドは、運用レコードを表示することができ、動作時間を記録していなかったので、あなたは編集する必要がある/etc/bashrcファイルを:

HISTFILESIZE=4000			#定义在.bash_history文件保留命令的记录总数
HISTSIZE=4000				#定义 history 命令输出的记录总数
HISTTIMEFORMAT='%F %T'		#定义时间格式,与命令 date +%F %T 输出一样
export HISTTIMEFORMAT

ハッカーは削除防止のため.bash_historyのファイルを、私たちはユーザーの歴史は、監査のために安全な場所に保管記録することができ、次のコードが追加され/etc/profile、ユーザのログは、この機能を実装することができたときにファイル。

USER_IP=`who am i 2>/dev/null |awk -F"[()]" '{print $2}'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]
then
	USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
	mkdir -p $HISTDIR
	chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/$LOGNAME ]
then
	mkdir -p $HISTDIR/$LOGNAME
fi
export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M`
export HISTFILE="$HISTDIR/$LOGNAME/$USER_IP.history.$DT"
export HISTFORMAT=“[%Y.%m.%d %H:%M:%S]”
chmod 600 $HISTDIR/$LOGNAME/*.history* 2>/dev/null

各ユーザのシェルコマンド履歴のこのコードはに格納された/usr/share/.historyユーザごとに、ディレクトリのフォルダを、フォルダレコードは、IPおよびシェル操作時間にログインします。

7.ファイアウォール

IPフィルタリングメカニズムを通じて2 Linuxファイアウォール自体、iptables保護の最初のレベルを達成するためのiptables保健システム、ブロック悪意のあるネットワーク攻撃、防御システムを監視すること。第一の保護層によるものであるtcp_wrappers、保護層、及びtcp_wrappersそれによってシステムを保護し、システム内の開放または閉鎖に特定のサービスを提供するために実装されてもよいです。

7.1 iptablesの

7.1.1 iptablesの概要

デフォルトのiptablesルールテーブルは以下のとおりです。

  • fileterテーブル(フィルタリングルールテーブル)
  • NATテーブル(アドレス変換ルールテーブル)
  • マングルテーブル(ルールテーブルのフラグを変更するデータ)
  • 表生(トレースルールテーブルデータシート)

各ルールテーブルは、データリンクの複数が含まれています。

  • INPUT(インバウンド・データ・フィルタリング)
  • OUTPUT(アウトバウンドデータのフィルタリング)
  • FORWARD(転送データのフィルタリング)
  • PREROUTING(旧経路フィルタリング)
  • POSTROUTING(濾過経路)

消防規則は、これらの特定のデータリンクを使用する必要があります。
以下は、フィルタリング、ファイアウォールのためのフレームワークです。
ここに画像を挿入説明

  • 外部ホストがファイアウォールにデータを送信する場合、データが通過しますPREROUTINGINPUTデータリンク
  • ファイアウォールホストコンピュータが外部のホストコンピュータにデータを送信する場合、データが通過しますOUTPUTPOSTROUTINGデータリンク
  • ファイアウォールがルーティングを転送するための責任がある場合は、データが通過しますFORWARDPOSTROUTINGデータリンク

7.1.2 iptablesの構文

使用法:iptables [-t 表名] {-A | -D | -I | -F | -L | -Z | -P} 链名 rule-specification

オプション 説明
-t ルール・テーブルを指定し、-tデフォルトのfileterテーブルを追加しないでください
-A 追加のファイアウォールルール
-D ファイアウォールルールの削除
-私 ファイアウォールのルールを挿入します
-F 空のファイアウォールルール
-L ファイアウォールルールリスト
-R ファイアウォールルールを交換してください
-Z 空のファイアウォールデータテーブルの統計情報
-P 設定しチェーンのデフォルトのルール

次のようにマッチングパラメータは次のとおりです。

パラメータ 説明
[!] -p マッチプロトコル!それは否定を表します
[!] -s 匹配源地址
[!] -d 匹配目标地址
[!] -i 匹配如站网卡接口
[!] -o 匹配出站网卡接口
[!] --sport 匹配源端口
[!] --dport 匹配目标端口
[!] --src-range 匹配源地址范围
[!] --dst-range 匹配目标地址范围
[!] --Mac-source 匹配 mac 地址
[!] --state 匹配状态(INVALID、ESTABLISHED、NEW、RELATED)

触发动作如下:

动作 解释
ACCEPT 允许数据包通过
DROP 丢弃数据包
REJECT 拒绝数据包通过
LOG 将数据包信息记录 syslog 日志
DNAT 目标地址转换
SNAT 源地址转换

iptables具体使用示例如下:

#查看fileter表的所有规则
iptables -nL
#查看 nat 表所有规则
iptables -t nat -nL
#清空 fileter 表中所有规则
iptables -F
#往 fileter 表中添加新规则,丢弃 192.168.1.1 发来的数据包
iptables -A INPUT -s 192.168.1.1 -j DROP
#往 fileter 表中插入规则,拒绝 192.168.1.1ping 防火墙本机
iptables -A INPUT -s 192.168.1.1 -p icmp -j REJECT
#查看 fileter 表中规则编号
iptables -nL --line-number
#删除 filter 表中INPUt 链第一条规则
iptables -D INPUT 1
#将 192.168.1.1 主机发给防火墙本机 22端口的数据包信息记录到 messages 日志
iptables -I INPUT -s 192.168.1.1 -p tcp --dport 22 -j LOG

在 Linux 系统中我们可以在/etc/services文件中找到各个服务与对应的标准端口号。
防火墙规则默认保存在/etc/sysconfig/iptables文件下。

7.2 tcp_wrappers

Linux中某个服务是否可以使用 tcp_wrappers防火墙,取决于服务是否应用了 libwrapped 库文件,如果应用则可以使用。系统中一些服务默认可以使用的有:sshd、vsftpd、tcpd、xinetd、sendmail 等。
tcp_wrapper防火墙的实现是通过/etc/hosts.allow/etc/hosts.deny两个文件完成的,使用格式如下:

service:host [:action]

参数含义:

  • service:服务名,如 sshd、vsftpd 等
  • host:主机名或 IP 地址,可以是多个
  • action:复合条件采取的动作

配置文件常用关键字:

  • ALL:所有服务或所有 IP
  • ALL EXCEPT:所有服务或 IP 除了这项指定的

例:
ALL:ALL EXCEPT 192.168.1.1 #除了 192.168.1.1 其余主机可以使用所有服务
针对/etc/hosts.allow/etc/hosts.deny两个文件,Linux 会先判断/etc/hosts.allow后判断/etc/hosts.deny,前者满足则不会在去判断后者。如果想要sshd服务只能在某些主机使用则可以用以下配置:

#etc/hosts.allow文件中写入
sshd: 172.20.190.51
sshd: 172.20.190.52
sshd: www.pdca.net

#/etc/hosts.deny文件写入
sshd: ALL

8. 锁定系统重要文件

Linux 系统中通过chattr命令可以修改文件或目录的属性,此文件要 root 用户执行,从而提高安全性,通过lsattr命令可以查看文件的属性,下面是对这两个命令的详解。
chattr命令格式如下:

chattr [-RV] [-v version] [mode] 文件或目录

主要参数解释:

  • -R:递归修改所有文件及其子目录
  • -V:详细显示修改内容,打印输出

以下是chattr命令常用参数,用来控制文件属性

参数 解释
+ 在原有参数基础上追加参数
- 在原有参数基础上移除参数
= 更新为指定参数
a 设定此参数,只能向文件中添加数据,而不能删除,常用于服务器日志文件安全
c 即 compress,设定文件是否压缩后存储,读取时需要经过自动解压操作
i 即 immutable,设定文件不能修改,删除,重命名,设连接
s 安全的删除文件或目录,即删除后的文件后,收回硬盘空间
u 与 s 相反,删除后的文件系统保留其数据块以便以后恢复

这些参数中经常用到ai,其中 i参数不允许任何用户进行操作,即使 root 也不行。
以下是lsattr命令格式:

lsattr [-adlRvV] 文件或目录

常用参数解释:

参数 解释
-a 列出目录所有文件,包括隐藏文件
-d 显示指定目录属性
-R 递归显示目录及其下面文件和子目录的属性值
-v 显示文件目录版本

对于一些重要的目录和文件可以加上ia属性,例如:

chattr -R -i /bin /boot /lib /sbin
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/hosts
chattr +i /etc/resolv.conf
chattr +i /etc/fstab
chattr +i /etc/sudoers
chattr +a /var/log/messages

9. /tmp、/var/tmp、/dev/shm 安全设定

いくつかの攻撃者が使用する/tmp/var/tmpいくつかのプログラムに影響します。これにより、ディレクトリ上のシステムの正常な動作に、カタログトロイの木馬、我々はディレクトリを変更するために読み取りおよび書き込み権限を行うことができない、/dev/shm共有メモリデバイスであり、オペレーティングシステムのメモリへの影響に直接このファイルを使用して、ハッカーであれば悲惨。
以下のために/tmp別々のディスクパーティション、我々は変更することができ/etc/fstab、ファイル/tmpプロパティのパーティションをマウントするために、プラスnosuidnoexecnodevの3つのオプション、次のように改正します。

LABLE=/tmp		/tmp		ext4		rw,nosuid,noexec,nodev		0		0

これはnosuidnoexecnodevオプションはSUIDプログラムは、同様のデバイスファイルが存在しないとして、この地区内の任意のスクリプトを実行することはできません許可されていません。
プロパティを設定した後力への再マウントパーティション、完了です。

攻撃サーバのロードマップの後に10

  • ネットワークを切断
  • 攻撃元を探す
    システムログを解析することで、ログファイルにログ、ビューポートが開いている間に不審な情報を表示し、操作プロセス、不審なプログラムを分析します。
  • 原因とする方法の侵略の分析
    侵入を分析するには、ソースを検索し、攻撃を脆弱性やバグの攻撃方法を同定することでした
  • Backupユーザーデータは、
    サーバーの攻撃の後、あなたはこれらのデータを見ながら完全に除去することがあれば、何の攻撃は、存在しない、すぐにサーバー上のユーザーデータをバックアップする必要があります。
  • システムを再インストールし
    、システムを再インストールすることは完全に攻撃の発生源を除去するための良い方法です

おすすめ

転載: blog.csdn.net/weixin_45181224/article/details/96491037