Macld Security,SSH Tổng hợp các cách để bảo vệ SSH

Tổng hợp các cách để bảo vệ SSH

Vô hiệu hoá đăng nhập người dùng root
Người dùng root có quyền hạn tuyệt đối trên Linux và thật sự nguy hiểm nếu chẳng may lộ mật khẩu của người dùng root và bị hacker dò được và root là tài khoản mặc định có sẵn trên hệ thống nên hacker có thể sử dụng các phương thức brute force để dò tìm mật khẩu liên tục, kể cả việc họ không dò ra được mật khẩu thì cũng sẽ gây ra ít nhiều ảnh hưởng tới hệ thống.
– Trước khi vô hiệu hoá người dùng root thì đảm bảo nguiowf dùng thông thường có quyền truy câp với quyền root, ví dụ cho phép người dùng macld đăng nhập như root thông qua sudo
– Cách thêm người dùng macld vào nhóm sudo
# sudo adduser macld sudo
– Chỉnh sửa cấu hình SSH để vô hiệu hoá đăng nhập root( mở file /etc/ssh_sshd_config)
Tìm đến dòng và sửa thành nội dung như sau:
PermitRootLogin no

Giới hạn quyền truy cập SSH của người dùng
Mặc định tất cả người dùng hệ thống đều có thể đăng nhập qua SSH bằng mật khẩu hoặc khoá công khai. Đôi khi tạo user Linux chỉ để sử dụng một số dịch vụ ví dụ như email hoặc ftp,… Tuy nhiên người dùng này vẫn có thể đăng nhập vào hệ thống thông qua SSH. Họ sẽ có quyền truy cập đầy đủ vào các công cụ hệ thống bao gồm cả các trình biên dịch và ngôn ngữ kịch bản như Perl, Python,… có thể mở cổng mạng và làm nhiều thứ khác.
– Để chỉ cho phép người dùng macld sử dụng ssh thì thêm dòng sau vào file config
/etc/ssh/sshd_config
AllowUsers macld
– Ngoài ra có thể cho phép tất cả các người dùng đăng nhập SSH nhưng chỉ chặn một số người dùng cụ thể không được đăng nhập qua SSH bằng cách thêm dòng sau vào file /etc/ssh/sshd_config
DenyUsers root macld
Ngoài ra ta cũng có thể cấu hình PAM(Pluggable Authentication Modules) trên Linux để cho phép hoặc từ chối đăng nhập thông qua máy chủ SSHD. Ta có thể cho phép hoặc từ chối danh sách nhóm truy cập vào SSH
Vô hiệu hoá mật khẩu trống
Cần phải thiết lập để không cho phép đăng nhập SSH từ tài khoản có mật khẩu trống. Cập nhật file /etc/ssh/sshd_config
PermitEmptyPasswords no
Sử dụng mật khẩu mạnh và cụm mật khẩu
– Cần phải sử dụng mật khẩu mạnh cho người dùng và cụm mật khẩu cho các khoá SSH. Các cuộc tấn công brute force có hiệu quả vì người dùng thường sử dụng mật khẩu dựa trên quy tắc đời thường. Một trong những mật khẩu mà các quản trị viên hay sử dụng nhất là p@ssw0rd. Ta có thể bắt buộc người dùng tránh sử dụng mật khẩu dễ bị tấn công từ điển và sử dụng công cụ John the Ripper để tìm ra các mật khẩu yếu hiện có. Thật ra thì ta có thể sử dụng công cụ tạo mật khẩu tự động trên internet nhưng để yên tâm và đảm bảo tuyệt đối thì chẳng gì bằng do mình tự tạo ra.
– Chạy lệnh dưới đây để tạo mật khẩu ngẫu nhiên
genpasswd 16
Kết quả:
uw8CnDVMwC6vOKgW

