Linux服務器防火牆白名單設置
登上服務器,編輯防火牆配置文件
vi /etc/sysconfig/iptables
把需要訪問本台服務器的其他服務器ip地址,以及本台服務器需要開放的端口號添加上
如下:
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] #這里開始增加白名單服務器ip(請刪除當前服務器的ip地址) -N whitelist -A whitelist -s 192.168.111.xxx -j ACCEPT -A whitelist -s 192.168.111.xxx -j ACCEPT -A whitelist -s 192.168.111.xxx -j ACCEPT -A whitelist -s 192.168.111.xxx -j ACCEPT -A whitelist -s 192.168.111.xxx -j ACCEPT #這里結束白名單服務器ip -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 13020 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 1000:8000 -j ACCEPT //開放1000到8000之間的所有端口 //上面這些 ACCEPT 端口號,公網內網都可以訪問 //下面這些 whitelist 端口號,僅限服務器之間通過內網訪問 #這里添加為白名單ip開放的端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j whitelist -A INPUT -m state --state NEW -m tcp -p tcp --dport 13009 -j whitelist -A INPUT -m state --state NEW -m tcp -p tcp --dport 10080 -j whitelist #這結束為白名單ip開放的端口 -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
編輯完之后,別忘了重啟防火牆
service iptables restart
黑名單、白名單配置/etc/hosts.allow和/etc/hosts.deny
修改/etc/hosts.allow文件
#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
sshd:210.13.218.*:allow
sshd:222.77.15.*:allow
以上寫法表示允許210和222兩個ip段連接sshd服務(這必然需要hosts.deny這個文件配合使用),當然:allow完全可以省略的。www.111cn.net
當然如果管理員集中在一個IP那么這樣寫是比較省事的
all:218.24.129.110//他表示接受110這個ip的所有請求!
/etc/hosts.deny文件,此文件是拒絕服務列表,文件內容如下:
#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
sshd:all:deny
注意看:sshd:all:deny表示拒絕了所有sshd遠程連接。:deny可以省略。
所以:當hosts.allow和 host.deny相沖突時,以hosts.allow設置為准。
注意修改完后:www.111Cn.net
service xinetd restart
才能讓剛才的更改生效。
/etc/hosts.allow(允許)和/etc/hosts.deny(禁止)這兩個文件是tcpd服務器的配置文件
tcpd服務器可以控制外部IP對本機服務的訪問
linux 系統會先檢查/etc/hosts.deny規則,再檢查/etc/hosts.allow規則,如果有沖突 按/etc/hosts.allow規則處理
比如:
1.禁止所有ip訪問linux 的ssh功能
可以在/etc/hosts.deny添加一行 sshd:all:deny
2.禁止某一個ip(192.168.11.112)訪問ssh功能
可以在/etc/hosts.deny添加一行sshd:192.168.11.112
3.如果在/etc/hosts.deny和/etc/hosts.allow同時 有sshd:192.168.11.112 規則,則192.168.11.112可以訪問主機的ssh服務
總結:通過這種方法可以控制部分非授權訪問,但不是一勞永逸的方法!我們在看服務日志的時候或許會看到很多掃描記錄,不是還是直接針對root用戶的,這時控制你的訪問列表就非常有作用了!
ORACLE數據庫黑/白名單(配置文件、命令開關)
編輯sqlnet.ora文件
#開啟ip限制功能
tcp.validnode_checking=yes
#允許訪問數據庫的IP地址列表,多個IP地址使用逗號分開
tcp.invited_nodes=(10.120.84.59,10.120.84.54,10.120.84.58)
#禁止訪問數據庫的IP地址列表,多個IP地址使用逗號分開
tcp.excluded_nodes=(192.168.1.111)
注:
1、 需要重啟監聽器生效。
2、 這個方式只是適合TCP協議,適用於9i以上版本。在9i之前的版本使用文件protocol.ora。
3、第二行和第三行任寫一行即可,如果tcp.invited_nodes與tcp.excluded_nodes都存在,以tcp.invited_nodes為主。
4、不要禁止服務器本機的IP地址,否則通過lsnrctl將不能啟動或停止監聽,因為該過程監聽程序會通過本機的IP訪問監聽器。
可以通過修改sqlnet.ora文件來限制某些IP地址的訪問,修改完成后,可能需重啟監聽生效。(可以lsnrctl reload)
如果$ORACLE_HOME/network/admin/目錄下沒有sqlnet.ora文件,可以從samples目錄下拷貝個sqlnet.ora或者直接vi
###########二選一##############
#允許訪問的IP
TCP.INVITED_NODES=(192.168.1.103,ip2,ip3,..,..本地IP..)若使用白名單,必須本地IP,否則監聽會起不來
#不允許訪問的IP
TCP.EXCLUDED_NODES=(192.168.1.102)
#檢測上述參數的設置
TCP.VALIDNODE_CHECKING=yes (這個參數是必須的)
#允許訪問的ip tcp.invited_nodes =(ip1,ip2,……) #不允許訪問的ip tcp.excluded_nodes=(ip1,ip2,……)
TCP.INVITED_NODES:設置允許訪問數據庫的IP地址列表,當這個參數和TCP.EXCLUDED_NODES設置的地址相同的時候將覆蓋TCP.EXCLUDED_NODES設置。
當不允許訪問的客戶端連入時,會出現下列錯誤
sys/oracle@approd.test as sysdba
ERROR:
ORA-12537: TNS:connection closed
Warning: You are no longer connected to ORACLE.
需要注意的問題:
1、 需要設置參數為YES,這樣才能激活。
2、 建議設置允許訪問的IP,因為IP地址有可能被隨意修改,就不能起到自己的目的。
3、 TCP當參數TCP.INVITED_NODES和TCP.EXCLUDED_NODES設置的地址相同的時候將覆蓋TCP.EXCLUDED_NODES設置。
4、 需要重啟監聽器才能生效。
5、 這個方式只是適合TCP協議。
6、 這個配置適用於9i以上版本。在9i之前的版本使用文件protocol.ora。
7、 在服務器上直接連接數據庫不受影響。
8、 這種限制方式事通過監聽器來限制的。
9、 這個限制只是針對IP檢測,對於用戶名檢測事不支持的。
10、使用觸發器(通過監聽器的限制,通常屬於輕量級的,比在數據庫內部通過觸發器進行限制效率要高)
參考文章