Giới thiệu
Một máy chủ CentOS 7 mới được kích hoạt phải được tùy chỉnh trước khi có thể đưa vào sử dụng làm hệ thống sản xuất. Trong bài viết này, các tùy chỉnh quan trọng nhất mà bạn s�� phải thực hiện được đưa ra một cách dễ hiểu.
Điều kiện tiên quyết
Một máy chủ CentOS 7 mới được kích hoạt, tốt nhất là thiết lập bằng các khóa SSH. Đăng nhập vào máy chủ với quyền root.
ssh -l root server-ip-address
Bước 1: Tạo tài khoản người dùng chuẩn
Vì lý do bảo mật, không nên thực hiện các tác vụ điện toán hàng ngày bằng tài khoản root. Thay vào đó, nên tạo một tài khoản người dùng chuẩn sẽ được sử dụng sudo
để giành quyền quản trị. Đối với hướng dẫn này, giả sử rằng chúng tôi đang tạo một người dùng có tên là joe . Để tạo tài khoản người dùng, gõ:
adduser joe
Đặt mật khẩu cho người dùng mới. Bạn sẽ được nhắc nhập và xác nhận mật khẩu.
passwd joe
Thêm người dùng mới vào nhóm bánh xe để có thể sử dụng quyền root bằng cách sử dụng sudo
.
gpasswd -a joe wheel
Cuối cùng, mở một thiết bị đầu cuối khác trên máy cục bộ của bạn và sử dụng lệnh sau để thêm khóa SSH vào thư mục chính của người dùng mới trên máy chủ từ xa. Bạn sẽ được nhắc xác thực trước khi cài đặt khóa SSH.
ssh-copy-id joe@server-ip-address
Sau khi khóa được cài đặt, đăng nhập vào máy chủ bằng tài khoản người dùng mới.
ssh -l joe server-ip-address
Nếu đăng nhập thành công, bạn có thể đóng thiết bị đầu cuối khác. Từ bây giờ, tất cả các lệnh sẽ được đi trước sudo
.
Bước 2: Không cho phép đăng nhập và xác thực mật khẩu
Vì bây giờ bạn có thể đăng nhập với tư cách là người dùng chuẩn bằng các khóa SSH, nên thực hành bảo mật tốt là định cấu hình SSH để cả hai xác thực đăng nhập và mật khẩu gốc đều không được phép. Cả hai cài đặt phải được cấu hình trong tệp cấu hình của daemon SSH. Vì vậy, mở nó bằng cách sử dụng nano
.
sudo nano /etc/ssh/sshd_config
Hãy tìm dòng PermitRootLogin , bỏ ghi chú và đặt giá trị thành không .
PermitRootLogin no
Thực hiện tương tự cho PasswordAuthentication
dòng, cần được bỏ sót:
PasswordAuthentication no
Lưu và đóng tập tin. Để áp dụng các cài đặt mới, hãy tải lại SSH.
sudo systemctl reload sshd
Theo mặc định, thời gian trên máy chủ được đưa ra trong UTC. Tốt nhất là cấu hình nó để hiển thị múi giờ địa phương. Để thực hiện điều đó, hãy xác định vị trí tệp vùng của quốc gia / khu vực địa lý của bạn trong /usr/share/zoneinfo
thư mục và tạo một liên kết tượng trưng từ nó đến /etc/localtime
thư mục. Ví dụ: nếu bạn ở khu vực phía đông của Hoa Kỳ, bạn sẽ tạo liên kết tượng trưng bằng cách sử dụng:
sudo ln -sf /usr/share/zoneinfo/US/Eastern /etc/localtime
Sau đó, xác minh rằng thời gian hiện được đưa ra theo giờ địa phương bằng cách chạy date
lệnh. Đầu ra phải tương tự như:
Tue Jun 16 15:35:34 EDT 2015
Các EDT trong này khẳng định sản lượng mà nó localtime.
Bước 4: Kích hoạt Tường lửa IPTables
Theo mặc định, ứng dụng tường lửa hoạt động trên máy chủ CentOS 7 mới được kích hoạt là FirewallD. Mặc dù đây là một sự thay thế tốt cho IPTables, nhiều ứng dụng bảo mật vẫn không hỗ trợ cho nó. Vì vậy, nếu bạn sẽ sử dụng bất kỳ ứng dụng nào trong số đó, như OSSEC HIDS, tốt nhất là tắt / gỡ cài đặt FirewallD.
Hãy bắt đầu bằng cách vô hiệu hóa / gỡ cài đặt FirewallD:
sudo yum remove -y firewalld
Bây giờ, hãy cài đặt / kích hoạt IPTables.
sudo yum install -y iptables-services
sudo systemctl start iptables
Định cấu hình IPTables để bắt đầu tự động khi khởi động.
sudo systemctl enable iptables
IPTables trên CentOS 7 đi kèm với một bộ quy tắc mặc định, bạn có thể xem bằng lệnh sau.
sudo iptables -L -n
Đầu ra sẽ giống:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Bạn có thể thấy rằng một trong những quy tắc đó cho phép lưu lượng SSH, vì vậy phiên SSH của bạn an toàn.
Vì các quy tắc đó là quy tắc thời gian chạy và sẽ bị mất khi khởi động lại, tốt nhất nên lưu chúng vào tệp bằng cách sử dụng:
sudo /usr/libexec/iptables/iptables.init save
Lệnh đó sẽ lưu các quy tắc vào /etc/sysconfig/iptables
tập tin. Bạn có thể chỉnh sửa các quy tắc bất cứ lúc nào bằng cách thay đổi tệp này bằng trình soạn thảo văn bản yêu thích của bạn.
Bước 5: Cho phép lưu lượng truy cập bổ sung qua tường lửa
Vì rất có thể bạn sẽ sử dụng máy chủ mới của mình để lưu trữ một số trang web tại một số điểm, nên bạn sẽ phải thêm các quy tắc mới vào tường lửa để cho phép lưu lượng HTTP và HTTPS. Để thực hiện điều đó, hãy mở tệp IPTables:
sudo nano /etc/sysconfig/iptables
Ngay sau hoặc trước quy tắc SSH, hãy thêm quy tắc cho lưu lượng HTTP (cổng 80) và HTTPS (cổng 443), để phần đó của tệp xuất hiện như được hiển thị trong khối mã bên dưới.
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Lưu và đóng tệp, sau đó tải lại IPTables.
sudo systemctl reload iptables
Với bước trên đã hoàn thành, máy chủ CentOS 7 của bạn giờ đây sẽ được bảo mật hợp lý và sẵn sàng để sử dụng trong sản xuất.