linux的安全--Selinux,tcp_wrappers,iptables使用
一、linux安全
安全主要是端口與服務的對應配置
1.1 linux安全主要通過下面三個進行加固
- Selinux----主要是對內核的訪問權限加以控制
- tcp_wrappers---一定程度上限制某種服務的訪問權限
- iptables---主要是設置軟件的防火墻
1.2 ping 的禁止
- 臨時允許PING操作的命令為:#echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
- 永久允許PING配置方法
/etc/sysctl.conf 中增加一行 net.ipv4.icmp_echo_ignore_all=1
- /etc/rc.d/rc.loacl
echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all
- iptables的設置
iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP
二、Selinux介紹
- 內核的強制安全訪問控制
- 可以用getenforce獲取目前Selinux的狀態
- vi /etc/sysconfig/selinux 設置SELINUX
三、tcp_wrappers的介紹
並不是所有的服務都是受tcp_wrappers管理的,只用采用libwrap庫的服務才受管理
3.1 服務的檢查
(1)檢查服務是否受管理
ldd $(which domainname) | grep libwrap
domainname=sshd httpd smb xinetd .........
如果有這個鏈接,說明某個服務接受tcp_wrappers管理
(2)受管理的服務
-
- 進程歸xinetd管理
- 一些獨立的進程
sendmail slapd sshd stunnel xinetd gdm gnone-session vsftpd portmap
(3)有些進程不受tcp_wrappers管理
httpd smb squid 等
3.2 配置管理
/etc/hosts.allow
/etc/hosts.deny
3.3 工作原理
a.當有請求從遠程到達本機的時候
首先檢查/etc/hosts.allow
如有匹配的,就默認允許訪問,跳過 /etc/hosts.deny這個文件
沒有匹配的,就去匹配/etc/hosts.deny 文件,如果有匹配的,那麽就拒絕這個訪問
b.如果在這兩個文件中,都沒有匹配到,默認是允許訪問的
c.兩個文件格式
服務列表 :地址列表 :選項
A. 服務列表格式:如果有多個服務,那麽就用逗號隔開
B. 地址列表格式:
1. 標準IP地址:例如:192.168.0.254,192.168.0.56如果多於一個用,隔開
2. 主機名稱:例如:www.baidu.com, .example.con匹配整個域
3. 利用掩碼:192.168.0.0/255.255.255.0指定整個網段
註意:tcp_wrappers的掩碼只支持長格式,不能用:192.168.0.0/24
4. 網絡名稱:例如 @mynetwork
d.例子
hosts.allow sshd:192.168.0.1:allow hosts.deny sshd:ALL
四、iptables的介紹
4.1 簡介
iptables是由ip+tables組成,它由多個表,每個表的功能都不一樣,每個表由於多個鏈(chain)組成,我們可以對這個鏈進行設置規則與策略。
4.2 表與鏈
(1)一般由三種表
-
- filter----管理本機數據的進出
- NAT---網絡地址轉換
- mangle---用於標記高級路由的信息包,改變不同的包和包頭
(2)filter
鏈 | 描述 |
FORWARD | 將外部的數據包傳遞到內部的服務器 |
INPUT | 主要是外部數據進入內部數據的信息過濾 |
OUTPUT | 主要是內部數據發到外部數據的信息過濾 |
(3)NAT
鏈 | 描述 |
OUTPUT | 改變本地產生包的目的地址 |
POSTROUTING | 改變數據返回來源的目的地址,SNAT,屏蔽局域網內部來源主機信息 |
PREROUTING | 改變訪問的目的地址,DNAT,也就是內部主機只能限制防火墻訪問 |
(3)mangle不常用
4.3 iptables 內部組成
從圖中可以看出,眾多的路由規則(Rule)和預設的規則(policy)組成了一個功能鏈(chain),多個鏈組成一個表,多個表就組成了防火墻。最常用的就是filter表,NAT表用在地址映射方面。
4.4 iptables 執行流程
iptables就是由多個路由規則的組合體,滿足一個規則,其他的規則就不在驗證,所有的規則都不滿足就執行默認的規則
設定規則需要註意順序
4.5 iptables的使用
(1)iptables [-t 表名] 選項 [鏈名] [條件] [-j 控制類型] 參數
-P 設置默認策略:iptables -P INPUT (DROP|ACCEPT) -F 清空規則鏈 -L 查看規則鏈 -A 在規則鏈的末尾加入新規則 -I num 在規則鏈的頭部加入新規則 -D num 刪除某一條規則 -s 匹配來源地址IP/MASK,加嘆號"!"表示除這個IP外。 -d 匹配目標地址 -i 網卡名稱 匹配從這塊網卡流入的數據 -o 網卡名稱 匹配從這塊網卡流出的數據 -p 匹配協議,如tcp,udp,icmp --dport num 匹配目標端口號 --sport num 匹配來源端口號
(2)預設規則
iptables [-t tables] -P[input output FORWARD] [ACCEPT DROP]
(3)針對IP網絡、網絡接口的過濾規則
iptables [-t tables] [-AI 鏈] [-io 網絡接口][-p tcp|UDP|ICMP] [-s 來源網絡] [-d 目標網絡] [-j ACCEPT |DROP]
(4)針對TCP 和UDP的過濾規則
iptables [-t tables] [-AI 鏈] [-io 網絡接口][-p tcp,udp] [-s 來源網絡][--sport 端口範圍 ] [-d 目標網絡] [--dport 端口範圍][-j ACCEPT |DROP]
linux的安全--Selinux,tcp_wrappers,iptables使用