Thiết lập tường lửa cho công SSH(port 22)
Cần phải thiết lập tường lửa cho cổng TCP 22 bằng cách cập nhật các cấu hình iptables, ufw, firewall-cmd hoặc pf firewall
Thông thường các máy chủ OpenSSH chỉ nên chấp nhận các kết nối từ mạng LAN hoặc trang web WAN từ xa khác
Cấu hình Netfilter(iptables)
Cập nhật file /etc/sysconfig/iptables(có thể khác ở các distro khác nhau) để chỉ chấp nhận kết nối từ 192.168.1.0/24 và 42.114.20.151/29 : nhập
-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state –state NEW -p tcp –dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -s 42.114.20.151 -m state –state NEW -p tcp –dport 22 -j ACCEPT
– Nếu đang sử dụng SSHD với cấu hình IPv6 kép, chỉnh sửa file /etc/sysconfig/ipv6tables nhập
-A RH-Firewall-1-INPUT -s ipv6network::/ipv6mask -m tcp -p tcp –dport 22 -j ACCEPT

Thay thế ipv6network::/ipv6mask bằng các phạm vi IPv6 thực tế

UFW cho Ubuntu/Debian
Sử dụng lệnh sau để cho phép cổng 22 từ 42.114.20.151/29 co thể truy cập
# sudo ufw allow from 42.114.20.151/29 to any port 22
Cấu hình tường lửa PF cho BSD
Cập nhật file /etc/pf.conf
pass in on $ext_if inet proto tcp from {192.168.1.0/24, 42.114.20.151/29} to $ssh_server_ip port ssh flags S/SA synproxy state
Thay đổi port SSH và giới hạn IP binding
Mặc định, SSH lắng nghe trên tất cả các giao diện và địa chỉ IP có sẵn trên hệ thống. Hãy giới hạn việc binding Port SSH và thay đổi Port SSH(nhiều script tất công brute force chỉ cố gắng kết nối đến cổng TCP 22). Để binding vào các IP 192.168.1.3 và 42.114.20.151/29 và sử dụng cổng 300, thêm hoặc chỉnh sửa dòng sau trong file /etc/ssh/sshd_config
Port 300
ListenAddress 192.168.1.5
ListenAddress 42.114.20.151

Còn cách tốt hơn là sử dụng các script tiếp cận chủ động như fail2ban hoặc denyhosts khi muốn chấp nhận kết nối từ địa chỉ IP WAN động
Cấu hình thời gian chờ đăng xuất khi không hoạt động
Người dùng có thể đăng nhập vào máy chủ qua ssh, và có thể thiết lập khoảng thời gian chờ khi không hoạt động để tránh các phiên ssh không được giám sát. Mở file sshd_config và sửa các giá trị sau
ClientAliveInterval 300
ClientAliveCountMax 0
Thiết lập khoảng thời gian chờ khi không hoạt động tính bằng giây(300s). sau khoảng thời gian này, người dùng không hoạt động thì sẽ bị ngắt kết nối.
Vô hiệu hoá các tệp .rhost

Không đọc các tệp ~/.rhosts và ~/.shosts của người dùng. Cập nhật file /etc/ssh/sshd_config với các cài đặt sau:
IgnoreRhosts yes
SSH có thể mô phỏng hành vi của lệnh rsh đã lỗi thời, vì vậy hãy vô hiệu hóa quyền truy cập không an toàn qua RSH.
Vô hiệu hoá xác thực dựa trên máy chủ
Để vô hiệu hoá xác thực dựa trên máy chủ, cập nhật file sshd_config
HostbasedAuthentication no
Chroot OpenSSH
Giới hạn người dùng trong thư mục home của chính họ
– Mặc định người dùng ssh được phép duyệt qua các thư mục của máy chủ như /etc/. /bin/, và các thư mục khác. Ta có thể bảo vệ SSH bằng cách sử dụng chroot dựa trên hệ điều hành hoặc các công cụ đặc biệt như rssh. Với việc phát hành Openssh 4.8p1 hoặc 4.9p1, ta không cần dựa vào các giải pháp bên thứ 3 như rssh hoặc cấu hình chroot phức tạp để giới hạn người dùng trong chính thư mục của chính họ. Xem bài trên blogs về chỉ thị chrootDirectory mới để giới hạn người dùng trong thư mục của hính họ

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *